บันทึกงานเซิร์ฟเวอร์จริง ที่ลงมือทำเอง แล้วเขียนให้คนอื่นใช้ต่อได้
สัปดาห์นี้
ดูทั้งหมด
Webcomposer update บน PHP 8.4 แล้ว worker กับ cron ที่ใช้ PHP เก่าพัง
Linuxเวลาเพี้ยน 3 ชั่วโมง เพราะฟังก์ชันของ MT5 Python API ใช้ timezone ต่างกัน
Linuxคลิปเงียบกับ WAV ยาวเท่ากันทุกเฟรม แต่ MP4 ปัดความยาวเป็นมิลลิวินาที
NetworkCloudflare token โดน 9109 ทั้งที่ IP อยู่ใน allowlist เพราะออกทาง IPv6
composer update บน PHP 8.4 แล้ว worker กับ cron ที่ใช้ PHP เก่าพัง
composer update ที่รันด้วย PHP 8.4 เขียน platform_check.php ให้ทุกตัวที่โหลด vendor เดียวกันต้องเป็น 8.4 ขึ้นไป เว็บหลักผ่านแต่ worker, cron และ subdomain ที่ยังใช้ PHP เก่าล้มทีละตัว พร้อมวิธีไล่หา runner ทั้งหมดก่อนและหลังอัปเดต
2
3
เริ่มต้นที่นี่
ค่อย ๆ เรียนรู้จากงานจริงบทความล่าสุด
ดูทั้งหมด →
เวลาเพี้ยน 3 ชั่วโมง เพราะฟังก์ชันของ MT5 Python API ใช้ timezone ต่างกัน
ระบบเก็บข้อมูลผ่าน MT5 Python API ได้เวลาเพี้ยน 3 ชั่วโมงเป็นบางคอลัมน์ ไม่ใช่ทั้งระบบ เพราะแต่ละฟังก์ชันรับและคืนเวลาคนละเขตกัน บทความนี้มีตาราง 8 ฟังก์ชัน วิธีพิสูจน์ทีละตัว บั๊ก 4 แบบที่เกิดจริง และเหตุผลที่ offset ซึ่งวัดครั้งเดียวใช้ไม่ได้เมื่อข้ามวันเปลี่ยนเวลาฤดูร้อน

คลิปเงียบกับ WAV ยาวเท่ากันทุกเฟรม แต่ MP4 ปัดความยาวเป็นมิลลิวินาที
คลิปวิดีโอเงียบ 203 เฟรมที่ 24 fps กับ WAV 406,000 ซัมเปิลที่ 48 kHz ยาวเท่ากันเป๊ะ แต่ MP4 ที่ ffmpeg เขียนด้วย movie timescale 1000 เก็บความยาวเป็นจำนวนเต็มมิลลิวินาที แก้ด้วย timescale 48000 แล้วเทียบด้วย Fraction ก่อนส่งต่อไฟล์

Cloudflare token โดน 9109 ทั้งที่ IP อยู่ใน allowlist เพราะออกทาง IPv6
token ของ Cloudflare ที่ล็อกด้วย IP allowlist ใช้ได้เครื่องเดียว อีกเครื่องโดน error 9109 ทั้งที่ list ครอบช่วงของ ISP ไว้แล้ว บันทึกวิธีดึง prefix จาก RIPEstat พิสูจน์ด้วย audit log ว่า IP ไหนเป็นของเรา และสาเหตุจริงที่เป็น IPv6

เปลี่ยนชื่อไฟล์รูป 1,707 ไฟล์เป็นภาษาไทยเพื่อ SEO โดยไม่ทำลิงก์พัง
รูปแกลเลอรีทั้งเว็บชื่อเป็นรหัสสุ่มไม่มีความหมาย เครื่องมือค้นหาอ่านไม่ออกสักไฟล์ บทความนี้เล่าการเปลี่ยนชื่อไฟล์ 1,707 ไฟล์เป็นภาษาไทยพร้อมอัปเดตทุกที่ที่อ้างถึงในทรานแซกชันเดียว และกับดักที่กินเวลาหนึ่งวันเต็มคือ curl ยิงพาธไทยดิบได้ 400 ทั้งที่เบราว์เซอร์เปิดได้ปกติ

