ПроектыКопипаст рулит! В PHP.

Предыстория. Заметили, что в одном из наших проектов один из модулей выполняется довольно долго. Суть модуля — получить данные из базы, очистить их и отдать клиенту. Запустили профайлер, держа в голове, что тормозит либо запрос, либо очистка данных. Результат немного удивил (цифры отражают только порядок):

Время всего модуля: 0,68 сек
Время получения данных из базы: 0,02 сек
Время очистки данных: 0,34 сек

Копипаст рулит! В PHP. →

Проекты2015

Очень давно не писал в блог… Если честно — не о чем было писать. Последний год работаю над системой распознавания адресов (аналог dadata.ru). Не все так просто, как казалось на первый взгляд. Но это только добавляет азарта. Проблема в том, что основные проекты как-раз доросли до момента, когда такая система жизненно необходима, а она еще не готова…

Ладно, это так, отступление. Сам пост о планах на 2015-й год. Еще ни разу я не публиковал в блоге ни результаты прошлого года, ни планы текущего. В данном случае — исключение + повод для мотивации.
2015 →

Заметки, ПроектыMD5 и скорость выборки

Пару дней назад завязался небольшой диалог в твиттере по поводу шифрования паролей в веб-сервисах. На фразу «кто не использует — идиот» мне ответили в стиле:

Шифрование создает сильную дополнительную нагрузку для веб-сервиса и большие проекты избегают подобного.

Подобное я слышу уже в сотый раз, поэтому решил сделать маленький тест и показать, что это абсолютно не верно и создатели этих сервисов (в которых важные данные, такие как пароли, номера карт и пр., не шифруются) полные идиоты.

Собственно, сам тест очень простой. Я создал таблицу, в которой 3 поля:

  1. id — привычка;
  2. str — данные в открытом виде (в тесте совпадает с id);
  3. 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 типа запросов:

  1. запрос по не хешированной строке;
  2. запрос по md5, хеширование внутри mysql;
  3. запрос по md5, хеширование в php.

MD5 и скорость выборки →

Заметки, ПроектыЛенивые программисты

В последние несколько дней изучаю движки инет-магазинов, хочу сделать для супруги инет-магазин. В процессе изучения натыкаюсь на много интересных вещей, о которых расскажу как-нибудь потом. А сегодня меня ОЧЕНЬ СИЛЬНО удивил движок инет-магазина, стоимостью почти 400$. Вдумайтесь — в некоторых местах нашей родины столько получают за месяц работы! Ну, думаю, раз такая стоимость — продукт должен быть отличный…
Ленивые программисты →

Kohana, ЗаметкиТюнинг kohana 3.0

Не так давно я представил набросок простейшего фреймворка, предназначеного для изучения новичками и для создания простейших сайтов. Комментарий, оставленный к тому посту уважаемым мною Иваном Броткиным, заинтриговал. Стало очень интересно, чего же можно добиться, если поднастроить ko3 на скорость работы. Интерес чисто академический, поэтому и настройки, по ходу дела, будут такие же. Единственное условие, которое я поставил для себя: фреймворк должен остаться полностью работоспособным, без ограничений!

Итак, начнем. Для начала, отключаем все, что можно: кеш, логирование, все доп.модули. Вывод из контролера в браузер делаем через echo, чтобы избежать использование доп. кода в самой кохане. Смотрим результат:

time: 0.0273728370667;
memory: 749360

Совсем-совсем не плохо, если сравнивать с ko3.2 и дефолтными настройками (напомню: time: 0.0946259498596; memory: 1330864). Но, данные параметры все-равно довольно высоки, поэтому идем дальше.

Тюнинг kohana 3.0 →