<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Chanyut Leecharoen</title>
    <description>The latest articles on DEV Community by Chanyut Leecharoen (@chanyut).</description>
    <link>https://dev.to/chanyut</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F306765%2Fb387d8ac-c0b5-45e8-90d0-70a582ac071a.jpeg</url>
      <title>DEV Community: Chanyut Leecharoen</title>
      <link>https://dev.to/chanyut</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/chanyut"/>
    <language>en</language>
    <item>
      <title>Go kit ... first time</title>
      <dc:creator>Chanyut Leecharoen</dc:creator>
      <pubDate>Sun, 27 Dec 2020 08:49:19 +0000</pubDate>
      <link>https://dev.to/chanyut/go-kit-1i5h</link>
      <guid>https://dev.to/chanyut/go-kit-1i5h</guid>
      <description>&lt;p&gt;Go kit เป็น Library ตัวหนึ่ง ที่นำเสนอเรื่องรูปแบบ Structure เอาไว้จัดโครงสร้างของ code ให้เหมาะกับการทำ Micro service บางทีก็ถูกย้อนแย้งว่ามันเป็น Elegant Monolith ซะมากกว่า ซึ่งผมก็เห็นด้วยนิดๆนะ ติดว่าถ้าไม่จำเป็นต้องแยก service ออกมาจริงๆ implement แบบรวมๆไปเลยเป็น Monolith สบายกว่าเยอะจ้า&lt;/p&gt;

&lt;p&gt;Go kit เสนอแนวคิด โดยให้แบ่ง structure ออกเป็น 3 domain (จากด้านในไปด้านนอก)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Service&lt;/strong&gt; ดูแล business logic ใน layer เราสามารถแบ่งออกเป็น layer ย่อยๆ แบบใน clean architecture ได้เช่น data model, repository, logic layer&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Endpoint&lt;/strong&gt; เป็นตัวคั่น business logic ให้แยกออกจากส่วนจัดการการรับส่ง request (transport layer เช่น HTTP, gRPC, ...) ในชั้นนี้จะรับ [Request] object จากชั้น Transport แล้วแกะ parameters &lt;code&gt;(p1, p2, p3, ... pn)&lt;/code&gt; ที่ต้องการออกจาก [Request] object และไป call function ที่ผูกไว้กับ ชั้น Service &lt;code&gt;serviceFunc1(p1, p2, p3, ... pn)&lt;/code&gt; และเอา return Values ที่ได้จากการ call function มารวมกันเป็น [Response] object ส่งกลับออกไปที่ชั้น Transport เพื่อให้ส่งกลับไปให้ client &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transport&lt;/strong&gt; เป็น layer ที่คอยจัดการวิธีรับส่งข้อมูล ด้วย protocol ต่างๆเช่น HTTP, gRPC, ... ในชั้นนี้จะทำหน้าที่แกะเอา parameter ออกจาก Request (กรณีของ HTTP server ก็จะอ่าน parameters จาก Header, Query string, Form หรือ Request body) แล้วเอามาประกอบเป็น [Request] object เพื่อส่งต่อไปที่ Endpoint ที่เชื่อมไว้ และเมื่อได้รับ [Response] object กลับมาจาก Endpoint ก็เอาไปแปลงเป็น Response ในรูปแบบของ Protocol ต่างๆ และส่งกลับไปให้ client (หรืออีก service ที่เป็นคนส่ง request มา) &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;ตัวอย่าง Flow ของ data ที่วิ่งผ่านระหว่าง layer ต่างๆ โดยใช้ HTTP server เป็นชั้น Transport&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;ในชั้น Transport HTTP server รับ HTTP request มา&lt;/li&gt;
&lt;li&gt;แกะ parameter แต่ละตัวออกมาจาก Request body, Header, Form values, หรือ Query string และประกอบกันเป็น [Request] object &lt;/li&gt;
&lt;li&gt;ส่ง [Request] object ต่อไปที่ Endpoint ที่ผูกไว้กับ api path นั้นๆ&lt;/li&gt;
&lt;li&gt;Endpoint รับเอา [Request] object มา แล้วแกะเอา parameter ออกมาเป็น parameters ต่างๆ &lt;code&gt;p1, p1, ..., pn&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;call function ในชั้น Service &lt;code&gt;r1, r2, r3, ... rn = serviceFunction(p1, p2 , p3,... pn)&lt;/code&gt; และเอา returned values &lt;code&gt;r1, r2, r3, ... rn&lt;/code&gt; มาประกอบกันเป็น [Response] object ส่งกลับไปที่ Endpoint&lt;/li&gt;
&lt;li&gt;Endpoint ส่ง [Response] object ไปที่ชั้น Transport&lt;/li&gt;
&lt;li&gt;Transport layer เอา [Response] object มาแปลงเป็น HTTP Response และส่งกลับไปให้ client&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;ความเห็นส่วนตัวหลังจากลอง migrate project เดิม&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;😄 แยก Business logic ออกมาได้ชัดเจนขึ้น สามารถแก้ไขแต่ละ layer โดยไม่กระทบกัน&lt;/li&gt;
&lt;li&gt;😄 ถ้าวาง function ที่รองรับ Business logic ไว้แล้วใน Service layer (และมี function signature ที่นิ่งพอแล้ว) สามารถกระจายงานให้ programmer แยกย้ายกันไปจัดการใน layer ต่างๆได้เลย&lt;/li&gt;
&lt;li&gt;😆 กำลังสนุกกับการใช้ Middleware มันสามารถทำ logging middleware เพื่อ log event ในแต่ละ layer ได้เลย หรือทำ rate limit, load balance และแต่ละ Middleware สามารถถอดเข้าออกได้โดยที่ไม่กระทบมากนัก&lt;/li&gt;
&lt;li&gt;😓 Refractor เหนื่อยหน่อย ถ้ามีการเปลี่ยน function signature จาก Service layer แล้วล่ะก็ กระทบชิ่งยันชั้น Transport layer เลย&lt;/li&gt;
&lt;li&gt;😓 หลังจากลอง implement ไป 3 service พบว่าตัวเองต้องเขียน code เยอะมาๆ และใช้เวลานานเลยทีเดียว อย่างตอนทำ service Leaderboard ที่มีประมาณ 6 endpoint ก็ใช้เวลาไปประมาณ 8-10 ชั่วโมง&lt;/li&gt;
&lt;li&gt;🙄 ถึงแม้จะทำ code snippet เก็บไว้ใช้ มันก็ช่วยลดเวลา และ bug ได้อยู่บ้าง แต่ก็ยังต้อง code เยอะอยู่ดี คิดว่าถ้าใช้จนคล่อง และแม่นขึ้นแล้วจะไปลองใช้ tool พวก code generator ดูบ้าง &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;จบเพียงเท่านี้กับ Blog สั้นๆเรื่อง ครั้งแรกกับ Go kit แล้วถ้าผมเข้าใจเรื่อง Middleware มากขึ้นแล้วจะมาเขียน share ให้อีกทีจ้า &lt;/p&gt;

