Сжатие JavaScript с использованием PNG и Canvas

Jacob Seidelin в своём блоге «Nihilogic» опубликовал небезынтересную статью, где он рассказывает о своих экспериментах по сжатию кода JavaScript при помощи Canvas и PNG.

Идея простая, из разряда «как мне раньше не пришло это в голову». JavaScript переводится в последовательность байт, которая записывается как изображение. Изображение сохраняется в PNG-формате, в PNG используется довольно эффективное сжатие, что даже при расходах на заголовок даёт ощутимые результаты — известная библиотека Prototype (124 килобайта) стала занимать всего 30 килобайт в восьмибитном PNG-файле. Каждый пиксель в 24-битном PNG позволяет хранить три байта информации, в 8-битном формате — один.

Далее PNG-изображение загружается в тег CANVAS (нужный функционал поддерживается FireFox, WebKit/Safari и бета-версией «Оперы») и считывается попиксельно функцией getImageData, после чего полученный код выполняется (eval) и мы получаем исходный JavaScript.

Единственный недостаток метода — скорость. Извлечение скрипта в 255Кб может занять несколько секунд, что, впрочем, не всегда является проблемой.

32 комментария

Ремни безопасности

Когда ввели штраф за непристёгнутые ремни безопасности, я много слышал о том, что штраф берётся с каждого непристёгнутого пассажира. В выходные ездил в Казань и услышал от папы, что штраф берётся только с водителя и величина штрафа не зависит от количества пассажиров. Решил проверить, так ли это. Вот доходчивая цитата с сайта «Ваша машина»:

Не пристегнут водитель. В данном случае выносится штраф в размере 500 рублей на водителя (КоАП, ст.12.6 — «Управление ТС водителем, не пристегнутым ремнем безопасности…»).

Не пристегнут передний пассажир. Так же следует штраф в размере 500 рублей на водителя (КоАП, ст.12.6 — «…перевозка пассажиров, не пристегнутых ремнями безопасности») и предупреждение или штраф 100 рублей на пассажира (КоАП, ст. 12, 29 ч.1 — «Нарушение… пассажиром правил дорожного движения).

Не пристегнуты задние пассажиры Здесь так же ответственность несёт водитель. Протокол оформляется на него, штраф 500 рублей. Кстати, величина штрафа не зависит от количества непристегнутых пассажиров!

Отсутствие ремней безопасности Если конструкция автомобиля не предусматривает ремни безопасности на заднем сидении, то нарушения зафиксировано не будет. Если на заднем сидении ремнями оснащены два места, а центральное место без ремня, то пристегиваются крайние пассажиры, а центральный может не пристегиваться.

Оставить комментарий

Вернулся из Казани

Приехал из Казани, место съёмки — Москва, Поклонная гора (170.02КиБ)

Выходные провёли в Казани с ответственной миссией — знакомили родителей с моей стороны и со стороны моей будущей жены. Удалось уехать всего на полтора дня, трудности с билетами (уже сейчас всё плохо с билетами на 12-е июня, хотя ещё больше месяца осталось), так что успели много, но пришлось спешить.

Прошло всё замечательно.

14 комментариев