Ненормальное программирование → Интерактивная открытка в виде HTA из песочницы
HTA-приложения уже описывались на хабре. Теперь же рассмотрим конкретный пример использования технологии в мирных целях.
Иногда хочется сделать красивую открытку, но при этом не заморачиваться с FLASH, Silverlight и т.п. А ведь зная только HTML и немного JavaScript можно сделать превосходные открытки в виде приложения одним файлом! Тот кто пролистает статью не вчитавшись может отметить что это не совсем просто. Но сделав один раз каркас (который я предоставляю в конце статьи на суд и свободное использование), вы будете легко и быстро делать новые и новые открытки. И даже вполне можно автоматизировать процесс создания персональных интерактивных открыток.
Для чего?
Иногда хочется сделать красивую открытку, но при этом не заморачиваться с FLASH, Silverlight и т.п. А ведь зная только HTML и немного JavaScript можно сделать превосходные открытки в виде приложения одним файлом! Тот кто пролистает статью не вчитавшись может отметить что это не совсем просто. Но сделав один раз каркас (который я предоставляю в конце статьи на суд и свободное использование), вы будете легко и быстро делать новые и новые открытки. И даже вполне можно автоматизировать процесс создания персональных интерактивных открыток.
Я пиарюсь → Онлайн агрегатор операций со строками

