Tag: golang

33 รายการ

Blog

กระรอกดินต้นฉบับกำลังเติมชิ้นข้อมูลลงถาดพื้นที่ว่างของกล่องบัฟเฟอร์บนโต๊ะสว่าง
gogolangbytes

Go bytes.Buffer.AvailableBuffer: ต่อข้อมูลลงพื้นที่ว่างโดยลด allocation

ใช้ AvailableBuffer คู่ strconv.Append* อย่างถูกสัญญา พร้อมทดสอบการเขียน CSV, capacity และข้อห้ามเก็บ slice ข้าม Write

พี่โชว์
กระรอกดินต้นฉบับกำลังจับคู่เมล็ดกับช่องเก็บสีต่างกันบนโต๊ะสว่าง
gogolangmaps

Go maps.Collect: สร้าง map จาก iterator คู่ key-value

ใช้ maps.Collect รับ iter.Seq2 เป็น map พร้อมทดสอบ duplicate key, empty input และแยก collection จาก validation

พี่โชว์
กระรอกดินต้นฉบับกำลังส่งเมล็ดจากสายพานทีละเมล็ดลงตะกร้าที่มีของอยู่แล้ว
gogolangslices

Go slices.AppendSeq: เติม iterator ลง slice โดยไม่ต้องเขียนลูปเอง

ใช้ slices.AppendSeq ต่อค่าจาก iter.Seq ลง slice ที่มีอยู่ พร้อมทดสอบ capacity, iterator แบบใช้ครั้งเดียว และ ownership ของข้อมูล

พี่โชว์
กระรอกดินต้นฉบับค่อย ๆ ดึงแถบกระดาษที่แบ่งเป็นท่อนโดยเก็บหมุดคั่นไว้ปลายแต่ละท่อน
gogolangstrings

Go strings.SplitAfterSeq: แบ่งข้อความแบบ iterator โดยเก็บตัวคั่นไว้

ใช้ SplitAfterSeq อ่าน record ทีละส่วนโดยไม่สร้าง slice ทั้งก้อน พร้อมทดสอบ empty separator, single-use iterator และ ownership ของ substring

พี่โชว์
กระรอกดินต้นฉบับกำลังขยายถาดชิ้นงานแล้วตัดพื้นที่สำรองส่วนเกินบนโต๊ะสีมิ้นต์
gogolangslices

Go slices.Grow กับ Clip: จองความจุให้พอ แล้วคืนส่วนเกินตรงขอบงาน

ใช้ slices.Grow ลดการขยาย backing array ซ้ำ และ slices.Clip ตัด capacity ก่อนส่งข้อมูลข้าม boundary พร้อม Go tests ที่รันจริง

พี่โชว์
กระรอกดินสีฟ้าอมเขียวต้นฉบับกำลังหยุดสายพานและผูกป้ายสาเหตุเชิงภาพไว้ที่คันหยุด
gogolangcontext

Go context.WithCancelCause: บอกเหตุผลที่งานถูกยกเลิก

ส่งสาเหตุผ่าน cancellation tree โดยยังรักษา contract ของ context พร้อม go test ที่รันจริง

พี่โชว์
กระรอกดินสีฟ้าอมเขียวต้นฉบับกำลังแบ่งเมล็ดเป็นแถวกว้างเท่ากันและเก็บเศษท้ายอย่างระมัดระวัง
gogolangsimd

Go 1.27 portable SIMD: เร่งงานเวกเตอร์โดยไม่ผูก CPU

อ่านข้อเสนอ simd แบบพกพาใน Go 1.27 ตั้งแต่ vector width, tail, emulation ถึงเกณฑ์วัดผลก่อนใช้จริง

พี่โชว์
กระรอกดินสีฟ้าเขียวต้นฉบับใช้กรรไกรตัดสายลูกปัดตรงปมสุดท้ายบนโต๊ะสีครีม
gogolangbytes

Go 1.27 bytes.CutLast: แยกส่วนท้ายโดยไม่ Index เอง

ใช้ bytes.CutLast แยก key กับ suffix จาก separator ตัวสุดท้าย พร้อมทดสอบกรณีไม่พบ delimiter และอธิบายเรื่อง slice aliasing

พี่โชว์
กระรอกดินสีฟ้าอมเขียวยืนเฝ้าประตูกั้นแผ่นกระดาษ header ที่กองสูงเกินช่องรับ
gogolanghttp

Go 1.27 จำกัดจำนวนค่า Header ก่อน Request กินทรัพยากรเกินจำเป็น