ผ่าน sandbox ไม่ได้แปลว่าใช้ได้จริง — สัญญาณหลอก 7 แบบ
ระบบสั่งซื้ออัตโนมัติที่ผมเขียนผ่าน sandbox ของผู้ให้บริการครบทุกคำสั่ง แต่เกือบทุกอย่างที่ sandbox บอกเป็นคนละเรื่องกับของจริง ทั้งเวลาตอบกลับ ยอดที่ถูกตัด ชื่อที่ใช้ได้ และรายการที่สร้างสำเร็จแต่ค้นไม่เจอ รวมสัญญาณหลอก 7 แบบพร้อมวิธีเขียนโค้ดให้ไม่หลงเชื่อ

ให้ AI คนละค่ายมาตรวจโค้ดที่ AI เขียน — กระบวนการ ไม่ใช่ความศรัทธา
พอร์ตเครื่องคำนวณจากสเปรดชีตวิศวกรรม 35 ชีตด้วย AI แล้วจะรู้ได้ยังไงว่าถูก บทความนี้เล่ากระบวนการให้เอเจนต์อีกค่ายมาตรวจอิสระสามรอบ กติกาที่ต้องตั้งก่อนเริ่ม ชั้นความเชื่อมั่นที่กันการโม้เกินหลักฐาน และคลาสความผิดพลาดที่ AI พลาดซ้ำ ๆ ทุกรอบ

ฉลากพิมพ์ไม่ตรงกระดาษ ตั้งระยะเริ่มพิมพ์ให้จบทีเดียว
หลังจากสั่งเครื่องพิมพ์ฉลากให้ยิงหัวพิมพ์ได้แล้ว ปัญหาถัดมาคือตัวหนังสือไม่อยู่บนดวงสติกเกอร์ ผมเลิกเดาแล้วพิมพ์ไม้บรรทัดกับหมุดมุมออกมาวัดจริง แล้วแยกให้ชัดว่าขนาดกระดาษ พื้นที่พิมพ์ และระยะเยื้อง เป็นคนละค่ากันสามค่า

ต่อ Open API ธนาคารออก QR รับเงิน — จาก sandbox ถึงวงจรสถานะ
QR พร้อมเพย์แบบ static ที่ประกอบเองได้ ติดตรงไม่มีใครบอกเราว่าลูกค้าจ่ายหรือยัง บทความนี้ไล่การต่อ Open API ของธนาคารใน sandbox ตั้งแต่ขอ token ออก QR แบบ dynamic อ่านวงจรสถานะ REQUESTED/PAID/CANCELLED/VOIDED ไปจนถึงกับดัก requestDt ที่ทำให้ยิงไม่ผ่านทั้งที่ payload ถูกหมด

เขียนแบบตู้ไฟเป็น SVG ให้ช่างเอาไม้บรรทัดวัดจากกระดาษได้จริง
แบบตู้ไฟที่ generate ออกมาจาก HTML ดูสวยดีแต่ช่างบอกว่าสัดส่วนเพี้ยน ผมเลยรื้อใหม่ทั้งแผ่น ยึดขนาดจริงจากแคตตาล็อกเป็นสมอ เขียน viewBox เป็นมิลลิเมตรตรงๆ แล้ววางแถบสเกลไว้ให้ช่างเอาไม้บรรทัดทาบพิสูจน์เองได้ว่าแบบที่ถืออยู่เป็น 1:10 จริง
อยากให้เราทำให้ไหม?
ให้เราช่วยติดตั้ง ตั้งค่า ย้ายระบบ หรือแก้ปัญหาเซิร์ฟเวอร์ เพื่อให้คุณมีเวลาไปทำงานที่สำคัญกว่า