สรุปการเปลี่ยนแปลงของ Module ใน Go 1.16

Go 1.16 ออกมาแล้ว ขอสรุปสรุปการเปลี่ยนแปลงที่เกียวข้องกับ Module ดังนี้: Module Mode จะถูกเปิดเป็นค่า Default โดยเราสามารถปิดมันได้ ถ้ายังมี Project ที่ยังไม่ได้ใช้ Module (ยังใช้ GOPATH Mode อยู่) ด้วยคำสั่ง go env -w GO111MODULE=auto แต่… ตั้งแต่ Go 1.17 เป็นต้นไปจะไม่ Support GOPATH Mode  อีกแล้ว แปลว่าเราควร Migrate ไปใช้ Module Mode ได้แล้ว go.mod กับ go.sum จะไม่ถูกอัพเดทโดยอัตโนมัติแล้ว เช่น เวลาเราใช้คำสั่ง go run หรือ go build แล้วมี Module ที่ใช้แต่ไม่ได้ Require ไว้ มันจะไม่ถูกอัพเดทใน go.mod ให้โดยอัตโนมัติ แสดงว่าเราจะต้องแก้ไขไฟล์ go.mod เองหรือไม่ก็ต้องใช้คำสั่ง…

วิธีแก้ปัญหากดเพิ่มเพื่อนใน Desktop ยุ่งยาก โดยแก้ให้เปิด LINE App อัตโนมัติ แทนที่จะแสดง QR Code

วิธีแก้ปัญหากดเพิ่มเพื่อนใน Desktop ยุ่งยาก โดยแก้ให้เปิด LINE App อัตโนมัติ แทนที่จะแสดง QR Code