</description>
      <category>go</category>
      <category>microservices</category>
    </item>
    <item>
      <title>Golang - EP01. Intro </title>
      <dc:creator>Chanyut Leecharoen</dc:creator>
      <pubDate>Mon, 06 Jul 2020 22:31:11 +0000</pubDate>
      <link>https://dev.to/chanyut/golang-ep01-intro-17f0</link>
      <guid>https://dev.to/chanyut/golang-ep01-intro-17f0</guid>
      <description>&lt;h1&gt;
  
  
  เกริ่น...
&lt;/h1&gt;

&lt;p&gt;บทความในซีรี่ Golang tutorial ต่อไปนี้ อาจจะไม่มีคำหยาบหรือมุกตลกให้ทุกท่านได้ขำขันเฮฮากัน จะมีก็แต่ความรู้จากประสบการณ์การใช้ภาษา Go มาตลอด 2 ปี ผสมกับมุกแบบเนิร์ดๆ ฝืดๆ ที่แทรกเข้ามาอยู่บ้าง ถ้าผิดพลาดประการใด ก็ขอภัยมา ณ ที่นี้&lt;/p&gt;

&lt;p&gt;สวัสดีครับ ผม ชาญยุทธ์ aka บิ๊ก ... ตามที่เกริ่นไว้ว่าใช้ golang มาประมาณนึง เลยอยากจะรวบรวมความรู้มาไว้เป็น Tutorial Blog สั้นๆ เอาไว้ใช้เป็นชุดความรู้สำหรับเทรนน้องๆที่เข้ามาร่วมงานใหม่ที่ studio ส่วนถ้าใครหลงเข้ามาอ่านก็ยินดีที่ได้รู้จักครับ และหวังว่าจะได้ประโยชน์กลับไปมิใช่น้อย ถ้ามีคำถามอะไร comment ไว้ได้เลย จะพยายามมาตอบให้ครับ&lt;/p&gt;

