Các nhà phát triển tranh luận về tuân thủ tiêu chuẩn trong kho lưu trữ các tệp hợp lệ tối thiểu

BigGo Editorial Team
Các nhà phát triển tranh luận về tuân thủ tiêu chuẩn trong kho lưu trữ các tệp hợp lệ tối thiểu

Một kho lưu trữ trên GitHub thu thập các tệp hợp lệ nhỏ nhất có thể trên các ngôn ngữ lập trình và định dạng khác nhau đã khơi dậy những cuộc thảo luận thú vị về điều gì thực sự cấu thành nên mã hợp lệ và các định dạng tệp. Dự án này nhằm mục đích chứng minh các yêu cầu tối thiểu tuyệt đối cho các tệp đúng cú pháp trong các công nghệ khác nhau.

Thống kê Repository:

  • Tổng số file: 137
  • File rỗng: 31 (22.6%)
  • Các danh mục file: Archives, Audio, Documents, Executables, Graphics, Languages, Markup, Video, Unsorted

Các tệp rỗng chiếm ưu thế nhưng gây ra câu hỏi

Kho lưu trữ chứa 137 tệp, với 31 tệp hoàn toàn trống. Mặc dù những tệp không byte này về mặt kỹ thuật thỏa mãn các yêu cầu của trình thông dịch cho các ngôn ngữ như Python , các nhà phát triển đặt câu hỏi liệu một tệp rỗng có thể thực sự đại diện cho một ngôn ngữ lập trình hay không. Một số người cho rằng nếu bạn có thể chạy một lệnh như python myfile.py mà không có lỗi, thì tệp đó nên được coi là hợp lệ, bất kể nội dung.

Cuộc tranh luận triết học này mở rộng ra ngoài các ngôn ngữ lập trình. Bộ sưu tập bao gồm các ví dụ tối thiểu cho các định dạng tệp từ hình ảnh và lưu trữ đến tài liệu và tệp thực thi, mặc dù nhiều tệp dựa vào việc phân tích cú pháp khoan dung hơn là tuân thủ nghiêm ngặt.

Tuân thủ tiêu chuẩn bị xem xét kỹ lưỡng

Các thành viên cộng đồng đã xác định được một số tệp không đáp ứng các thông số kỹ thuật chính thức. Ví dụ PDF thiếu các yếu tố bắt buộc như dấu hiệu %%EOF và bảng tham chiếu chéo, trong khi một số định dạng hình ảnh đẩy ranh giới của những gì các trình duyệt và ứng dụng khác nhau sẽ chấp nhận. Các nhà phê bình lưu ý rằng tác giả không chỉ định những triển khai nào mà các tệp này được cho là hoạt động, khiến việc xác minh khả năng tương thích thực sự trở nên khó khăn.

Một số tệp này rất không chuẩn, ngay cả khi tiêu chuẩn không để lại chỗ linh hoạt... Thật tiếc là tác giả không chỉ định những triển khai nào mà chúng được cho là hoạt động.

Ứng dụng thực tế:

  • GIF nhỏ nhất (42 bytes): Được sử dụng làm favicon placeholder để tránh lỗi 404
  • Định dạng Data URI: <link rel="icon" href="data:image/gif;base64,R0lGODlhAQABAAAAADs=">
  • Favicon tối giản thay thế: <link rel=icon href=data:> (thậm chí còn ngắn hơn)

Xác thực HTML khơi dậy cuộc thảo luận lịch sử

Nguồn gốc của dự án trong việc khám phá các tệp HTML5 tối thiểu đã làm bùng phát lại các cuộc tranh luận về sự phát triển của các tiêu chuẩn HTML . Các nhà phát triển đã thảo luận về cách HTML5 thay đổi cơ bản so với các phiên bản trước đó bằng cách định nghĩa các thuật toán nghiêm ngặt để xử lý đánh dấu lỏng lẻo, thay vì yêu cầu cấu trúc cứng nhắc. Sự thay đổi này có nghĩa là các tài liệu như <!DOCTYPE html><title>Hello</title> hiện đã tuân thủ đầy đủ các tiêu chuẩn, mặc dù nhiều nhà phát triển vẫn từ chối chấp nhận đánh dấu tối thiểu như vậy là hợp lệ.

Cuộc trò chuyện đã tiết lộ cách triết lý phân tích cú pháp thay đổi đáng kể giữa HTML 4 và HTML5 , với tiêu chuẩn mới hơn về cơ bản đã hệ thống hóa việc phân tích cú pháp tag soup mà các trình duyệt đã thực hiện một cách không chính thức trong nhiều năm.

Sự phát triển của các tiêu chuẩn HTML:

  • HTML 4 và các phiên bản trước đó: Yêu cầu cấu trúc nghiêm ngặt với phân tích cú pháp SGML
  • HTML5: Thuật toán phân tích cú pháp linh hoạt xử lý được mã đánh dấu "tag soup"
  • HTML5 hợp lệ tối thiểu: &lt;!DOCTYPE html&gt;&lt;title&gt;Hello&lt;/title&gt;
  • Thay đổi chính: Các tiêu chuẩn hiện tại định nghĩa cách trích xuất DOM từ bất kỳ đầu vào ký tự nào

Các ứng dụng thực tế xuất hiện

Bất chấp tính chất học thuật của bài tập, các nhà phát triển đã tìm thấy những cách sử dụng thực tế cho những tệp tối thiểu này. GIF hợp lệ nhỏ nhất phục vụ như một trình giữ chỗ favicon hiệu quả trong quá trình phát triển, ngăn chặn lỗi 404 trong nhật ký trình duyệt. Các nhà phát triển web cũng đã chia sẻ các kỹ thuật để tạo favicon SVG tối thiểu và thảo luận về việc sử dụng lịch sử của các GIF trong suốt nhỏ trong bố cục dựa trên bảng từ nhiều thập kỷ trước.

Dự án chứng minh cách hiểu biết về các yêu cầu tối thiểu tuyệt đối cho các định dạng tệp có thể dẫn đến các tối ưu hóa hữu ích, ngay cả khi bản thân các ví dụ không phù hợp cho việc sử dụng sản xuất. Nó cũng làm nổi bật sự căng thẳng đang diễn ra giữa tuân thủ tiêu chuẩn lý thuyết và khả năng tương thích triển khai trong thế giới thực trên các nền tảng và ứng dụng khác nhau.

Tham khảo: Smallest possible […] file