<?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 ThikOn Wachiraarunwong on Medium]]></title>
        <description><![CDATA[Stories by ThikOn Wachiraarunwong on Medium]]></description>
        <link>https://medium.com/@thikonwachiraarunwong?source=rss-b86a7600c838------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/0*Zr71boiWl0vhPSeC.</url>
            <title>Stories by ThikOn Wachiraarunwong on Medium</title>
            <link>https://medium.com/@thikonwachiraarunwong?source=rss-b86a7600c838------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sun, 15 Nov 2026 23:36:55 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@thikonwachiraarunwong/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[วิธีทำให้ visual studio 2022 สามารถสร้าง solution ด้วย template .NET Framework 4.7.2 หรือ 4.8 ได้]]></title>
            <link>https://medium.com/@thikonwachiraarunwong/%E0%B8%A7%E0%B8%B4%E0%B8%98%E0%B8%B5%E0%B8%97%E0%B8%B3%E0%B9%83%E0%B8%AB%E0%B9%89-visual-studio-2022-%E0%B8%AA%E0%B8%B2%E0%B8%A1%E0%B8%B2%E0%B8%A3%E0%B8%96%E0%B8%AA%E0%B8%A3%E0%B9%89%E0%B8%B2%E0%B8%87-solution-%E0%B8%94%E0%B9%89%E0%B8%A7%E0%B8%A2-template-net-framework-4-7-2-%E0%B8%AB%E0%B8%A3%E0%B8%B7%E0%B8%AD-4-8-%E0%B9%84%E0%B8%94%E0%B9%89-dea18d4f8c0b?source=rss-b86a7600c838------2</link>
            <guid isPermaLink="false">https://medium.com/p/dea18d4f8c0b</guid>
            <category><![CDATA[csharp]]></category>
            <category><![CDATA[visual-studio]]></category>
            <category><![CDATA[netframework]]></category>
            <dc:creator><![CDATA[ThikOn Wachiraarunwong]]></dc:creator>
            <pubDate>Sun, 11 Jun 2023 13:15:42 GMT</pubDate>
            <atom:updated>2023-06-11T13:15:42.072Z</atom:updated>
            <content:encoded><![CDATA[<h3>วิธีทำให้ visual studio 2022 สามารถสร้าง solution ด้วย template .NET Framework 4.7.2 หรือ 4.8 ได้</h3><p>vs2022 ปกติจะตั้งค่า default ให้เป็นการสร้าง project ด้วย framework ตัวใหม่ๆ เช่น .NET 6 หรือ .NET7 เวลาจะ POC ของเก่าๆ จะไม่สามารถสร้าง Solutions เพราะเราจะหา template ไม่เจอ</p><p>ให้ไปที่ visual studio installer ที่อยู่บนเครื่องเรา แล้วก็ลองส่องๆ ดูตาม wizard ที่ได้มา</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*-v_Nu65W7yby1r63-PEqug.png" /></figure><p>เลือก checkbox ตามรูป</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*-AJ4DkgZjRI0gvcPz2Zz1Q.png" /></figure><p>หลังจากติดตั้งแล้ว ก็ทำการปิด เปิด visual studio ใหม่ อย่าลืมใส่ Keyword ในช่องค้นหาก่อน ไม่งั้นหายังไงก็ไม่เจอ</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*saWrFXcDKCy8nnZSJjUxxg.png" /></figure><p>ขอให้สนุกกะอดีตที่ผ่านมาอย่างเร่าร้อนของเรา ๆ กันครับ :)</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=dea18d4f8c0b" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[บันทึก Humanistic Architecture]]></title>
            <link>https://medium.com/@thikonwachiraarunwong/%E0%B8%9A%E0%B8%B1%E0%B8%99%E0%B8%97%E0%B8%B6%E0%B8%81-humanistic-architecture-89f73a334ff3?source=rss-b86a7600c838------2</link>
            <guid isPermaLink="false">https://medium.com/p/89f73a334ff3</guid>
            <category><![CDATA[humanistic-psychology]]></category>
            <category><![CDATA[software-engineer]]></category>
            <dc:creator><![CDATA[ThikOn Wachiraarunwong]]></dc:creator>
            <pubDate>Mon, 06 Feb 2023 17:32:42 GMT</pubDate>
            <atom:updated>2023-02-06T17:32:42.263Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*Fqn9oQfkeGKKnzoP" /></figure><p>ก่อนที่จะเริ่มเรียน ในหัวพยายามจะไม่คาดหวัง และบอกว่าเรียนจบแล้วตัวเราจะได้อะไร เพียงแค่ปล่อยวางและเปิดรับเพื่อให้เราไม่ได้กำหนดปลายทางของมัน (แต่ลึกๆก็มีบ้างแหละเพราะ โดยส่วนตัวจะไม่ชอบอะไรที่เป็นแนวจิตวิทยาเท่าไหร่ เพราะภาพยังจำกับการตื่นเช้าไปนั่งเช็คชื่อในคาบจิตวิทยาสมัยก่อน ที่บอกว่าฉันเรียน วิดคอม แล้วทำไมต้องเรียนด้วยวะ แต่พอเริ่มทำงานมาเรื้อยๆจนถึงปัจจุบันแม่งมันโคตรจะสำคัญ)</p><p>เมื่อเราไม่พอใจกับสิ่งๆหนึ่ง สิ่งๆนั้นจะเป็นจะกลายเป็นปัญหาในอีกบริบทหนึ่งแต่ถ้าเมื่อไหร่ เรามีความพึ่งพอใจกับ สถานะการณ์นั้นๆ มันก็จะไม่ใช่ปัญหาอีกต่อไปเป็นประโยคที่ชอบมากเมื่อได้มานั่งเรียนหัวข้อ Humanistic Architecture</p><p>นิยามของหลักจิตวิทยา โดยคร่าวๆ จะถูกแบ่งออกเป็น</p><ol><li>Behaviorism</li><li>Psychoanalysis</li><li>Humanistic</li></ol><p>โดย พี่ชาคริสได้หยิบเอา humanistic มาเป็นเครื่องยึดเหนี่ยวกับการออกแบบสถาปัตยกรรมซอฟต์แวร์ และได้เอามาแบ่งปันความรู้กันในคลาสนี้ เนื้อหาในแต่ละวันมีดังนี้</p><h4>Day 1#</h4><p>เราสามารถเรียกได้เลยว่าดำดิ่ง …. ด้วยความที่ไม่ชอบจิตวิทยามาตั้งแต่แรก การเปิดรับอะไรที่มากะแนวทางนี้มักจะมีความไม่ตั้งใจ ปนๆอยู่ กันพอสมควร ซึ่งผู้สอน ได้หยิบเอาหลักการ therapy ที่มีชื่อว่า Satir มาเล่าสู่กันฟัง และพูดอยู่ประโยคนึงว่า “คนเรามีศักยภาพที่หลับซ้อนอยู่ในตัวเรากันทุกคนอยู่แล้ว เพียงแค่มันยังไม่มีใครปลุกมันขึ้นมา” ในใจนึกคิดด้วยตนเองอีกอย่างนึงว่า นี่มันขายตรงหรือเปล่าเนี้ย แต่พอฟังไปเรื้อยๆ ผู้สอนได้พูดเตือนขึ้นมาว่าหลักการที่หยิบยกมานี้ มันขึ้นอยู่กับคนที่นำมาใช้ ถ้าใช้ไปในทางที่ผิดเราก็จะได้รับผลลัพธ์ที่ผิด … จากตรงนี้ผมเข้าใจว่าสิ่งที่เคยไปนั่งทนฟังพวกที่ขายตรงมาคือ..มันใช่ คนพวกนั้นอาจจะไม่ได้ผิดแต่เค้าเลือกใช้เครื่องมือกระตุ้นความสามารถของคนเรานี่ละ หลังจากนั้นก็เลยเริ่มปล่อยวาง และเปิดใจมากขึ้น</p><p>กลับมาที่เนื้อหา.. สิ่งที่คัญของคลาสเรียนนี้คือการที่ทำให้เราได้เข้าใจตัวเองมากขึ้น และกล้าที่จะสื่อสารกับคนอื่นๆ ได้อย่างมีประสิทธิภาพ และสามารถหาวิธีรับมือกับอารมณ์ของคนได้ดีขึ้น โดยมีกระบวนการ 3 ศูนย์ (ไม่ใช่ที่เป็ดแพ้นะ) หรือมีชื่อภาษาอังกฤษที่เรียกว่า 3 Centre of Intelligence ประกอบไปด้วย</p><ol><li><strong>Head Centre</strong>: ความคิด, ความกลัว (กลัวกับอนาคตที่ยังไม่เกิด), ความกังวล (เป็นผู้ชนะ แล้วผู้ชนะได้อะไร), เหตุผล</li><li><strong>Heart Centre</strong>: ความรู้สึก, พลังที่อยู่ในใจ, ความอยาก</li><li><strong>Body Centre</strong>: การกระทำ, การตอบสนอง (เกิดจากสัญชาตญาณ) หรือยังตัวอย่างเช่นความโกรธต้องระบายหรือทำร้ายกับผู้อื่น</li></ol><p>ซึ่งทั้งหมดจะเป็นตัวนำพามาสู่ “ความปรารถนา” (yearnings) …. จบตรงนี้ ยังคิดอยู่ว่าขายตรง แล้วมันเกี่ยวกันยังไง (วะ?)</p><p>ด้วยความที่ <strong>day 1#</strong> เต็มไปด้วยการนำพาทฤษฎีต่างๆ และโมเดลของ physicology ใช้เป็นเครื่องมือในการบำบัด เช่น Satir model, Enneagram แถมพาทำกิจกรรม ประกอบการเรียน คลาสเรียนในวันแรก ก็จบลงด้วยความ งงๆ ระหว่างหลังเรียนก็ มาลองทบทวนกับ keyword ที่ได้มา (<em>**นี่ไงคือสิ่งที่คลาสเรียนในวันแรกอยากจะสื่อ “ถ้าเราคิดว่ามันเป็นปัญหา มันจะทำให้เกิดปัญหา และความปรารถนาที่จะแก้ปัญหาในความไม่เข้าใจ​”</em>)</p><h4>Day 2#</h4><p>ว่าด้วยเรื่องของ abstraction ที่พูดถึง expectation ในสิ่งที่เราต้องการในด้าน architecture</p><ol><li>Conceptual abstraction</li><li>Structural abstraction</li></ol><p>การตีความ yearning ในรูปแบบต่างๆ ไม่ว่าจะเป็นในด้าน comfort, safe หรือ happiness</p><blockquote>“เริ่มลงมือ”</blockquote><p>การลงมือในคลาสมีกิจกรรมให้ทำร่วมกันเป็นจำนวนมากเพื่อทำให้เราฝึกการคิด และวิเคราะห์สถานะการณ์ในแต่ละแบบ แก่นของมันคือ การนำเอาหลัก ที่ได้เล่ามาประยุกต์ ในบทความนี้ถ้าเราจะยกตัวอย่างที่เห็นได้ชัดและใกล้เคียงกะความเป็นจริง โดยใช้หลักของ 3 ศูนย์มาช่วยในการวิเคราะห์ ในงานที่เกี่ยวกับ software engineer ได้ดังตัวอย่างประมาณนี้</p><blockquote>“เราอยากเปลี่ยนเป็น micro service ดีไหม” ?</blockquote><p>จะเห็นว่า ตัวอย่างที่หยิบยกมาเราจะเห็นได้ว่า yearning คือ …</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/442/1*d7RAcHjAYvUK7SHOYCHFOg.png" /><figcaption>problem solving</figcaption></figure><p>แบ่งออกเป็น 3 ศูนย์ได้ประมาณนี้</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/637/1*sUSBYRVdF5Y12eCtMrqfAw.png" /><figcaption>3 Centre of intelligence</figcaption></figure><p>ตัวอย่างที่ลองทำอาจจะไม่ใช่คำตอบที่ถูกต้องที่สุด แต่มันคือการที่ทำให้เราได้ถอยหลังออกมาและย้อนกลับมาตั้งคำถามกับตัวเอง, ทีม, user, ลูกค้า เพื่อวิเคราะห์ ความปรารถนาของผู้รับ ได้ยอมรับมันได้อย่างดีที่สุด หรือ decision making ประมาณนั้น ซึ่งมันก็ดีกว่าเรา กระโดดลงไปอยู่กับปัญหา แล้วหาทางออกไม่ได้นั่นแหละ</p><p>เป็นบทความที่เขียนยาวที่สุดเท่าที่เคยเขียนมาเลยทีเดียว เนื้อหาทั้งหมดอาจจะไม่สามารถถ่ายทอดออกมาได้ทั้งหมด แต่พยายามหยิบเอามาให้เห็นถึงวิธีการใช้งานเพื่อเป็น Guideline ให้กับตัวเองเวลากลับมาอ่านใหม่อีกรอบ ถ้าผิดพลาดประการใดขออภัยมา ณ ที่นี้ครับ</p><p>ถ้ามีโอกาสอยากไปเข้าร่วมคลาสบ่อยๆ ไปรับพลังจากคนเก่งๆ คนที่พร้อมจะเพิ่มพลังบวก ให้กับเรา และอย่าลืมที่จะรู้คุณค่าของตัวเอง</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=89f73a334ff3" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[บันทึกการใช้งาน TTL บน MongoDB]]></title>
            <link>https://medium.com/@thikonwachiraarunwong/%E0%B8%9A%E0%B8%B1%E0%B8%99%E0%B8%97%E0%B8%B6%E0%B8%81%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B9%83%E0%B8%8A%E0%B9%89%E0%B8%87%E0%B8%B2%E0%B8%99-ttl-%E0%B8%9A%E0%B8%99-mongodb-546e2c0ea9ea?source=rss-b86a7600c838------2</link>
            <guid isPermaLink="false">https://medium.com/p/546e2c0ea9ea</guid>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[logging]]></category>
            <category><![CDATA[mongodb]]></category>
            <dc:creator><![CDATA[ThikOn Wachiraarunwong]]></dc:creator>
            <pubDate>Tue, 27 Dec 2022 15:47:25 GMT</pubDate>
            <atom:updated>2022-12-27T15:47:25.831Z</atom:updated>
            <content:encoded><![CDATA[<p>ได้มีโอกาสเข้ามารีวิว วิธีการจัดเก็บข้อมูลบน MongoDB ของที่เราทำงานอยู่พบว่ามีปริมาณจัดเก็บข้อมูลที่มหาศาลมาก</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*1D7MD_bWiEN1SCjkE9BhAQ.png" /></figure><p>พอตรวจสอบเชิงลึกเข้าไปอีกก็พบว่าไม่ได้มีการคาดคะเนไว้ก่อนว่าจะต้องมีวิธีการ จัดการกับข้อมูลที่เรากองไว้เป็นภูเขา ทำให้มีผลต่อค่าใช้จ่ายในส่วนที่เกี่ยวข้องกับ Stroage ที่มากขึ้นเป็นเงาตามตัว ถ้าทีมงานไม่ได้มีการวางแผนเรื่องการ Operate กับข้อมูลพวกนั้น การเรียกดูข้อมูลหนึ่งที ก็จะสามารถไปบดกาแฟ ด้วยเครื่องบดมือ แถมรอเวลา โมก้าพ็อตเดือด ได้เลยทีเดียว</p><blockquote>TTL ย่อมาจาก Time to live</blockquote><p>พูดกันแบบภาษาที่เข้าใจกันง่ายๆ คือเราสามารถกำหนดวันหมดอายุของข้อมูลที่อยู่ใน database ของเราได้นั่นเอง</p><p>วิธีการเริ่มจากการ กวาดสายตาดูว่ามี attribute ไหนที่บ่งบอกถึง วันและเวลาได้ จากนั้นก็เพิ่ม index เข้าไป (หน่วยของ TTL ที่เราจะกำหนด มีหน่วยเป็น วินาที)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ZarL4WWj7fAzqw_j-AYI8A.png" /><figcaption>เพิ่ม index TTL ผ่าน MongoDB compass</figcaption></figure><p>จากนั้นกดปุ่ม create index เพื่อสร้าง แล้วรอสักครู่ (service ของ MongoDB จะมี schedule ทำงานทุกๆ 60 วินาที) ผลลัพธ์ที่ได้ข้อมูลที่เรายังคงมีอยู่ใน database จะเป็นไปตามเงื่อนไขที่เรากำหนดใน TTL</p><p>PS.. วิธีนี้อาจจะไม่ใช่ Golden Hammer เสมอไป แต่จะขึ้นอยู่กับ user case ที่ได้รับมาด้วย</p><p>ขอบคุณ พี่ปุ๋ยและพี่ฟี่ ที่ให้คำแนะนำดีๆในห้อง <a href="https://www.facebook.com/groups/mongodb.th">Thailand MongoDB User Group</a></p><p>Reference: <a href="https://www.mongodb.com/docs/manual/core/index-ttl/">https://www.mongodb.com/docs/manual/core/index-ttl/</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=546e2c0ea9ea" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[note: การสร้าง Private NuGet Server ด้วย Baget]]></title>
            <link>https://medium.com/@thikonwachiraarunwong/note-%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%AA%E0%B8%A3%E0%B9%89%E0%B8%B2%E0%B8%87-private-nuget-server-%E0%B8%94%E0%B9%89%E0%B8%A7%E0%B8%A2-baget-c6a2104f23a0?source=rss-b86a7600c838------2</link>
            <guid isPermaLink="false">https://medium.com/p/c6a2104f23a0</guid>
            <category><![CDATA[microsoft]]></category>
            <category><![CDATA[baget]]></category>
            <category><![CDATA[dotnet]]></category>
            <category><![CDATA[nuget-package]]></category>
            <category><![CDATA[development]]></category>
            <dc:creator><![CDATA[ThikOn Wachiraarunwong]]></dc:creator>
            <pubDate>Sun, 12 Apr 2020 16:08:49 GMT</pubDate>
            <atom:updated>2020-04-12T16:08:49.209Z</atom:updated>
            <content:encoded><![CDATA[<h3>note: การสร้าง private nuget server ด้วย Baget</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1015/1*hPc8qWYttRXTfX7L60YdhA.png" /></figure><h4>Pull image</h4><pre>docker pull loicsharma/baget</pre><h4>Createbaget.env</h4><pre># The following config is the API Key used to publish packages.<br># You should change this to a secret value to secure your server.<br>ApiKey=NUGET-SERVER-API-KEY<br><br>Storage__Type=FileSystem<br>Storage__Path=/var/baget/packages<br>Database__Type=Sqlite<br>Database__ConnectionString=Data Source=/var/baget/baget.db<br>Search__Type=Database</pre><p>เมื่อสร้างแล้วให้ docker run แต่อย่าลืมว่าตอนสั่งให้ docker run ทำงานจะต้องดู directory เดียวกัน</p><h4>Docker run</h4><pre>docker run --rm --name nuget-server -p 5555:80 --env-file baget.env -v &quot;$(pwd)/baget-data:/var/baget&quot; loicsharma/baget:latest</pre><p>จากนั้นจะได้หน้าแห้งๆแบบนี้ขึ้นมา<a href="http://localhost:5555/upload">http://localhost:5555/upload</a> เข้าผ่าน link นี้</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*EQX5BDmmHwK0EfLgwH52aQ.png" /></figure><p>เมื่อ service รันแล้วเราไปทำไฟล์ *.nuspec หรือไฟล์ spec นั่นละแต่เราจำเป็นจะต้องใช้ nuget.exe เป็นตัวสั่ง build (จะพิมพ์ nuget เลยไม่ได้) ไปโหลดที่ <a href="https://dist.nuget.org/win-x86-commandline/latest/nuget.exe">download</a> แล้วไปที่ directory ที่เราสร้าง project ไว้</p><pre>nuget spec [project_name].csproj</pre><p>ถ้าหา nuget ไม่เจอให้ใช้ path เต็มแทน c:\users\account\nuget\nuget.exe</p><p>สร้างไฟล์ *.nuspec แล้วก็แก้ไขรายละเอียด และสร้างไฟล์ NuGet Package</p><pre>nuget pack</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/241/1*N6oHLmTe6crtdjur19ZTTg.png" /></figure><p>push *.nupkg ขึ้นไปไว้บน Baget</p><pre>dotnet nuget push -s http://localhost:5555/v3/index.json -k [key_ที่อยู่ในไฟล์ baget.env] [package_name].nupkg</pre><p>หน้าตาบน Baget ประมาณนี้</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ojcf1gRmFE_L4t0Gyy-98g.png" /></figure><p>หน้าตามันก็จะเหมือนกับ https:/nuget.org เลยทีเดียว แต่เวลาเรียกใช้ต้องไปกำหนด Setting ใน NuGet Package Manager ก่อนไม่อย่างนั้นจะมองไม่เห็น Private NuGet ที่เราสร้างไว้</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/981/1*xI4-fnhqux2zTlQxXy1KLg.png" /></figure><p>ref : <a href="https://github.com/loic-sharma/BaGet">https://github.com/loic-sharma/BaGet</a></p><p>ref : <a href="https://loic-sharma.github.io/BaGet/quickstart/docker/">https://loic-sharma.github.io/BaGet/quickstart/docker/</a></p><p>ref : <a href="https://www.nuget.org/downloads">https://www.nuget.org/downloads</a></p><p>ref : <a href="https://nuget-tutorial.net/en/tutorial/100001/create-nuget-package">https://nuget-tutorial.net/en/tutorial/100001/create-nuget-package</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=c6a2104f23a0" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[สรุปแบบเร็วๆ กับ Global Azure Bootcamp 2019 @ Microsoft Thailand]]></title>
            <link>https://medium.com/pranworks/%E0%B8%AA%E0%B8%A3%E0%B8%B8%E0%B8%9B%E0%B9%81%E0%B8%9A%E0%B8%9A%E0%B9%80%E0%B8%A3%E0%B9%87%E0%B8%A7%E0%B9%86-%E0%B8%81%E0%B8%B1%E0%B8%9A-global-azure-bootcamp-2019-microsoft-thailand-7325d280167?source=rss-b86a7600c838------2</link>
            <guid isPermaLink="false">https://medium.com/p/7325d280167</guid>
            <category><![CDATA[thailand]]></category>
            <category><![CDATA[microsoft-mvp]]></category>
            <category><![CDATA[microsoft]]></category>
            <category><![CDATA[azure]]></category>
            <category><![CDATA[global-azure-bootcamp]]></category>
            <dc:creator><![CDATA[ThikOn Wachiraarunwong]]></dc:creator>
            <pubDate>Thu, 02 May 2019 16:42:41 GMT</pubDate>
            <atom:updated>2019-05-02T16:43:41.159Z</atom:updated>
            <content:encoded><![CDATA[<h3>Global Azure Bootcamp 2019 @ Microsoft Thailand — แบบย่อ ๆ</h3><p>เมื่อวันที่ 27 เม.ย 2562 ที่ผ่านมาก็ได้มีโอกาสเข้าร่วมงาน Global Azure Bootcamp 2019 ที่ทางทีมงาน mvpskill จัดขึ้น เนื้อหาถูกแบ่งออกเป็น 2 ส่วนใหญ่ๆ คือ Dev และ IT (จริงๆ ก็น่าสนใจทั้งหมดแต่ เราก็เข้า Dev ซะหมดวัน)</p><p>เนื้อหาในกลุ่มของ Dev จะพูดถึง</p><ol><li>Migrate Web Sites to Azure Web Apps</li><li>Azure DevOps</li><li>Overview of Azure AI and how to use it today</li><li>Azure Kubernetes Services (AKS)</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*2o0vQKp4DvjWUeZO" /></figure><p><strong>#1. Migrate Web Sites to Azure Web Apps</strong></p><p>หัวข้อนี้จะพูดหนักไปทางการนำเว็บไซต์ขึ้นไปไว้บน App Service โดยที่เราจะต้องทำผ่านหน้า <a href="https://portal.azure.com/">portal.azure.com</a> หัวข้อนี้ถ้าไม่เคยใช้งาน Azure มาก่อนจะ ว้าวหน่อย</p><p>Reference: <em>การ Publish Web นั้นในความคิดส่วนตัวน่าจะไม่ยุ่งยากเท่ากับการจัดการกับ Certificate, SSL, และ DNS</em></p><ul><li><a href="https://docs.microsoft.com/en-us/azure/app-service/app-service-ip-restrictions">Azure App Service access restrictions - Azure App Service</a></li><li><a href="https://docs.microsoft.com/en-us/azure/app-service/app-service-web-tutorial-custom-ssl">Bind existing custom SSL certificate - Azure App Service</a></li><li><a href="https://docs.microsoft.com/en-us/azure/app-service/app-service-web-tutorial-custom-domain">Map existing custom DNS name - Azure App Service</a></li></ul><p><strong>#2. Azure DevOps</strong></p><p>ในหัวข้อนี้ได้ พี่ @Surasuk Oakkharaamonphong เป็น Speaker เนื้อหาก็จะพูดถึงการสร้าง Pipeline และการกำหนด Environment ที่เราจะทำ CI/CD (ค่าย Microsoft ก็มีนะ สำหรับ Team ที่มี User ไม่เกิน 5 คนใช้ฟรี แต่บาง Feature ถ้าจ่ายตังบางอย่างมันก็จะสะดวกมากโข่) ด้วยเวลาที่กระชั้นชิดก็ทำให้เก็บรายละเอียดได้ไม่ค่อยเยอะ เป็นที่หน้าเสียดาย</p><p>Reference: <a href="https://landscape.cncf.io/"><em>https://landscape.cncf.io</em></a><em> เป็นเว็บไซต์ที่รวบรวม Product ที่น่าสนใจที่ทำงานอยู่บน Cloud ถ้า Product ตัวไหนน่าสนใจเราก็ไปต่อได้เลย</em></p><p><strong>#3. Overview of Azure AI and how to use it today</strong></p><p>หัวข้อนี้จะรู้สึก Wow เพราะไม่คิดว่า Microsoft จะมี Product ตัวนี้ออกมาเพื่อแข่งกะ เจ้าอื่นๆ ถ้ามีพื้นฐาน C# มานี้จะเป็นเรื่องที่ดีมากเลยสำหรับการนำไปใช้ต่อยอด</p><p>Reference: <a href="https://dev.botframework.com/"><em>https://dev.botframework.com</em></a></p><p><strong>#4. Azure Kubernetes Services (AKS)</strong></p><p>หัวข้อสุดท้ายของงานคงหนีไม่พ้น Azure Kubernetes Services ได้พี่ @fujute มาเป็น Speaker ได้แนะนำถึงการทำงานของ Kubernetes แต่สิ่งที่สำคัญของหัวข้ออาจจะต้องไป Clone Source Code ตัวอย่างจาก Github มาลอง Config และ Build กัน</p><p><a href="https://github.com/Azure/kubernetes-hackfest">Azure/kubernetes-hackfest</a></p><p>ใน Repository นี้มีตัวอย่างการสร้าง Api บน Kubernetes และอยู่รูปแบบของ Microservice ลองไป Run เล่นดู</p><blockquote>เนื้อหาช่วงเช้าจะแนะนำการสร้าง VM Scale Set บน Azure สามารถย้อนดูได้ในช่วงเวลาดังกล่าว</blockquote><blockquote>สุดท้ายที่ขาดไม่ได้คืออาหารเช้าด้วย Bakery เที่ยงด้วยข้าวกล่องโออิชิ และจบด้วย Subway ไม่อ้วนงานนี้จะให้ไปอ้วนตอนไหนได้ละ</blockquote><p>โดยรวมแล้วงานครั้งนี้เป็นปรับเปลี่ยนมุมมองให้กับผู้ที่สนใจที่นำเอา Product หรือ Application จากเดิมที่เราจะต้องจัดซื้อ Server มาวางกองไว้บูชาที่สำนักงาน ให้มาเป็นเอาไปรันไว้บน Cloud แต่บางอย่างก็ขึ้นอยู่กับความเหมาะสมใครชอบแบบไหน ก็ต้องใช้เงินอยู่ดี ~เสียดายเวลาที่พี่ ๆ MVP มีจำกัด ถ้ามีเวลามากคงได้แลกเปลี่ยนประสบการณ์ในการใช้เครื่องมือพวกนี้ระหว่างผู้ร่วมงาน</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/638/1*RRz1SqqkeGz6lgWv2PTI5A.png" /></figure><p><em>ที่เล่ามาอาจจะตกหล่นรายละเอียดไปบางส่วนต้องขออภัยด้วยครับ สามารถดู Clip ย้อนหลังได้ที่ Page ของทาง mvpskill ได้เลยครับ</em></p><blockquote><em>สนใจเข้าไปหาข้อมูลเพิ่มเติมหรือ Section IT Prosได้ที่</em></blockquote><blockquote><a href="https://www.facebook.com/mvpskill/"><em>Facebook/mvpskill</em></a></blockquote><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=7325d280167" width="1" height="1" alt=""><hr><p><a href="https://medium.com/pranworks/%E0%B8%AA%E0%B8%A3%E0%B8%B8%E0%B8%9B%E0%B9%81%E0%B8%9A%E0%B8%9A%E0%B9%80%E0%B8%A3%E0%B9%87%E0%B8%A7%E0%B9%86-%E0%B8%81%E0%B8%B1%E0%B8%9A-global-azure-bootcamp-2019-microsoft-thailand-7325d280167">สรุปแบบเร็วๆ กับ Global Azure Bootcamp 2019 @ Microsoft Thailand</a> was originally published in <a href="https://medium.com/pranworks">PranWorks</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[วิธี Deploy Azure Container Registry (ACR) ไปยัง Azure Kubernetes Service (AKS) แบบง่ายๆ ??]]></title>
            <link>https://medium.com/pranworks/%E0%B8%A7%E0%B8%B4%E0%B8%98%E0%B8%B5-deploy-azure-container-registry-acr-%E0%B9%84%E0%B8%9B%E0%B8%A2%E0%B8%B1%E0%B8%87-azure-kubernetes-service-aks-%E0%B9%81%E0%B8%9A%E0%B8%9A%E0%B8%87%E0%B9%88%E0%B8%B2%E0%B8%A2%E0%B9%86-7fe6a29ac00c?source=rss-b86a7600c838------2</link>
            <guid isPermaLink="false">https://medium.com/p/7fe6a29ac00c</guid>
            <category><![CDATA[azure]]></category>
            <category><![CDATA[containers]]></category>
            <category><![CDATA[kubernetes]]></category>
            <category><![CDATA[microservices]]></category>
            <dc:creator><![CDATA[ThikOn Wachiraarunwong]]></dc:creator>
            <pubDate>Wed, 08 Aug 2018 16:50:23 GMT</pubDate>
            <atom:updated>2018-08-08T16:50:23.639Z</atom:updated>
            <content:encoded><![CDATA[<p>สิ่งที่ควรจะเริ่มต้นก่อนที่จะ Deploy คือเข้าไปสร้างและกำหนดค่า Config ต่างๆ บน Azure Portal ก่อน</p><ol><li>Azure Container Registry : ขั้นตอนนี้เราสร้าง Image จากสิ่งที่เราพัฒนา และได้ทำการ Push เข้าไปเก็บไว้ใน Repository ของ Azure เป็นที่เรียบร้อยแล้ว</li><li>Azure Kubernetes Service: สร้าง “Kubernetes Service” บน Azure Portal แล้ว (Scaling เลือกตามขนาดที่เราจะใช้งานได้เลย)</li></ol><p>เมื่อผ่านขั้นตอนดังกล่าวแล้วก็มาลุยกันเลย ..</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1000/0*tF9HwrHlmbWstEf-.png" /><figcaption>5 นาทีปลอมชัดๆ</figcaption></figure><p># เริ่มต้นด้วยการ Login ไปยัง Azure Container Registry</p><pre>az acr login -n [ACR NAME]</pre><p># เรียกดู Key ที่เราได้จาก ACR</p><pre>az acr credential show -n [ACR NAME]<br>docker login [ACR NAME].azurecr.io -u [ACR NAME] -p [PASSWORD FROM UPPER]</pre><p>หมายเหตุ: แนะนำให้ save เก็บไว้ที่อื่นก่อนจะได้ไม่ต้องพิมพ์อีก</p><p>กระโดดข้ามไปยังฝั่ง Azure Kubernetes Service ขั้นตอนแรกให้ติดตั้ง <a href="https://kubernetes.io/docs/reference/kubectl/overview/">kubectl </a>ก่อน</p><pre>az aks install-cli</pre><p>ถ้ามัน error หรือไม่ได้ก็ไปขโมย url ด้านในมา Download เองเลย</p><p># เรียกดูข้อมูลต่างๆ จาก Cluster ที่สร้างไว้บน Azure และคำสั่งเรียกดู pool ที่กำลังทำงานอยู่</p><pre>az aks get-credentials -g [RESOURCE GROUP NAME] -n [AKS NAME]<br>kubectl get nodes</pre><p># เมื่อทุกอย่างพร้อมแล้วก็มาเพิ่มสิทธิการ pull image ให้กับ AKS บน ACR ถ้าไม่ทำขั้นตอนนี้เราจะไม่สามารถสร้าง pods ที่สามารถ pull image ได้จะติด error ที่เกี่ยวข้องกับ Image</p><pre>kubectl create secret docker-registry [SECRET NAME FROM AZ LOGIN] --docker-server=[ACR NAME].azurecr.io --docker-username=[ACR NAME] --docker-password=[PASSWORD FROM AZ LOGIN] --docker-email=[EMAIL ON ACTIVE DIRECTORY]</pre><p>#เมื่อทำ command ทุกคำสั่งที่ผ่านมาแล้วเราสามารถเช็ค secret key ที่ได้ด้วยคำสั่ง</p><pre>kubectl describe secret</pre><p>ทำมาตั้งนานพึ่งจะให้ pull image จาก ACR บน AKS ได้..หลังจากนี้จะเป็นการ Deploy ขึ้นไปยัง Kubernetes</p><p>#สร้างไฟล์ [deployment name].yml</p><pre>apiVersion: apps/v1<br>kind: Deployment<br>metadata:<br>  name: sample-api <br>spec:<br>  replicas: 1<br>  template:<br>    metadata:<br>      labels:<br>        app: sample-api <br>    spec:<br>      containers:<br>      - name: sample-api<br>        image: [ACR NAME]<a href="http://myregistry.azurecr.io/hello-core:1.0">.azurecr.io/[REPOSITORY NAME]:[</a>VERSION]<br>        ports:<br>        - containerPort: 80<br>      imagePullSecrets:<br>      - name: [SECRET NAME FROM AZ LOGIN]<br>---<br>apiVersion: v1<br>kind: Service<br>metadata:<br>  name: sample-api<br>spec:<br>  type: LoadBalancer<br>  ports:<br>  - port: 80<br>  selector:<br>    app: sample-api</pre><p>ก่อนที่จะใช้คำสั่งถัดไปให้ไปยัง Directory ที่ไฟล์ดังกล่าวอยู่และใช้คำสั่ง เพื่อสร้าง</p><pre>kubectl create -f [DEPLOY FILE NAME].yml</pre><p>รอสั้กครู่…</p><pre>kubectl get service<br>kubectl get pods</pre><p>เพื่อดู สถานะของ service และ pods ที่เราสร้างว่า พร้อมหรือยัง แล้ว…ถ้ามี Image ใหม่ละจะ Update อย่างไร</p><pre>kubectl set image deployment/[APP NAME IN *.YML FILE] [IMAGE NAME]=[ACR NAME].azurecr.io/[IMAGE NAME]:[NEW VERSION]</pre><p>เท่านี้ก็ Deploy เจ้า Container ขึ้นไปยัง Kubernetes Service ที่อยู่บน Azure ได้แล้ว</p><p>Ref: <a href="https://carlos.mendible.com/2017/12/01/deploy-your-first-service-to-azure-container-services-aks/">https://carlos.mendible.com/2017/12/01/deploy-your-first-service-to-azure-container-services-aks</a></p><p>Ref: <a href="https://kubernetes.io/docs/reference/kubectl/overview/">https://kubernetes.io/docs/reference/kubectl/overview</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=7fe6a29ac00c" width="1" height="1" alt=""><hr><p><a href="https://medium.com/pranworks/%E0%B8%A7%E0%B8%B4%E0%B8%98%E0%B8%B5-deploy-azure-container-registry-acr-%E0%B9%84%E0%B8%9B%E0%B8%A2%E0%B8%B1%E0%B8%87-azure-kubernetes-service-aks-%E0%B9%81%E0%B8%9A%E0%B8%9A%E0%B8%87%E0%B9%88%E0%B8%B2%E0%B8%A2%E0%B9%86-7fe6a29ac00c">วิธี Deploy Azure Container Registry (ACR) ไปยัง Azure Kubernetes Service (AKS) แบบง่ายๆ ??</a> was originally published in <a href="https://medium.com/pranworks">PranWorks</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[การทำ CI/CD ด้วย Visual Studio Team Service Part 1]]></title>
            <link>https://medium.com/pranworks/%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%97%E0%B8%B3-ci-cd-%E0%B8%94%E0%B9%89%E0%B8%A7%E0%B8%A2-visual-studio-team-service-part-1-590d828dafd8?source=rss-b86a7600c838------2</link>
            <guid isPermaLink="false">https://medium.com/p/590d828dafd8</guid>
            <category><![CDATA[continuous-integration]]></category>
            <category><![CDATA[vsts]]></category>
            <category><![CDATA[microsoft]]></category>
            <category><![CDATA[continuous-deployment]]></category>
            <category><![CDATA[aspnet]]></category>
            <dc:creator><![CDATA[ThikOn Wachiraarunwong]]></dc:creator>
            <pubDate>Sat, 19 May 2018 16:29:21 GMT</pubDate>
            <atom:updated>2018-05-19T16:29:21.696Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/853/1*fxV3vbOuEGbm1CkwwYV0RA.png" /></figure><p>ว่าด้วยเครื่องมือที่ชื่อว่า <a href="https://www.visualstudio.com/team-services/">Visual Studio Team Service</a> (VSTS) เป็นเครื่องมือที่ทาง Microsoft เปิดให้บริการมาได้สั้กระยะนึงแล้ว แต่คนส่วนมากคิดว่ามันเสียเงิน แต่เอาจริงๆ มันก็มีให้ใช้ได้อยู่นะสำหรับเวอร์ชั่นฟรี ที่รองรับ User เพียงแค่ 5 users เท่านั้นแต่ถ้าต้องการมากกว่านั้นก็เสียตังกันไป หรือมีอีกแนวทางนึงคือ จ่ายค่า Subscript ที่เรียกว่า <a href="https://startups.microsoft.com/en-us/">BizSpark</a></p><h3>Visual Studio Team Service ใช้ทำอะไร?</h3><p>ในการทำ CI/CD หรือที่เราคุ้นหู้ที่เรียกกันว่า Continuous Integration และ Continuous Deliver จะมีขั้นตอนและอะไรอีกมากมาย อันนี้ไม่อธิบายละกันแต่เราจะยกตัวอย่างความสามารถทั้งหมดที่อยู่ใน VSTS(ขอใช้ตัวย่อนะครับ) มาให้ดูก่อน</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*eVCXupQwO8SSQzockrJDoQ.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/755/1*HcswRkBfsiCAuR7kUYmpbA.png" /></figure><p>เท่าที่ดูผ่านๆ มันทำอะไรได้เยอะจริง ๆ แต่ที่เราจะสนใจเอามาทำสิ่งที่เราต้องการก็จะมี Git, Agile Tools, Continuous Integration และ Package Management จะว่าไปใน VSTS ในส่วนของ Source Control สามารถใช้ TFS ได้นะ แต่…. ใช้ Git ดีกว่า</p><h4>สร้างไงหว่า? อ่านมาตั้งเยอะก็ยังงง?</h4><p>อย่างแรกสร้าง Repository บน Git ของ VSTS จะใช้วิธีสร้างสดหรือไป Migrate จาก Account ที่อยู่บน Github ก็ได้นะเออ จากนั้นก็ตรงไปที่เมนู Build and Release เพื่อสร้าง Build Definitions (+New)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/884/1*5jUDY_Ukm88dzrcqRy8B_g.png" /></figure><p>จากนั้นเลือกตำแหน่งของ Source ที่เราต้องการ</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/612/1*aO740Tx02cBSkBSTSo9fng.png" /><figcaption>ขอ sensor รายละเอียดนิดนึง</figcaption></figure><p>เมื่อเราเลือก Source ที่เราต้องการแล้วสิ่งที่จะต้องทำลำดับถัดไปคือการเลือก Template สำหรับการ Build ซึ่งใน VSTS ก็มีให้เลือกอย่างมากมายไม่ว่าจะเป็น ASP.NET , ASP.NET Core, ASP.NET with Containers หรือแม้กระทั่งการบิ้ว Android แต่… ตอนนี้เราจะสร้างเป็น ASP.NET ที่เราคุ้นเคยกัน</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/668/1*gZCXcYAr5BHTdXuMee7L2A.png" /><figcaption>ถ้าจะใช้ตัวอื่นลักษณะการเตรียม Environment ไม่เหมือนกัน</figcaption></figure><p>ถัดมาจะเป็นการกำหนดค่า ของการ Build อันนี้ละที่น่างง … ส่วนที่เราจะให้ความสำคัญเป็นพิเศษคือ Agent queue (ไม่ใช่ Agent Shield นะ … ตึ่งงงง) เพราะการเลือก Agent คือการเลือกที่ ที่เราจะ Build Source Code ของเราเนี้ยละ เพราะอย่างที่คุ้นเคยสำหรับสาย .Net คือการ กด F5 นั้นเอง กระบวนการนั้นจะเกิดบนเครื่องของเรา ไม่ใช่ที่ใดอื่น แต่.. การที่เราสร้าง Build Definition นั้นจะอยู่บน Cloud ซึ่งว่ากันง่ายๆคือ มันจะคิดตังนั่นละ เราเลยเลือกใช้ Agent ที่ฟรี นั่นก็คือ <a href="https://docs.microsoft.com/en-us/vsts/build-release/concepts/agents/agents?view=vsts">Private Agent</a> (ถ้าไม่อยากจะทำอะไรเกี่ยวก่ะ Command เยอะๆ เราก็เลือก Hosted VS2017 แต่การเลือกแบบนี้จะคำนวนตาม Build Time จากนั้นก็คิดตัง ส่วนวิธีการสร้าง Private Agent จะมีลำดับขั้นตอนอธิบายอยู่พอสมควร ลองศึกษาดูก่อนได้)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*U3uGXPJm65WEv8a5c4mzjA.png" /></figure><p>เราจะเห็นได้ว่า Path to solution or packages.config นั้นจะพยายามหาไฟล์ที่มีนามสกุล .sln อยู่ ซึ่งนามสกุลนั้นคือไฟล์ Solution นั่นเอง</p><p>ย้อนกลับไปที่การเลือก Build Template ถ้าเราสั่งเกตทางด้านซ้ายของรูปด้านบนจะเห็น Step ในการทำงานซึ่ง Step พวกนี้จะถูกกำหนดมาจากการเลือก Template นั่นเอง ถ้าเรายังมึนๆ กะการกำหนดค่าต่างๆ ก็ใช้เดิมๆ ที่เค้ากำหนดมาให้เนี้ยละจะสะดวกที่สุด</p><p>เมื่อเรากำหนดค่าเรียบร้อยแล้วก็กดปุ่ม “Save &amp; queue” เพื่อให้ Build เริ่มทำงาน เพียงทำนี้เราจะได้ Build ในเบื้องต้นแล้วววว Build success หรือ fail เราไม่รู้ แต่รู้ว่ามีต่อ Part 2 ละกัน</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=590d828dafd8" width="1" height="1" alt=""><hr><p><a href="https://medium.com/pranworks/%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%97%E0%B8%B3-ci-cd-%E0%B8%94%E0%B9%89%E0%B8%A7%E0%B8%A2-visual-studio-team-service-part-1-590d828dafd8">การทำ CI/CD ด้วย Visual Studio Team Service Part 1</a> was originally published in <a href="https://medium.com/pranworks">PranWorks</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[ลอง Github code embedding บน Blog]]></title>
            <link>https://medium.com/@thikonwachiraarunwong/%E0%B8%A5%E0%B8%AD%E0%B8%87-github-code-embedding-%E0%B8%9A%E0%B8%99-blog-3ce8d4c1c25f?source=rss-b86a7600c838------2</link>
            <guid isPermaLink="false">https://medium.com/p/3ce8d4c1c25f</guid>
            <category><![CDATA[blog]]></category>
            <category><![CDATA[gist]]></category>
            <category><![CDATA[embedding]]></category>
            <category><![CDATA[github]]></category>
            <category><![CDATA[share]]></category>
            <dc:creator><![CDATA[ThikOn Wachiraarunwong]]></dc:creator>
            <pubDate>Sat, 14 Oct 2017 15:39:00 GMT</pubDate>
            <atom:updated>2017-10-14T15:39:00.933Z</atom:updated>
            <content:encoded><![CDATA[<p>ลองหน่อย</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/b44daa6e13018f415ffebf22e70a6863/href">https://medium.com/media/b44daa6e13018f415ffebf22e70a6863/href</a></iframe><p>จริงๆแล้วทำง่ายๆ มากเพียงเข้าไปที่ <a href="http://gist.github.com/">Gist</a> แล้วก็ไปสร้างสิ่งที่ต้องการได้เลย หรือเราจะก๊อบปี้ Source code ของเรามาแปะก็ได้ชิลๆ กันไป</p><p># จะว่าไปนึกว่าก๊อปปี้ออกมาจาก <a href="http://github.com/">Github</a> ได้เลย</p><p>ประโยชน์ของมันอีกอย่างเราสามารถสร้าง Gist ขึ้นมาเพื่อให้คนอื่นๆ comment ได้ด้วยแหะ</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1023/1*1v20U4lPlQFh58wfVotdFQ.png" /></figure><p>-จบเถอะ -</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=3ce8d4c1c25f" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[สรุปสิ่งที่ได้จากงาน:]]></title>
            <link>https://medium.com/@thikonwachiraarunwong/%E0%B8%AA%E0%B8%A3%E0%B8%B8%E0%B8%9B%E0%B8%AA%E0%B8%B4%E0%B9%88%E0%B8%87%E0%B8%97%E0%B8%B5%E0%B9%88%E0%B9%84%E0%B8%94%E0%B9%89%E0%B8%88%E0%B8%B2%E0%B8%81%E0%B8%87%E0%B8%B2%E0%B8%99-c2f1405ba113?source=rss-b86a7600c838------2</link>
            <guid isPermaLink="false">https://medium.com/p/c2f1405ba113</guid>
            <category><![CDATA[ux-research]]></category>
            <dc:creator><![CDATA[ThikOn Wachiraarunwong]]></dc:creator>
            <pubDate>Mon, 31 Oct 2016 16:07:26 GMT</pubDate>
            <atom:updated>2016-10-31T16:25:09.697Z</atom:updated>
            <content:encoded><![CDATA[<p><a href="https://www.facebook.com/events/1222338511163607/?action_history=null">Foundations of UX Research: How to bootstrap it for your startup</a> @ punspace</p><p>พอดีได้มีโอกาสไปนั่งฟัง Mr. Ben Kim (เขียนอย่างงี้มั้ง) ได้มาแบ่งปันประสบการณ์ในการศึกษาถึง UX Research แต่ดันเป็นเสียง Sound track ฟังออกบ้างและไม่ออกบ้างเพราะมัวแต่ก้มหน้าพิมพ์ใส่โทรศัพท์ (สงสัยต้องหาตังซื้อ Note 5 สินะ)</p><p>แต่ละเซตชั่นถูกแบ่งออกเป็น 3 เซตชั่นคือ</p><ol><li>Basic of UX Research</li><li>Customer observation</li><li>User personas and usability testing</li></ol><p>เริ่มมาก็พูดกันถึงเรื่องการโฟกัสว่าเราควรจะทำ Product ของเรายังไงให้น่าสนใจ(อันนี้ก็ต้องให้ความสำคัญเพราะว่าถ้าไม่น่าสนใจละใครจะใช้ฟร่ะ) ถัดมาก็มาพูดถึงการใช้เวลาไปกับการปรับเปลี่ยนหน้าจอการออกแบบเพื่อให้สอดคล้องกับการใช้งานของผู้ใช้โดยตรง (เค้า estimate มาบอกว่า “มากกว่า 50%” ที่เราต้องเสียไปกับการปรับปรุงและเปลี่ยนแปลงนะจ๊ะ) ถัดมาอันนี้น่าจะพีคหน่อยเพราะเกี่ยวกับการ “make money” อย่างที่ว่าอีกนั่นละ ของดีคนอื่นเค้าก็ใช้ลองดูนี่สิ <a href="http://www.mailchimp.com/">www.mailchimp.com</a> และสุดท้ายของหัวข้อเริ่มต้นคือ</p><blockquote>“Customer loyalty”</blockquote><p>ประโยคนี้ละที่จะทำให้งานของเราอยู่รอดและสามารถหากะตังกับมันได้ ถ้าตามที่ตาเบน เค้าเล่ามาเค้าจะยกตัวอย่างที่เกี่ยวข้องกับตลาดของ e-Commerce เพราะจะเห็นภาพได้ชัดเจนที่สุด (หน้าเว็บสวยใช่ว่าจะขายดีเสมอไป) ยกตัวอย่างเช่นหน้าเว็บ store ของ apple มันสื่อสารอะไรมากกว่าคำว่า product จริงไหม สาวก?) เพราะประโยคที่ Quote ไว้มันจะทำให้เกิดลัทธิขึ้นมาเพื่อให้ผู้ใช้/ลูกค้ากลับมาใช้ผลิตภัณฑ์จากเรา</p><p>อันหลังๆจะเริ่มไม่ค่อยได้ตังใจฟังละเพราะเริ่มง่วงขอยกหน้าสไลด์มาแปะก่อนละกัน</p><h4>The Value of UX Reserch</h4><ul><li>Find pattern and prioritize user desires</li><li>Help focus the product development team</li><li>Reduce development costs (ชอบประโยคนี้จริงๆ กล่าวคือเสร็จไวได้ตังเพิ่ม *มั้งง)</li><li>Create a better product</li></ul><p><strong>Note</strong>: เนื้อหาที่พูดในหัวข้อนี้จะพูดถึงวิธีการสื่อสารกับผู้ใช้เพื่อให้ product มี quality ที่สูงขึ้น และมี design ที่ดีขึ้น แต่จะมีสิ่งที่เน้นย้ำกันจริงๆคือ</p><blockquote>What’s the product quality? Please find with user.</blockquote><p>มี keyword อีกหนึ่งคำเดี๋ยวค่อยไปหาเพิ่มคือ “<a href="https://en.wikipedia.org/wiki/Contextual_inquiry"><strong>Contextual inquiry</strong></a>” ง่วงฟังไม่ออกเบลอ จากนั้นตาเบน ก็ปล่อยประโยคเด็ดดออกมาฟังละสะดุ้งไป 10 สเต็ปป คือ</p><blockquote>Talk to one user……. start jumping to a solution.</blockquote><blockquote>Talk to five+ users… start understanding the problem.</blockquote><p>ชัดไหมครับ ชัดจริง ๆ ภาพมันลอยขึ้นมาประดุจบัวพ้นน้ำ (ไหมม) จากนั้นก็มาพูดถึงเรื่อง</p><h4>Focus your team with User personas</h4><p>หัวข้อนี้ง่วงจริงไรจริง จดได้มาประโยคนึงคือ “Fact” เดี๋ยว note ไว้ไปหาเพิ่มเติมแต่จริงๆ แล้วเราต้องแตกประเดนของคำว่า “User personas” ให้ได้เสียก่อน</p><p>จากนั้นก็ยก model มาหนึ่งตัวที่มีชื่อว่า <a href="https://en.wikipedia.org/wiki/Kano_model">Kano model</a> แถมภาพ</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/966/1*_uoR7jP_GV-GdSIa5ZVcIA.jpeg" /></figure><p>จากที่ตื่นแบบเบลอๆ ก็จับใจความมาได้ว่าให้เราตั้งพื้นฐานของ feature ไว้ที่ Basic expectations เนื่องจากจะเป็นช่วงที่เราจะต้องทำการ interview กับผู้ใช้เพื่อให้ได้ Basic feature ขึ้นมา จะดีหรือจะร้ายยังไงก็ต้องผ่านจุดนี้ไปให้ได้ แต่ยังไงแล้ว ผู้ใช้/ลูกค้าก็ยังมองแค่ว่ามันเป็น Basic เปรียบเทียบกับ Gmail ถ้าผู้ใช้กดปุ่ม send มันก็แค่ส่ง email ออกจาก draft เพียงเท่านั้นไม่ได้ทำให้มัน ว้าาาาว เลยสินะ ส่วนหัวข้อสุดท้าย ก็น่าจะตรงตัวกับประโยคที่ว่า “Reduce business cost” (ของมันแน่อยู่แล้วละ) ยังไงแล้วอย่าลืมไปหาต่อกับคำว่า “Kano model”</p><p>มาถึงหัวข้อสุดท้ายแล้วคือ</p><h4>Usability testing and interview</h4><p>หัวข้อนี้ก็เข้าสู่ขั้นเบลอแล้ว ดูหัวข้อสไลด์ละกัน</p><p><strong>Usability testing</strong></p><ul><li>Come with a game plan, don’t “wing it” (ในที่นี้หมายถึงอย่าไปหนีปัญหาใช่หรือเปล่าหว่า)</li><li>Create specific tasks</li><li>Remove your bias</li><li>Listen</li></ul><p>ละก็ทิ้งท้ายด้วยประโยคที่ว่า</p><blockquote>UX stands for <strong>USER </strong>Experience, not “<strong>Use Your</strong>” Experience</blockquote><p>สรุปสุดท้ายของสุดท้ายบาง keyword ที่อยู่ใน content นี้อาจจะต้องหาเพิ่มนิดหน่อยนะครับเพราะคนเขียนง่วง ใครสงสัยหรืองงอะไรก็ตามหาเค้าใน อินตาแกรมละกันนะครับ _BenKip ขอบคุณเฮียมากที่เฮียบินมาพูดในวันนี้ดูสีท่าก็ไม่ได้นอนเหมือนกันตาดำเชียว :P เนื้อหาเบื้องต้นผิดถูกยังไงต้องขออภัยด้วยด้วยนะครับ แนะนำได้ขอบคุณครับผม</p><p>Reference:</p><p>Kano model : <a href="http://baymard.com/blog/kano-model">http://baymard.com/blog/kano-model</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=c2f1405ba113" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Microsoft band 2 — smart device ที่ไม่ค่อยเจอในบ้านเราสั้กเท่าไหร่]]></title>
            <link>https://medium.com/@thikonwachiraarunwong/microsoft-band-2-smart-device-%E0%B8%97%E0%B8%B5%E0%B9%88%E0%B9%84%E0%B8%A1%E0%B9%88%E0%B8%84%E0%B9%88%E0%B8%AD%E0%B8%A2%E0%B9%80%E0%B8%88%E0%B8%AD%E0%B9%83%E0%B8%99%E0%B8%9A%E0%B9%89%E0%B8%B2%E0%B8%99%E0%B9%80%E0%B8%A3%E0%B8%B2%E0%B8%AA%E0%B8%B1%E0%B9%89%E0%B8%81%E0%B9%80%E0%B8%97%E0%B9%88%E0%B8%B2%E0%B9%84%E0%B8%AB%E0%B8%A3%E0%B9%88-19fd5855d167?source=rss-b86a7600c838------2</link>
            <guid isPermaLink="false">https://medium.com/p/19fd5855d167</guid>
            <category><![CDATA[microsoft]]></category>
            <category><![CDATA[wearables]]></category>
            <dc:creator><![CDATA[ThikOn Wachiraarunwong]]></dc:creator>
            <pubDate>Wed, 27 Jul 2016 16:26:37 GMT</pubDate>
            <atom:updated>2016-07-27T16:26:37.213Z</atom:updated>
            <content:encoded><![CDATA[<p><strong><em>Microsoft band 2 — smart device</em></strong> ที่ไม่ค่อยเจอในบ้านเราสั้กเท่าไหร่</p><p><em>รีวิวไม่แบบอวย</em></p><p>จากการที่ได้ลองเล่น เจ้าตัว Microsoft band 2 มาสั้กระยะนึง กับการใช้งานคร่าวๆ ราวกับว่าเป็นเจ้าของเลยทีเดียว สรุปความคิดตอนนั้นได้ว่า มันคงทำได้แค่นี้ละ นับจำนวนที่เราเดินในแต่ละวัน แล้วก็ upload ขึ้นไปในไว้ใน แอพฯ ดูหรู่ๆ (แต่มีเปลี่ยนสีหน้าจอได้ด้วยนะวุ้ย)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/400/1*l_x4HgAPO9AHv42oR57TwA.jpeg" /></figure><p>วันดีคืนดีนึงสนุกจับมาใส่วิ่งซะผลเลยปรากฎว่า ตามรูปโล้ด</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/300/1*F5T1YeX7V5sz_UqMueynUg.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/300/1*ORCYYa27jyCu_iyRePGs4g.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/300/1*7Rm4d__5t82WJ3xfhDdXfA.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/300/1*6Z1FolWuX-7QMIfESbDqjA.jpeg" /></figure><p><strong>สรุปรวมคร่าวๆ(อ้างอิงความชอบตัวเองล้วนๆ) ข้อดีของมันคือ</strong></p><ul><li>ติดต่อสัญญาณ GPS ได้เร็วพอตัวเลยทีเดียว</li><li>ระยะการวิ่งแม่นยำพอสมควร</li><li>อัตราการเต้นของหัวใจเก็บได้ค่าดี</li><li>ถ้าราคามันขายสั้ก 1000–2000 บาท ก็น่าจะดีเลยทีเดียว</li></ul><p><strong>ข้อเสียที่ยังไม่ได้พูดถึง</strong></p><ul><li>อัพโหลดไป Third party application เช่น Strava แล้วค่ามันเพี้ยนมาก ถึงมากที่สุด (คนไรวิ่ง pace 3–4 ได้ตั้ง 4 กม. มโนชัดๆ)</li><li>พออันแรกเพี้ยนเลยไป export .gpx ไฟล์มาใส่ Strava อีกรอบ ก็เน่าเหมือนเดิม เลยขยับไป import ใส่ Runnastic ก็พอทนแต่ ระยะทางหายอีกวุ้ย สรุปแล้วยังหาสาเหตุไม่ได้อยู่ดี (ใช้ๆ ไปเหอ)</li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=19fd5855d167" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>