Пару дней назад завязался небольшой диалог в твиттере по поводу шифрования паролей в веб-сервисах. На фразу «кто не использует — идиот» мне ответили в стиле:
Шифрование создает сильную дополнительную нагрузку для веб-сервиса и большие проекты избегают подобного.
Подобное я слышу уже в сотый раз, поэтому решил сделать маленький тест и показать, что это абсолютно не верно и создатели этих сервисов (в которых важные данные, такие как пароли, номера карт и пр., не шифруются) полные идиоты.
Собственно, сам тест очень простой. Я создал таблицу, в которой 3 поля:
- id — привычка;
- str — данные в открытом виде (в тесте совпадает с id);
- pass — хешированные данные (md5(id)).
Таблицу заполнил 10000-ми строками. Теперь сами тесты:
mysql_connect('openserver', 'root', NULL) or die('err connect');
mysql_select_db('md5') or die('err select db');
$start = microtime(TRUE);
for($i=1;$i<=10000;$i++)
{
mysql_query('SELECT FROM `str` WHERE `str`="'.$i.'" LIMIT 1');
// mysql_query('SELECT FROM `str` WHERE `pass`=MD5("'.$i.'") LIMIT 1');
// mysql_query('SELECT FROM `str` WHERE `pass`="'.md5($i).'" LIMIT 1');
}
echo microtime(TRUE) - $start;
Из кода видно, что я проверяю 3 типа запросов:
- запрос по не хешированной строке;
- запрос по md5, хеширование внутри mysql;
- запрос по md5, хеширование в php.
MD5 и скорость выборки →
В последние несколько дней изучаю движки инет-магазинов, хочу сделать для супруги инет-магазин. В процессе изучения натыкаюсь на много интересных вещей, о которых расскажу как-нибудь потом. А сегодня меня ОЧЕНЬ СИЛЬНО удивил движок инет-магазина, стоимостью почти 400$. Вдумайтесь — в некоторых местах нашей родины столько получают за месяц работы! Ну, думаю, раз такая стоимость — продукт должен быть отличный…
Ленивые программисты →
Вчера в твиттере Иван скинул ссылку, на баг в kohana 3.3 под №4638. В поисках проблеммы, сегодня, убил почти 2 часа времени и все-равно сам бы не нашел корень проблемы. Спасибо хорошему человеку (Трин, привет :)). Давайте по порядку разберем суть проблемы, источник проблемы и ее решение…
ВНИМАНИЕ! На абсолютные цифры не смотрите, смотрите на процентное изменение. По поводу абсолютных цифр выскажусь в конце поста.
Kohana: Bug Report #4638 →
Все, кто используют фреймворк kohana, наверное уже знают, что несколько дней назад вышла версия 3.3.0. Изменений не то, чтобы много, но многие из них (как обычно) что-либо меняют кардинально, т.е. обновить старые проекты просто так не получится (.
В ближайшее время постараюсь рассказать об особенностях тех изменений, которые коснулись меня, а сегодня покажу приятные изменения в роутах. Как Вы, наверное, знаете — начиная с версии kohana 3.1 и при использовании php 5.3, можно было использовать лямбда-функции в роутах. Выглядело это примерно так (в моем случае и пример упрощенный):
Route::set('redirect', function($uri){
$compiled = Route::compile('r/<key>', array('key'=>'\w+'));
if (!preg_match($compiled, $uri, $matches))
{
return FALSE;
}
$url = @base64_decode($matches['key']);
if (empty($url))
{
return FALSE;
}
return array(
'controller' => 'link',
'action' => 'index',
'key' => $matches['key'],
);
}, 'r/<key>');
Роуты в kohana 3.2/3.3 →
gruz0 попросил немного рассказать, что и как в этом блоге. Начну с установленных плагинов:
- .html on PAGES — плагин добавляет .html в url каждой страницы. Честно — не помню, когда и почему его поставил, но мне всегда нравилось, что ссылка заканчивается расширением, получается какая-то законченность ссылки.
- All in One SEO Pack — тут наверное никому, кто так или иначе сталкивался с wordpress, объяснять не нужно. Автоматом проставляем keywords и description в мета-теги страницы.
- Cyr to Lat enhanced — не люблю ссылки на русском языке :).
- Disqus Comment System — я давным-давно отказался от обычных комментариев в блоге. Причин много, но основная — спам. Disqus помогает избавиться от автоматического спама, да и для пользователей относительно удобен. Правда, в последнее время подумываю про hypercomments.
- Executable PHP widget — виджет с возможностью использования php-кода. Удобен и прост.
- Google XML Sitemaps — не вижу необходимости в объяснении, что это за плагин :).
- Quotes Collection — виджет с цитатами. Ставил для пробы, да так он и остался.
- SyntaxHighlighter Evolved и SyntaxHighlighter Evolved: PHP5 — подсветка кода в постах. Второй добавляет поддержку php 5.*.
- WP No Category Base — один из самых полезных, для меня, плагинов. Он упрощает ссылки вида http://aktuba.com/category/notes до http://aktuba.com/notes. Согласитесь, второй вариант значительнее приятнее на глаз ;).
- WP Super Cache — плагин, который заставляет блог работать, после плагинов выше:). Генерация главной страницы этого блога отжирает (по другому и не скажешь) 28.7Мб памяти сервера. Это просто жесть и без кеширования не обойтись (((
Вот и все плагины, которые я использую. Кроме того, настроен Last-Modified и обработка Not Modified, что позволяет страницам значительно быстрее открываться при повторном заходе. Проверить, настроены ли эти заголовки можно на этом ресурсе, кстати. Ну и включен gzip на сервере, т.к. мощности серверов давным-давно позволяют не замечать нагрузки от сжатия выходных данных. Включайте у себя gzip!
Чуть не забыл — еще используются два «вкрапления» (в терминах wordpress). Оба они подменяют функционал wordpress на свой: advanced-cache.php и object-cache.php. Уверен, что работает только один из них, но какой и как — понятия не имею :). Надо будет как-нибудь посмотреть что у них внутри и как они работают…
О блоге →