1 điểm bởi GN⁺ 2023-09-11 | 1 bình luận | Chia sẻ qua WhatsApp
  • Tác giả bài viết, sau khi tham gia cuộc đua xe đạp Gravel Worlds Long Voyage, đã quyết định tối ưu hóa bữa ăn bằng cách đặt pizza từ Casey's General Store
  • Năm trước, các tay đua nhanh hơn đã ăn hết toàn bộ pizza, dẫn đến việc khi tác giả đến nơi thì không còn pizza
  • Để giải quyết vấn đề này, tác giả quyết định viết một script đặt pizza khi GPS của xe đạp rời khỏi geofence
  • Script này được xây dựng dựa trên trình theo dõi GPS serverless mà tác giả đã tạo từ năm trước
  • Script tính ETA đến điểm dừng tiếp theo và kích hoạt một hàm Lambda đặt pizza khi trình theo dõi rời khỏi geofence đã cấu hình trong AWS Location Service
  • Vì Casey's không có API công khai cho việc đặt hàng trực tuyến, tác giả phải dựa vào việc screen scraping website bằng Playwright
  • Tác giả cũng thiết lập để gửi thông báo đẩy đến điện thoại của mình tùy theo việc đặt pizza thành công hay thất bại
  • Trong lúc đua, tác giả nhận được một thông báo sai rằng pizza đã được đặt thành công, nhưng tại điểm dừng lại không có bản ghi đơn hàng nào
  • Sau cuộc đua, tác giả đã cải tiến hàm Lambda để ghi lại video trình duyệt đang hoạt động và tải nó lên bucket S3 để phân tích
  • Tác giả suy đoán rằng lỗi có thể do Lambda kết thúc xử lý ngay sau khi form.submit() cuối cùng trong trình duyệt Playwright được xử lý
  • Dù thất bại, tác giả đã học được rất nhiều từ dự án này và dự định sẽ thử lại trong cuộc đua sắp tới
  • Mã nguồn của dự án này có thể xem trên GitHub

1 bình luận

 
GN⁺ 2023-09-11
Ý kiến Hacker News
  • Bài viết nói về một dự án kỹ thuật độc đáo kết nối GPS của xe đạp để đặt pizza trong lúc đang đua gravel
  • Dự án được so sánh như một phiên bản thế kỷ 21 của pizzatool từng được dùng tại Sun Microsystems
  • Một tiệm pizza tên là 'Waypoint Pizza' được nhắc đến, nơi giao hàng trên Vịnh San Francisco trong một cuộc đua thuyền cụ thể
  • Bài viết cũng nhắc đến ultra runner Dean Karnazes, người từng cuộn pizza như burrito và vừa chạy vừa ăn trong lúc đua
  • Một số độc giả cho rằng nếu website dùng để đặt hàng là một website React thì có thể tồn tại API dùng trực tiếp, điều này có thể khiến quy trình ổn định hơn
  • Bài viết được khen vì sự hài hước, cách giải quyết vấn đề kỹ thuật và phần tự phê bình của tác giả ở cuối bài
  • Một số độc giả đề xuất các phương án kỹ thuật thay thế như dùng gọi điện rảnh tay hoặc nhờ bạn bè gọi điện giúp
  • Có thảo luận về khả năng áp dụng giải pháp kỹ thuật tương tự cho các dịch vụ giao hàng khác như Deliveroo
  • Bài viết tiết lộ rằng giải pháp kỹ thuật đã không hoạt động trong lúc đua, và điều này được phát hiện ở mốc 200 dặm
  • Bài viết cũng nhắc đến pizza Casey's, một loại pizza rất được yêu thích ở vùng Midwest, gợi lại những ký ức vui vẻ cho một số độc giả
  • Có giả thuyết về nguyên nhân thất bại của giải pháp kỹ thuật, cho rằng Lambda có thể đã kết thúc xử lý sau khi biểu mẫu cuối cùng được gửi đi