บทความ · หมวด

การเขียนโปรแกรม

แนวคิด ภาษา และเทคนิคการเขียนโปรแกรมที่ใช้ในงานจริง

10 บทความ

#โค้ดกลาง

Go ใน Docker: GOMAXPROCS ตาม CPU limit (Go 1.25) และ Green Tea GC (Go 1.26)

Go 1.25 ตั้ง GOMAXPROCS ตาม CPU limit ของ container เอง Go 1.26 เปิด Green Tea GC เป็นค่าเริ่มต้น สิ่งที่ต้องเช็กใน Dockerfile และ go.mod พร้อมผลวัดจริง

อ่าน 9 นาที
#โค้ดกลาง

Python 3.15: lazy import, frozendict และ UTF-8 ค่าเริ่มต้น แก้ไฟล์ไทยบน Windows

Python 3.15 ออกแล้ว lazy import ทำให้ CLI เปิดเร็วขึ้นหลายเท่า frozendict ใช้เป็น key ได้ และ open() อ่านเขียน UTF-8 เสมอ ไฟล์ภาษาไทยบน Windows ไม่เพี้ยนอีก

อ่าน 12 นาที
#โค้ดกลาง

Temporal ใน JavaScript ใช้งานจริง: บวกเดือน คำนวณอายุ และ polyfill สำหรับ Safari

Temporal เป็น Stage 4 ใช้ได้ใน Chrome 144, Firefox 139 และ Node.js 26 แล้ว โค้ดที่ใช้บ่อยแทน Date ต่อกับโค้ดเดิม แสดง พ.ศ. และโหลด polyfill เฉพาะ Safari

อ่าน 13 นาที
#โค้ดกลาง

Background job และ queue: ย้ายงานช้าออกจาก request พร้อม retry ที่ไม่ส่งซ้ำ

ส่งอีเมล ย่อรูป เรียก AI ไม่ควรทำใน request ทำ job queue ด้วย Postgres SKIP LOCKED พร้อม retry แบบ backoff, visibility timeout, dead-letter และทำให้ job รันซ้ำได้ปลอดภัย

อ่าน 15 นาที
#โค้ดเริ่มต้น

เก็บวันเวลาให้ถูก: เก็บเป็น UTC เก็บ timezone ผู้ใช้ แล้วค่อยแปลงตอนแสดง

เวลาเพี้ยน 7 ชั่วโมง วันเกิดเลื่อน นัดหมายเคลื่อนตอน DST แก้ด้วยกฎสามข้อ ใช้ timestamptz ใน Postgres, zoneinfo ใน Python, Temporal ใน JS และแปลงเป็น พ.ศ. ตอนแสดงเท่านั้น

อ่าน 13 นาที
#โค้ดเริ่มต้น

Git สำหรับคนทำโปรเจกต์คนเดียว: นิสัยเล็ก ๆ ที่ช่วยชีวิตตอนระบบพัง

commit เล็กพร้อมข้อความชัด trunk กับ branch สั้น tag ทุก release ใช้ git bisect หา commit ที่ทำพังใน 7 รอบจาก 100 commit และ git reflog กู้งานที่เผลอลบ

อ่าน 10 นาที
#โค้ดกลาง

Idempotency Key กดจ่ายซ้ำไม่ตัดเงินสองครั้ง และ retry แบบ backoff + jitter

ลูกค้ากดจ่ายสองครั้งหรือ client ส่งซ้ำตอนเน็ตหลุด ต้องไม่ตัดเงินซ้ำ ใช้ idempotency key เก็บผลลัพธ์ unique constraint และ retry แบบ exponential backoff + jitter

อ่าน 15 นาที
#โค้ดกลาง

SQLite บน production ปี 2026: ตั้ง WAL สำรองด้วย Litestream และเมื่อไรต้องย้าย

เว็บเล็กถึงกลางบนเซิร์ฟเวอร์เครื่องเดียว ใช้ SQLite แทน Postgres ได้เมื่อไร pragma ที่ต้องตั้ง เขียนทีละคนทำไมถึงพอ สำรองยังไง และจุดที่มันพัง พร้อมตัวเลขจริง

อ่าน 12 นาที
#โค้ดกลาง

เงินห้ามใช้ float ทำไม 19.99 × 100 ถึงไม่ได้ 1999 และวิธีเก็บเงินให้เป๊ะทุกขั้น

float เก็บ 0.1 ได้ไม่เป๊ะ เงินจึงเพี้ยนทีละสตางค์และสะสม เล่าวิธีให้ตัวเลขเงินเป๊ะตั้งแต่ต้นทางจนถึงฐานข้อมูล จากระบบบันทึกผลเทรดที่ใช้จริง พร้อมโค้ด Go SQL และ Python

อ่าน 7 นาที
#โค้ดกลาง

ผ่านในเครื่อง พังบน production: สามเรื่องจริง และวิธีให้เครื่องเรา = เครื่องจริง

library ที่มีแค่ในเครื่องเรา library ที่ติดมาเองแล้วเปลี่ยนผลเงียบ ๆ ค่าอ้างอิงที่บันทึกผิดเครื่อง สามบั๊กจริง และวิธีกันด้วย image เดียว ตรึงเวอร์ชัน และเทสต์สภาพแวดล้อม

อ่าน 6 นาที