У вас часто возникает необходимость быстро конвертировать время из timestamp, ансериализовать строку и распечатать объект, узнать md5 хэш строки, кодировать ее в base64-обратно и т.д.? Конечно, для этого уже есть ряд тематических сервисов (md5.org, base64.org), которыми большинство из вас неоднократно пользовались. Обычно они выполняют только одну из функций, ибо удобнее зайти на главную, не щелкая мышкой по вкладкам вбить в большое поле на главной строку и получить результат. Под катом расскажу про свой проект easydev.org, который позволяет выполнить любую подобную операцию быстрее и удобнее, даже без использования мыши.
Клиентская оптимизация → Храните мелкие картинки в CSS
Храните мелкие картинки, которые нельзя засунуть в спрайты, в data:image base64 в CSS — это экономит кучу запросов к вебсерверу.
Информационная безопасность → Очень интересный вариант защиты от SQL-инъекций и XSS
Один весьма мной уважаемый гн Ден Каминский (Dan Kaminsky — известен благодаря обнаружению им фундаментальной уязвимости в DNS ) предложил очень интересную универсальную технику защиты от SQL injection и XSS.
Метод очень просто и от того гениален.
Метод очень просто и от того гениален.
Персональные блоги → onEnterFrame #25
Добро пожаловать на новый выпуск подкаста onEnterFrame.ru! Сегодня в программе:
- Пиар супер библиотеки от BlooDHounD ( Тяжёлые алгоритмы на стероидах: MD5, Base64, CRC32, JPEG, PNG )
- Как президент работал за мультитач столом
- Русские студии
- Новый комп
- Супер игра Transformice
- Глупые заказные сайты
- Новый iPhone
- Ферма на iPhone и GodFinger на iPad
прослушан 125 раз
Веб-разработка → Программа для конвертации изображений с целью внедрения в html страницы
Для вывода картинки на HTML страницу существует стандартный тэг в виде img src=«URL», где URL задает адрес подгружаемой картинки. Т.е. для загрузки каждой из картинок будет отдельное обращение на сервер. Существует прием позволяющий встроить картинки непосредственно в html код, тэг картинки будет выглядеть в этом случае примерно так:
img src=«data:image/jpg;base64, iVBORw0KGgoAAAANSUhEUgAAADIA.....»
В итоге все картинки будут сразу вшиты в страничку, и потребуется всего один запрос к серверу.
Минусом данного решения будет увеличение веса картинок примерно в 1.3 раза.
Для автоматизации процесса получения base64 строк мной написана небольшая программа. Позволяет обрабатывать картинки пакетно, и имеет несколько режимов для сохранения.
Архив с исходником, программой и инсталлером(600кб)
P.S. внимание, программа скомпилена под win!
img src=«data:image/jpg;base64, iVBORw0KGgoAAAANSUhEUgAAADIA.....»
В итоге все картинки будут сразу вшиты в страничку, и потребуется всего один запрос к серверу.
Минусом данного решения будет увеличение веса картинок примерно в 1.3 раза.
Для автоматизации процесса получения base64 строк мной написана небольшая программа. Позволяет обрабатывать картинки пакетно, и имеет несколько режимов для сохранения.
Архив с исходником, программой и инсталлером(600кб)
P.S. внимание, программа скомпилена под win!
Веб-разработка → К вопросу о кроссбраузерных Data URI
В погоне за оптимизацией сайтов захотел уменьшить количество запросов, не в ущерб размерам оптимизированных файлов.
Цель — передавать в одном файле изображения разных форматов, с разными настройками оптимизации.
Как средство, выбрал data uri и gzip'нутый css файл. Однако IE с data uri работают из рук вон плохо. Но в них есть mhtml. Существовавшая реализация не отвечала моим требованиям, т.к. приходилось 1 файл передавать два раза — раз для IE, в mhtml, и второй для всех остальных, в data uri. В поисках решения наткнулся на статью bolk'а, где описывалось решение для формата jpeg и некоторые теоретические выкладки для gif и png. После почти трехнедельного раскуривания манов мне удалось реализовать решение для gif и png и автоматизировать процесс для всех трех форматов.
Цель — передавать в одном файле изображения разных форматов, с разными настройками оптимизации.
Как средство, выбрал data uri и gzip'нутый css файл. Однако IE с data uri работают из рук вон плохо. Но в них есть mhtml. Существовавшая реализация не отвечала моим требованиям, т.к. приходилось 1 файл передавать два раза — раз для IE, в mhtml, и второй для всех остальных, в data uri. В поисках решения наткнулся на статью bolk'а, где описывалось решение для формата jpeg и некоторые теоретические выкладки для gif и png. После почти трехнедельного раскуривания манов мне удалось реализовать решение для gif и png и автоматизировать процесс для всех трех форматов.
Алгоритмы → SGVsbG8gd29ybGQh или история base64
Краткая предыстория
Вообще, все началось давно. Настолько давно, что вряд ли остались свидетели holy wars тех дней, когда решалось — сколько же бит должно быть в байте.
Это сейчас нам кажется само собой разумеющимся, что 1 байт = 8 бит, что в байте можно закодировать 256 различных значений. Но когда-то было совсем не так. История помнит и семибитные кодировки, и шестибитные, и даже более экзотические системы (например — ЭВМ «Сетунь», которая использовала троичную логику, то есть один троичный бит — трит мог иметь три, а не два значения, для нее было справедливо соотношение 1 трайт = 6 тритам). Но если оставить в стороне всякую экзотику, то мэйнстримом все-таки были кодировки, в которых 6, 7 или 8 бит в байте.
Шестибитная кодировка (например — BCD) позволяла закодировать в одном байте 64 различных значения, что, как казалось, было вполне достаточно для кодирования алфавитно-цифровых символов, а «лишний» седьмой бит расширял кодировку уже до 128 символов.
Однако скоро восьмибитный байт стал общепринятым.
Персональные блоги → Разбираем query от http://www.hugeurl.com/
Немного о www.hugeurl.com/ — разбираем url, берем query_string
на выходе получаем
И вот искомое:
$url = $argument[2];
$urlDecode = base64_decode( $queryString );
$argument = explode( "&", $urlDecode );на выходе получаем
$argument[0] = некий хеш
$argument[1] = количество итераций
$argument[2] = еще одно base64
for ( $i = 0, $i < $argument[1], $i++ ){
$argument[2] = base64_decode( $argument[2] )
}
И вот искомое:
$url = $argument[2];