Đồ dỏm thời đại số

Đang tìm nguyên nhân vì sao cái Vista SP1 Stand-Alone không update được trên máy mình, bỗng dưng lại thấy trò bịp bợm cũ mang tên mới “Phần mềm nén khủng khiếp: Bộ cài đặt Vista chỉ có dung lượng 2MB!”.(*)

Sự thật về điều này như thế nào?

Một chút IT

Trước hết, xin giới thiệu sơ lược về thuật toán nén dữ liệu trong máy tính. Thực chất của quá trình nén dữ liệu (Data compression) là biểu diễn các thông tin trùng lặp dưới dạng rút gọn. Điều này chỉ có ý nghĩa trong việc lưu trữ, không thể thao tác trên dữ liệu đã nén.

Ví dụ: tập tin văn bản Ms-Word Hoso.doc có dung lượng 500KB, sau khi nén thành Hoso.zip chỉ còn 300KB, tiết kiệm được 200KB. Nhưng bù lại, người ta không thể xem nội dung văn bản của tập tin Hoso.zip, trừ khi thực hiện việc giải nén (Decompress) cho trở về định dạng ban đầu.

Tuy nhiên, có một số phần mềm đặc thù chuyên nén các file có dạng *.exe, *.dll… Khi đó, dữ liệu đã nén vẫn có thể sử dụng được mà không cần giải nén.

Trở về thuật toán nén dữ liệu trong máy tính. Để đơn giản, ta xét một văn bản chỉ gồm các ký tự, không chứa các ký số: AAAAMMCCCCCHHHHHJJJJXDDD.

Bằng cách đếm các ký tự lặp lại, ta có thể diễn đạt như sau: Văn bản này gồm 4 chữ A, theo sau bởi 2 chữ M, 5 chữ C, 5 chữ H, 4 chữ J, 1 chữ X và cuối cùng là 3 chữ D.

Biểu diễn: 4AMM5C5H4JX3D

Chú ý, với các chuỗi gồm 2 ký tự trùng nhau thì không cần rút gọn, vì đơn giản là nó không tiết kiệm chỗ: MM hay 2M cũng chiếm chỗ như nhau mà thôi!

Như vậy, chuỗi đã nén 4AMM5C5H4JX3D có chiều dài 13 ký tự so với chuỗi gốc AAAAMMCCCCCHHHHHJJJJXDDD có chiều dài 24 ký tự.

Ta gọi tỷ số 13/24 = 54, 17% là tỷ số nén (ratio). Với cùng một dữ liệu, kỹ thuật nén càng mạnh khi ratio càng nhỏ.

Đây là phương pháp đơn giản nhất, thường gọi là MÃ HÓA CHIỀU DÀI PHÂN ĐOẠN (Run-Length Encoding).

Ngoài ra, còn nhiều phương pháp khác như:

- MÃ HÓA CHIỀU DÀI BIẾN ĐỘNG (Variable-Length Encoding)

- Phát sinh cây theo mã HUFFMAN



Phạm vi và mục tiêu của bài viết này không đi sâu khai thác các phương pháp và kỹ thuật nén. Nó chỉ muốn chứng tỏ một điều: Tất cả các phương pháp nén đều có giới hạn và quan trọng nhất là tùy thuộc vào dữ liệu được nén.

Vạch trần gian trá

Điều ngụy biện cho khả năng nén “khủng khiếp” của phần mềm KGB Archieve là: Hy sinh thời gian để được không gian! Nói cách khác là tôi cho máy chạy suốt hàng chục giờ đồng hồ để tiết kiệm vài trăm MB dung lượng lưu trữ. Bỏ qua tính kinh tế ở đây vì 1 đĩa CD blank 700MB giá chưa đến 5.000 VNĐ! Giả sử trong một ngữ cảnh nào đó, nó cũng rất có ý nghĩa – chẳng hạn khi người ta cần download mà không có đường truyền tốc độ cao. Tuy nhiên, điều này thực sự có giá trị không?

1. Về mặt lý thuyết:

Câu thần chú “Được cái này thì mất cái kia. Nén mạnh nên khi giải nén cần máy có cấu hình cao, RAM nhiều, tốn nhiều thời gian…” mới nghe có vẻ rất hợp logic.

