Tag: golang
33 รายการ
Blog
Go bytes.Buffer.AvailableBuffer: ต่อข้อมูลลงพื้นที่ว่างโดยลด allocation
ใช้ AvailableBuffer คู่ strconv.Append* อย่างถูกสัญญา พร้อมทดสอบการเขียน CSV, capacity และข้อห้ามเก็บ slice ข้าม Write
Go maps.Collect: สร้าง map จาก iterator คู่ key-value
ใช้ maps.Collect รับ iter.Seq2 เป็น map พร้อมทดสอบ duplicate key, empty input และแยก collection จาก validation
Go slices.AppendSeq: เติม iterator ลง slice โดยไม่ต้องเขียนลูปเอง
ใช้ slices.AppendSeq ต่อค่าจาก iter.Seq ลง slice ที่มีอยู่ พร้อมทดสอบ capacity, iterator แบบใช้ครั้งเดียว และ ownership ของข้อมูล
Go strings.SplitAfterSeq: แบ่งข้อความแบบ iterator โดยเก็บตัวคั่นไว้
ใช้ SplitAfterSeq อ่าน record ทีละส่วนโดยไม่สร้าง slice ทั้งก้อน พร้อมทดสอบ empty separator, single-use iterator และ ownership ของ substring
Go slices.Grow กับ Clip: จองความจุให้พอ แล้วคืนส่วนเกินตรงขอบงาน
ใช้ slices.Grow ลดการขยาย backing array ซ้ำ และ slices.Clip ตัด capacity ก่อนส่งข้อมูลข้าม boundary พร้อม Go tests ที่รันจริง
Go context.WithCancelCause: บอกเหตุผลที่งานถูกยกเลิก
ส่งสาเหตุผ่าน cancellation tree โดยยังรักษา contract ของ context พร้อม go test ที่รันจริง
Go 1.27 portable SIMD: เร่งงานเวกเตอร์โดยไม่ผูก CPU
อ่านข้อเสนอ simd แบบพกพาใน Go 1.27 ตั้งแต่ vector width, tail, emulation ถึงเกณฑ์วัดผลก่อนใช้จริง
Go 1.27 bytes.CutLast: แยกส่วนท้ายโดยไม่ Index เอง
ใช้ bytes.CutLast แยก key กับ suffix จาก separator ตัวสุดท้าย พร้อมทดสอบกรณีไม่พบ delimiter และอธิบายเรื่อง slice aliasing
Go 1.27 จำกัดจำนวนค่า Header ก่อน Request กินทรัพยากรเกินจำเป็น
ตั้ง MaxHeaderValueCount ให้ HTTP server ปฏิเสธ request ที่ส่ง header ซ้ำจำนวนมาก พร้อมข้อควรระวังเรื่อง comma-separated values
Go 1.27 ให้ go test จับ API ใหม่เกิน go.mod ด้วย stdversion
ใช้ stdversion vet check ที่มากับ go test เพื่อกันการเผลอเรียก standard library ใหม่กว่าสัญญาเวอร์ชันของโมดูล
Go 1.27.1 ออกแล้ว: แพตช์ cgo, runtime, JSON และ net/http ก่อนขึ้นโปรดักชัน
อ่านขอบเขตแพตช์ Go 1.27.1 แบบทีมปฏิบัติการ พร้อมลำดับทดสอบและ rollout ที่ลดความเสี่ยง
Go 1.27 มี ML-DSA ใน Standard Library: เซ็นข้อมูลให้พร้อมยุค Post-Quantum
ทำความเข้าใจลายเซ็น ML-DSA, context separation และตัวอย่าง sign/verify ที่รันจริงด้วย crypto/mldsa
Workshop Go 1.27: ทดสอบ HTTP ช้าในเวลาจำลอง ไม่ต้องรอจริง
ใช้ httptest.NewTestServer ร่วมกับ testing/synctest สร้างเครือข่ายใน memory และข้ามเวลา 10 วินาทีใน test ที่รันจริง
Go 1.27 หา Goroutine ที่ไม่มีวันตื่นด้วย Leak Profile
รู้จัก goroutineleak profile ที่ใช้ reachability จาก GC แยกงานติดค้างถาวรออกจากงานที่แค่รอนาน พร้อม test ที่รันจริง
Workshop: ย้าย API จาก encoding/json v1 ไป v2 โดยไม่เปลี่ยนสัญญาแบบไม่รู้ตัว
เวิร์กช็อป Go 1.27 แบบลงมือจริง สร้าง characterization tests เปิดโหมดเข้ากันได้ แล้วค่อยเพิ่ม strict contract พร้อมคำสั่ง go test ที่ตรวจแล้ว
Go 1.27 มี package uuid ใน Standard Library: เลือก V4 หรือ V7 ให้ตรงงาน
พี่โชว์พาดู package uuid ใหม่ของ Go 1.27 ความต่างระหว่าง UUID V4 และ V7 พร้อม test เรื่องลำดับและการ parse ที่รันจริง
Go 1.27 เปิด encoding/json/v2: ค่าเริ่มต้นที่เข้มขึ้นเพื่อหยุดข้อมูลกำกวม
พี่โชว์อธิบายว่า JSON v2 ของ Go 1.27 ปิดช่องข้อมูลซ้ำและ UTF-8 ผิดรูปอย่างไร พร้อมตัวอย่าง RejectUnknownMembers ที่รันทดสอบจริง

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

Go 1.27 มี Generic Methods แล้ว: จัดสายพานแปลงข้อมูลให้อ่านจากซ้ายไปขวา
พี่โชว์พาดูเหตุผลที่ Go 1.27 เพิ่ม type parameter ให้ concrete method พร้อมตัวอย่าง Map ที่รันทดสอบจริง และข้อจำกัดเรื่อง interface ที่ต้องรู้ก่อนออกแบบ API
Beyond Syntax: เขียน Go ให้ Scale กับทีม ไม่ใช่แค่ CPU
รวม 12 แนวคิดที่แยก Go ระดับ "เขียนได้" ออกจาก Go ระดับ "คิดมาแล้ว" — ตั้งแต่ function signature, error handling, interface design, concurrency ownership ไปจนถึง package structure, naming convention, dependency injection และ graceful shutdown ที่ทำให้โค้ดอ่านง่ายขึ้นจริงในระดับทีม
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
25 เทคนิค Go ที่นักพัฒนามืออาชีพใช้จริงในงาน Production
รวม 25 เทคนิค Go (Golang) ที่ใช้ได้จริงตั้งแต่ goroutines, channels, context, error handling ไปจนถึง generics, structured logging และฟีเจอร์ใหม่ใน Go 1.25/1.26 พร้อมตัวอย่างโค้ดและ diagram ประกอบทุกหัวข้อ
IoT Workshop #1: ออกแบบ Architecture ก่อนลงมือจริง
พี่โชว์พา Design System Architecture แบบ event-driven สำหรับ IoT Platform จริง ตั้งแต่ Data Flow (ingest/command/query), Communication Patterns (REST/MQTT/WebSocket) ไปจนถึงเหตุผลที่เลือก Tech Stack แต่ละตัว
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 เดียว
ทำระบบ 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
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
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 ช้าทิ้ง
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
รับ 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
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
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
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
คู่มือติดตั้ง Go (Golang) ฉบับเข้าใจง่าย
เรียนรู้วิธีติดตั้ง Go (Golang) บน Windows, macOS และ Linux แบบ step-by-step พร้อมตัวอย่างโค้ดและเคล็ดลับสำหรับมือใหม่