<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Tanida Mamodee on Medium]]></title>
        <description><![CDATA[Stories by Tanida Mamodee on Medium]]></description>
        <link>https://medium.com/@dah.tanida?source=rss-1118eb6eeea0------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*Ym46PRWgCUK3OZiEijrL_w.jpeg</url>
            <title>Stories by Tanida Mamodee on Medium</title>
            <link>https://medium.com/@dah.tanida?source=rss-1118eb6eeea0------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sat, 14 Nov 2026 10:54:36 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@dah.tanida/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com/" rel="hub"/>
        <item>
            <title><![CDATA[Database Script Management by Liquibase (Ep:1 )]]></title>
            <link>https://medium.com/@dah.tanida/database-script-management-by-liquibase-ep-1-9a2293b66d84?source=rss-1118eb6eeea0------2</link>
            <guid isPermaLink="false">https://medium.com/p/9a2293b66d84</guid>
            <category><![CDATA[database]]></category>
            <category><![CDATA[database-script]]></category>
            <category><![CDATA[liquibase]]></category>
            <category><![CDATA[database-management]]></category>
            <dc:creator><![CDATA[Tanida Mamodee]]></dc:creator>
            <pubDate>Tue, 02 Jan 2024 08:01:44 GMT</pubDate>
            <atom:updated>2024-01-02T08:54:09.443Z</atom:updated>
            <content:encoded><![CDATA[<p>สวัสดีค่ะ Blog นี้เป็น บทความที่ตั้งใจเขียนออกมาจากประสบการณ์ทำงานของตัวเอง เป็น Blog แรกที่หัดเขียนดูเป็นการเป็นงานกับเขาบ้าง อิอิ และเหตุผลหลักๆคือเขียนไว้เป็น KM เนาะ เพื่อนๆคนไหนมีความรู้หรือข้อมูลในส่วนที่อาจจะผิดพลาดไป มาแลกเปลี่ยนกันได้นะคะ อิอิ น้อมรับคำติชมค้าบ</p><p>ปกติแล้ว DBA หรือ Dev มักจะมีปัญหาในการจัดการสคริปต์ ในแต่ละโปรเจกต์มากๆ ในการ Deploy แต่ละครั้ง หรือเวลามีฟีเจอร์ใหม่ที่ add on ไปในระบบเดิม หรือการ Setup Database Environment เพื่อจัดเตรียมโครงสร้างฐานข้อมูลในพาร์ทต่างๆ ไม่ว่าจะเป็นในส่วนของ database สำหรับ dev หรือ uat เราเองในฐานะที่เป็น DBA คงต้องหาแนวทางแก้ไขจนมาเจอตัวนี้ค่ะ เว้าแล้วก็ไป๊</p><h3><strong>Step 1: Preparing for installation</strong></h3><p>ก่อนจะติดตั้ง <strong>Liquibase</strong> ให้ตรวจสอบในเครื่องที่ใช้งานว่าได้ติดตั้ง<strong> Java jdk</strong> แล้วหรือยังค่ะ ถ้ายังไม่มีให้ดาวน์โหลด <a href="https://www.oracle.com/java/technologies/javase/jdk11-archive-downloads.html">JAVA</a> จากนั้นทำการติดตั้งและ Set Path JAVA_HOME ก่อนจ้า</p><p>จากนั้นดาวน์โหลด <a href="https://www.liquibase.com/download">Liquibase download</a> เลือก ดาวน์โหลดตาม OS ที่ใช้งาน ในตัวอย่างนี้จะใช้งานบน Windows ค่ะ ทำการ Extract File และติดตั้ง เมื่อเสร็จเรียบร้อยแล้ว ตรวจสอบเวอร์ชั่นกันนิดนึงด้วยคำสั่ง <strong><em>liquibase — - version</em></strong></p><blockquote><strong><em>liquibase — -version</em></strong></blockquote><figure><img alt="ตรวจสอบเวอร์ชั่นของ Liquibase" src="https://cdn-images-1.medium.com/max/1024/1*ybP_oDMd-6NeW7n0Acp9lw.png" /><figcaption>ตรวจสอบเวอร์ชั่นของ Liquibase ตัวอย่างนี้เวอร์ชั่น 4.24.0</figcaption></figure><p>ในการทำงานของ Liquibase จะต้องมี<strong> JDBC Driver File </strong>ซึ่งในไฟล์ Liquibase setup โดยปรกติแล้ว Liquibase จะแพครวม JDBC Driver มาให้เราอยู่แล้วค่ะ ในตัวอย่างที่ติดตั้งจะเป็น Liquibase เวอร์ชั่น 4.24.0 เราสามารถตรวจสอบ Driver ที่มีอยู่ได้จาก Path: liquibase/internal/lib หรือลองใช้คำสั่ง dir run ผ่าน command prompt หากตรวจสอบแล้วไม่พบ Driver ของ Database ที่ใช้ ก็ตามไปดาวน์โหลดที่ <a href="https://docs.liquibase.com/start/tutorials/home.html">JDBC Driver</a> กันได้เลย <strong>ในตัวอย่างนี้ จะใช้ Liquibase ทำงานร่วมกับ PostgreSql</strong> ค่ะ</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*_RDeI0BO6w55skV_cUaxew.png" /><figcaption>ตัวอย่าง JDBC Driver ที่มาพร้อมกับตัว Install</figcaption></figure><p>เมื่อทุกอย่างเตรียมพร้อม เรามาเริ่มต้นโปรเจ็คด้วยการสร้าง Folder ที่เราต้องการจัดเก็บสคริปต์ ชื่อว่า liquibasePractice และใช้ VSCode เจ้าประจำค่ะ ให้ New Terminal ขึ้นมาและเริ่มต้นโปรเจกต์ด้วยคำสั่ง <strong><em>liquibase init project</em></strong></p><blockquote><strong><em>liquibase init project</em></strong></blockquote><p>เจ้าตัว Liquibase จะถามว่าจะสร้างไฟล์ตาม Default หรือเปล่า ถ้ากด Y (Yes) ก็จะได้ ไฟล์ liquibase.properties และตัวอย่างไฟล์อื่นๆ มาให้เราแบบอัตโนมัติ หรือเราจะเลือก customize ไฟล์ขึ้นมาเองก็ได้ค่ะ</p><p>เมื่อคลิกดูไฟล์ liquibase.properties ก็จะเห็นว่ามีการสร้าง liquibase.command ในส่วนของ Connection setting เป็นค่า Default ไว้ให้เราลองรันทดสอบค่ะ</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/774/1*1FFVRa6eHS6ufF4S0ZCtHA.png" /><figcaption>เมื่อรันคำสั่ง <strong><em>liquibase init project</em></strong></figcaption></figure><p>Concepts คร่าวๆในการติดตั้ง Liquibase ก็จะประมาณนี้ค่ะ ไปต่อกันเลยดีกว่าเนอะ</p><h3>Step 2: Configuring Database Connection</h3><p>ในการตั้งค่าการเชื่อมต่อไปยัง Database จะขอ customize ไฟล์ขึ้นมาใหม่ และเราจะมาตั้งค่ากันในไฟล์ liquibase.properties กันค่ะ</p><p><strong>#Database current connection</strong></p><ul><li><strong>liquibase.hub.mode </strong>ตั้งค่าเป็น off เพราะเราไม่ต้องการแชร์ขึ้นไปยัง hub ของ liquibase</li><li><strong>url</strong> เชื่อมต่อ Database ตาม Syntax ของ Liquibase ค่ะ ตัวอย่างนี้เป็นการเชื่อมต่อ PostgreSql สำหรับท่านใดที่ใช้ Database ค่ายอื่นสามารถตรวจสอบเวอร์ชั่นที่รองรับ และ url format ได้ที่ <a href="https://docs.liquibase.com/start/tutorials/home.html">Link</a> นี้นะคะ</li><li><strong>username</strong> และ <strong>password </strong>ที่ใช้ login database ของเราค่ะ</li><li><strong>changelogFile</strong> สามารถสร้าง changelog file ได้หลายนามสกุล ทั้ง .sql หรือ .xml แต่จะขอสร้างเป็นไฟล์ชื่อ dbroot.xml เพื่อตั้งค่าให้สอดคล้องกับการูปแบบการจัดการไฟล์ในการจัดเก็บสคริปต์ และได้ตั้งค่าเป็น includeAll Part เพื่อที่จะให้ liquibase รันอัพเดทสคริปต์ทุก changelog ที่อยู่ภายใต้โฟลเดอร์นั้นๆ ค่ะ (ในการตั้งค่าเพื่อนๆ สามารถอ่านเพิ่มเติมได้ ใน <a href="https://docs.liquibase.com/concepts/connections/database-connections.html">Document</a> ของ liquibase นะ)</li></ul><p><strong># Reference Database for compare object </strong>เป็นการตั้งค่าเมื่อต้องการเปรียบเทียบ object ในกรณีที่มี database หรือ schema ที่ต้องการตรวจสอบว่ามี object ใดขาดหายไป (ขอยกตัวอย่างใน ย่อหน้าถัดไปนะคะ)</p><ul><li><strong>referenceUrl</strong></li><li><strong>referenceUsername</strong> และ <strong>referencePassword</strong></li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/995/1*sborphmN6gNL1kUaOUHg5Q.png" /><figcaption>ตัวอย่างการตั้งค่า Connection ในไฟล์ liquibase.properties</figcaption></figure><p>ในส่วนของไฟล์ dbroot.xml จะกำหนด เป็น includeAll path โฟลเดอร์ที่จัดเก็บ changelogs ของเราค่ะ</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/623/1*iMKpdl74X63WnWVgffuGqQ.png" /><figcaption>dbroot.xml</figcaption></figure><pre>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;<br>&lt;databaseChangeLog<br>xmlns=&quot;http://www.liquibase.org/xml/ns/dbchangelog&quot;<br>xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;<br>xmlns:pro=&quot;http://www.liquibase.org/xml/ns/pro&quot;<br>xsi:schemaLocation=&quot;http://www.liquibase.org/xml/ns/dbchangelog<br>http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.4.xsd&quot;&gt;<br>   &lt;includeAll <br>   path=&quot;ChangelogsPractice/changelogs_sprint1_prepareData&quot; <br>   errorIfMissingOrEmpty=&quot;false&quot;<br>   /&gt;<br>&lt;/databaseChangeLog&gt;</pre><blockquote><strong><em>liquibase validate</em></strong></blockquote><p>เมื่อตั้งค่าการเชื่อมต่อเสร็จแล้วสามารถตรวจสอบความถูกต้องของการตั้งค่า connection หรือ syntax อื่น ๆ ด้วยคำสั่ง <strong><em>liquibase validate </em></strong>เจ้าตัว liquibase จะ สร้าง ตาราง <strong>databasechangelog</strong> และ <strong>databasechangeloglock </strong>ใน ฐานข้อมูลของเราเพื่อใช้จัดเก็บ history การอัพเดท changelog หรือ changeset ของเรานั่นเองค่ะ</p><h3>Step 3: Management changelog and changeset</h3><p><strong>ทำความเข้าใจ Changelog และ Changeset</strong></p><p>โดยทั่วไปแล้วการจัดเก็บสคริปต์จะ จัดเก็บ statements ต่างๆ ไว้ในไฟล์นามสกุล .sql เพื่อความสะดวกในการนำไปใช้งานต่อ ในตัวอย่างนี้จะจัดเก็บ statements ไว้ในไฟล์หนึ่งไฟล์ นับเป็นหนึ่ง changelog ในหนึ่ง changelog จะ control statements ที่มีการเปลี่ยนแปลงไว้ด้วย changeset และ ในหนึ่ง changeset อาจมีมากกว่าหนึ่ง statement หรือ แล้วแต่สไตล์การทำงานของแต่ละคนเนอะ อิอิ</p><p>Trig : ในที่นี้จะขอตั้งชื่อโฟลเดอร์ที่จัดเก็บ changelog ตามลำดับความสำคัญในการรันสคริปต์ DDL (Data Definition Language) โดยใช้วิธีกำหนดการตั้งชื่อไฟล์ เป็นรูปแบบเดียวการตั้งชื่อตัวเลขเวอร์ชั่น ในการกำกับ เช่น 1.3.0 createSequece ก่อน 1.4.0 createTrigger เหตุผลเนื่องจาก เมื่อเวลานำสคริปต์ในรันบนฐานข้อมูล เรามักจะต้องมีการลำดับขั้นตอนว่าจะต้องรันสคริปต์อะไรก่อนเพื่อไม่ให้ติดขัดตอนที่เรารัน (DBA จะรู้ ฮ่าๆ)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/935/1*vSsrwkwSo3_QqEk7Plb3OA.png" /><figcaption>รูปตัวอย่าง changelog และ changeset</figcaption></figure><p>ในไฟล์ changelog จะเริ่มต้นด้วย command <em>— — liquibase formatted sql </em>ในทุกๆ changelog</p><ul><li>- - liquibase formatted sql เพื่อให้ liquibase อ่านค่า statement และรันสคริปต์ได้ตามรูปแบบที่เราจัดเก็บ</li><li>- -changeset Author: Id ชื่อเจ้าของ changeset ตามด้วย Id ในตัวอย่างนี้ตั้งเป็น Id ของ changeset นะคะ ในส่วนของ labels และ context แล้วแต่จะกำหนดได้เลยค่ะ</li></ul><pre>- - liquibase formatted sql<br><br>- - changeset Tanida.m:1 labels:prepareData context:dev<br>- - comment: createTable person<br>create table person (<br>id serial not null,<br>name character varying(50) not null,<br>address1 character varying(50),<br>address2 character varying(50),<br>city character varying(30)<br>)<br>- - rollback DROP TABLE person;<br><br><br>- - changeset your.name:2 labels:prepareData context:dev<br>- - comment: createTable company<br>create table company (<br>id serial not null,<br>name character varying(50) not null,<br>address1 character varying(50),<br>address2 character varying(50),<br>city character varying(30)<br>)<br>- - rollback DROP TABLE company;</pre><p>จากนั้นให้รันคำสั่ง <strong><em>liquibase update</em></strong></p><blockquote><strong><em>liquibase update</em></strong></blockquote><p>ข้อดีของ liquibase คือจะช่วยเราคลีน statements และจะไม่ยอมให้ update statement ลงในฐานข้อมูล หาก syntax ไม่ถูกต้อง หากเรารันคำสั่ง update ผ่านโดยไม่มี error แจ้งขึ้นมา liquibase จะแสดงผลลัพธ์ จำนวน changeset ที่ถูกรันไปแล้ว และจำนวน changeset ที่มีการรันอัพเดท เท่ากับว่าเราจะมีตัวช่วยในการเช็คให้ statement ที่ถูกรันไปแล้วนั่นเอง และยังช่วยลดขั้นตอนในการทำงานอีกด้วย (ไม่ต้อง Manual แล้วจ้า)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/403/1*gLvxYKr47f8u0SbwTIfEjA.png" /><figcaption>ผลลัพธ์ที่ได้จากการรันคำสั่ง liquibase update</figcaption></figure><p>และสามารถตรวจสอบ history การันคำสั่ง <em>liquibase history</em> ใน terminal หรือจะเข้าไปดูข้อมูลประวัติ ในตาราง <strong>databasechangelog </strong>ก็ได้ค่ะ</p><blockquote><strong><em>liquibase history</em></strong></blockquote><p>หรือจะใช้คำสั่ง หากต้องการรันสคริปต์เป็น บาง statement หรือบาง changelog โดยใช้คำสั่ง <strong><em>liquibase execute-sql </em></strong>แต่ข้อเสียของคำสั่งนี้คือจะไม่เก็บ History การเปลี่ยนแปลงว่ามีใครอัพเดทโครงสร้างอะไรไปบ้างค่ะ</p><blockquote><strong><em>liquibase execute-sql</em></strong></blockquote><pre>liquibase execute-sql --sql-file=D:/liquibasePractic/ChangelogsPractice/changelogs_sprint1_prepareData.sql</pre><h3><strong>Diff for compare two database</strong></h3><p>สำหรับ Liquibase ก็มีคำสั่ง <em>Liquibase diff</em> เพื่อช่วยในการตรวจสอบ object ที่ขาดหายไประหว่าง database หรือระหว่าง schema ก็ได้เช่นกันค่ะ ส่วนตัวเองก็ค่อนข้าชอบฟังก์ชั่นนี้มาก เพราะช่วยให้การทำงานง่ายลงไปเยอะเลยค่ะ อีกทั้งยังมีความรวดเร็วอีกด้วย</p><p>หากเพื่อนๆตั้งค่าการเชื่อมต่อใน Step 2 ในส่วนของ ReferanceUrl ไปยัง database ที่ต้องการเทียบ object เรียบร้อยแล้วให้ทดสอบรันคำสั่ง ใน terminal ได้เลยค่ะ จะเห็น Diff Results ให้เราอยู่ใน terminal</p><blockquote><strong><em>liquibase diff</em></strong></blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/645/1*pwLAQDyvcr1i8mEYaMsTHA.png" /><figcaption>Diff Results</figcaption></figure><p>อีกหนึ่งคำสั่งทีอาจจะต้องใช้งาน นั่นคือคำสั่ง Rollback ซึ่งรายละเอียดของการ Rollback จะมีข้อควรระวังอยู่เยอะมาก ถ้ามีเวลาจะมาอัพเดทให้ใน EP. ถัดไปนะคะ</p><p>วันนี้ขอลาไปก่อนนะคะ บ๊าย บายย ย</p><p><strong><em>Trig</em> :</strong></p><ul><li>หากต้องการจะให้ liquibase รันสคริปต์เป็นบาง changelog สามารถทำได้หลายวิธี เช่นเปลี่ยนการตั้งค่า changelogFile หรือตั้งค่า include และระบุ path ที่ต้องการรัน ในไฟล์ dbroot.xml หรือจะใช้คำสั่ง liquibase command บางคำสั่งแล้วแต่สไตล์และความชอบในการจัดการสคริปต์</li><li>changeset ที่รันคำสั่ง liquibase update ไปแล้วเราจะไม่ไปแก้ไขสคริปต์เดิม แต่จะใช้วิธีการอื่นมาจัดการสคริปต์แทน โดยการใช้คำสั่ง DDL พวก Alter, Drop หรือ Create object เป็น changelog ใหม่แทน</li><li>หรือจะใช้คำสั่ง rollback หากยังไม่มี การ dev (Rollback ผิดชีวิตเปลี่ยน) อาจจะไปตีกับ Dev ได้</li><li>หากต้องการรันสคริปต์สร้างโครงสร้างใน Database ที่เป็น ฐานข้อมูลสำหรับ UAT เมื่อ Dev และ DBA review script ร่วมกันแล้วก็แค่เปลี่ยน url connection ใน liquibase.propertie แล้วรัน update โลดด ^^</li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=9a2293b66d84" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[ทำไม WALAI AutoLib จึงต้องมี Web blog]]></title>
            <link>https://medium.com/@dah.tanida/%E0%B8%97%E0%B8%B3%E0%B9%84%E0%B8%A1-walai-autolib-%E0%B8%88%E0%B8%B6%E0%B8%87%E0%B8%95%E0%B9%89%E0%B8%AD%E0%B8%87%E0%B8%A1%E0%B8%B5-web-blog-c268f4c9c427?source=rss-1118eb6eeea0------2</link>
            <guid isPermaLink="false">https://medium.com/p/c268f4c9c427</guid>
            <dc:creator><![CDATA[Tanida Mamodee]]></dc:creator>
            <pubDate>Fri, 05 Jan 2018 03:48:55 GMT</pubDate>
            <atom:updated>2018-01-05T03:51:44.342Z</atom:updated>
            <content:encoded><![CDATA[<p>สร้างเถอะ จะได้มีสีสันในการทำงาน</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*rICemtdRDG2X0jz7d-GB9Q.jpeg" /></figure><h3>ข้อดีของการมี Web BLOG</h3><p>อย่างที่ทราบกันว่า Medium เป็นแหล่งเขียนบล็อกที่นิยมกัน เมื่อ เสิร์ชหาข้อมูลความรู้ บางครั้งก็หลุดมาใน blog ของใครก็ไม่รู้ที่มีการแชร์ Knowledge ไว้มากมาย ยิ่ง follow ก็ยิ่งเห็นว่า blogger บางคนนี่เจ๋งหว่ะ เห้ยย อย่างที่โอโรจิมารุได้กล่าวไว้ “คนเราน่ะ หนีไม่พ้นกิเลสของ <em>ความอยากรู้ </em>หรอก” ยิ่งติดตามยิ่งรู้สึกว่า เย้ยย คนอื่นเขาไปไกลแล้วนะนี่ คนอื่นเขาใช้ tool ใหม่ ๆ ภาษาใหม่ ๆ ที่ทำให้ชีวิตมันดูง่ายขึ้น การเข้าดู Blog ของคนอื่นบ่อยๆ มันทำให้เรารู้สึกกระหาย อยากที่จะเรียนรู้อะไรใหม่ๆ มุมมองใหม่ มีแรงบันดาลใจ มีแรงผลักดันที่จะขวนขวายมาซึ่งความรู้ เพิ่มพูนให้กับตัวเอง อยากจะเก่ง อยากจะเป็นกูรู แล้วขียน Blog เป็นของตัวเองบ้าง 55+</p><p>โดยส่วนตัวอยากจะให้พวกเรา ชาว WULIB ออฟฟิศที่มีเทพหลายองค์สิงสถิตอยู่ ได้เขียน blog ขึ้นมา องค์ความรู้ทั้งหลายไม่ควรที่จะสูญหายไปกับกาลเวลา อย่างน้อยเราจะได้ไม่หมกมุ่นอยู่กับสิ่งเดิม คอยแก้ปัญหาเดิมๆ ทำงานเดิมๆ ตะบี้ตะบันทำงานเพื่อให้ส่งงานได้ทันก่อนหมดสัญญา ว่างๆ ก็เขียนบล็อกระบายความรู้หรือความในใจก็ได้นะ อิอิ เปลี่ยนไลฟ์สไตล์ไปส่องชีวิตคนอื่น ส่องไปส่องมาอาจจะได้ context หรือ connection จากใครที่ไม่เคยรู้จักก็ได้นะ</p><h3>อ้าว เรามี WALAI AutoLib KM อยู่แล้วนี่ จะสร้างบล็อกอีกทำไม</h3><p>Medium กับ เว็บบล็อก KM ที่เรามีมันไม่เหมือนกันนะ KM เหมือนคลังความรู้ที่ต้องคอยปัดฝุ่น เอาจริงๆก็ไม่ค่อยได้เข้าไปหรอก ถ้าความรู้ของเรามีคนมาอ่านเยอะ มีคนกดถูกใจ ชอบใจบทความของเรา มีคนมาตาม follow เรา มันคงรู้สึกดีเนอะ มันดู สิ่งที่เราเขียนไปมันมีคุณค่าถ้าถูกเปิดอ่าน ซึ่ง Medium ได้สร้าง ฟังก์ชั่นเหล่านี้ขึ้นมา ให้มี reaction เหมือนกับ Social Media ทั่วไปน่ะแหละ Follow บุคคล หรือ Community ที่สนใจ คือดีย์อ่ะ และถ้าเราผูกโดเมน กับ Medium ภายใต้ชื่อ WALAI AutoLib เพื่อสร้าง เมื่อเราไปแชร์บล็อกของเราไว้ที่ไหน มันก็จะมี แบรนดืดิ้ง WALAI แทนที่จะมี Medium นำหน้าที่อยู่ลิ้งของเรา <a href="https://medium.com/p/c268f4c9c427">https://medium.com/p/c268f4c9c427</a></p><p>อย่าง user TANIDA ก็จะไม่ใช่แค่ TANIDA ที่เป็นใครก็ไม่รู้ แต่เป็น TANIDA แห่ง WALAI AutoLib ฮ่าๆ ดูดี๊ดูดี อารมณ์ประมาณนี้ (ขอแคปมาทำรุปตัวอย่างหน่อยน้า)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/739/1*q7Sp_qriUul6USU9Yg4j9w.png" /></figure><p>เพิ่มเติมที่ลิ้งค์นี้นะ <a href="https://nuuneoi.com/blog/blog.php?read_id=895">https://nuuneoi.com/blog/blog.php?read_id=895</a></p><p>ตัว Medium.com ก็แสนจะใช้งานง่ายมากๆเนอะ จะแนบรูปหรือวิดิโอ ก็ง๊ายง่าย ถ้า เรา stream vidio การใช้โปรแกรมวลัย โยนบล็อกไปในเพจ user group หรือส่งให้ลูกค้าก็ดีเนอะ ขอบคุณวิดิโอ ปลากรอบ จากพี่จูน</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2F7iY2qubWmQ0%3Ffeature%3Doembed&amp;url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D7iY2qubWmQ0&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2F7iY2qubWmQ0%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="640" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/0827bbf789b0ce1d9ed4715a978abd3d/href">https://medium.com/media/0827bbf789b0ce1d9ed4715a978abd3d/href</a></iframe><p>หรือๆ พี่ยันจะเขียนบล็อกแชร์ ทริคถ่ายรูปแล้วไปโยนในเพจพี่ยันก็น่าจะดีน้าา</p><p>หรือๆ เทรนเนอร์จะเขียน การลงรายการตาม Tag แชร์ไว้ก็ดีไม่น้อยเนอะ</p><p>หรือๆ พี่บวบที่กำลัง เล่น Docger ก็มาแชร์ไว้บ้างก็ดีนะคะ 555+</p><p>หรือๆ พี่รงค์ พี่ฝน พี่วิท และพี่ๆทุกคน มาแชร์ความรู้อันทรงคุณค่าเพื่อเป็นวิทยาทานแก่ชนรุ่นหลังสืบไป ฮ่าา</p><p>บล็อกนี้เป็นบล็อกแรกที่ด๊ะเขียนขึ้นมา ดูเหมือนจะง๊องแง๊งเนาะ แต่คิดว่าอะไรที่ได้กลับมามันคงมากและคุ้มค่ากับค่าจดโดเมน ปีละไม่บาท ไม่มีอะไรหร๊อกก แค่อยากเก่งๆ แล้วเป็น Writer เองบ้าง ฮิฮิฮิ เราไม่ควรแต่เอาแต่อ่าน blog ของคนอื่น ทั้งๆที่เราก็มีของให้ปล่อยเน้อออ ว่ามั้ยคะ ^^</p><p>ชอบก็กดปรบมือด้านล่าง หรือ follow มา เดี๋ยว follow กลับ ไม่โกงค้าา</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=c268f4c9c427" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>