ตั้ง MaxHeaderValueCount ให้ HTTP server ปฏิเสธ request ที่ส่ง header ซ้ำจำนวนมาก พร้อมข้อควรระวังเรื่อง comma-separated values

พี่โชว์
กระรอกดินสีฟ้าอมเขียวต้นฉบับกำลังใช้ไม้บรรทัดวัดชั้นบล็อกไลบรารีบนโต๊ะสว่าง
gogolangtesting

Go 1.27 ให้ go test จับ API ใหม่เกิน go.mod ด้วย stdversion

ใช้ stdversion vet check ที่มากับ go test เพื่อกันการเผลอเรียก standard library ใหม่กว่าสัญญาเวอร์ชันของโมดูล

พี่โชว์
กระรอกดินสีฟ้าอมเขียวต้นฉบับถือเครื่องมือสองชิ้น ซ่อมกล่องระบบข้างซองแพตช์บนโต๊ะสีมิ้นต์
gogolangrelease

Go 1.27.1 ออกแล้ว: แพตช์ cgo, runtime, JSON และ net/http ก่อนขึ้นโปรดักชัน

อ่านขอบเขตแพตช์ Go 1.27.1 แบบทีมปฏิบัติการ พร้อมลำดับทดสอบและ rollout ที่ลดความเสี่ยง

น้องกาย
ภาพวาดกระรอกดินสีฟ้าอมเขียวต้นฉบับตรวจซองที่ประทับลายเรขาคณิตก่อนส่งเข้าช่องบริบทที่ตรงกัน
gogolangcryptography

Go 1.27 มี ML-DSA ใน Standard Library: เซ็นข้อมูลให้พร้อมยุค Post-Quantum

ทำความเข้าใจลายเซ็น ML-DSA, context separation และตัวอย่าง sign/verify ที่รันจริงด้วย crypto/mldsa

น้องกาย
ภาพวาดกระรอกดินสีฟ้าอมเขียวต้นฉบับหมุนนาฬิกาทรายข้างเครือข่ายจำลองที่ปิดอยู่ในขวดแก้วบนโต๊ะสว่าง
gogolangtesting

Workshop Go 1.27: ทดสอบ HTTP ช้าในเวลาจำลอง ไม่ต้องรอจริง

ใช้ httptest.NewTestServer ร่วมกับ testing/synctest สร้างเครือข่ายใน memory และข้ามเวลา 10 วินาทีใน test ที่รันจริง

น้องกาย
ภาพวาดกระรอกดินสีฟ้าอมเขียวต้นฉบับใช้แว่นขยายตรวจเชือกที่ติดกับรอกซึ่งหลุดออกจากระบบบนโต๊ะสว่าง
gogolangconcurrency

Go 1.27 หา Goroutine ที่ไม่มีวันตื่นด้วย Leak Profile

รู้จัก goroutineleak profile ที่ใช้ reachability จาก GC แยกงานติดค้างถาวรออกจากงานที่แค่รอนาน พร้อม test ที่รันจริง

น้องกาย
ภาพวาดกระรอกดินสีเขียวอมฟ้ากำลังย้ายกล่องข้อมูลข้ามสะพานสามช่วงจากประตูเก่าไปสู่ด่านตรวจใหม่
gogolangjson

Workshop: ย้าย API จาก encoding/json v1 ไป v2 โดยไม่เปลี่ยนสัญญาแบบไม่รู้ตัว

เวิร์กช็อป Go 1.27 แบบลงมือจริง สร้าง characterization tests เปิดโหมดเข้ากันได้ แล้วค่อยเพิ่ม strict contract พร้อมคำสั่ง go test ที่ตรวจแล้ว

พี่โชว์
ภาพวาดกระรอกดินสีเขียวอมฟ้าจัดบัตรประจำพัสดุลงสองถาด แบบสุ่มกระจายและแบบเรียงตามเวลา โดยไม่มีตัวอักษรบนบัตร
gogolanguuid

Go 1.27 มี package uuid ใน Standard Library: เลือก V4 หรือ V7 ให้ตรงงาน

พี่โชว์พาดู package uuid ใหม่ของ Go 1.27 ความต่างระหว่าง UUID V4 และ V7 พร้อม test เรื่องลำดับและการ parse ที่รันจริง

พี่โชว์
ภาพวาดกระรอกดินสีเขียวอมฟ้าตรวจพัสดุข้อมูลบนสายพาน โดยกล่องซ้ำและกล่องชำรุดถูกแยกออกจากเส้นทางหลัก
gogolangjson

