go Archive

ว่าง ๆ มาลองทำความรู้จักกับ RESP Protocol กันแบบง่าย ๆ

RESP Protocol หรือ REdis Serialization Protocolเป็น protocol ที่ Redis ใช้ในการติดต่อสื่อสารกันโดยมรเป้าหมายดังนี้ โดยข้อมูลที่ serialize ได้มีหลายหลายชนิดทั้ง integer, string และ arrayดังนั้นเพื่อความเข้าใจ มาลองศึกษา และ เขียน code สร้างขึ้นมาเองแบบง่าย ๆ

Read More…

Use case :: การดึงข้อมูลจาก database ที่ช้า จนเกิด Timeout

ปัญหาที่พบเจอกับระบบงานง่าย ๆ ที่พัฒนาด้วยภาษา Go เป็นดังนี้ ปัญหาคือ เมื่อมี load จำนวนมากเกินกว่า max connection ใน connectio poolจึงทำให้เกิด timeout ในการดึงข้อมูลขึ้นมาจะแก้ไขอย่างไรดี

Read More…

ลองใช้งาน Grafana Beyla กันหน่อย

Grafana Beyla เป็นเครื่องมือสำหรับจัดการข้อมูล observability ของ application แบบง่าย ๆเช่น application metric และ distributed tracingด้วยการสร้าง auto-instrumentation เพื่อดึงข้อมูลจาก eBPF (Extended Berkeley Packet Filter) ได้เลยทำให้ในฝั่ง application ไม่ต้องเพิ่ม code ใด ๆ เข้าไปโดยใน Grafana Beyla นั้นสนับสนุน multi-processจึงส่งผลให้ดึงข้อมูลของแต่ละ process ที่อยู่บนเครื่องเดียวกันได้

Read More…

มาดู feature ใหม่ ๆ ใน Go 1.23.0 กัน

ก่อนนอนพบว่า Go 1.23 ตัว final เพิ่งปล่อยออกมา เลยลอง update มาใช้กันหน่อยโดยใน version นี้มี package ใหม่ ๆ และ feature ใหม่ ๆ เพิ่มเข้ามาดังนี้ หลัก ๆ เริ่มจาก package iter หรือ iterators ของ พวก type Seq และ Seq2ซึ่งสามารถสร้างมาจากข้อมูลประเภท slice และ map นั่นเอง มาดูตัวอย่าง code กันหน่อย

Read More…

น่าสนใจดีกับ GoFr :: Go Framework สำหรับพัฒนา service อย่างง่าย

เห็นใน Go community ทำการการแนะนำ GoFr คือ framework สำหรับพัฒนา service หรือ mocroservice ด้วยภาษา Goโดยที่ build-in library ต่าง ๆ ที่จำเป็นต่อการใช้งานเข้ามาให้เพียบ (เยอะไปหรือเปล่านะ)แต่คิดว่าน่าจะช่วยลดงานต่าง ๆ ลงไปได้เยอะทำให้นักพัฒนาไป focus ที่ business logic มากยิ่งขึ้น

Read More…

Tips :: ทำการ wrap Error ในภาษา Go

คำถามที่น่าสนใจเกี่ยวกับการจัดการ error ในภาษา Goว่าถ้าต้องการโยน error หลายตัวกลับมาจาก function แบบง่าย ๆทำแบบไหนได้บ้าง ? ก่อนหน้านี้แนะนำ Multiple errors ไปแล้ว ด้วย errors.Join()มาดูอีกวิธีกันดูเลือกเอาที่ความชอบไปเลย

Read More…

Go :: ความแตกต่างระหว่าง go mod tidy กับ go mod download

คำถามจากการ share เรื่องการพัฒนาระบบด้วยภาษา Goโดยใน Dockerfile พบว่า ทำการ download package ที่ใช้งานด้วยคำสั่ง go mod downloadแต่ในการพัฒนานั้น เรามักจะใช้งานด้วยคำสั่ง go mod tidy มากกว่าดังนั้นทั้งสองคำสั่งนี้ต่างหรือเหมือนกันอย่างไร

Read More…

บันทึกการนำแนวคิด 12-factors มาใช้ในการพัฒนาระบบงานด้วยภาษา Go

แนว 12-factors app นั้นเป็นแนวคิดที่สร้างมาผู้สร้างระบบ Herokuโดยถูกหยิบมาพูด หรือ ใช้งานมากขึ้นในยุคของ Cloud Native Appประกอบไปด้วย 12 ข้อ และดูเหมือนว่าจะมีคนคิดเพิ่มมาอีก 3 เป็น 15 ข้อผมเคยเขียน blog อธิบายไว้เมื่อนานมาแล้วมาครั้งนี้มีคำถามจากการแบ่งปันเรื่อง Docker + Go + Microservicesว่ามีตัวอย่างหรือไม่ จึงทำการสร้างตัวอย่างพร้อมอธิบายสั้น ๆ ไว้ให้เพื่อช่วยให้เข้าใจมากยิ่งขึ้นมาเริ่มกันเลย

Read More…

สิ่งที่น่าสนใจใน Go 1.22.0

มาดูความสามารถที่น่าสนใจใน Go 1.22 กัน ว่ามีอะไรบ้าง มาดูกันเลย

Read More…

ลองศึกษา HTMX กับ Go เล่น ๆ นิดหน่อย

ช่วงหลัง ๆ มีการพูดถึง HTMX เยอะพอสมควรก็เลยลองมาศึกษานิดหน่อย แต่พอไปอ่านเอกสารแล้วเยอะน่าดูเลยลองเขียน program เล่น ๆ เพื่อศึกษาไปดีกว่าโดยเลือกใช้งาน HTMX กับ Go มาพัฒนา server-side กันมาดูว่าทำอย่างไรบ้าง

Read More…