golang Archive

Go module :: มาลองสร้าง module ใช้เองแบบ Local

มีคำถามว่า ถ้าต้องการทำ module ใช้เอง โดยใช้แบบ local หรือบนเครื่องเราเอง ต้องทำอย่างไรบ้าง ? ที่นี่มีคำตอบแบบง่าย ๆ มาดูกัน

Read More…

Golang :: จดบันทึกการใช้งาน Go Module

จากบทความเรื่อง Introduction to Go Modules in Go v1.11, Goodbye GOPATH! ไม่ต้องทำการกำหนด environment ชื่อ GOPATH แล้ว รวมทั้งสามารถพัฒนาระบบนอก GOPATH ได้โดยไม่ต้องกำหนดค่าอะไรเพิ่มเติม ซึ่งเป็นปรับปรุงเรื่องการจัดการ dependency ให้ดีและง่ายขึ้นนั่นเอง ดังนั้นจึงสรุปการใช้งานไว้นิดหน่อย กันลืม

Read More…

ว่าด้วยเรื่องของ Goroutine และ Channel

ไปฟังเรื่อง Goroutine, Channel และ Parallelism จากงาน Go Get # 2 จากกลุ่ม Golang Thailand ก็เลยกลับมานั่งสรุปกันนิดหน่อย เพราะว่าเป็นเรื่องที่มีโอกาสใช้งานน้อยมาก ๆ ตั้งแต่ทำ project ด้วยภาษา Go มาเคยใช้เพียง project เดียวเอง เลยกลับมาสรุปเพื่อทำความเข้าใจกันหน่อย โดยเริ่มจากเรื่องง่าย ๆ ก่อนคือ Goroutine และ Channel ซึ่งเป็นเรื่องพื้นฐานสุด ๆ แต่ก็ไม่ง่ายเลยนะ มาเริ่มกันเลย

Read More…

แนะนำหนังสือ online :: Learn Go with Tests

มีหนังสือ online สอนเกี่ยวกับการพัฒนาระบบงานด้วยภาษา Go ที่น่าสนใจเพียบ ยกตัวอย่างเช่น Building Web Application with Golang Go by Example A Tour of Go แต่ก็มีอีกเล่มที่น่าสนใจนั่นคือ Learn Go with Tests

Read More…

สวัสดี WebAssembly กับ Go 1.11

ภาษา Go 1.11 ออกตัวเต็ม ๆ มาแล้ว หนึ่งใน feature ที่เพิ่มเข้ามานั่นคือ การทำงานร่วมกับ WebAssembly แต่ยังเป็น experiment feature นะ จากความสามารถนี้ ทำให้เราสามารถพัฒนาระบบด้วยภาษา Go ทำการ compile ไปเป็น WebAssembly จากนั้นทำการเรียกใช้งานผ่าน JavaScript ซึ่งสามารถทำงานผ่าน browser

Read More…

บันทึกการพัฒนาระบบงานด้วย Angular 6 และ Golang

พอดีเพิ่งทำระบบ web application แบบเร็ว ๆ ซึ่งมี feature ไม่เยอะ จึงเลือกใช้เทคโนโลยีที่ไม่ค่อยใช้งานหรือถนัดมากนัก เพื่อลองฝึกฝน แต่ฝึกบนงานจริง ๆ น่าจะทำให้เราศึกษาได้รวดเร็วขึ้น หรือไม่ก็ล่มไม่เป็นท่า !! โดยเทคโนโลยีที่เลือกใช้งานเป็นดังนี้ Frontend พัฒนาด้วย Angular 6 Backend พัฒนาด้วยภาษา Go จัดการ source code ด้วย Git ทำการ build และ deploy ด้วย Docker (ใช้งาน docker-compose) ทำการ deploy ระบบงานบน Google Cloud แบบฟรี 300 USD เป็นเวลา 1 ปี มาดูว่าการพัฒนาเป็นอย่างไรบ้าง

Read More…

สวัสดี vgo (Versioned Go) จาก Go version ล่าสุด

เนื่องจากอยากลองใช้งาน vgo ทำหน้าที่จัดการ dependency หรือ library ต่าง ๆ เห็นบอกว่าเป็น feature ที่จะเพิ่มเข้ามาใน Go 1.11 ดังนั้นจึงไปลองเล่น feature นี้กันหน่อยว่าเป็นอย่างไร ว่าแล้วก็เริ่มกันเลย

Read More…

เรียนรู้ภาษา Go สำหรับ NodeJS Developer

เห็นว่า NodeJS กำลังร้อนแรง เลยขอนำเสนอวิธีการเรียนรู้ภาษา Go สำหรับ NodeJS Developer กันหน่อย (เกี่ยวกันไหมนะ ?) ซึ่งเป็นการเรียนรู้ตามสิ่งที่ชาว NodeJS ต้องรู้และใช้งานเป็นปกติ แต่มาดูกันว่า ถ้าใช้ภาษา Go ต้องทำอย่างไรบ้าง น่าจะทำให้เรียนรู้ง่ายขึ้น

Read More…

ว่าด้วยเรื่องของ Law of Demeter

หลังจากทำการ review code ไปนิดหน่อย พบว่าได้เจอ code ที่น่าสนใจ เนื่องจากจะขัดกับ Law of Demeter พอควร ผลที่ตามมาคือ code ทำงานได้ แต่มีการเรียกต่อกันเป็นทอด ๆ ยาวมาก ๆ ยกตัวอย่างเช่น game.Board.Size.X และ g.Board.Slots[i][j].Number เป็นต้น แต่ตามจริงเราต้องการเพียงค่าสุดท้ายเท่านั้นเอง ทำไมเราต้องเขียน code ยาวขนาดนี้กันด้วย ? น่าคิดมาก ๆ หรือเราคิดว่า มันคือเรื่องปกติ เพราะว่า โครงสร้างของระบบเราเป็นแบบนี้ ? ดังนั้นมาปรับปรุง code ชุดนี้กันหน่อยดีไหม

Read More…

เครื่องมือสำหรับจัดรูปแบบ code และ naming convention ในภาษา Go

เรื่องของรูปแบบ code และ naming convention เป็นสิ่งที่สำคัญมาก ๆ โดยในภาษา Go นั้นไม่ได้มีกฏเรื่องนี้มากนัก แต่ก็ได้สร้างเครื่องมือมาตรฐานสำหรับการจัดการมาให้ นั่นก็คือ gofmt ซึ่งนักพัฒนาภาษา Go น่าจะใช้กันทุกคน ไม่ว่าจะพิมพ์เอง ไม่ว่าจะให้ทำงานแบบอัตโมัติ หรือ ทำงานผ่าน Editor/IDE ต่าง ๆ เช่นทำการจัดรูปแบบ code ให้เมื่อทำการบันทึกเป็นต้น ผลที่ตามมาคือ รูปแบบของ code เหมือนกัน ไม่ต้องมาเถียงกัน และยังทำให้ code อ่านง่ายขึ้นอีกด้วย

Read More…