&lt;p&gt;ใน Tutorial นี้จะแบ่งเป็น post ย่อยๆ ตามนี้&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/chanyut/golang-ep02-dev-environment-3kme"&gt;Ep02. เตรียม Dev environment&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;ค่อยๆอ่านเรียงๆกันไป แต่ถ้าใครเน้นไวอ่านข้ามไปข้ามมา กระผมขอไม่รับประกันความพึงพอใจมาไว้ ณ ที่นี้ด้วยนะครับ ถ้าพร้อมแล้วมาเริ่มต้นกันที่ &lt;a href="https://dev.to/chanyut/golang-ep02-dev-environment-3kme"&gt;Ep02. เตรียม Dev environment&lt;/a&gt;&lt;/p&gt;

</description>
      <category>go</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Golang - EP02. เตรียม Dev environment</title>
      <dc:creator>Chanyut Leecharoen</dc:creator>
      <pubDate>Mon, 06 Jul 2020 22:25:10 +0000</pubDate>
      <link>https://dev.to/chanyut/golang-ep02-dev-environment-3kme</link>
      <guid>https://dev.to/chanyut/golang-ep02-dev-environment-3kme</guid>
      <description>&lt;p&gt;จะเริ่มต้น dev ด้วย golang เราต้องการ 2 สิ่ง คือ &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Text Editor&lt;/li&gt;
&lt;li&gt;Go Binary&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Text editor
&lt;/h2&gt;

&lt;p&gt;ขอแนะนำเป็น &lt;a href="https://code.visualstudio.com/download"&gt;Visual Studio Code&lt;/a&gt; มันฟรีจร้า ส่วนถ้ามีกำลังทรัพย์ซักหน่อยก็ไปจัดตัวนี้เลย &lt;a href="https://www.jetbrains.com/go"&gt;GoLand&lt;/a&gt; เค้าว่ากันว่าดี... แต่แพงนะ&lt;/p&gt;

&lt;h2&gt;
  
  
  Go Binary
&lt;/h2&gt;

&lt;p&gt;อันนี้จำเป็น เพราะเป็นพวก library files และ tool ต่างๆ ที่จำเป็นต้องใช้ ก็ไป download กันได้ ตาม &lt;a href="https://golang.org/dl/"&gt;link download&lt;/a&gt; นี้เลยจัดไป! (ณ วันที่เขียน post นี้จะเป็น go version 1.14.4)&lt;/p&gt;

&lt;h2&gt;
  
  
  Windows Terminal
&lt;/h2&gt;

&lt;p&gt;จริงๆแล้วเราสามารถใช้ &lt;code&gt;Window cmd&lt;/code&gt; เพื่อ run คำสั่งของ Go ได้ แต่ยังไงขอแนะนำของใหม่ (ณ ตอนที่เขียน blog นี้) ซึ่งก็คือ Windows Terminal สามารถ download ได้ผ่านทาง Microsoft Store &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rQX4solN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/l9yUl33.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rQX4solN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/l9yUl33.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  มาเริ่มกันเลย
&lt;/h2&gt;

&lt;p&gt;ตัว OS ของผมเป็น windows มันจะมี file &lt;code&gt;.msi&lt;/code&gt; ให้ download&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8YQqwZid--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/9rt2swdd16t9vo6kealz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8YQqwZid--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/9rt2swdd16t9vo6kealz.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;หลังจาก download เรียบร้อยก็ double click อย่างที่คุ้นเคย แล้วก็ Next, Next, Yes, Yes ไปตามระเบียบ ...&lt;/p&gt;

