Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Объявлен приз ?50000 за лучшее сжатие Википедии

Чулан
Разработчики программ-архиваторов имеют шанс заработать деньги при условии, что их программа поставит новый рекорд сжатия текста.

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

Чтобы претендовать на приз Хаттлера, требуется побить существующий рекорд сжатия стомегабайтного текстового файла (вот архив этого файла) в самораспаковывающийся архив под Linux или Windows. Рекорд равняется 18.324.887 байтам и установлен 24 марта 2006 г. архиватором paq8f. Стомегабайтный файл представляет собой выборку англоязычных текстов из Википедии.

Размер вознаграждения равен ?50000*(1-S/L), где L — размер предыдущего рекорда, а S — новый рекорд. Минимальная сумма вознаграждения составляет ?500, то есть рекорд нужно побить как минимум на один процент.
Рейтинг 0
Просмотры 418
Комментарии 3

Новый формат изображений

Чулан
Майкрософт ведет разработку нового стандарта изображений, который, по словам Билла Кроу, представлявшего его на Windows Hardware Engineering Conference, будет лучше передавать полутона, поддерживать расширенную палитру красок и предлагать лучшее сжатие. На своей презентации Кроу показал изображение со 24-кратным сжатием, которое визуально содержало больше деталей, чем форматы JPEG и JPEG 2000 со сжатием того же уровня. Рабочее название формата Windows Media Photo. Он будет поддерживаться Windows Vista, а также, возможно, Windows XP. Данный формат уже встроен в Vista, но впоследствии будет доработан. Вероятно, такой формат изображений будет широко использоваться в цифровых фотокамерах, где на сегодняшний день обычно используется 6-кратное сжатие фотографий для оптимального сочетания веса и качества фото.
Всего голосов 10: ↑8 и ↓2 +6
Просмотры 536
Комментарии 18

YUICompressor — улучшаем сжатие

JavaScript *
Немного прооптимизировав код своей библиотеки, я вдруг заметил что она стала на порядок хуже сжиматься. Для сжатия использую YUICompressor. Твердая уверенность в том что оптимизация все же должна пойти на благо, а не во вред, я решил разобраться в чем же дело. И вот что оказывается
Читать дальше →
Всего голосов 12: ↑10 и ↓2 +8
Просмотры 2.2K
Комментарии 13

Ускоряем wordpress

WordPress *
Привет.
Думаю, среди читателей хабра найдется немало тех, кто имеет stand-alone blog на движке wordpress.

Так вот, для вас, дорогие мои, у меня есть две новости, как водится, плохая и хорошая.
Плохая состоит в том, что wordpress — довольно-таки тормознутая штука.
Виноваты в этом в основном криворукие производители тем и, особенно, криворукие производители плагинов. Особенно кривой плагин, на мой вкус, wp-ajax-edit-comments, который является образцом быдлокодинга.

Хорошая — в том, что это можно поправить.

Делается это примерно так:
Всего голосов 63: ↑52 и ↓11 +41
Просмотры 9.6K
Комментарии 35

Сжатие Юникод данных

Разработка веб-сайтов *
В одном будущем проекте встала задача передавать и хранить данные в формате VCard, которые содержат кириллические буквы. Так как размер передаваемой информации ограничен, необходимо было уменьшить размер данных.

Было несколько вариантов:
  1. Использовать традиционные кодировки (для кириллицы — CP1251).
  2. Использовать форматы сжатия Юникода. На сегодняшний день это — SCSU и BOCU-1. Детальное описание этих двух форматов привожу ниже.
  3. Использовать универсальные алгоритмы сжатия (gzip).

Красивый, но бесполезный, график результатов:
image

Варианты решения и результаты
Всего голосов 50: ↑48 и ↓2 +46
Просмотры 3.1K
Комментарии 23

Сам себе gzip: сжимаем скрипты на 20% лучше

JavaScript *
Повторяющиеся ключи

Если посмотреть на скрипт, сжатый Closure Compiler'ом, YUI Compressor'ом или еще чем-нибудь, можно увидеть бесконечные вереницы повторяющихся ключей: .prototype, .length, offsetParent и так далее. Попробуем избавиться от них на примере плагина jQuery UI Sortable. Скажу сразу, что gzip нам не переплюнуть, но когда его нет под рукой или нельзя им воспользоваться (например, на конкурсе 10K Apart), эта техника сжатия может оказаться весьма полезной.
Читать дальше →
Всего голосов 60: ↑49 и ↓11 +38
Просмотры 1.4K
Комментарии 51

