1 điểm bởi GN⁺ 2024-03-26 | 1 bình luận | Chia sẻ qua WhatsApp
  • Vào cuối năm 1994, khi Microsoft chuyển mã giao diện Windows95 sang Windows NT, do khác biệt giữa NT và Windows95 nên cần một UI riêng cho việc định dạng đĩa
  • Các tùy chọn định dạng như hệ thống tệp, nhãn, kích thước cụm, nén và mã hóa được phác ra trên giấy trước, rồi dùng VC++ 2.0 Resource Editor để tạo danh sách lựa chọn theo chiều dọc
  • Hộp thoại tạm thời định dùng cho đến khi có UI tốt hơn vẫn còn giữ nguyên hình dạng ban đầu sau khoảng 30 năm
  • Trong cùng quá trình đó, một quyết định mang tính tùy ý về mức cho phép của cluster slack đã dẫn tới giới hạn 32GB khi định dạng phân vùng FAT
  • Một triển khai được check-in tạm thời cũng có thể trở thành hành vi và ràng buộc dài hạn của sản phẩm, vì vậy cần thận trọng khi đưa vào các giải pháp “temporary”

Hộp thoại Format của Windows NT được tạo ra vào sáng thứ Năm

  • Vào cuối năm 1994, Microsoft đang port phần lớn mã giao diện người dùng của Windows95 sang Windows NT
  • Tính năng Format là khu vực cần UI tùy chỉnh riêng vì sự khác biệt giữa NT và Windows95 là khá lớn
  • Các mục cần chọn khi định dạng đĩa trước tiên được ghi ra giấy
    • Hệ thống tệp
    • Nhãn
    • Kích thước cụm
    • Nén
    • Mã hóa
  • Sau đó dùng VC++ 2.0 và Resource Editor để sắp xếp các mục lựa chọn thành dạng xếp dọc gần với thứ tự cần thiết
  • UI này không phải là một thiết kế hoàn chỉnh, mà là triển khai tạm thời để dùng cho đến khi có UI tốt hơn

Ảnh hưởng dài hạn mà một triển khai tạm thời để lại

  • Khoảng 30 năm sau, hộp thoại đó vẫn còn tồn tại với đúng hình dạng được tạo ra vào sáng thứ Năm ấy
  • Việc kích thước định dạng của phân vùng FAT bị giới hạn ở 32GB cũng bắt nguồn từ một quyết định mang tính tùy ý trong cùng thời điểm
    • Khi đó cần phải quyết định sẽ cho phép cluster slack ở mức nào
    • Quyết định đó đã dẫn tới giới hạn kích thước định dạng phân vùng FAT
  • Một check-in “temporary” có thể, trái với ý định ban đầu, trở thành hành vi và giới hạn dài hạn của sản phẩm