&lt;p&gt;หลังจากที่ install เรียบร้อยแล้ว ตัว Go binary จะ extract file ต่างๆไปวางไว้ที่ folder &lt;code&gt;C:\Go&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--G7TQP8gM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/w7lsay596tmmhxsl1odo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--G7TQP8gM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/w7lsay596tmmhxsl1odo.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ถัดมาให้เข้าไปดูที่ Environment Variables&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OP8A5J7o--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/e7aa3w1awnu5ze0jy87p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OP8A5J7o--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/e7aa3w1awnu5ze0jy87p.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Double click ที่ Variable &lt;code&gt;Path&lt;/code&gt; เพื่อดู path ทั้งหมดที่ set เอาไว้&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--37ako3zq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/t4opj2wlks1c8xmqcb01.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--37ako3zq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/t4opj2wlks1c8xmqcb01.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;และดูว่ามี path &lt;code&gt;C:\Go\bin&lt;/code&gt; อยู่แล้วหรือไม่ ถ้ายังไม่มีให้กด New แล้วก็ Browse ไปที่ folder &lt;code&gt;C:\Go\bin&lt;/code&gt; เพื่อ add เข้ามา&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--A8JL0QjT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/ilAmWNO.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--A8JL0QjT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/ilAmWNO.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ถ้าทุกอย่างเรียบร้อยดี ให้ทดสอบโดยการ เปิด &lt;code&gt;Windows Terminal&lt;/code&gt; ขึ้นมา&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_1rw7kwF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/R97Cqy5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_1rw7kwF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/R97Cqy5.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;และพิมพ์ command &lt;code&gt;go version&lt;/code&gt; แล้ว enter จะได้ผลลัพธ์แบบนี้&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4fFScxfw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/YXcco2J.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4fFScxfw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/YXcco2J.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ต่อมาเราจะลง &lt;code&gt;Visual Studio Code&lt;/code&gt; กัน สามารถ download ได้ที่ &lt;a href="https://code.visualstudio.com/download"&gt;Link&lt;/a&gt; นี้ ซึ่งต่อไปนี้ผมจะเขียนชื่อมันสั้นๆว่า &lt;code&gt;vscode&lt;/code&gt; (วี-เอส-โค้ด) นะครับ&lt;/p&gt;

&lt;p&gt;หลังจาก install เรียบร้อยแล้วให้ เปิด &lt;code&gt;vscode&lt;/code&gt; ขึ่นมา ก็จะเห็นหน้าตาหล่อๆแบบนี้&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dx2U_KNL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/QAo6jOs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dx2U_KNL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/QAo6jOs.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ต่อมาเราจะ install extension สำหรับปรับแต่ง เราสามารถใช้ &lt;code&gt;vscode&lt;/code&gt; เพื่อเขียน Go ได้สะดวกขึ้น [1] เลือกที่ Tab "Extension" &amp;gt; [2] พิมพ์ค้นหา "Golang" &amp;gt; [3] กด &lt;code&gt;Install&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--m6BvlvGK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/sw5jZjy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--m6BvlvGK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/sw5jZjy.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;หลังจากลง extension เรียบร้อยแล้ว เราจะ install tools ต่างๆของ Go เพื่อ support การเขียน code ของเรา กด &lt;code&gt;Ctrl + Shift + p&lt;/code&gt; (ทั้งสามปุ่มพร้อมกัน) เพื่อเปิด &lt;code&gt;Command palette&lt;/code&gt; ขึ้นมา &lt;/p&gt;

&lt;p&gt;จากนั้น [1] พิมพ์ &lt;code&gt;go install&lt;/code&gt; ในช่องค้นหา &amp;gt; [2] กดที่ &lt;code&gt;Go install / update tools&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RIxenNoK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/i39pX9e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RIxenNoK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/i39pX9e.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;แล้วมันจะให้เลือกว่าเราจะ install หรือ update package ไหนบ้าง [1] เลือกติ๊กถูกเพื่อเลือกทุก package &amp;gt; [2] กด Ok&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Xp1_E31n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/DSWVQ9q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Xp1_E31n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/DSWVQ9q.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;รอให้ &lt;code&gt;vscode&lt;/code&gt; download และ install package ทั้งหมด ในขั้นตอนนี้อาจจะใช้เวลาซักหน่อยนึง ก็ออกไปเตะบอลก่อนแล้วค่อยกลับมาดูก็ได้นะ&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Z72zA7_C--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/QYu6Ipc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Z72zA7_C--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/QYu6Ipc.png" alt=""&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rhF8pItQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/iTyjpXo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rhF8pItQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/iTyjpXo.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ถ้าทุกอย่างพร้อมแล้ว ใน &lt;a href=""&gt;post ถัดไป&lt;/a&gt; เราจะมาเริ่มเขียน "Hello world" ด้วย Golang กัน &lt;a href=""&gt;ไปต่อกันเลย&lt;/a&gt;&lt;/p&gt;

</description>
      <category>go</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