Go 1.27 เปิด encoding/json/v2: ค่าเริ่มต้นที่เข้มขึ้นเพื่อหยุดข้อมูลกำกวม

พี่โชว์อธิบายว่า JSON v2 ของ Go 1.27 ปิดช่องข้อมูลซ้ำและ UTF-8 ผิดรูปอย่างไร พร้อมตัวอย่าง RejectUnknownMembers ที่รันทดสอบจริง

พี่โชว์
ภาพกล่องโครงสร้างสีเขียวซ้อนกัน โดยเส้นทางสีอำพันวิ่งตรงจากด้านนอกไปยังช่องข้อมูลในกล่องชั้นใน
gogolanggo1.27

Go 1.27 เขียน Struct ซ้อนให้น้อยลง: ใช้ Promoted Fields ได้ตั้งแต่ตอนสร้างค่า

พี่โชว์พาดูว่า Go 1.27 ลดความซ้อนของ struct literal อย่างไร พร้อมตัวอย่าง embedded struct สองระดับที่รันทดสอบจริงและข้อจำกัดที่ควรรู้

พี่โชว์
ภาพสายพานสีเขียวสามช่วง แปลงข้อมูลวงกลมเป็นสี่เหลี่ยมและผลลัพธ์สีอำพัน โดยมีตัวละครคล้ายโกเฟอร์กำลังตรวจการทำงาน
gogolanggenerics

Go 1.27 มี Generic Methods แล้ว: จัดสายพานแปลงข้อมูลให้อ่านจากซ้ายไปขวา

พี่โชว์พาดูเหตุผลที่ Go 1.27 เพิ่ม type parameter ให้ concrete method พร้อมตัวอย่าง Map ที่รันทดสอบจริง และข้อจำกัดเรื่อง interface ที่ต้องรู้ก่อนออกแบบ API

พี่โชว์
Beyond Syntax: เขียน Go ให้ Scale กับทีม ไม่ใช่แค่ CPU
gogolangbest-practices

Beyond Syntax: เขียน Go ให้ Scale กับทีม ไม่ใช่แค่ CPU

รวม 12 แนวคิดที่แยก Go ระดับ "เขียนได้" ออกจาก Go ระดับ "คิดมาแล้ว" — ตั้งแต่ function signature, error handling, interface design, concurrency ownership ไปจนถึง package structure, naming convention, dependency injection และ graceful shutdown ที่ทำให้โค้ดอ่านง่ายขึ้นจริงในระดับทีม

Dev Team
7 Concurrency Patterns ใน Go ที่คุณต้องรู้ — อัปเดต Go 1.25/1.26
gogolangconcurrency

7 Concurrency Patterns ใน Go ที่คุณต้องรู้ — อัปเดต Go 1.25/1.26

รวม 7 รูปแบบ concurrency ที่สำคัญที่สุดใน Go พร้อมตัวอย่างโค้ดที่อัปเดตสำหรับ Go 1.25/1.26 ครอบคลุม Worker Pool, Fan-Out/Fan-In, Pipeline, Pub-Sub, Select Timeout, Semaphore และ Rate Limiting

Dev Team
25 เทคนิค Go ที่นักพัฒนามืออาชีพใช้จริงในงาน Production
gogolangconcurrency

25 เทคนิค Go ที่นักพัฒนามืออาชีพใช้จริงในงาน Production

รวม 25 เทคนิค Go (Golang) ที่ใช้ได้จริงตั้งแต่ goroutines, channels, context, error handling ไปจนถึง generics, structured logging และฟีเจอร์ใหม่ใน Go 1.25/1.26 พร้อมตัวอย่างโค้ดและ diagram ประกอบทุกหัวข้อ

Dev Team
IoT Workshop #1: ออกแบบ Architecture ก่อนลงมือจริง
iotworkshoparchitecture

IoT Workshop #1: ออกแบบ Architecture ก่อนลงมือจริง

พี่โชว์พา Design System Architecture แบบ event-driven สำหรับ IoT Platform จริง ตั้งแต่ Data Flow (ingest/command/query), Communication Patterns (REST/MQTT/WebSocket) ไปจนถึงเหตุผลที่เลือก Tech Stack แต่ละตัว

Showkhun
Master Plan: สร้าง IoT Platform ครบวงจร 18 step + E2E
iotworkshopgolang

Master Plan: สร้าง IoT Platform ครบวงจร 18 step + E2E

