Всякие разные штуки сомнительной полезности сделанные в свободное от работы время.
Что такое tarball и чем его пакуют
Эта тема для меня стала откровением, при чем совсем недавно, и при интересных обстоятельствах, о которых я сейчас же вам расскажу.
Началось все с того, что в этом семестре я решил записаться на курс программирования на Java. Мне этот курс необходим для того, чтобы я мог записаться на теорию вычислений и еще несколько других математических курсов косвенно связанных с программированием. Да и вообще, я думал немного средний балл повысить, тема как-никак знакомая.
Неделю назад сдал я первый экзамен. Вернее, думал, что сдал. Экзамены мы отправляем по почте преподавателям, в лучшем случае по электронной... Но преподаватель молодой, с интернетом "на ты". Пару дней после отправки экзамена, получаю письмо от преподавателя, где он настоятельно требует, чтобы файлы были упакованы в ZIP архив. Файлы были упакованы в TAR.GZ (он же известен как TGZ). И тут я понял, что make файл я зря в архив положил...
Я заинтересовался, почему же так часто линуксовые архивы используют TAR.GZ, а виндовские - ZIP. Вернее, не так, заинтересовался я разницей между форматами, т.как никогда не придавал особого значения: как-то всегда думалось, что ну да не может быть большой разницы, ничего же сверхестесственного не придумали. А если бы придумали, то тут же бы другие спионерили.
Подчитав немного литературы обнаружилась интересная вещь. Алгоритм сжатия у обоих - практически один и тот же, реализации разные, но принцип один. А вот алгоритм архивации (сейчас объясню) - разный.
Сжатие - это, в моем антинаучном пересказе, автоматический поиск излишеств. Т.е. представьте себе, что у вас есть группа: {a,b,bc,bd,d} - вы в ней можете найти повторяющийся элемент и переписать группу таким образом, чтобы на запись повторяющегося элемента тратилось минимум места; предполагая, что на каждый знак отводится по 3 бита (всего шесть знаков), можно потратить всего 1 бит (0) на "b", а остальные знаки начинать с бита 1. Т.о на запись "d" (второй по популярности символ) понадобилось бы 10 и т.д.
Для (по)читателей википедии: http://en.wikipedia.org/wiki/Redunda...tion_theory%29
http://en.wikipedia.org/wiki/Prefix_code (пример выше)
Архивация - это совсем другой процесс. Опять же, в моем антинаучном пересказе - это процесс склейки множества файлов в один, для того, чтобы их куда-нибудь всех вместе отправить.
Как вы видите из примера выше, для того, чтобы исходное значение можно было восстановить из архива - нужно где-то хранить таблицу "перевода" сокращенных символов в исходные. Так же не сложно заметить, что чем дольше текст, тем выше вероятность того, что повторений, в среднем, будет больше.
И вот он момент истины! Типичные для Линукса архивы создаются двумя утилитами - архиватором (tar) и упаковщиком (gzip, bzip, bzip2 и т.д.). Т.е. сначала создается один большой файл, а потом пакуется. ZIP - это одновременно и упаковщик и архиватор, но действует он по-другому: сначала сжимает каждый файл, а потом - "склеивает".
Так как у меня выдался повод поэксперементировать - попробовал на нескольких проектах. Группы текстовых файлов в пределах 100-1000 строк каждый с большой вероятностю повторения тех же слов во всех из них (так это же исходний код!) при упаковке в tar.gz получается примерно в два раза меньше, чем в zip, с завидным постоянством!
Подведя итоги:
Получил 0 баллов из 100,
Узнал что-то новое.
Заинтересовавшимся: tar для Windows, у остальных он уже есть

Всего комментариев 7
Комментарии
![]() ![]() |
|
и казалось бы, причем тут флэш?
|
![]() ![]() |
|
Мне казалось ты старше, или просто для себя заочно(очно) продолжаешь учиться ?
А вот по поводу java - думаю тоже че бы не поучить |
![]() ![]() |
|
Как всегда интересно и познавательно, приятно читать!
![]() |
![]() ![]() |
|
Спасибо! Полезная инфа!
|
![]() ![]() |
|
Для (по)читателей википедии: http://ru.wikipedia.org/wiki/Избыточность_информации
http://ru.wikipedia.org/wiki/Префиксный_код (пример выше) На русском, а так, спасибо! Полезно. |
![]() ![]() |
|
Интересно. Спасибо!
|
Последние записи от wvxvw
- Dired - текстовый проводник по файловой системе (29.06.2013)
- Навигация по HTML с WASD (09.06.2012)
- JavaScript, все не так плохо (07.06.2012)
- Что такое tarball и чем его пакуют (11.04.2012)
- Критика Presentation Model (18.02.2012)