CamBooth 3.1.0 — รุ่นเชื่อม Zort และแก้ปัญหาโฟลเดอร์ภาษาไทย
ต่อจากการรื้อใหญ่ในเวอร์ชัน 3.0.0 รอบนี้เอาโครงสร้างใหม่มาใช้ประโยชน์จริง — สร้างรุ่นที่สองของโปรแกรมที่ใช้โค้ดหลักร่วมกัน แต่เปลี่ยนวิธีดึงข้อมูลออเดอร์ ชุดทดสอบเพิ่มจาก 363 เป็น 416 เคส
แยกส่วนที่ต่างกันออกจากส่วนที่เหมือนกัน
ก่อนจะทำรุ่นใหม่ได้ ต้องแยกให้ชัดก่อนว่าอะไรคือแกนที่ใช้ร่วมกัน อะไรคือส่วนที่ต่าง
- ยกราว 90% ของโปรแกรม (บริการต่าง ๆ ตัวตรวจสอบค่าตั้งค่า ฐานข้อมูล ระบบบันทึกเหตุการณ์ การอัปโหลด ลิขสิทธิ์) ออกมาเป็นไลบรารีกลาง
- เหลือไว้ในตัวโปรแกรมเฉพาะหน้าจอและวิธีแสดงข้อมูลสินค้า ซึ่งเป็นส่วนที่แต่ละรุ่นต่างกัน
- กำหนด “ช่องต่อ” ให้ชัดว่าแหล่งข้อมูลสินค้าต้องให้อะไรกลับมาบ้าง แล้วแต่ละรุ่นก็ไปหาข้อมูลด้วยวิธีของตัวเอง
ผลคือแก้บั๊กที่แกนกลางครั้งเดียว มีผลทั้งสองรุ่นทันที ไม่ต้องไล่แก้สองที่
รุ่นใหม่สำหรับคนใช้ Zort
เดิม CamBooth แสดงข้อมูลออเดอร์ด้วยการฝังหน้าเว็บเข้ามาในโปรแกรม ซึ่งได้ผลแต่มีข้อเสีย — ต้องรอหน้าเว็บโหลด หน้าตาเปลี่ยนตามที่แพลตฟอร์มเปลี่ยน และอ่านยากบนจอเล็กที่โต๊ะแพ็ค
รุ่นใหม่เปลี่ยนไปคุยกับ Zort โดยตรงผ่าน API แล้วแสดงรายการสินค้าเป็นตารางในโปรแกรมเลย
- ยิงบาร์โค้ดแล้วค้นออเดอร์ทันที — ค้นจาก Zort ตรง ๆ ไม่ต้องผ่านหน้าเว็บ
- เห็นรายการสินค้าเป็นตาราง — อ่านง่ายกว่าหน้าเว็บมาก โดยเฉพาะเมื่อออเดอร์มีของหลายรายการ
- อัปเดตสถานะออเดอร์กลับไปที่ Zort — ทำเครื่องหมายว่าแพ็คแล้วได้จากในโปรแกรม ไม่ต้องไปกดที่เว็บ Zort อีกรอบ
- ดึงข้อมูลสินค้าและคลังสินค้า จาก Zort มาใช้ได้
- แท็บตั้งค่าของตัวเอง — ใส่ชื่อร้านและกุญแจเชื่อมต่อได้ในโปรแกรม โดยระบบบังคับว่าต้องกรอกครบทั้งชุดหรือไม่กรอกเลย กันการตั้งค่าครึ่ง ๆ ที่ทำให้ต่อไม่ติดแล้วหาสาเหตุไม่เจอ
รุ่นนี้แยกตัวติดตั้งต่างหาก ลงพร้อมกับรุ่นปกติในเครื่องเดียวกันได้ และเบากว่าเพราะไม่มีตัวแสดงผลหน้าเว็บติดมาด้วย — ระหว่างทางพบว่ามีไลบรารีตัวแสดงหน้าเว็บแอบติดมาทางอ้อมจากโปรเจกต์อื่น เลยถอดออกให้หมด
แก้บั๊กสำคัญ: โฟลเดอร์ชื่อภาษาไทย
เจอปัญหาที่ร้ายแรงกว่าที่คิดมาก
อาการ
ถ้าตั้งที่เก็บวิดีโอเป็นโฟลเดอร์ชื่อภาษาไทย ตัวเขียนไฟล์วิดีโอจะเปิดไฟล์ไม่ได้และไม่เขียนอะไรลงไปเลย — แต่โปรแกรมยังบันทึกลงฐานข้อมูลว่ามีคลิปของออเดอร์นี้อยู่
ผลคือทุกอย่างดูปกติดีจนกว่าจะมีเคสจริง แล้วเปิดคลิปไม่เจอ ซึ่งเป็นสถานการณ์ที่แย่ที่สุดของผลิตภัณฑ์ที่มีไว้เก็บหลักฐาน
สาเหตุ
ไลบรารีที่ใช้เขียนวิดีโอเปิดไฟล์ผ่านเส้นทางแบบเก่าที่รองรับเฉพาะอักขระอังกฤษ พอเจอชื่อโฟลเดอร์ภาษาไทยก็เปิดไม่ได้ แต่ไม่ได้แจ้งข้อผิดพลาดกลับมาให้โปรแกรมรู้
วิธีแก้
- ฝั่งอัด — อัดลงไฟล์พักที่ชื่อเป็นอักขระอังกฤษบนไดรฟ์เดียวกันก่อน แล้วย้ายมาที่โฟลเดอร์จริงตอนหยุดอัด (ถ้าเส้นทางเป็นอังกฤษอยู่แล้วจะไม่ทำอะไรเพิ่ม)
- ฝั่งเปิดดูและตัดคลิป — มีปัญหาเดียวกัน แก้ด้วยการสร้างชื่อเรียกชั่วคราวที่เป็นอักขระอังกฤษชี้ไปที่ไฟล์เดิม ใช้ระหว่างอ่านแล้วลบทิ้งเมื่อเสร็จ
- ไม่เงียบอีกต่อไป — ถ้าเปิดไฟล์เขียนไม่ได้จริง ๆ โปรแกรมจะหยุดและแจ้งเป็นข้อความภาษาไทยทันที แทนที่จะบันทึกรายการคลิปผีลงฐานข้อมูล
เลขเวอร์ชันอ้างอิงจาก tag
เปลี่ยนมาคำนวณเลขเวอร์ชันจากป้ายกำกับรุ่นใน git โดยตรง เลิกแก้เลขเวอร์ชันด้วยมือ
ปัญหาเดิมคือเลขเวอร์ชันในโปรแกรมกับเลขรุ่นที่ปล่อยจริงไม่ตรงกันได้ง่ายมาก เพราะต้องจำไปแก้ ตอนนี้ติดป้ายรุ่นแล้วเลขในโปรแกรมตรงตามอัตโนมัติ ส่วนรุ่นที่ยังไม่ได้ติดป้ายจะได้เลขที่บอกชัดว่าเป็นรุ่นทดลอง
แก้ปัญหาการสร้างไฟล์ติดตั้ง
พบว่าเครื่องมือสร้างรุ่นแบบใหม่ใช้กับส่วนที่ต่อกับอุปกรณ์สแกนภาพของ Windows ไม่ได้ จึงเปลี่ยนไปใช้เครื่องมือสร้างแบบเดิมสำหรับขั้นตอนนี้
ยังเหลืออะไร
ก่อนจะติดป้ายรุ่นอย่างเป็นทางการยังเหลือการทดสอบกับหน้างานจริง — กล้อง ตาชั่ง เครื่องบันทึก และตารางรายการสินค้า พร้อมทดสอบการยิงบาร์โค้ดจนถึงการทำเครื่องหมายว่าแพ็คแล้วบน Zort ของจริง รวมถึงยืนยันว่าการแก้ปัญหาโฟลเดอร์ภาษาไทยใช้ได้จริงกับกล้องจริง
บันทึกคลิปตอนแพ็คสินค้า ลดปัญหาการเคลม