แผนโรดแมปสร้าง IoT Platform ตั้งแต่ศูนย์ — Go + Fiber, MongoDB 8, Mosquitto, InfluxDB 2.7 + Flux, Telegraf, LynxJS Mobile และ Vite+React Admin (JWT/RBAC) รวม 18 step + E2E ใน monorepo เดียว

Showkhun
ทำระบบ Auth + RBAC ให้ IoT Platform
iotworkshopgolang

ทำระบบ Auth + RBAC ให้ IoT Platform

ทำ Authentication แบบ production จริงด้วย Go (Fiber) + React: JWT access+refresh, argon2id, RBAC admin/operator/viewer, rate-limited /auth, refresh rotation + reuse detection + tokenVersion และ silent refresh ฝั่ง client

Showkhun
Go Alerting Engine: ให้ระบบ IoT แจ้งเตือนเองเลย
iotworkshopgolang

Go Alerting Engine: ให้ระบบ IoT แจ้งเตือนเองเลย

สร้าง alerting engine เป็น Go ตั้งแต่ rule แบบ threshold / offline / anomaly (z-score), การประเมินบน ingestion path, cooldown, alert history บน Mongo (TTL) จนถึง webhook แบบ Slack-compatible พร้อม SSRF guard และ REST CRUD ที่ /api/v1/alert-rules

Showkhun
WebSocket Real-time: ดูข้อมูล IoT แบบสดๆ
iotworkshopgolang

WebSocket Real-time: ดูข้อมูล IoT แบบสดๆ

สร้าง real-time layer ด้วย gofiber/contrib/websocket — Hub แบบ single-goroutine ที่เป็นเจ้าของ state ทั้งหมด, room system (device:/group:), fan-out telemetry จาก ingestion path, heartbeat ping/pong และ back-pressure ที่ตัด client ช้าทิ้ง

Showkhun
MQTT: ให้ Device คุยกับ Server แบบเบาๆ
iotworkshopgolang

MQTT: ให้ Device คุยกับ Server แบบเบาๆ

เชื่อม backend กับ Mosquitto ด้วย Eclipse Paho Go client v1.5.1 — subscribe topic devices/+/telemetry, publish command ไป devices/{id}/command, auto-reconnect + re-subscribe, แล้วป้อน telemetry เข้า ingestion path เดียวกับ REST API

Showkhun
รับ Sensor Data เข้า InfluxDB แบบไม่กลัวตาย
iotworkshopgolang

รับ Sensor Data เข้า InfluxDB แบบไม่กลัวตาย

พาสร้าง Sensor Ingestion ด้วย Go + Fiber ตั้งแต่ REST รับ single/batch, validate ด้วย validator/v10, เช็ค device จาก registry, เขียนลง InfluxDB 2.x แบบ blocking ที่ error เด้งกลับ HTTP จริง พร้อม rate limit แบบ token-bucket ต่อ device

Showkhun
IoT Workshop #6: Device Management API ด้วย Go Fiber
iotworkshopgolang

IoT Workshop #6: Device Management API ด้วย Go Fiber

ประกอบ repository เป็น REST API จัดการ IoT device — service layer ที่ออก ingestion token, handler บางๆ ที่ map error เป็น HTTP status, envelope httpx (data/error/pagination), bulk create และ unit test แบบ table-driven ที่ mock repository

Showkhun
IoT Workshop #5: MongoDB Models & Repository Pattern
iotworkshopgolang

IoT Workshop #5: MongoDB Models & Repository Pattern

ออกแบบ domain model สำหรับ IoT Platform ด้วย Go + MongoDB driver v2 — BSON tags, connection pooling, indexes แบบ idempotent, validator ที่ใช้ json tag, และ Repository Pattern ที่กัน NoSQL injection ด้วย typed filter

Showkhun
IoT Workshop #4: วาง Foundation ด้วย Go + Fiber
iotworkshopgolang

IoT Workshop #4: วาง Foundation ด้วย Go + Fiber

เริ่มต้น backend ของ IoT Platform แบบ runnable จริง — Go 1.24 + Fiber v2 อ่าน config จาก env ด้วย Viper, zap structured logger, middleware ครบชุด, health check และ graceful shutdown พร้อม distroless Docker image

Showkhun
คู่มือติดตั้ง Go (Golang) ฉบับเข้าใจง่าย
gogolanginstallation

คู่มือติดตั้ง Go (Golang) ฉบับเข้าใจง่าย

เรียนรู้วิธีติดตั้ง Go (Golang) บน Windows, macOS และ Linux แบบ step-by-step พร้อมตัวอย่างโค้ดและเคล็ดลับสำหรับมือใหม่

Dev Team