- ผู้เขียนบทความตัดสินใจปรับมื้ออาหารให้เหมาะสมด้วยการสั่งพิซซ่าจาก Casey's General Store หลังเข้าร่วมการแข่งขันจักรยาน Gravel Worlds Long Voyage
- ในปีก่อนหน้า นักปั่นที่เร็วกว่าได้กินพิซซ่าจนหมด ทำให้เมื่อไปถึงแล้วไม่มีพิซซ่าเหลือ
- เพื่อแก้ปัญหานี้ จึงตัดสินใจเขียนสคริปต์ให้สั่งพิซซ่าเมื่อ GPS ของจักรยานออกจาก geofence
- สคริปต์นี้สร้างต่อยอดจากเซิร์ฟเวอร์เลส GPS tracker ที่ทำไว้เมื่อปีก่อน
- สคริปต์จะคำนวณ ETA ของจุดแวะถัดไป และเมื่อ tracker ออกจาก geofence ที่ตั้งไว้ใน AWS Location Service ก็จะ trigger ฟังก์ชัน Lambda เพื่อสั่งพิซซ่า
- เนื่องจาก Casey's ไม่มี public API สำหรับการสั่งซื้อออนไลน์ จึงต้องพึ่งพา web scraping ของเว็บไซต์ด้วย Playwright
- มีการตั้งค่าให้ส่ง push notification ไปยังโทรศัพท์ของตนเองตามผลสำเร็จหรือล้มเหลวของการสั่งพิซซ่า
- ระหว่างการแข่งขันได้รับการแจ้งเตือนผิดพลาดว่าการสั่งพิซซ่าสำเร็จแล้ว แต่เมื่อถึงจุดแวะกลับไม่พบบันทึกคำสั่งซื้อ
- หลังการแข่งขัน ได้ปรับปรุงฟังก์ชัน Lambda ให้บันทึกวิดีโอขณะเบราว์เซอร์ทำงานและอัปโหลดไปยังบัคเก็ต S3 เพื่อใช้วิเคราะห์
- คาดว่าสาเหตุของความล้มเหลวอาจเป็นเพราะ Lambda จบการประมวลผลทันทีหลังจาก
form.submit() สุดท้ายในเบราว์เซอร์ Playwright ถูกจัดการ
- แม้จะล้มเหลว แต่ก็ได้เรียนรู้อะไรมากมายจากโปรเจกต์นี้ และมีแผนจะลองอีกครั้งในการแข่งขันครั้งถัดไป
- สามารถดูโค้ดของโปรเจกต์นี้ได้บน GitHub
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News