บันทึกงานเซิร์ฟเวอร์จริง ที่ลงมือทำเอง แล้วเขียนให้คนอื่นใช้ต่อได้
สัปดาห์นี้
ดูทั้งหมด
ย้ายเน็ตบ้านจากเราเตอร์ ISP ไปเป็น bridge โดยไม่ให้ DHCP สองตัวชนกัน
บันทึกลำดับ cutover จริงของบ้านที่ย้ายจากเราเตอร์ ISP ไปให้ gateway ของเราคุมทั้งวง ความพยายามแรกที่เสียบขนานกับ DHCP เดิมพัง ต้องสลับสายให้เหลือ DHCP ตัวเดียวทีละขั้น พร้อมกับดักเล็กอีกหลายอย่างและเรื่องที่ยังไม่จบ
เริ่มต้นที่นี่
ค่อย ๆ เรียนรู้จากงานจริงบทความล่าสุด
ดูทั้งหมด →
ต่อคลิป 33 ช่วงให้ได้ 5,784 เฟรมพอดี ภาพไม่เลื่อนจากเสียง
สูตร render แบบกำหนดแน่นอนสำหรับต่อคลิป 33 ท่อนที่ 30 fps ให้ได้ 5,784 เฟรมพอดี ปัดขอบตัดสะสมเป็นเฟรมก่อน encode ทีละท่อนด้วย -frames:v ต่อด้วย concat แบบ copy แล้วผสมเสียง 9 สเต็มด้วย amix normalize=0 พร้อม assert ทุกขั้น

ออกใบรับรองใหม่ให้เว็บ แล้ว SMTPS 465 ขึ้นชื่อโฮสต์ไม่ตรง
ขอใบรับรอง Let's Encrypt ใหม่ให้โดเมนบน DirectAdmin โดยใส่แค่ชื่อเว็บ 4 ชื่อ เว็บผ่านหมด แต่พอร์ตเมล 465 กลับเสิร์ฟใบรับรองของตัวเครื่อง เพราะแถว mail. pop. smtp. ftp. หายจาก snidomains พร้อมวิธีตรวจผ่าน IP สาธารณะและชุดชื่อที่ต้องใส่ทุกครั้ง

คิวแปลเว็บขึ้น nothing to send ทั้งที่เหลือเป็นพัน: แคชของที่ล้ม
แปลเว็บไทยเป็นอังกฤษหลายล้านตัวอักษรโดยไม่มีคนตรวจทีละหน้า ผมเลยให้ hash ต่อฟิลด์จำว่าอะไรแปลแล้ว ให้โค้ดเจ็ดข้อเป็นด่านตรวจผล และจำฟิลด์ที่ล้มสองรอบไว้ แต่แคชของที่ล้มก็ทำคิวตันจนรันเนอร์ขึ้นว่าไม่มีอะไรจะส่ง ทั้งที่เหลืออีกเป็นพัน

composer update บน PHP 8.4 แล้ว worker กับ cron ที่ใช้ PHP เก่าพัง
composer update ที่รันด้วย PHP 8.4 เขียน platform_check.php ให้ทุกตัวที่โหลด vendor เดียวกันต้องเป็น 8.4 ขึ้นไป เว็บหลักผ่านแต่ worker, cron และ subdomain ที่ยังใช้ PHP เก่าล้มทีละตัว พร้อมวิธีไล่หา runner ทั้งหมดก่อนและหลังอัปเดต

เวลาเพี้ยน 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 แบบพร้อมวิธีเขียนโค้ดให้ไม่หลงเชื่อ
อยากให้เราทำให้ไหม?
ให้เราช่วยติดตั้ง ตั้งค่า ย้ายระบบ หรือแก้ปัญหาเซิร์ฟเวอร์ เพื่อให้คุณมีเวลาไปทำงานที่สำคัญกว่า