Неявная проблема ON DUPLICATE KEY и AUTO INCRIMENT

Сейчас хочу вам предложить обсудить один интересный факт. Возьмем обычную таблицу:
CREATE TABLE `test_table` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`date` DATE NOT NULL ,
`value` INT UNSIGNED NOT NULL ,
PRIMARY KEY ( `id` ) ,
UNIQUE ( `date` )
) ENGINE = INNODB ;

В ней три поля:

  1. id – первичный ключ с автоинкриментом
  2. date – уникальный ключ
  3. value – некие данные

Не так давно я писал насколько круто использовать конструкцию ON DUPLICATE KEY. Но как оказалось, данная конструкция имеет один подводный камень.
Читать далее →

Ускоряем генерацию страниц в три раза, а сам WordPress на 30%

Глянул я тут на время генерации страницы WP и обомлел – ~1 секунда на генерацию главной. Не позволительно много и долго.

Путем нехитрых манипуляций удалось снизить это время до ~0.3 секунд. Почему в заголовке написано на 30%? Потому что помимо всего прочего на дополнительные 30% удалось ускроить сам WordPress, слазив в основной код и добавив использование memcached.

Но об этом всем по порядку под катом.

Читать далее →

Переехал на новый сервер

Server Ну что же наконец таки это случилось. Точнее случилось знаковых два события.

1) Я съехал с мерзкого sweb на отдельный сервер!
2) Я написал новый пост за последние два года! :)

Надеюсь это событие даст мне толчок писать сюда что-нибудь далее.
Читать далее →

И вот уже два года прошло!

Сегодня этому блогу исполняется два года. Собственно и что? Да ничего) Просто это приятное событие для меня, которым мне бы хотелось поделиться с вами.

И да, опять та же самая картинка ;)

Честно говоря с предыдущего дня рождения блога для меня время пролетело очень быстро, и, оглядываясь на этот год, заметил, что в общем то за этот период опубликовал я не очень много материала, за что мне очень стыдно, надеюсь вы мне это простите)

Но как говорится “это лучше чем ничего”, поэтому кратенький обзор лучших статей смотрите под катом.
Читать далее →

Делаем PDO удобным

Выкладываю на ваш суд свой класс-надстройку над стандартным PDO. Писался и совершенствовался он с каждым проектом, и содержит все мои изменения суммарно.

Ссылка на GitHub

Данное расширение добавляет следующий функционал:

  • Цепочки вызовов
  • Аналоги функций из pear::db
  • Показать сформированный запрос
  • Функции для подсчета статистики запросов
  • Дополнительные функции
  • Другие изменения

Читать далее →

Как хранить IP в БД

Как ни странно, но многие разработчики до сих пор хранят ip адрес в базе плейн текстом, что вобщем то совсем непрактично.

На самом деле адрес IPv4 удобно хранить в виде беззнакового int 32. И в этой кратенькой статье я вам расскажу о том, как это делать и какие неоспоримые преимущества это дает. Я думаю, этот материал будет полезен многим.

Читать далее →

UPS, заткнись!

powercom spider SPD-850uКто не бросал эту фразу вслух, когда начинал пищать ИБП при отключения света?)

Сегодня вобщем имел счастье проснутся ночью от противного писка UPS (как вы догадались – ночью нам отключили свет). Этот писк то и среди дневного шума можно назвать истошным, а ночью… Кароче, приятного мало.

Да, в пациенте есть функция типа Green Power, которая отключает UPS при отсутствии нагрузки на него. Но до отключения он чего то ждет аж 4 минуты, и только потом, я так понимаю, убедившись что нагрузки нет, отключается. А 4 минуты истошного вопля слушать нет желания даже днем.

Собственно модель – Powercom spider SPD-850u. В целом неплохой ИБП (если бы не поставляемый вместе с ним софт, но это отдельная песня, интерфейс можно заценить здесь, от которого меня чуть не вырвало), со скачками напряжения справляется, нагрузку держит.
Читать далее →

Распознавание KCaptсha

Краткое отсутпление: статья содержит теоретическое описание алгоритма взлома данной капчи. К сожалению, предложенный алгоритм так и не был реализован на практике…

Когда то давным-давно (наверное полгода-год назад) я обещал опубликовать эту статью. И вот наконец – свершилось! Я ее публикую :)

В данной статье, как я говорил выше, вы не найдете практической реализации данного алгоритма. Но публикую я ее с целью, что некоторые из предложенных идей может быть кому-нибудь, когда-нибудь помогут. Почему так подробно? Потому что когда то я взялся за задачу предложить описание алгоритма распознавания оной. Алгоритм был передан заказчику, но с реализацией чего то не сложилось… Хотя ладно, хватит отступлений.

Так kcaptcha – довольно известная реализация капчи на PHP, гуглится на первой странице по запросу “капча”, и выглядит следующим образом:

2

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

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

Содержание

Введение
1) Приведение к черно белому виду
2) Выделение фрагмента с кодом
3) Предварительная обработка
4) Разбиение картинки на фрагменты
5) Поиск ключевых узлов
6) Сравнение с базой масок
Заключение

Итак, поехали… (далее очень много букаф и картинок)

Читать далее →