Pull to refresh

Newton Game Dynamics открыт под лицензией zlib

Reading time 1 min
Views 1.7K
Game development *
Логотип Newton Game Dynamics

Популярный среди разработчиков игр кросс платформенный физический движок Newton Game Dynamics теперь открыт и выпущен под свободной лицензией zlib. Произошло это событие 15 февраля.

Разговоров на тему открытия исходников на форуме движка было достаточно, и многие разработчики игр ждали этого и такой момент, наконец, наступил.
Подробности и детали перелицензирования
Total votes 34: ↑33 and ↓1 +32
Comments 5

Snappy (zippy), библиотека для сжатия данных от Bigtable

Reading time 1 min
Views 2.5K
Website development *
Google выпустил библиотеку Snappy под лицензией Apache 2.0. Эта библиотека для компрессии/декомпрессии нацелена не на максимальную степень сжатия или совместимость с другими библиотеками, а на максимальную скорость работы. Например, по сравнению с самым быстрым режимом zlib, Snappy примерно на порядок быстрее для большинства входящих данных, но архивы получаются на 20–100% больше по размеру. На одном ядре Core i7 в 64-битном режиме Snappy скорость компрессии больше как минимум на 250 МБ/с, а декомпрессии — минимум на 500 МБ/с.

Snappy широко используется в Google, в разных системах от BigTable и MapReduce до внутренних RPC-систем (в некоторых презентациях она упоминалась под названием Zippy).

Дополнительную информацию см. в файле readme. Бенчмарки по сравнению с другими библиотеками (zlib, LZO, LZF, FastLZ и QuickLZ) поставляются в комплекте с исходниками.
Total votes 39: ↑36 and ↓3 +33
Comments 16

libral – слой абстракции доступа к библиотекам сжатия

Reading time 2 min
Views 1.1K
C++ *
Привет Хабр! Хочу представить свою С/С++ библиотеку libral, которая с недавних пор стала open source под лицензией GPL3. Возможно кому-то она будет полезна. Библиотека предоставляет единый интерфейс к различным алгоритмам сжатия данных без потерь.
На данный момент поддерживаются библиотеки:

Читать дальше →
Total votes 45: ↑38 and ↓7 +31
Comments 34

Протокол коммуникации Siri взломан

Reading time 3 min
Views 3.5K
Smartphones
Разработчикам мобильных приложений из компании Applidium удалось разобраться в протоколе коммуникации, который использует программа Siri, так что теперь этот движок распознавания речи теоретически можно запускать на любом устройстве, в том числе Android, если вы знаете, где добыть идентификатор iPhone 4S, и компания Apple не внесёт его в «чёрный список».

Ключевым элементом Siri является то, как программа общается с сервером (Siri работает только при наличии доступа в интернет). Трафик идёт по протоколу TCP, порт 443, на сервер 17.174.4.4. Если вы попробуете связаться с сервером https://17.174.4.4/ с десктопа, то увидите, что он предъявляет сертификат на имя guzzoni.apple.com (Дидье Гуззони из компании SRI — один из создателей этой технологии).
Читать дальше →
Total votes 70: ↑66 and ↓4 +62
Comments 42

WebService c поддержкой gzip на C

Reading time 5 min
Views 4.4K
C++ *
Sandbox
В посте речь пойдет о моем опыте встраивания XML-RPC интерфейса в утилиту, написанную на C. Интерфейс должен предоставлять доступ к статитстике и результатам работы утилиты. Одно из требований к интерфейсу — поддержка ответов в формате gzip, в целях экономии трафика. Мне очень хотелось обойтись малой кровью и вот что из этого получилось.
Читать дальше →
Total votes 32: ↑30 and ↓2 +28
Comments 15

Пишем архиватор на основе ZLib в .NET

Reading time 4 min
Views 16K
.NET *

Зачем пишем


  • потому что удобно иметь свой настраиваемый инструмент, в котором можно вмешаться в архивацию на любом этапе
  • потому что это интересно
  • потому что многие архиваторы имеющие api, платные, а насчет других см. первый аргумент.

Читать дальше →
Total votes 18: ↑12 and ↓6 +6
Comments 3

Графический формат JNG — чем полезен, как устроен, чем сконвертить, посмотреть и загрузить

Reading time 9 min
Views 16K
Image processing *
Tutorial
На картинке изображенна турецкая снайперская винтовка с очень подходящим названием — JNG. В статье, как вы уже догадались — речь пойдёт о графическом формате JNG, а отнюдь не об оружии. На хабре уже мелькали темы, касающиеся этого формата, однако их было не много, а некоторые, к сожалению, впоследствии были удалены авторами. Не смотря на то, что JNG не особо популярный формат и базируется на формате MNG, который, судя по всему, можно считать мёртворождённым, у JNG есть одно очень хорошее свойство – это высокая степень сжатия графики с потерями плюс начиие альфа канала.
По сути JNG представляет из себя подвид формата MNG (однако со своим маркером в заголовке, позволяющим отличать оба этих формата). Цветовые данные сохраняются в JPEG формате, а вот альфа может хранится в одном из двух вариантов – либо тоже сжатая при помощи JPEG, как картинка в оттенках серого, либо используя такое же как в PNG — сжатие без потерь.
Где может пригодится JNG? Для меня он больше всего подошёл для хранения текстурных атласов в мобильных играх. Небольшой пример – исходный набор графики от игры весил 57 мегабайт, после замены всех png на jng – набор графики стал весить 15 мегабайт. Неплохой выигрыш для мобильной игры. Поиск других областей, где можно применить jng оставлю на усмотрение читателя, я же опишу чем смотреть, чем создавать а также как грузить (с примерами кода на C/C++) картинки в формате JNG, а также немного теории об его устройстве.

