Думаю, всем читателям хабра хорошо известны алгоритмы энтропийного сжатия с использованием префиксных кодов (алгоритмы Шеннона-Фано, Хаффмана и др.). Особенностью этих алгоритмов является тот факт, что длина кода определённого символа зависит от частоты этого символа в закодированном сообщении. Соответственно при декодировании сообщения необходимо иметь таблицу частот. Данная статья посвящена рассмотрению малоизученной, но важной задачи – передаче частот исходного алфавита.Читать полностью »
Рубрика «сжатие» - 3
Об особенностях реализации префиксного энтропийного кодирования для больших алфавитов
2014-03-08 в 15:53, admin, рубрики: Алгоритмы, сжатие, метки: сжатиеПриступая к работе с Objective-Zip
2013-10-07 в 12:07, admin, рубрики: iOS, objective-c, zip, архивация, Программирование, разработка под iOS, сжатие, метки: iOS, objective-c, zip, архивация, Программирование, сжатиеЗдравствуйте, уважаемые читатели !
Наверняка многие из Вас уже имели дело со сжатием данных, программируя под iOS.
Совсем недавно передо мной возникла задача подобного рода. В приложении, над которым я работал, нужно было программно, без потерь данных, сжимать большого объема файлы. Проблема состояла в том, что на устройствах, использующих приложение, не всегда был достаточный объем оперативной памяти. Сжимая огромный файл целиком, приложение просто падало из-за нехватки памяти.
Необходимо было сжимать файл по частям.
Перебрав много разных вариантов, я остановился на очень удобном для подобных задач решении. Этим решением является использование библиотеки Objective-Zip.
Об этой маленькой, но очень удобной и функциональной библиотеке, я и хочу Вам рассказать.
Энтропия и WinRAR — развернутый ответ
2013-05-28 в 15:57, admin, рубрики: Алгоритмы, математика, сжатие, хаос, энтропия, метки: сжатие, хаос, энтропияНесколько дней назад на Хабре была опубликована статья Энтропия и WinRAR. В ней замечены некоторые неточности, на которые хочется дать развернутый ответ.
Начну с простого — картинка «степень сжатия различных данных». Вот она:

