golang Archive

[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…

[Golang] สรุปการใช้งาน environment variable

สำหรับการจัดการพวกค่า configuration ต่าง ๆ ของระบบงาน จาก 12-factor นั้นแนะนำให้จัดการผ่าน environment variable เพื่อแยกระหว่าง code และ configuration ต่าง ๆ ออกจากกันในแต่ละ environment และช่วยลดปัญหาเรื่อง security อีกด้วย

Read More…

[Golang] แก้ไข banner ของ Echo framework

ไปนั่งดูแนวทางในการเปลี่ยน banner ของการ start ระบบที่พัฒนาด้วย Echoพอไปนั่งไล่ดู code และ issue เกี่ยวกับเรื่องนี้ซึ่งมี Issue#1286 ทำเรื่องนี้ก็เห็นแนวทางที่ทีมพัมนาเขาแนะะนำว่าไม่ต้องแก้ไขที่ตัว Echo นะเพียงแค่ทำการ disable banner ไปก่อนจากนั้นก็ print สิ่งที่ต้องการเอง ก็เท่านั้นเองคิดอะไรให้มากมายไปทำไม มานั่งคิดดี ๆ ก็ง่ายและสะดวกดีด้วยนะ เลยบันทึกแนวคิดไว้เตือนตัวเองนิดหน่อย

Read More…

Vite 0.12.0 ได้นำ esbuild มาใช้งาน

จาก blog เรื่องสวัสดี Vite แปลว่า เร็ว อ่านว่า วิท (vit)ในตอนนี้ได้ออก version 0.12.0 มาแล้วซึ่งได้นำ esbuild เข้ามาใช้สำหรับการแปลง TypeScript รวมไปถึง JSX และ TSX มาเป็น JavaScript codeแน่นอนว่า esbuild มันทำงานเร็วมาก ๆ

Read More…

เขาบอกว่า ไฟล์ binary ที่ได้จาก Go 1.15 ขนาดเล็กลงมาก ๆ

จาก Tweet ของคุณ Brad Fitzpatrick บอกว่าไฟล์ binary ที่ได้จากการ build ของ Go 1.15 ที่จะออกมาใน release ต่อไป ขนาดของไฟล์ลดลงไปเกือบ 50% เพื่อให้หายข้องใจก็ลองดูหน่อย ว่าเป็นจริงไหม

Read More…

สร้าง Build pipeline (Build -> Test -> Release) ของระบบงานด้วย GitHub Actions

เรื่องที่สำคัญของการพัฒนา software คือ ขั้นตอนการ build, test, release และ deploy เป็นอย่างไรบ้าง ในการพัฒนาที่ดี น่าจะต้องวางแผนและกำหนดขั้นตอนการทำงานไว้ ซึ่งเราจะเรียกขั้นตอนเหล่านี้ว่า Build pipeline (workflow) นำมาจากแนวคิดของ Continuous Integration และ Continuous Delivery โดยในบทความนี้ จะนำ GitHub Actions มาสร้างกระบวนการเหล่านี้ มาเริ่มกันเลย

Read More…

ลองใช้งาน Golang CI Lint เพื่อปรับปรุงคุณภาพของ code

อีกเรื่องที่น่าสนใจในการเขียน code ด้วยภาษา Go คือ Static Code Analysis ซึ่งมีเครื่องมือให้ใช้เพียบเลย แต่มีอีกตัวที่เพิ่มเห็นเลยขอลองสักหน่อย นั่นคือ Golang CI Lint

Read More…

ความสามารถที่น่าสนใจใน Go 1.14

หลังจากที่ทำการ update Go มาเป็น version 1.14 แล้วพบว่า มีความสามารถหลาย ๆ อย่างเปลี่ยนแปลงเข้ามา ทั้งสิ่งที่เข้ามาเปลี่ยนแปลงตัวภาษาคือ Overlapping interface รวมกับการเปลี่ยนแปลงหลัก ๆ ที่น่าสนใจเช่น

Read More…

Golang :: ทำการทดสอบแบบอัตโนมัติ เมื่อมีการเปลี่ยนแปลง

ปัญหา เมื่อทำการแก้ไข production code หรือ test code แล้ว ต้องทำการ run ชุดการทดสอบเองเสมอ ซึ่งน่าเบื่อมาก ๆ  ดังนั้นจึงอยากให้ทำการทดสอบแบบอัตโนมัติ (Continuous Testing) เมื่อมีการเปลี่ยนแปลง เหมือนกับพวก JavaScript framework ต่าง ๆ

Read More…