1 bình luận

 
GN⁺ 2024-03-26
Các ý kiến trên Hacker News
  • Có thể xác nhận trong mã nguồn Windows NT4 rằng vào ngày 13/2/1995, ông ấy lần đầu viết một phần mã của hộp thoại định dạng, nên mốc cuối năm 1994 đến đầu năm 1995 nhìn chung là đúng
    Tuy nhiên, NT4 không hỗ trợ FAT32, còn các volume FAT cũng cho phép cluster 64K nên có thể lên tới 4GB, lớn hơn nhiều hệ thống thời đó. Phần format FAT của NT4 không có kiểm tra hay tùy chọn cluster; kích thước cluster được quyết định theo kích thước volume
    Hơn nữa, giới hạn 32GB của volume FAT32 nằm ở hàm format nội bộ chứ không phải ở hộp thoại. Trên Windows 2000, có thể thử format ổ đĩa lớn hơn 32GB thành FAT32, nhưng sẽ thất bại ở cuối quá trình format vì giới hạn được hard-code. Công cụ dòng lệnh format.com dùng cùng hàm cũng như vậy
    Không rõ tại sao ông ấy luôn phóng đại mức độ tham gia của mình. Mã Zip Folders mà Microsoft mua giấy phép từ Info-Zip cũng khiến có người tin rằng ông ấy đã viết, chỉ vì ông ấy có can thiệp trong quá trình tích hợp. Giờ có vẻ ông ấy muốn trở thành influencer, và phóng đại là việc những người như vậy hay làm

    • Ký ức thì khó mà tin hoàn toàn, nhưng câu chuyện rằng hộp thoại format áp đặt giới hạn FAT32 có lẽ là một trong những lỗi lớn nhất trong các chuyện cũ của Dave
      Không rõ FAT32 đã được phát triển vào cuối năm 1994 chưa, nhưng nó không có trong Windows NT 4 hay bản Windows 95 đầu tiên. Ngay cả khi được đưa vào Windows 95 OSR2, lệnh format vẫn chấp nhận tốt các phân vùng tới 128GiB, dù Windows 95 không phải NT
      Nguyên nhân thực tế có vẻ là hàm format nội bộ của Windows 2000. GUI, lệnh format và diskpart đều không thể tạo file system vượt quá 32GiB. Không rõ vì sao lại vậy, trong khi lúc đó đã có ổ đĩa lớn hơn mức này. Nếu dùng thứ như mkdosfs của Linux, driver VFAT của Windows 2000+ vẫn chấp nhận volume 2TiB, và thậm chí có thể cài Windows 2000 lên những volume lớn như thế
    • Thời Windows Vista, có một thời gian tôi phụ trách Zip Folders, và tôi chắc chắn mã đó không được viết nội bộ tại Microsoft mà là mã mua về
      Thành thật mà nói, trông nó như đã chạy qua công cụ obfuscation, và tôi từng nghĩ tác giả gốc cố tình làm vậy để Microsoft khó sửa đổi hay cải tiến. Đến giờ tôi vẫn còn mơ ác mộng về đoạn mã đó
    • "vzip150.zip" hiển thị plummer@visualzip.com không có nội dung liên quan đến info-zip: https://www.sac.sk/files.php?d=7&l=V
      Vậy chiếc Corvette đến từ đâu: https://www.tomshardware.com/software/windows/dev-shows-off-...
    • Mã nguồn tham khảo: https://github.com/lianthony/NT4.0/blob/b4a8d373d8a082db6758...
    • Có vẻ ông ấy nhớ nhầm phần format. UI đúng là có mã liên quan đến kích thước cluster tùy ý cho NTFS: https://github.com/lianthony/NT4.0/blob/b4a8d373d8a082db6758...
      Đoạn mã đó dường như vẫn còn trong một số phiên bản XP: https://github.com/tongzx/nt5src/blob/daad8a087a4e75422ec96b...
      Về hỗ trợ ZIP, khó tìm được mã nguồn của chính Zip Folders. Thay vào đó có một đoạn mã trích của công ty khác, Schlumberger Technology Corp.: https://github.com/tongzx/nt5src/blob/daad8a087a4e75422ec96b... Nếu tin phần chú thích thì đây là mã được thêm vào năm 1996
  • Dave Plummer là một người thật sự rất thú vị. Tôi thích cách ông ấy kể rất bình thản về chuyện tạo ra một trong những kernel được dùng rộng rãi nhất trong lịch sử
    Ông ấy đã tạo ra nhiều phần mềm như Task Manager cho Windows, bản port Space Cadet Pinball sang Windows NT, hỗ trợ file Zip cho Windows, HyperCache[4] cho Amiga, và được cho là có 6 bằng sáng chế trong lĩnh vực kỹ nghệ phần mềm
    https://en.wikipedia.org/wiki/Dave_Plummer

  • Cho thấy rất rõ một cái bẫy phổ biến. Nếu “giải quyết” vấn đề bằng một giải pháp tạm thời, thì mức ưu tiên của một giải pháp tốt hơn sẽ thấp hơn tất cả những vấn đề vẫn chưa được giải quyết
    Những vấn đề chưa giải quyết như vậy lúc nào cũng đủ nhiều, nên rốt cuộc chẳng ai quay lại xem xét giải pháp tạm thời nữa

    • Tôi đã thấy chuyện này trong sự nghiệp. Bài học là đừng “phát hành” trước khi bạn thấy đủ tự hào về nó. Tất nhiên đôi khi nói thì dễ hơn làm
    • “Không có gì lâu bền hơn một giải pháp tạm thời đang chạy được”
      Không biết nghe ở đâu, nhưng tôi hay dùng câu này khi thuyết phục công ty đừng tung ra giải pháp tạm thời mà hãy làm cho đúng ngay từ đầu
    • Tôi không đồng ý. Nếu đã phát triển một tính năng đủ để trụ 30 năm mà không cần sửa, thì tôi xem đó là một chiến thắng trọn vẹn của kỹ thuật hiệu quả
  • Từ mạch “đã viết ra giấy tất cả các tùy chọn có thể chọn liên quan đến định dạng đĩa như hệ thống tệp, nhãn, kích thước cluster, nén, mã hóa, v.v.” mà kết luận “đó là UI tạm thời để dùng cho đến khi có UI thanh lịch” thì có vẻ không khớp lắm
    Nếu đã hiển thị mọi tùy chọn cần thiết trong một giao diện đơn giản, thì giao diện “thanh lịch” hơn sẽ cần thêm gì?

  • Hộp thoại đó không chỉ vẫn còn, mà còn ảnh hưởng đến các công cụ như HP USB Disk Storage Format Tool. Đây là công cụ tôi luôn dùng để vượt qua giới hạn FAT32 32GB: https://www.majorgeeks.com/files/details/hp_usb_disk_storage...

    • Một công cụ hữu ích. Tôi đã dùng nó để tạo ổ flash FAT32 128GB nhằm chia sẻ bộ sưu tập game giữa các PC retro
  • Hiện tại nó đã hoàn hảo rồi, nên tôi mong họ đừng đổi sang “UI thanh lịch”

    • Thực ra nó đã được “thay thế” trong Settings -> Storage -> Disks & volumes. Khi chạy từ File Explorer vẫn hiện hộp thoại cũ là vì File Explorer về cơ bản vẫn là một ứng dụng kiểu legacy
      Với vai trò thay thế hộp thoại format, UI mới tôi thấy khá ổn. Chỉ có phần thay thế chức năng Disk Manager thì hơi thiếu vì không có biểu diễn đồ họa bố cục đĩa
      Giao diện mặc định: https://i.imgur.com/56yZ8gZ.png
      Phần giao diện nâng cao: https://i.imgur.com/fKb3R8c.png
      Format phân vùng hiện có: https://i.imgur.com/DmbX3FQ.png
      Không hoàn hảo, nhưng nhìn chung vẫn giữ cùng bố cục, đồng thời khớp với theme của OS, và còn thêm vài tùy chọn trước đây trong Disk Manager cũ là wizard nhiều trang. Cũng có vài cải tiến nhỏ như “format” trực tiếp hơn “start”, và “cancel” phù hợp hơn “close”. Dĩ nhiên chắc vẫn có người xem việc nó rộng hơn 33% như tận thế
      Tuy vậy, việc vẫn bắt nhập kích thước phân vùng mới theo MB thì hơi lấn cấn. Dù có thêm dấu phân tách số theo locale, nhưng số sẽ ngày càng lớn hơn, nên bắt người dùng bận tâm đến hàng triệu MB thì hơi kỳ
    • Format cần được cập nhật. Đang chuẩn bị bản cập nhật…
    • Tôi thật sự tiếc khi họ đổi UI chống phân mảnh đĩa. Tôi thích xem các khối được di chuyển qua lại. Chỉ vì thứ đó cũng đáng để giữ lại một ổ cứng kim loại quay
  • Tôi nghĩ không hẳn có giải pháp tạm thời và giải pháp vĩnh viễn riêng biệt, mà là có giải pháp tệ và giải pháp tốt. Giải pháp tốt, dù được triển khai nhanh, vẫn đủ tốt nên tiếp tục tồn tại
    Giải pháp tệ cũng có thể tồn tại nếu trong một thời gian nó là lựa chọn duy nhất hoặc thực tế nhất, và mọi thứ về sau phải tương thích ngược với nó

  • Tôi từng làm ở một trong những ngân hàng lớn và lâu đời nhất châu Âu, và môi trường vận hành thường đầy những giải pháp tạm thời kiểu này
    Thường đó là những thứ được làm tạm để nhanh chóng sửa một vấn đề lớn do bản sửa tạm trước đó gây ra

  • Cần cẩn thận với những giải pháp tạm thời “đủ tốt”. Thành phần logging cốt lõi của công ty do một thực tập sinh viết, và trong tên có POC
    Định dạng dữ liệu cũng kiểu như thực tập sinh sẽ nghĩ ra, nhưng đến khi mọi người thật sự nhận ra thì đã ghi quá nhiều dữ liệu, khiến ngân sách và công sức để sửa còn lớn hơn chính vấn đề

    • Nếu trong một thời gian dài không ai nhận ra, thì thực ra đó có thể là một giải pháp đủ tốt, và có lẽ không đáng tranh cãi những chuyện nhỏ nhặt
      Tôi thường tự trấn an rằng không phải lúc nào cũng có thể làm mọi thứ hoàn hảo; cần ưu tiên những gì quan trọng nhất và bỏ qua phần nào những thứ ít quan trọng hơn
  • Như câu ngạn ngữ cũ, không có gì vĩnh viễn bằng giải pháp tạm thời

    • Tôi tưởng câu đó nói về thuế