xz — сила сжатия LZMA уже в твоей консоли

Сжатие данных *
Многие наверное уже знают про утилитку для компрессии/декомпрессии xz. Но еще больше не знают. Поэтому написал этот ознакомительный топик.

xz — формат сжатия данных, наряду с gzip, bzip2 вошедший в gnu-шные приложения.
Использует алгоритм LZMA, тот же что и в 7z, а это значит что можно сильнее сжать многие виды данных, типа текста, бинарные еще не сжатые данные по сравнению с стандартными, упомянутыми выше.
xz используется в новом rpm 4.7.2 для компрессии архивов .cpio в rpm-пакетах (используется с Fedora 12).
В ArchLinux вообще используется .tar.xz в качестве пакета.
В GNU tar появились опции -J --lzma, которые исполняют туже роль что и -z для gzip, -j для bzip2
Читать дальше →
Всего голосов 15: ↑11 и ↓4 +7
Просмотры 10K
Комментарии 11

Про сжатие видео — Введение

Работа с видео *
Из песочницы
Идут дни, требования к качеству видео постоянно растут. При этом ширина каналов и емкость носителей не могла бы поспевать за этим ростом, если бы не совершенствовались алгоритмы сжатия видео.
Далее пойдет речь именно о некоторых базовых понятиях сжатия видео. Некоторые из них несколько устарели или описаны слишком просто, но при этом дают минимальное представление о том, как все работает.