OK, coi như tôi sẵn lòng cho máy chạy thâu đêm, sẵn lòng nâng cấp bộ nhớ 2GB với chip vi xử lý 2 nhân. Nhưng các bạn quên mất một điều là chúng ta nén cái gì vậy? Nên nhớ, trong các đĩa nguồn cài đặt có rất ít các file có định dạng văn bản (Text). Phần lớn là các file đã nén – nếu là phần mềm của chú Bill đóng gói thì chuyên xài định dạng .CAB (Cabinet – một tiện ích nén không mạnh như WinRAR, 7-Zip… nhưng đủ để tiết kiệm dung lượng đĩa khá lớn). Đi nén lại một kho dữ liệu đã được nén mà từ 700MB xuống còn 2MB thì quả là chuyện đánh đố đến khôi hài!

2. Thực tế ra sao?

Trăm nghe không bằng một thấy và lý thuyết chỉ là màu xám. Tôi quyết định tận mắt xem bên trong trò bịp bợm này là cái gì. Xem phần header của file nén thì thấy là định dạng zip, thực tế xả nén rất nhanh (chưa đến 20’ trên máy P4 2.8MHz, 1.2G RAM).

Kết quả chính là một file .ISO có kích thước 769.338.544 so với 2.228.608 đã nén (Ratio = 0,29% !).

Ngạc nhiên chưa! Xem nội dung bên trong file LongHorn DVD.iso này thì cấu trúc các file và folder giống như trên các đĩa cài đặt:
Nhưng, khi xem nội dung của từng file thì mới rõ toàn bộ trò bịp bợm nằm ở đây. Tất cả các file đều có nội dung giống nhau (tuy rằng kích thước khác nhau theo đúng như kích thước thật của chúng trên đĩa cài đặt). Đây là nội dung của file setup.exe và cũng chính là nội dung của toàn bộ 85 file khác:
Đến đây thì ai cũng rõ trắng đen thế nào rồi. Ai vẫn cố tình không chịu chấp nhận thì cứ việc nhấp đúp lên file setup.exe nhé! Tôi không rõ Windows sẽ báo lỗi như thế nào, bởi thay vì làm việc đó - tôi xóa hẳn cho đỡ tốn mấy trăm MB chỗ trống trên đĩa.

Khi tìm hiểu và hỏi chi tiết xem đã có ai thật sự cài được các phần mềm Ms Office, Windows Vista… từ các file nén kiểu này chưa thì tôi chưa tìm được ai cả, hầu như ai cũng lảng tránh như thể không muốn nhận là mình đã bị lừa. Tôi thì cố đóng vai người bị lừa để vạch trần cái trò này. Mong rằng trên các forum sẽ không còn cảnh người người hiếu kỳ download về hì hục giải nén xong lại lên post comment đại loại như: - Ủa, sao tui cài không được? - Bro cho link khác đi hén…

Tôi thì tôi sẽ post thế này: - Cho em xin, dẹp cái trò này cho pà con đỡ mất thì giờ!

---------------------------
(*) Rất nhiều forum có cái này, chỉ đơn cử vài cái ngẫu nhiên thôi nhé:
http://forum.vndownload.org/windows-vista-ch-c-2mb-t4355.html
http://forum.gamevn.com/showthread.php?t=206440
http://www.3dvn.com/forums/showthread.php?t=5894
http://www.softvnn.com/forums/showthread.php?s=01d23d1d114829ccbfcb870bbf89446d&t=1106

◄◄ Home

1 comments:

goby said...

Xin chào,

Nhân tiện ghé qua blog của bạn nên nhắn đôi lời.

Giới hạn của trò chơi gói gọn trong Information Theory, được đặt nền tảng bởi Claude Shannon. Nén được gọn đến đâu quyết định bởi tính thống kê của nguồn tin ấy, độ dài trung bình của từ mã không thể nhỏ hơn được Entropy của nguồn tin. :-)

Cheers

Post a Comment

Lời nói không mất tiền mua.
Làm ơn comment theo tinh thần tôn trọng sự thật và tự trọng bản thân!