หมายคนคงเจอปัญหาเวลากด link เพิ่มเพื่อน (เช่น https://line.me/ti/p/@linethailand)ใน Desktop มันจะแสดง QR Code แบบนี้ เป็นความยุ่งยากของเราต้องหยิบมือถือ, เปิด LINE Mobile App แล้ว Scan QR Code อีก หรือไม่ก็ต้อง Copy LINE ID (เช่น @linethailand.com) ไปกรอกเพิ่มเพื่อนใน LINE Desktop App เอาเอง ดูยุ่งยากเนอะ? แล้วถ้ามันมีวิธีที่ง่ายกว่านั้นล่ะ? LINE ID Universal Link เป็น Web App ที่จะช่วยให้คุณสามารถเพิ่มเพื่อนได้จากทั้ง Mobile และ Desktop โดนมันจะเปิด LINE App ในเครื่องนั้นๆขึ้นมาให้โดยอัตโนมัติ นอกจากนี้คุณยังสามารถ Copy LINE ID Universal Link (เช่น https://line.choopong.com/?id=@linethailand) ของคุณไปแชร์ที่ไหนก็ได้ ไม่ว่าจะเป็น…

MuteIt ปิด/เปิดไมค์ใน “คลิกเดียว”

MuteIt ปิด/เปิดไมค์ใน “คลิกเดียว”

ช่วงนี้ Work From Home กันแบบยาวๆ การสื่อสารจึงต้องพึ่งพาการคุยผ่านลำโพงและไมโครโฟนคอมพิวเตอร์เป็นหลัก ซึ่งบางครั้งเราก็ต้องการปิด/เปิดไมค์แบบด่วนๆ แต่ก็ไม่เข้าใจทำไม Mac ไม่ทำปุ่ม Mute/Unmute Mic มาให้เลย ต้องคอยควานหาปุ่มของแต่ละ App เอา ซึ่งตำแหน่งก็อยู่แตกต่างกันไป ไม่ว่าจะเป็น MS Team, Zoom, LINE Meeting, Discord, Slack ทีนี้ลองหา Mute/Unmute Mic Appในท้องตลาดก็ไม่ถูกใจ เช่น ต้องกดหลายคลิกบ้าง, เสียตังค์บ้าง ทางออกง่ายๆเลยคือทำ App ผ่าน Automator ที่เขียนด้วย AppleScript ซึ่งสามารถสั่ง Mute/Unmute ผ่าน script ข้างล่างนี้ได้เลย on run {input, parameters} set volume input volume 0 return input end…

Shall we Go ตอนที่ 8 – Basic Types

เว้นจากตอนที่ 7 มาเกือบปี ช่วงนี้ก็มีงานที่ต้องเขียน Go บ้าง โดยเฉพาะ Microservices ที่เน้นความเสถียรมากๆ มาตอนที่ 8 เรามาดูกันว่า Go มี Basic Type ที่ใช้ประจำๆอะไรบ้าง bool fmt.Println(true && false) // false   fmt.Println(true || false) // true var boolVar bool if !boolVar { fmt.Printf("Default value of boolVar is `%v`\n", boolVar) // Default value of boolVar is `false` } boolVar = true if boolVar…

Shall we Go ตอนที่ 7 – Variable

ตอนนี้เราจะมาศึกษาเรื่อง Variable หรือ var กัน Variable Declaration การประกาศตัวแปร var someInteger int var someText string var someDecimal float64 var one, two, three int var ( pass bool fail bool )var someInteger int var someText string var someDecimal float64 var one, two, three int var ( pass bool fail bool ) Variable Declaration with Initialization การประกาศตัวแปรและกำหนดค่าเริ่มต้น var…

Shall we Go ตอนที่ 6 – Function

เราเรียนรู้ Go กันมาหลายตอนแล้ว คิดว่าคงจะเริ่มคุ้นเคยกับภาษานี้บ้างแล้ว โดยเฉพาะ Function เราเคยเขียน main() และ Uppercase() จากตอนก่อนๆ ตอนนี้เราจะมาดูเรื่อง Function เพิ่มเติมกัน โครงสร้างเบื้องต้นของ Function อธิบายด้วย Code จะเข้าได้ง่ายกว่า func divide(num int) float64 { return float64(num) / 2 }func divide(num int) float64 { return float64(num) / 2 } จาก Code ข้างต้น: Function นี้ชื่อ divide Parameter มี 1 ตัว ชื่อ num มี type เป็น int Return…

Shall we Go ตอนที่ 5 – TDD: Test Driven Development

จากตอนที่แล้ว เรามีการสร้าง lib ตัวนึงชื่อว่า stringutil วันนี้เราจะมาเพิ่ม feature ให้กับ lib ตัวนี้ เราจะพัฒนาด้วย TDD: Test Driven Development คือเราจะเขียน Test ก่อน แล้วจึงเขียน Code เพื่อให้ Test ผ่าน ถ้ายังไม่มี github.com/shall-we-go/stringutil ให้ใช้คำสั่ง $ go get github.com/shall-we-go/stringutil โครงสร้าง file และ directory จะประมาณนี้: $GOPATH/ src/ github.com/ shall-we-go/ stringutil/ .git/ reverse.go reverse_test.go ตอนนี้เรามี function Reverse() รวมถึง test ของมันคือ TestReverse() reverse.go 1 2 3 4…

Shall we Go ตอนที่ 4 – โครงสร้าง file และ directory ของ Go project

ตอนนี้มาปูพื้นฐานความเข้าใจโครงสร้าง file และ directory ของ Go project กัน โจทย์ตัวอย่างเราจะมี Main Program 1 ตัว และมี Library อีก 1 ตัว สามารถ download source code ได้ที่: https://github.com/shall-we-go/stringutil https://github.com/shall-we-go/reverse-hello-world โครงสร้าง file และ directory $GOPATH/ src/ github.com/ shall-we-go/ stringutil/ .git/ reverse.go reverse_test.go reverse-hello-world/ .git/ main.go ข้อสังเกตุ โครงสร้าง และ directory จะสัมพันธ์กับ URL ของ Git repo จากตัวอย่างเราจะมี repo อยู่ที่ https://github.com/shall-we-go/stringutil และ https://github.com/shall-we-go/reverse-hello-world…

Shall we Go ตอนที่ 3 – Hello World

ตอนนี้มาลองเขียน Go กันบ้างดีกว่า ก็เขียนโปรแกรม Hello World ตามนิยม สร้างไฟล์ helloworld.go ใน path $GOPATH/src เช่น /Users/choopong/go บน macOS หรือ C:\Users\choopong\go บน Windows โดย path นี้จะใช้เก็บ source code ของเราทั้งหมด แต่จะแบ่ง path ย่อยตาม package ใส่ code ตามนี้ 1 2 3 4 5 6 7 8 9 package main   import ( "fmt" )   func main() { fmt.Println("Hello World")…

Shall we Go ตอนที่ 2 – ติดตั้ง Go บน Windows และ macOS กัน

เริ่มจาก Windows ก่อนละกัน ให้ไป download Go MSI installer (.msi) จากนั้นก็ click install ตามปกติ ค่า default ของ GOPATH จะเป็น %USERPROFILE%\go เช่น C:\Users\choopong\go ถ้าจะเก็บ Go project ไว้ที่ path อื่นต้อง set %GOPATH% เอง ต่อมาฝั่ง macOS บ้าง มีทางเลือก 2 วิธี: วิธีที่ 1 – macOS package installer ให้ไป download Go macOS package installer (.pkg) จากนั้นก็ click install ตามปกติ ค่า default…