Удивительно, что случайная последовательность чисел сжимается где-то до 60% от исходного объема. Я точно помню, в молодости пытался зиповать сжатое видео и картинки в jpg. Архивы получались практически такого же объема, как оригинал, а иногда и на пару процентов больше! К сожалению, автор статьи не очень подробно описал, как именно он получил свой результат. Степень сжатия его последовательности случайных чисел подозрительно похожа на отношение 10/16 = 0.625.
Я попробовал воспроизвести эксперимент своими силами. Я генерировал файл со случайными символами, а потом сжимал его тем самым winRar’ом, упомянутым в заголовке. Результат таков:
Читать полностью »
Как ускорить загрузку своего сайта при помощи Google. Навсегда и всего за один вечер
2012-10-11 в 5:38, admin, рубрики: Google, оптимизация сайта, Серверная оптимизация, сжатие, метки: Google, оптимизация сайта, сжатие
Подробные инструкции, которые даются на code.google позволят вам:
- Сжать все многочисленные скрипты JS и стили CSS
- Соединить все полученные файлы в один JS и в один CSS
- Сжать полученные два файла в формат GZIP, который понимают почти все браузеры и умеют распаковывать на лету
- Прописать такой .htaccess, который заставляет браузеры кэшировать данные два файла
Всё это будет происходить при запуске единственного скрипта compress.php
Для примера, результат сжатия скриптов моего сайта:
- JS: сжато в gz 26698 b, сжато без gz 95796 b, было 120147 b
- CSS: сжато в gz 46049 b, сжато без gz 160001 b, было 281870 b
Получается, что экономия трафика составляет 329270 b. Но основной выигрыш для скорости загрузки в том, что теперь загружается не 14 файлов, а всего 2. (а это намного быстрее, так как браузер не тратит время на запросы)
В итоге, получится:
<link rel="stylesheet" type="text/css" href="min/styles_1349888114.cssgz" />
<script src="min/all_1349888114.jsgz" /></script>
Как ускорить загрузку своего сайта при помощи compress.php, который объединит и сожмёт JS + CSS в Gzip
2012-10-11 в 5:38, admin, рубрики: оптимизация сайта, Серверная оптимизация, сжатие, метки: оптимизация сайта, сжатие
Подробные инструкции, которые даются на code.google позволят вам:
- Сжать все многочисленные скрипты JS и стили CSS
- Соединить все полученные файлы в один JS и в один CSS
- Сжать полученные два файла в формат GZIP, который понимают почти все браузеры и умеют распаковывать на лету
- Прописать такой .htaccess, который заставляет браузеры кэшировать данные два файла
Всё это будет происходить при запуске единственного скрипта compress.php
Для примера, результат сжатия скриптов моего сайта:
- JS: сжато в gz 26 698 B, сжато без gz 95 796 B, было 120 147 B
- CSS: сжато в gz 46 049 B, сжато без gz 160 001 B, было 281 870 B
Получается, что экономия трафика составляет 329 270 B. Но основной выигрыш для скорости загрузки в том, что теперь загружается не 14 файлов, а всего 2. (а это намного быстрее, так как браузер не тратит время на запросы)
В итоге, получится:
<link rel="stylesheet" type="text/css" href="min/styles_1349888114.cssgz" />
<script src="min/all_1349888114.jsgz" /></script>
Простой пример кодирования текстовой строки по Хаффману
2012-06-22 в 12:38, admin, рубрики: алгоритм хаффмана, Алгоритмы, кодирование, сжатие, сжатие без потерь, Хаффман Вы, наверное, слышали о Дэвиде Хаффмане и его популярном алгоритме сжатия. Если нет, то предлагаю вам самостоятельно поискать в интернете — в этой статье я не буду донимать вас уроками истории или математики. Я попробую показать вам на практике, как применить этот алгоритм к текстовой строке. Наше приложение просто сгенерирует значения кода для символов из введенной строки и наборот — воссоздаст оригинальную строку из представленного кода.
Читать полностью »
Сжате пакетов и защита С# клиента с открытым исходным кодом
2012-03-26 в 18:45, admin, рубрики: .net, Алгоритмы, защита, обратка пакетов, сжатие, метки: .net, c++, защита, обратка пакетов, сжатиеПривет, сообщество.
Мой путь в программировании: ASP VB script >> VB.Net >> C#, с С и С++ я знаком минимально.
С давних пор пишу онлайн RPG (около 9 лет) и сейчас дошел до стадии публичного онлайн тестирования.
Клиентская часть написана на С# и доступна для изучения(улучшения) всеми желающими.
У меня нет никакой паранойи (надеюсь ;-)) относительно хакеров и любителей поломать чужие сервера — я отлично понимаю, что никому нет дела до моих исходников, однако мне хочется, чтобы на сервер отсылались пакеты, обработанные только известной, проверенной и утверждённой версией клиента.
Поэтому я хочу реализовать защиту в виде подключаемой приватной нативной библиотеки, которая будет отсылать на сервер хеш код используемого клиента, плюс она-же будет шифровать/дешифровать/сжимать/разжимать все пакеты. То есть если в клиенте реализуют отсылку фиктивного хешь кода, без использования нативной DLL, то злоумышленнику также придется реализовать свою версию обработки пакетов.
Читать полностью »
Сжатие пакетов и защита С# клиента с открытым исходным кодом
2012-03-26 в 18:45, admin, рубрики: .net, Алгоритмы, защита, обратка пакетов, сжатие, метки: .net, c++, защита, обратка пакетов, сжатиеПривет, сообщество.
Мой путь в программировании: ASP VB script >> VB.Net >> C#, с С и С++ я знаком минимально.
С давних пор пишу онлайн RPG (около 9 лет) и сейчас дошел до стадии публичного онлайн тестирования.
Клиентская часть написана на С# и доступна для изучения(улучшения) всеми желающими.
У меня нет никакой паранойи (надеюсь ;-)) относительно хакеров и любителей поломать чужие сервера — я отлично понимаю, что никому нет дела до моих исходников, однако мне хочется, чтобы на сервер отсылались пакеты, обработанные только известной, проверенной и утверждённой версией клиента.
Поэтому я хочу реализовать защиту в виде подключаемой приватной нативной библиотеки, которая будет отсылать на сервер хеш код используемого клиента, плюс она-же будет шифровать/дешифровать/сжимать/разжимать все пакеты. То есть если в клиенте реализуют отсылку фиктивного хешь кода, без использования нативной DLL, то злоумышленнику также придется реализовать свою версию обработки пакетов.
Читать полностью »
Сжатие данных / [Из песочницы] Сравнение программ сжатия в применении к передаче больших объёмов данных
2012-02-28 в 9:40, admin, рубрики: bzip2, gzip, передача данных, сжатие, метки: bzip2, gzip, передача данных, сжатие Всё началось с простой задачи: скачать по 100-мегабитной сети большой объём данных с помощью rsync. Возник вопрос, можно ли ускорить этот процесс. Утилита top показала, что на сервере-источнике шифрование занимает не более 10 процентов процессора, поэтому было решено что можно попробовать сжатие данных. Тогда мне было неясно, будет ли хватать производительности процессора для упаковки данных с необходимой скоростью, поэтому была выставлена самая маленькая степень сжатия, а именно использовался флаг --compress-level=1 для rsync. Оказалось, что загрузка процессора не превысила 65%, то есть производительности процессора хватило, при этомЧитать полностью »
Веб-разработка / Про XML, base64, Android, HTTPS и сжатие
2012-02-17 в 14:24, admin, рубрики: android, base64, HTTPS, XML, сжатие, метки: android, base64, HTTPS, XML, сжатие
Прогресс неумолимо движется вперед! Развитие Web, повышение сложности приложений, использование таких стандартов, как HTML, CSS, XML, JSON и т.д. требует все больше и больше ресурсов. С одной стороны это оправдано, т.к. приоритетом здесь является функциональность. С другой стороны, повышение требований к вычислительным и сетевым ресурсам не может остаться без контроля, иначе они перекроют доступные ресурсы производителей оборудования.
Одним из ресурсов, за которым требуется следить, является размер данных: документов, файлов, баз данных. Современная страничка на www.yandex.ru требует загрузки данных общим размером почти 200 килобайт и всего 20 летЧитать полностью »
