TGViewer
Ivan Begtin Ivan Begtin @begtin · 9.09K subscribers
Post #7818 496
Я почти год назад писал про инструмент с открытым кодом filerepack для пересжатия файлов. Это такой мой очень давний пэт проект, порожденный изначально необходимостью регулярно пересжимать какие-то файлы потому что базовые инструменты слишком часто делали их чрезмерно большими их можно было пересжать в 1.5-2 раза без потери функционала, то есть без необходимости распаковки перед тем как использовать. Живой пример - это все файлы в современных форматах MS Office OOXML - .docx, .xlsx, .pptx и все из этого семейства. Во первых все версии MS Office сжимают ZIP контейнер, которыми эти форматы являются, довольно плохо и просто распаковать файл и запаковать с максимальным сжатием уже давало результат. Во вторых большая часть изображений в этих файлах поддаются эффективному сжатию без потерь и могут уменьшиться в диапазоне 10-75% и итоговый файл уменьшится весьма существенно.

Как бы то ни было этот инструмент я делал давно и в нем было одно существенное ограничение - это то что старые форматы файлов MS Office (.doc, .xls, .ppt и др.) такому пересжатию не поддавались. Причина в том что они и ряд других форматов файлов придуманных Microsoft имели в своей основе Compound File Binary Format к которому есть очень ограниченное число открытых реализаций и большая их часть только на просмотр двоичных потоков внутри и не более того.

При этом у меня в архивах файлов в этих старых форматах MS Office накопилось немало, всегда хотелось их пересжать. И тут я подумал, а почему бы не попробовать и скормил подробное ТЗ в Claude Code с помощью которого в итоге собрал версию которая умеет пересжимать теперь еще и эти файлы. Это было непросто, для пересжатия используется анализатор OLE файлов в виде Python кода и пересборщих в виде кода на Rust поскольку только в Rust'е есть реализация кроссплатформенной библиотеки записи Compound файлов.

В итоге filerepack начиная с последней версии 0.4.0 умеет пересжимать основные старые форматы MS Office .ppt, .xls, .doc и это самое большое и самое сложное изменение в инструменте с момента его создания. Остальные правки по мелочи - поддержка большего числа форматов использующих ZIP как контейнер, поддержка большего числа файлов с данными и тд. Подробнее есть в документации включая примеры, руководства и так далее.

Отвечая на важный вопрос "А зачем?" который очень важно задавать и другим и, обязательно, себе. Казалось бы цена хранения файлов снижается и нет нужды лишний раз заморачиваться еще и сжатием контента. Это и так и не так.

Во первых многие файлы хранятся в облачных файловых хранилищах которые могут менять условия и стоимость хранения и с легкостью забиваются однотипными/похожими файлами и в этом случае лучше положить туда пересжатую версию этого файла и сэкономить на лишних расходах.

Во вторых многие личные архивы хранятся в криптоконтейнерах. Например, я лично ничего из личной чувствительной информации не храню просто на дисках и складываю файлы в криптоконтейнеры ограниченного размера. У этого есть ряд плюсов для параноиков, но есть и минус, там нет динамического увеличения размера по мере наполнения файлами. Место надо предвыделить и если еще и этот криптоконтейнер где содержимое часто меняется и его надо бэкапить то чем меньше он тем лучше. Тут то вопрос про сжатие файлов становится актуальным, но так чтобы без потери функциональности.

Есть и множество других кейсов использования, а это мои личные.

Поддержка файлов в старых форматах MS Office всё еще экспериментальна, если надумаете ее попробовать и столкнетесь с ошибками, пишите мне, лучше всего в issues на Github. Там же можно писать если какие-то популярные форматы есть и еще не поддерживаются или их рекомпрессия работает с ошибками.

Вообще же не могу вспомнить периода жизни когда я что-то не архивировал. Начиная с первых жестких дисков на 10МБ, дискетами на 360КБ. Все моё детство состояло из попыток что-то куда-то сжать чтобы не удалять потому что места всегда нехватало. Насколько проще стало все сейчас, но всегда найдется чем занять любые объемы хранения, так что сжимать файлы всегда актуально;)

#opensource #compression #data
Telegram Ivan Begtin Я на выходных столкнулся с очередной ситуацией когда пришлось чистить свободное место на дисках, но при этом не хотелось архивировать некоторые файлы для холодного хранения, они нужны были под рукой. И я вспомнил про утилиту filesrepack которую я когда-то…
  • 👍 5
  • ❤ 3
  • ⚡ 3
  • ✍ 3
  • 😁 1
  • 🤔 1
More from @begtin
  1. Oct 9, 2026Мне таки удалось достучаться до команды проекта экосистемы CKAN'а и они взяли из реестра к…
  2. Oct 9, 2026В рубрике как это устроено у них SEGITTUR официальный портал статистики туризма в Испании.…
  3. Oct 8, 2026Разные мысли вслух и не только: 1. Насколько же стали распространены геоблокировки по сайт…
  4. Oct 6, 2026Разные мысли вслух и не только: 1. Модель MiniMax M3 и их среда разработки почти дотягивае…
  5. Oct 6, 2026Буквально вчера я вернулся из Астаны после участия в конференции AI&Digital Bridge. Конфер…
  6. Oct 6, 2026Полезные ссылки про данные, технологии и не только: - Diving Through Data at OpenAI: How a…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →