Первый прямой отжим
С архиваторами у меня давние и тёплые отношения. Самый мощный в мире архиватор написал я на втором курсе института в качестве курсовика. Файл любого размера он сжимал до двух байт: 0x00 и 0x01. На растерянный вопрос препода: «И что же теперь с ним делать?» — я честно ответил: «Понятия не имею. Было задание написать архиватор, а задания писать разархиватор не было».
Второй по мощности в мире архиватор написал тоже я, уже в качестве диплома. В руководители мне достался замзавкафедры вычислительной математики, жутко нудный и мелочный тип. Я должен был написать архиватор по изобретенному моим руководителем алгоритму — что-то там с многократным обходом деревьев Бейкера. По этому поводу мне полагалось проштудировать пару десятков книженций, от одних только названий которых скулы сводило на неделю. Месяца четыре мне удавалось кормить руководителя завтраками, но в конце концов он недвусмысленно намекнул, что без рабочей программы я на предзащиту не попаду.
Делать нечего — через неделю архиватор был предъявлен. Он сжимал любой файл раз в пять лучше RAR на максимальной компрессии и делал это раз в десять быстрее. Выгодно отличало его от моего первого детища то, что этот умел разархивировать файлы. Руководитель сиял, как стоваттная лампочка, и на предъявленный исходник отреагировал мимолётным взглядом и снисходительным кивком. А зря, потому что среди 30 КБ bitwise-операторов и булевой логики сиротливо ютились несколько вызовов к внешним DLL. Один из них со скромным названием RightAlignDWORD получал хэндл открытого файла, копировал его на последние незанятые кластеры жесткого диска и возвращал список кластеров — FAT, разумеется, оставался нетронутым. Этот список кластеров и был единственной полезной информацией в получившемся «архиве».
Защита прошла на ура, я забрал диплом и выписался из общежития. Пути наши с моим (теперь уже бывшим) руководителем разошлись. По слухам где-то через год он меня упорно искал через знакомых. Зачем бы, интересно?