image
Поиск векторов движения для компенсации движения (-: Об этом далее...
Читать дальше →
Всего голосов 251: ↑250 и ↓1 +249
Просмотры 74K
Комментарии 109

Кластеризация палитры изображения и сжатие в формате PNG

Алгоритмы *
Из песочницы

Аннотация


В данной статье читателю предлагается опыт разработки алгоритма сжатия изображения, хранящегося в формате PNG. Сжатие осуществляется за счет квантования палитры с использованием классификатора К–внутригрупповых средних. Приводится исходный код алгоритма, написанный на языке Java. Указываются проблемы и дальнейшие пути улучшения алгоритма.
Читать дальше →
Всего голосов 47: ↑46 и ↓1 +45
Просмотры 12K
Комментарии 38

SSP — Собственный алгоритм сжатия изображений без потерь

Алгоритмы *
Наконец–то появилась возможность опубликовать разработанный мною когда-то алгоритм. Алгоритм был разработан для программы автоматического снятия скриншотов. Для удобства дальнейшего его описания буду называть его – SSP (sciner screenshot packer). SSP можно справедливо сопоставить PNG, поэтому в статье я буду проводить сравнения именно с ним.

Алгоритм имеет два режима компресии:
  1. без потерь – в котором, изображения после декомпресии будет восстановлено с точностью до бита;
  2. с потерями – который не уменьшает качества картинки, просто в нем непосредственно перед сжатием, изображение переводится палитру YcbCr
    Только лишь за счет изменения палитры удается существенно улучшить сжатие. Использую следующие коэффициенты:
    cY = 0.30078125 * R + 0.5859375 * G + 0.11328125 * B
    cCb = -0.171875 * R - 0.33984375 * G + 0.51171875 * B + 128
    cCr = 0.51171875 * R - 0.4296875 * G - 0.08203125 * B + 128
Читать дальше →
Всего голосов 84: ↑80 и ↓4 +76
Просмотры 5.7K
Комментарии 52

Техники сжатия кода

JavaScript *
Перевод
Джед Шмидт, Томас Фухс и Дастин Диаз — достаточно известные в JavaScript-коммьюнити ребята в последнее время нашли себе новую развлекуху — писать полезные штуки размером не больше одного твита, то есть 140 байт. Даже домен зарегали — 140byt.es, куда приглашаются все желающие попробовать свои силы в написании супер-компактных функций.

Естественно, в ход идут все самые изощренные способы и техники уменьшения размера исходника. У них есть вики-страничка с советами, которую я и решил перевести.

Сразу оговорюсь, что читаемость обработанного таким образом кода стремится к нулю, так что использовать эти трюки стоит только в случаях, когда размер действительно превыше всего. Например, при участии в конкурсе JS1k.

Читать дальше →
Всего голосов 146: ↑140 и ↓6 +134
Просмотры 4.3K
Комментарии 121

Реализация фильтра mp3-файлов для архиватора 7-Zip

Софт
Из песочницы
С давних пор единственным моим архиватором является программа 7-Zip. Мне нравится его степень сжатия и скорость работы, поэтому я использую его практически повсеместно: для сжатия дистрибутивов программ, для архивирования коллекций картинок, а так же для хранения музыкальных релизов. Музыку я качаю с сетевых некоммерческих лейблов, где она чаще всего поставляется в виде архива (zip или rar), содержащего композиции и картинки-обложки. После скачивания архивы пережимаются программой 7-Zip и в таком виде хранятся на жестком диске. Для прослушивания музыки архивы не требуется распаковывать, так как современные плееры умеют играть музыку прямо из них (в частности, я использую Foobar2000). И хотя суммарный объем памяти, занимаемой всеми архивами, еще далек от емкости жесткого диска, меня начала занимать мысль об улучшении степени сжатия mp3-файлов. Как говорил один мой преподаватель, задача — это неудовлетворенное чувство беспокойства; и это было именно то чувство, которое испытывал я. Изобретать свой перекодировщик мне не хотелось, поэтому было решено попробовать написать фильтр, удаляющий какую-нибудь избыточную информацию.

Читать дальше →
Всего голосов 42: ↑40 и ↓2 +38
Просмотры 2.4K
Комментарии 26

Нейросетевое сжатие данных

.NET *
Из песочницы
imageВ этой статье я хочу поведать о еще одном классе задач, решаемых нейронными сетями – сжатии данных. Алгоритм, описанный в статье, не претендует на использование в реальных боевых условиях по причине существования более эффективных алгоритмов. Сразу оговорюсь, что речь пойдет только о сжатии без потерь.
Большинство источников в Интернете утверждают, что есть 3 основных популярных архитектур нейронных сетей, решающих задачу сжатия данных.

1. Сеть Кохонена и ее вариации. Часто используется для сжатия изображений с потерей качества, не является алгоритмом сжатия без потерь.

2. Ассоциативная память (Сеть Хопфилда, Двунаправленная ассоциативная память и др.). «Сжатие данных» для этого класса сетей является «фичей», побочным явлением, так как главным их предназначением есть восстановление исходного сигнала/образа из зашумленных/поврежденных входных данных. Чаще всего, на вход этих сетей поступает зашумленный образ той же размерности, потому о сжатии данных речь не идет.

3. Метод «Бутылочного горлышка».

О последнем методе и пойдет речь в статье.
Читать дальше →
Всего голосов 41: ↑38 и ↓3 +35
Просмотры 20K
Комментарии 25

Мгновенный поиск в 75 гигабайтах

PHP *
Из песочницы
Речь пойдет о том, как был реализован быстрый поиск по большим объемам данных на этой страничке. Там можно искать пароль по хешу, для игрового сервера PvPGN, и генерировать эти же хеши.
Поиск написан на чистом PHP, без использования модулей и сторонней БД. В принципе, таким образом можно наращивать объемы до многих терабайт, было бы место — скорость от этого не сильно пострадает.

Далее от начала до конца описан весь процесс, который включает в себя брутфорс, создание хеш таблицы, её сортировка и, собственно, поиск.


Читать дальше →
Всего голосов 143: ↑122 и ↓21 +101
Просмотры 31K
Комментарии 115

Арифметическое кодирование

Алгоритмы *
Сейчас существует множество алгоритмов сжатия информации. Большинство из них широко известны, но есть и некоторые весьма эффективные, но, тем не менее, малоизвестные алгоритмы. Эта статья рассказывает о методе арифметического кодирования, который является лучшим из энтропийных, но тем не менее мало кто о нём знает.
Читать дальше →
Всего голосов 71: ↑62 и ↓9 +53
Просмотры 76K
Комментарии 39

Алгоритмы используемые при сжатии данных

Алгоритмы *
Из песочницы
Вступление

Одна из самых главных проблем при работе с данными — это их размер. Нам всегда хочется, что бы уместилось как можно больше. Но иногда этого не сделать. Поэтому нам на помощь приходят различные архиваторы. Но как они сжимают данные? Я не буду писать о принципе их работы, лишь расскажу о нескольких алгоритмах сжатия, которые они используют.
Читать дальше →
Всего голосов 70: ↑46 и ↓24 +22
Просмотры 40K
Комментарии 8

Алгоритмы LZW, LZ77 и LZ78

Алгоритмы *

Хочется продолжить свою предыдущую тему об алгоритмах сжатия. В этот раз я расскажу об алгоритме LZW и немного об его родственниках алгоритмах LZ77 и LZ78.

Алгоритм LZW


Алгоритм Лемпеля — Зива — Велча (Lempel-Ziv-Welch, LZW) — это универсальный алгоритм сжатия данных без потерь.
Читать дальше →
Всего голосов 72: ↑65 и ↓7 +58
Просмотры 114K
Комментарии 15

Почти линейное увеличение производительности bzip2 на многопроцессорных системах

Настройка Linux *
В Linux часто используется сжатие с помощью gzip и bzip2. Они оба обеспечивают хорошую плотность сжатия, и удобны в использовании. При этом bzip2 сжимает большинство файлов эффективнее — но, с другой стороны, работает медленнее, чем более традиционные gzip или zip.

Но можно получить эффективность bzip2, при этом существенно увеличив скорость. Речь идёт об утилите pbzip2 — Parallel BZIP2. В обычном случае при использовании bzip2 задействуется только одно процессорное ядро, в то время как на современных системах их может быть 2, 4, или, например, 8.

Pbzip2 может использовать сразу несколько процессорных ядер, что приводит, по заявлению авторов, к почти линейному увеличению производительности. Сжатые файлы, которые создаёт pbzip2, полностью совместимы с bzip2 1.0.2 и более новыми версиями bzip2 (также есть утилита pigz, которая, в свою очередь, является многопоточной реализацией gzip — спасибо altexxx).

Ниже результат тестирования скорости сжатия участка SQL-файла размером 1000M (dd if=dump.sql of=testfile bs=1M count=1000) на компьютере с двумя процессорами Intel Xeon E5520 (4 ядра, 8 потоков, тактовая частота 2,26 ГГц):

Результаты тестирования

Как видно из результатов тестирования, pbzip2, работающий в 4 потока, приблизительно в 3,6 раз быстрее, чем bzip2, работающий в один поток — что действительно является почти линейным увеличением производительности.

При этом pbzip2, работающий в 16 потоков, оказался медленнее, чем pbzip2, использующий 4 потока — вероятно, из-за скорости выполнения операций ввода/вывода. Также смотрите дополнительные тесты в комментариях (спасибо tristan и bliznezz) — в том числе, с использованием tmpfs-раздела в оперативной памяти.

Используется pbzip2 примерно так же, как и просто bzip2, но есть некоторые дополнительные функции, например вывод прогресса выполнения операции в процентах.

Читать дальше →
Всего голосов 58: ↑51 и ↓7 +44
Просмотры 14K
Комментарии 17

Сравнение программ сжатия в применении к передаче больших объёмов данных

Восстановление данных *
Из песочницы
Всё началось с простой задачи: скачать по 100-мегабитной сети большой объём данных с помощью rsync. Возник вопрос, можно ли ускорить этот процесс. Утилита top показала, что на сервере-источнике шифрование занимает не более 10 процентов процессора, поэтому было решено что можно попробовать сжатие данных. Тогда мне было неясно, будет ли хватать производительности процессора для упаковки данных с необходимой скоростью, поэтому была выставлена самая маленькая степень сжатия, а именно использовался флаг --compress-level=1 для rsync. Оказалось, что загрузка процессора не превысила 65%, то есть производительности процессора хватило, при этом скорость скачивания данных несколько повысилась.

После этого возник вопрос о анализе применимости распространённых программ сжатия
для передачи данных по сети.
Читать дальше →
Всего голосов 28: ↑24 и ↓4 +20
Просмотры 9.9K
Комментарии 17