Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Регистрация Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Блоги > e4xu

Всякие разные штуки сомнительной полезности сделанные в свободное от работы время.
Рейтинг: 5.00. Голосов: 6.

Что такое tarball и чем его пакуют

Запись от wvxvw размещена 11.04.2012 в 02:21
Обновил(-а) wvxvw 11.04.2012 в 21:35

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

Началось все с того, что в этом семестре я решил записаться на курс программирования на 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

Комментарии

Старый 11.04.2012 11:30 red_penguin вне форума
red_penguin
 
Аватар для red_penguin
и казалось бы, причем тут флэш?
Старый 11.04.2012 12:10 in4core вне форума
in4core
 
Аватар для in4core
Мне казалось ты старше, или просто для себя заочно(очно) продолжаешь учиться ?
А вот по поводу java - думаю тоже че бы не поучить
Старый 11.04.2012 13:25 wvxvw вне форума
wvxvw
 
Аватар для wvxvw
Учусь в третий раз, да, заочно, на стационар уже никак времени не хватит, работа...

А Флеш - ну так а архиваторы они как бы универсальная тема. Исходники хранить или пересылать надо всем, не только флешерам, конечно
Старый 11.04.2012 13:54 Hidest вне форума
Hidest
 
Аватар для Hidest
Как всегда интересно и познавательно, приятно читать!
Старый 11.04.2012 19:00 fish_r вне форума
fish_r
 
Аватар для fish_r
Спасибо! Полезная инфа!
Старый 15.04.2012 15:46 MikroAcse вне форума
MikroAcse
 
Аватар для MikroAcse
Для (по)читателей википедии: http://ru.wikipedia.org/wiki/Избыточность_информации
http://ru.wikipedia.org/wiki/Префиксный_код (пример выше)
На русском, а так, спасибо! Полезно.
Старый 05.06.2012 19:47 iteush вне форума
iteush
Интересно. Спасибо!
 

 


Часовой пояс GMT +4, время: 14:11.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2020, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.