golang Archive

[Golang] มาลองใช้งาน Dockertest สำหรับการทดสอบ

ในการทดสอบระดับ integration กับ Database ต่าง ๆ นั้นบ่อยครั้งการจะทำการจำลองหรือ mock database ทั้งผ่าน interface หรืออาจจะใช้งาน SQLMock ก็ได้หรือบางคนใช้งาน Docker อยู่แล้ว ก็เขียน script หรือ Make file มาใช้งานแต่เจอว่า มี package ชื่อว่า Dockertestมาช่วยให้การทดสอบกับ database ผ่าน Docker container ได้สะดวกขึ้นมาลองทำความรู้จักกันหน่อย

Read More…

ว่าง ๆ มาลองเล่น Go 1.16 rc 1 กันหน่อย

เห็นว่า Go เพิ่มปล่อย version 1.16 RC 1 มาให้ลองใช้งานกันก็เลยลองเล่นกันหน่อยว่า มีอะไรที่เปลี่ยนแปลงไปบ้างในการใช้งานทั่วไป มาดูกัน

Read More…

[Golang] ว่าด้วย internal package

จากที่ไปสอนและแบ่งปันความรู็พื้นฐานของภาษา Goนึกขึ้นมาได้ว่า ลืมอธิบายเรื่อง internal packageซึ่งเป็น package พิเศษของ Goที่เพิ่มมาตั้งแต่ Go version 1.4 เป็นต้นมาทำให้สามารถกำหนดขอบเขตการทำงานได้ดีขึ้น

Read More…

ใช้งาน nodemon กับ Go

วันนี้มีคำถามเรื่องการทำ reload ระบบที่พัฒนาด้วยภาษา Go เหมือนกับ NodeMon สำหรับ NodeJSว่าต้องทำอย่างไรบ้าง ? ตามจริงเคยเขียนเรื่องนี้ไปแล้วแต่คิดว่า น่าจะใช้ NodeMon กับ Go ได้เลยซึ่งพบว่ามันก็ใช้ได้จริง ๆ โดยเพียงกำหนด parameter ที่ต้องการ run ให้ NodeMon เท่านั้นเองก็ใช้งานได้ ดังนี้ ผลการทำงานเมื่อมีการเปลี่ยนแปลง

Read More…

สรุปการแบ่งปันเรื่อง พื้นฐานของการพัฒนาระบบด้วยภาษา Go

สองวันที่ผ่านมา มีโอกาสไปแบ่งปันเรื่องพื้นฐานสำหรับการพัฒนาระบบงานด้วยภาษา Goเพื่อช่วยทำให้รู้และเข้าใจเกี่ยวกับภาษาเพื่อช่วยให้รู้ว่า ตัวภาษานั้นมีเครื่องมือช่วยในการพัฒนาและ deploy อย่างไรบ้าง

Read More…

ทำความรู้จักกับ embed package ใน Go 1.16

ใน Go 1.16 นั้นจะมี core library ใหม่เพิ่มเข้ามา ชื่อว่า Embedded filesโดยจะอยู่ใน package embed และมี package ใหม่ชื่อว่า io/fs สำหรับการอ่านไฟล์แบบ read-onlyในการเข้าถึงไฟล์ง่าย ๆ ด้วยการใช้ directive go:embedเพื่อความเข้าใจ มาดู codeกัน

Read More…

คำถาม :: ทำการ Reload ระบบงานที่พัฒนาด้วยภาษา Go กับ Docker ?

มีคำถามที่น่าสนใจคือ ถ้าเราพัฒนาระบบด้วย Go ร่วมกับ Docker แล้ว ต้องการทำให้ระบบงาน reload อัตโนมัติ เมื่อทำการเปลี่ยนแปลง code โดยไม่ต้อง restart Docker container ใหม่ ต้องทำอย่างไร

Read More…

มาลองใช้งาน Digital Ocean App Platform

เพิ่งเห็นทาง DigitalOcean ปล่อย PaaS (Platform as a Service) ใหม่ออกมาในชื่อว่า DigitalOcean App Platform ช่วยทำให้ผู้ใช้งานสามารถ deploy ระบบงานได้ง่ายและสะดวกมากขึ้น โดยมีแนวคิดง่าย ๆ  คือ Focus on Code, Not Servers ดังนั้นมาลองใช้งานกันหน่อยว่า ง่ายจริงไหม

Read More…

[Golang] การจัดการ Timezone กับ Docker container ที่สร้างจาก Scratch image

ใน Golang 1.15 นั้นทำการเพิ่ม timezone database เข้ามา ซึ่งอยู่ใน package time/tzdata ผลที่ตามมาคือ ไม่ต้องกังวลกับการจัดการ Timezone database อีกต่อไป เพียงแค่ทำการกำหนดว่า ระบบของเราอยู่ใน Timezone ไหนเท่านั้นเอง ทำให้เราทำงานกับพวกเวลาได้อย่างถูกต้องแล้วมาลองดูการใช้งานง่าย ๆ กัน

Read More…

สวัสดี Go 1.15

หนึ่งสิ่งที่ทำการปรับปรุงใน Golang 1.15 นั่นก็คือ Linkerส่งผลให้ขนาดของ binary ที่สร้างออกมานั้นมีขนาดลดลงอย่างมาก โดยเปรียบเทียบกับ version 1.14 แล้ว ขนาดจะลดไป 5-10% กันเลยทั้ง library ที่ถูกประกาศ แต่ไม่ถูกใช้งาน หรืออาจจะใช้งานในขณะ runtime เท่านั้น ยิ่ง binary มีขนาดเล็กลงมาก ก็ย่อมส่งผลประโยชน์ต่อการพัฒนาและ deploy มากด้วยเช่นกัน

Read More…