golang Archive

Golang :: ถ้าไม่ close body ของ response จะเกิดอะไรขึ้น ?

จากที่พูดคุยเรื่อง Memory leak สำหรับการใช้งาน package net/http ในภาษา Goซึ่งมี 2 เรื่องคือ ถ้าไม่ปิด body ของ request จะเกิดอะไรขึ้น ? ถ้าไม่ปิด body ของ response จะเกิดอะไรขึ้น

Read More…

สวัสดี Go module proxy

เห็นใน Go 1.13 beta 1 นั้นทำการกำหนดค่า default ของ GOPROXY ให้ จะวิ่งไปที่ https://proxy.golang.org และ direct (ออกไปยัง GitHub, bitbucket ตรง ๆ) ที่สำคัญ สามารถใส่ comma(,) ได้ด้วย นั่นคือกำหนด proxy ได้มากกว่า 1 นั่นเอง ดังนั้นเรามาลองทำความรู้จักและใช้งานกันหน่อย

Read More…

[Golang] การจัดเรียง property ใน Struct เพื่อลดจำนวน memory ที่ใช้งาน

วันนี้น้องในทีมมาถามเรื่อง  การใช้งาน memory ของ struct ในภาษา Go ซึ่งมีเรื่องของ Alignment และ Padding ที่อาจจะดูงง ๆ เลยลองไปเปิดเอกสารของภาษา Go ดูกันหน่อย ได้ความว่า

Read More…

เรื่อง Project structure ของระบบที่พัฒนาด้วยภาษา Go

จาก course Practical Go นั้นหนึ่งในเรื่องที่น่าสนใจอีกแล้ว คือ Project structure นั่นเอง เนื่องจากเป็นเรื่องที่มีการพูดคุยใน community เยอะมาก ๆ ที่สำคัญมีหลากหลายแนวทางมาก ๆ อยู่ที่ว่าใครจะมองและวางออกมา มาดูว่า มีคำแนะนำอะไรดี ๆ กันบ้าง

Read More…

เก็บตกเรื่องการออกแบบ package สำหรับภาษา Go

จาก course Pratical Go ที่ไปเรียนมานั้น มีเรื่อง Package design หรือการออกแบบหรือวาง package ในระบบที่พัฒนาด้วยภาษา Go ว่ามีแนวคิดและอย่างไร ออกแบบอย่างไร รวมทั้งหน้าที่ความรับผิดชอบ มาดูกันว่ามีอะไรบ้าง

Read More…

สรุปเรื่องของ Principle 3 ข้อของภาษา Go

จาก course Practical Go นั้นในช่วงเริ่มต้น ทำการอธิบายเรื่องของ Principle guideline ของภาษา Go ซึ่งประกอบไปด้วย 3 เรื่องคือ Clarify Simplicity Productivity เรื่องนี้เคยเรียนและได้ยินจาก course Ultimate Go ที่เรียนเมื่อ 2 ปีก่อน ทั้ง 3 เรื่องนี้มีความสำคัญมาก ๆ เหมือนเป็นเข็มทิศนำทางของการพัฒนา software เลย มาดูในรายละเอียดกัน

Read More…

ว่าด้วยเรื่องการจัดการ Error ถ้ามันเยอะก็ลดสิ

จากการมาเรียน Workshop Practical Go ในงาน GopherCon 2019 ที่ประเทศสิงคโปร์ มีหลายเรื่องที่น่าสนใจ ประกอบไปด้วย Idiomatic code Package และ project structure API design Error handling Testing นิดหน่อย ส่วนเรื่อง concurrency นั้นไม่ได้สอนเพราะว่า เวลาหมดก่อน เรื่องที่ผมให้ความสนใจเรื่องแรกคือ Error handling เนื่องจากใน Go 2 นั้น มีการพูดถึงปัญหาและแนวทางการปรับปรุงเรื่องนี้ให้ดีและง่ายขึ้น

Read More…

สวัสดี Google Cloud Run

ทาง Google Cloud เพิ่งปล่อย Google Cloud Run ใน version beta ให้ใช้งานโดยให้เหล่านักพัฒนาสามารถ run serverless app ที่อยู่ใน Docker container ได้เลย ซึ่ง Google Cloud Run จัดการให้เองแบบอัตโนมัติ คือ เมื่อมี request เข้ามาจะทำการ start ให้เอง และเมื่อไม่มีการใช้งานจะทำการ stop ไปให้อีก ชีวิตน่าจะง่าย สะดวกมากขึ้น

Read More…

ตกใจว่า package net/http ของภาษา Go มันไม่ดีตรงไหน ?

ครั้งแรกที่อ่านชื่อของบทความ Don’t use Go’s default HTTP client (in production) ก็ตกใจนิดหน่อยและปลกใจว่า package net/http ของภาษา go นั้นมันมีปัญหาอะไร เพราะว่าในงานที่ขึ้น production ก็ใช้อยู่นะ และไม่ได้เกิดปัญหาอะไรด้วย แต่พอได้อ่านบทความแล้วพบว่ามันไม่ใช่นะ  เราต้องมาทำการ custom ค่าหรือการทำงานบางอย่างให้ถูกต้องและเหมาะสม มิเช่นนั้น อาจจะเกิดปัญหาตามมาได้

Read More…

สรุปเรื่องที่น่าสนใจจาก VDO เรื่อง Absolute Unit (test)

เจอ VDO จากงาน London Gophers Meetup  ซึ่งมีหัวข้อน่าสนใจดังนี้ Warning data race exit status 66 Go three months in Absolute Unit (Test) Decoding binary network protocol สามารถดู VDO ของหัวข้อต่างได้ที่ Youtube แต่หัวข้อที่จะทำการสรุปคือ Absolute Unit (Test) พูดโดยคุณ Dave Cheney มีหลายเรื่องที่น่าสนใจมาเริ่มกัน

Read More…