← Blog

CamBooth 1.9.11 — ปิดสายเวอร์ชัน 1.x

รุ่น 1.9.11 เป็นรุ่นสุดท้ายของสายเวอร์ชัน 1.x ซึ่งเป็นตัวผลิตภัณฑ์ดั้งเดิมที่ใช้งานจริงมาตั้งแต่ปี 2022 ต่อเนื่องเกือบสองปี

สายนี้พัฒนาอะไรมาบ้าง

ตลอดสาย 1.x งานหลักวนอยู่กับความเสถียรของตัวโปรแกรมที่หน้างาน — สามเรื่องที่แก้ซ้ำแล้วซ้ำอีกคือ

  • การเลือกกล้อง — เครื่องหน้างานมักมีกล้องมากกว่าหนึ่งตัว (กล้องโน้ตบุ๊กในตัว + กล้องที่ต่อเพิ่ม) และลำดับของอุปกรณ์เปลี่ยนได้ทุกครั้งที่บูตเครื่อง
  • วงจรการอ่านค่าตาชั่ง — ต้องอ่านต่อเนื่อง จับจังหวะที่ค่านิ่งพอจะบันทึก และกู้คืนเมื่อสายหลุด
  • วงจรชีวิตของการเขียนไฟล์วิดีโอ — เปิดไฟล์ เขียนเฟรม ปิดไฟล์ให้ครบทุกครั้ง แม้โปรแกรมจะถูกปิดกลางคัน

ระหว่างทางยังมีงานย่อยอีกจำนวนมาก เช่น เตือนเมื่อพื้นที่ดิสก์เหลือน้อย (ขึ้นสีเตือนที่หน้าจอ) ลบคลิปเก่าอัตโนมัติ และการปรับให้เมื่อปิดหน้าต่างดูคลิปแล้วโฟกัสกลับมาที่ช่องยิงบาร์โค้ดทันที — รายละเอียดเล็ก ๆ แบบนี้คือสิ่งที่ทำให้คนหน้างานทำงานได้เร็ว

ทำไมต้องรื้อใหญ่

พอถึงปลายสายนี้ โค้ดเกือบทั้งหมดกระจุกอยู่ในไฟล์เดียวยาวราว 3,000 บรรทัด ทุกอย่างปนกันหมด — การอ่านกล้อง การอ่านตาชั่ง การเขียนไฟล์ การอัปโหลด การวาดหน้าจอ

ผลคือ

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

นี่คือเหตุผลตั้งต้นของการรื้อใหญ่ในเวอร์ชัน 3

CamBooth

บันทึกคลิปตอนแพ็คสินค้า ลดปัญหาการเคลม

ดูรายละเอียด →

อ่านต่อ

CamBooth

คลิปที่ระบบบอกว่ามี แต่เปิดไม่เจอ — บั๊กที่อันตรายที่สุดของระบบเก็บหลักฐาน

ตั้งโฟลเดอร์เก็บวิดีโอเป็นชื่อภาษาไทย แล้วระบบบันทึกว่ามีคลิปทั้งที่ไฟล์ไม่เคยถูกเขียนลงไป — บทความว่าด้วยความล้มเหลวแบบเงียบ และทำไมมันร้ายแรงกว่าโปรแกรมพัง

CamBooth

CamBooth — ยกฝั่งเว็บขึ้น Docker และย้ายฐานข้อมูลไป PostgreSQL

งานฝั่งเซิร์ฟเวอร์ — ติดตั้งเว็บด้วย Docker Compose ซ้อมย้ายฐานข้อมูลไป PostgreSQL จนผ่านจริงไม่ใช่แค่เขียนสคริปต์ทิ้งไว้ และเพิ่มเครื่องมือตรวจว่าโครงสร้างฐานข้อมูลบนเครื่องจริงตรงกับที่โค้ดคาดหวังหรือไม่

CamBooth

CamBooth — อัดคลิปตอนแพ็คสินค้า ลดข้อพิพาทเรื่องของไม่ครบ

บันทึกคลิปขณะแพ็คสินค้าเก็บเป็นหลักฐานทุกออเดอร์ มีทั้งโหมดมาตรฐาน (อัดคลิป + เสียง + ซับไตเติล) และโหมดเชื่อมต่อ Zort API