Читать дальше →
Total votes 34: ↑33 and ↓1 +32
Comments 13

Новый алгоритм Zopfli улучшает сжатие zlib на 3-8%

Reading time 2 min
Views 21K
Website development *Algorithms *
Один из сотрудников Google в свободное время разработал новый алгоритм сжатия Zopfli, который на 3,7-8,3% эффективнее, чем стандартная библиотека zlib на максимальном уровне сжатия. Изначально алгоритм создавался для формата сжатия без потерь WebP, но его можно применять и для другого контента.

Новый алгоритм является реализацией стандартных алгоритмов Deflate, поэтому он совместим с zlib и gzip, а разархивирование данных уже поддерживается всеми браузерами. Достаточно подключить Zopfli на сервере. Например, его можно использовать с веб-сервером Nginx без изменений в модуле gzip, просто указав новый «прекомпрессор».

Правда, сжатие с помощью Zopfli требует примерно в 100 раз больше ресурсов, чем gzip, зато декомпрессия в браузере осуществляется с той же скоростью.
Читать дальше →
Total votes 62: ↑59 and ↓3 +56
Comments 42

Опасный getimagesize() или Zip Bomb для PHP

Reading time 6 min
Views 43K
Information Security *PHP *
Рекурсия

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

«Отлично, — подумал я, — самое время поковырять какой-нибудь движок, пока оно не вернулось!»

Сказано — сделано. Под катом предлагаю небольшой обзор уязвимости в распространённом движке фото-галереи на PHP и о том, как можно положить любой сайт, использующий getimagesize(), с помощью бородатой zip-бомбы (или пета-бомбы).
А что там дальше, за рамкой-то?
Total votes 125: ↑117 and ↓8 +109
Comments 101

Разбор форматов: упакованные хешированные ресурсы

Reading time 9 min
Views 18K
Reverse engineering *


В прошлых двух статьях я рассказал об особенностях форматов данных звуковой подсистемы современных игр. Чтобы не утомлять читателей, перейду к несколько другой теме. Какой бы движок не использовала игра, ей нужно где-то хранить ресурсы и извлекать их оттуда в нужный момент. Иногда ресурсы в архиве имеют как идентификатор, так и читабельное имя файла. Но существует довольно много движков, где имён у файлов нет, а есть только хеш. Как же в таком случае можно что-то разобрать в ресурсах?

Рассмотрим это на примере довольно редкого движка bitsquid. Он простой и компактный, но, тем не менее, имеет все необходимые для современных игр возможности. В прошлом году bitsquid вместе с его разработчиком был куплен компанией Autodesk, и теперь они собираются скрестить его с Maya и сделать свой собственный игровой движок, который, как они обещают, будет чем-то невероятным.
Читать дальше →
Total votes 22: ↑22 and ↓0 +22
Comments 12

Стойкое шифрование данных в PNG

Reading time 2 min
Views 12K
Cryptography *Open source *Python *Image processing *Data compression *
Доброго утра Хабру. Читал вчера статью о хэш-стеганографии через социальные сети, и пришла мне в голову мысль сделать что-то более оптимальное в плане объёма выходных данных. Получилось что-то более-менее работоспособное и даже оптимизированное (в отличие от proof-of-concept romabibi), поэтому, как и обещал, пишу статью.

Что ж, поздороваюсь с вами ещё раз: , и добро пожаловать под кат.
Поехали!
Total votes 27: ↑18 and ↓9 +9
Comments 24

Файл 420 байт разжимается в картинку PNG на 40 гигапикселей (141 ГБ ОЗУ)

Reading time 2 min
Views 13K
Demoscene
В старые времена были популярны zip-бомбы и рекурсивные архивы, которые распаковываются сами в себя. Zip-бомбу иногда можно использовать для DoS-атаки. Например, пресловутый файл 42.zip имеет размер 42 килобайта. Если начать его распаковку, то процесс будет идти до тех пор, пока набор данных не достигнет верхнего предела распаковки в 4,3 гигабайта. При этом процесс займет более 4,5 петабайт в оперативной памяти (4 503 599 626 321 920 байт).

Программист и хакер Дэвид Фифилд (David Fifield) задумался, где ещё можно применить «архивные бомбы». Сразу на ум приходит графический формат PNG, в котором используется алгоритм сжатия DEFLATE в библиотеке zlib.
Читать дальше →
Total votes 35: ↑30 and ↓5 +25
Comments 13

Адаптация подхода с применением сжатия zlib для отсеивания некачественных текстов разной длины

Reading time 4 min
Views 1.3K
Python *Natural Language Processing *Processing *
Sandbox

Недавно Сбер в статье Всё, что нам нужно — это генерация предложил интересный подход для отсеивания некачественных текстов (технического мусора и шаблонного спама). Но разве коэффициент сжатия zlib на качественных текстах не имеет нелинейной зависимости от длины сжимаемого текста? Давайте проверим.

Читать далее
Total votes 11: ↑11 and ↓0 +11
Comments 3