4 điểm bởi GN⁺ 2023-09-10 | 1 bình luận | Chia sẻ qua WhatsApp
  • Bài viết về một dự án dài hạn nhằm giải mã toàn bộ mã nguồn của GNU coreutils phiên bản 8.3
  • Dự án dành cho các lập trình viên mới bắt đầu quan tâm đến việc khám phá thiết kế của các tiện ích dòng lệnh
  • Dự án được chia thành nhiều giai đoạn đã hoàn thành, bao gồm việc tạo các trang riêng cho từng tiện ích, mở rộng thảo luận về các quyết định thiết kế và thuật toán quan trọng, đồng thời tạo công cụ trực quan hóa quá trình tiến hóa của mã nguồn
  • Bài viết cung cấp liên kết đến trang riêng của từng tiện ích, các thảo luận chi tiết, mã nguồn và tài liệu hướng dẫn
  • Bài viết cung cấp phần nền tảng cho việc đọc mã, thảo luận về đặc tính của tiện ích, thiết kế và những điểm cần lưu ý khi đọc mã
  • Bài viết giải thích rằng GNU coreutils ban đầu là ba gói riêng biệt cho shell, văn bản và tiện ích tệp, và nhiều tiện ích cùng loại chia sẻ các mẫu thiết kế giống nhau
  • Bài viết trình bày thiết kế cơ bản của hầu hết các tiện ích CLI, bao gồm giai đoạn thiết lập cho cờ, tùy chọn, bản địa hóa, giai đoạn phân tích đối số đọc đầu vào để thiết lập tham số thực thi, và giai đoạn xử lý/thực thi chuẩn bị đầu vào cho một hoặc nhiều lời gọi hệ thống
  • Bài viết cung cấp giải thích chi tiết về khởi tạo tiện ích, phân tích bằng Getopt, duyệt hệ thống tệp bằng fts, wrapper và helper cho lời gọi hệ thống, các hàm dùng chung, các dòng mã dùng chung và các thành ngữ trong C
  • Bài viết thảo luận về việc bảo trì tiện ích, bao gồm các thay đổi trên toàn bộ dự án, các cập nhật riêng theo tiện ích và bảo trì hằng năm
  • Bài viết cung cấp thông tin cho những người muốn đóng góp cho dự án, như liên kết đến trang dự án GNU, hướng dẫn đóng góp và danh sách các tính năng bị từ chối
  • Bài viết kết thúc bằng phần trivia và các mục nói về những cách triển khai thú vị, cung cấp các thông tin bên lề và góc nhìn sâu hơn về các tiện ích

1 bình luận

 
GN⁺ 2023-09-10
Ý kiến Hacker News
  • Bài viết này bàn về tuổi thọ và khả năng mở rộng của GNU Coreutils, vốn đã được nhiều người chỉnh sửa trong gần 30 năm.
  • Có một bình luận hỏi ví dụ về những chương trình đã tồn tại suốt 30 năm hoặc được kỳ vọng sẽ tồn tại trong 30 năm.
  • Các bình luận cung cấp liên kết đến tài liệu về cách GNU Coreutils được kiểm thử, cách khám phá từng lệnh trong Coreutils, và xử lý văn bản trên dòng lệnh bằng GNU Coreutils.
  • Có một đính chính về lỗi được phát hiện trong bài viết, đặc biệt là phần mô tả ngắn của trang shred thực ra lại là mô tả của csplit.
  • Một số người dùng bày tỏ sự ngạc nhiên và quan tâm trước sự tồn tại của các tiện ích cụ thể như yes, shred, shuf, factor.
  • Có bình luận hỏi nên nghiên cứu tiện ích nào để một lập trình viên mới bắt đầu cải thiện hiểu biết về cấu trúc dữ liệu và thuật toán.
  • Có một nhận xét mang tính hài hước về khả năng /bin/true thất bại và trả về false, điều này khiến lời gọi "Not /bin/false" trở nên vững chắc hơn.
  • Một sự thật thú vị là trên MacOS, khi cài Coreutils qua Homebrew, od của Coreutils được cài thành god(1) vì MacOS đã cung cấp od(1).
  • Một người dùng đặt câu hỏi về sự cần thiết của trang này, chỉ ra rằng đã có các trang man (hoặc info) cho từng tiện ích như vậy.