- Sử dụng địa chỉ IP của người dùng để ước tính thông tin vị trí hiện tại
- Trực quan hóa và biểu diễn dưới dạng CSS gradient với màu sắc và bầu không khí bầu trời phù hợp với vị trí tương ứng
- Có thể kiểm tra kết quả ngay lập tức chỉ bằng việc truy cập website, mà không cần bản đồ riêng hay thao tác nhập liệu phức tạp
- Vì giao diện đơn giản và nhẹ nên ai cũng có thể tiếp cận dễ dàng
- Không phản ánh thông tin thời tiết thực tế; màu sắc được quyết định dựa trên múi giờ theo vị trí và vị trí của mặt trời
Tổng quan dịch vụ
- Dịch vụ web này, khi người dùng truy cập, ước tính vị trí gần đúng hiện tại của người dùng (vĩ độ, kinh độ) từ địa chỉ IP
- Dựa trên thông tin vị trí ước tính và thời gian địa phương, tính toán màu sắc bầu trời theo vị trí Mặt Trời và múi giờ
- Màu bầu trời đã tính được được render thành nền trang web theo định dạng CSS gradient, để hiển thị không khí bầu trời theo thời gian thực
- Không cần bất kỳ quá trình nhập liệu nào; chỉ cần truy cập website là hoạt động tự động
Tính năng và đặc điểm
- Không có các bước phức tạp như bản đồ, API thời tiết hay đăng ký tài khoản
- Trực quan hóa thời gian thực: màu bầu trời thay đổi linh hoạt theo biến thiên múi giờ theo thời điểm tại vị trí hiện tại
- CSS gradient là phương thức duy nhất để triển khai, mang lại trải nghiệm người dùng rất nhanh và nhẹ
- Không phản ánh thông tin thời tiết thực tế như mây hay mưa; về cơ bản áp dụng thuật toán tập trung vào góc mặt trời và thời gian
Mục đích sử dụng và ý nghĩa
- Là một công cụ cung cấp thông tin trực quan đơn giản không phức tạp như ứng dụng thời tiết hay dịch vụ bản đồ
- Có giá trị ứng dụng cao cả như một tác phẩm nghệ thuật web hoặc dự án demo cá nhân
- Cung cấp gợi ý trực quan được địa phương hóa tự động, phù hợp để nhanh chóng giải quyết sự tò mò về việc “bây giờ bầu trời ở đây ra sao”
1 bình luận
Ý kiến Hacker News
Tôi còn nhớ hồi đầu sự nghiệp, khi làm phần mềm định vị 3D turn-by-turn, tôi từng được giao việc vẽ bầu trời.
Một người sếp nói rằng “ban ngày chỉ cần xử lý thành hình vuông xanh, ban đêm thành hình vuông xám đậm là xong”, nhưng tôi muốn nhìn thấy bầu trời thực sự thay đổi theo môi trường, vĩ độ, kinh độ và thời gian nên đã tham chiếu bài báo của Preetham [liên kết] để triển khai mô hình bầu trời chân thực.
Các chòm sao được lấy từ một bảng thiên văn hardcode, và hiệu năng xử lý cũng khá tốt.
Nhưng cấp trên lại hơi hoang mang trước các hiệu ứng thực tế như chân trời mờ và hơi vàng, cho rằng “trời của đối thủ lại xanh” và không hài lòng với sản phẩm của tôi; câu trả lời “cứ đi nhìn ngoài trời” của tôi lại không đi vào đâu cả.
Cuối cùng tôi xóa gần như mọi thứ và chỉ giữ lại hình vuông màu xanh.
Nhờ trải nghiệm đó, khi nhìn các trang như vậy tôi thấy nó thật đẹp.
Từ đó tôi hiểu rõ tầm quan trọng của spec và thiết kế.
Trước đây tôi có người làm cùng cũng kể rằng họ đã bỏ quá nhiều thời gian để cài đặt hệ thống sao dựa trên vật lý trong trò chơi Cobalt [liên kết].
Trong trường hợp này, lập trình lại có vẻ chán hơn khi làm nghề so với khi làm để vui.
Hình ảnh này là ví dụ điển hình về ban giám đốc coi thường sự sáng tạo của người đổi mới.
Tối thiểu thì đâu phải họ đã có thể chèn cái này làm Easter egg rồi.
Chúng tôi đang phát hành cảm biến lắp ở mặt trong cửa sổ. Nó đo màu bầu trời theo một góc nón nhỏ, rồi truyền dữ liệu đó đến skylight và window fixture trong nhà để tái tạo cùng sắc trời trong nội thất [innerscene.com].
Khi thấy nhắc tới thẻ HTML
meta http-equiv="Refresh", tôi bật cười.Trước đây, nếu cần tự động refresh trang, đây gần như là cách duy nhất.
Dự án này giống như một ví dụ xuất sắc của formal minimalism.
Thật ra ý nghĩa của
http-equivlà header HTTP tương đương, nên gửi thêm headerRefresh: 60cũng cho hiệu ứng tương tự.Sẽ càng bất ngờ nếu bạn tìm hiểu về frameset.
Cảm ơn bạn! Xin lỗi, nhưng khi tôi sinh ra thì
setTimeout(() => location.reload(), ...)đã rất phổ biến rồi.Với tư cách là một developer “thế hệ trước” không biết nhiều web kỹ thuật mới, tôi tò mò về cách đoạn code dưới đây hoạt động với combo astro/cloudflare/wrangler:
const { latitude = "0", longitude = "0" } = Astro.locals.runtime.cf || {};Có vẻ Cloudflare được wrap vào astro để cung cấp latitude/longitude như vậy, nên tôi muốn biết có xử lý bên trong nào không.
Tôi cũng đã đọc docs rồi nhưng không thấy câu trả lời rõ ràng, nên rất mong được giải thích kỹ.
Nguyên nhân không thấy xử lý nội bộ là vì nó hoạt động gần như giống “ma thuật”.
Astro.locals.runtime, trong đó bindingcfchứa nhiều request values như latitude, longitude, ... [liên kết1, liên kết2]Trên Cloudflare có thể bật tính năng tự động thêm latitude/longitude của người dùng vào header HTTP của request dựa trên IP hoặc các phương thức khác [liên kết].
Tôi đã mở trang và chờ 20 giây để xem “nó đổi khi nào”, rồi đột nhiên nhận ra giờ đã sang nửa đêm.
Tôi là tác giả SunCalc. Nhìn thấy ví dụ sử dụng code của mình như thế này khiến tôi thật sự vui.
Lưu ý là suncalc.net đang lỗi vì token Google Maps API hết hạn [suncalc.net]
Tác giả? Contributor? Dù sao đi nữa, đây là một tác phẩm đẹp và tôi thực sự thích; thấy các demo kiểu này tôi thấy vui.
Tôi cứ refresh lại, bật JS rồi refresh liên tục, đến mức tưởng rằng do server quá tải nên nó không hiển thị.
Việc triển khai tinh vi hơn tôi nghĩ. Dựa trên paper nghiên cứu [liên kết].
Tôi áp vào cửa kính bằng điện thoại và thấy khớp 100% với bầu trời ngoài trời thật (hiện tại trong lành), rồi gọi vợ tới để khoe. Thật tuyệt vời, tôi nghĩ vậy. Xin chúc mừng.
Tôi làm ant.care [liên kết]; mục tiêu là đồng bộ bầu trời nền với môi trường thực tế, nhưng giờ mới chỉ làm cực kỳ đơn giản.