Memcached и метки. Реализация для фреймворка Kohana
Приветствую всех.
Уже довольно давно разрабатываем проект на кохане и встала необходимость эффективного кэширования данных. Не то, чтобы вопрос производительности стоит очень остро в данный момент, но, хотелось бы подготовится заранее, а не писать систему кэширования в ночь после волны посетителей. Да и посещаемость постоянно растет, а в некоторые моменты бывают всплески до 3х раз по сравнению с обычным днем.
Собственно, в выборе системы кэширования особых вопросов не было — на ум сразу приходит всем известный memcached.
Перевел блог на Drupal
Так уж получилось, что в скором времени встанет вопрос о работе главным разработчиком в небольшой команде, которая будет специализироваться за создании сайтов на заказ.

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

Тихо вышла новая версия любимого фреймворка Kohana. Теперь текущая версия этого замечательного инструмента для web-разработки — 2.3.3.
Список изменений можно посмотреть на официальном сайте фреймворка. Традиционно, он представлен в виде закрытых тикетов в местном Trac'е.
Для себя я там не нашел полезных исправлений.
Пережил DDoS
3.5 дня мой блог, а также остальные сайты на сервере не работали из за массового DDoS'а в сторону одного из проектов, размещенных на сервере (успешный интернет-магазин). В пике DDoS достигал до 15000 запросов в секунду.
Сейчас все закончилось (DDoS ушел после того, как сайт сутки работал под атакой и ему ничего не было - принятые мною меры помогли).
За эти дни я узнал столько, сколько не узнаешь, изучая проблему чисто теоретически. Так что в чем то я даже благодарен атакующим.
ForeignKey и Null в Django
Чтобы иметь возможность иметь null в ForeignKey в Django-модели достаточно задать: blank=True, null=True. Например:
partner = models.ForeignKey(User, blank=True, null=True)
Теперь, при выборе partner в записи, у которой partner_id = 0 мы не будем получать exception'ов, а получим лишь None.
partner = partner.common.models.Bill.objects.get(id=2).partner #partner_id = null
print partner # None
Математические операции в шаблонах Django
Сегодня я крайне удивился, что у меня не получается выполнить никакие математические действия в шаблонах Django. Например, умножить 2 числа, находящиеся в переменных. Конечно, можно выполнить эти действия по view, но, по моему мнению, это избыточны и раздувает код представлений. Лучше уж прямо в шаблоне. Очень странно, что в Django "В коробке" идет только 1 фильтр осуществляющий математическую операцию - add.
{{ item.amount|add:3 }} {# Возвращает item.amount, увеличенное на 3. #}
{{ item.amount + 3 }} {# Ошибка #}
{{ item.amount * 3 }} {# Ошибка #}
PHP-фреймворк Kohana
Давно хотел забросить CakePHP. Причин множество. Скорость. Поддержка PHP4, которая немного напрягает, т.к. в PHP5 введено множество интересных фич в части ООП. А в кейке мы все еще с массивами работаем. Больше, если честно, смотрел в сторону Python-фреймворка Django, но, в итоге поняв, что разработчиков на Django днем с огнем не сыщешь — решил все таки копать в сторону PHP. Перепробывал несколько фреймворков, в частности, монструозный Zend Framework. Ничего не понравилось.
Munin — мониторинг вашего сервера на основе Ubuntu
Если вы администрируете свой сервер на основе linux или других posix систем, наверняка, вам время от времени хочется посмотреть, что же происходит там с вашим сервером? Можно смотреть логин, анализировать чтото еще, но, все же, лучший способ представления информации — в виде графиков. Есть довольно много приложений для linux, позволяющих осуществлять автоматический мониторинг сервера, а после - представления накопленной информации в виде графиков. Я сегодня попробую описать процесс установки одного из них - munin.
Прием наличных на вашем сайте через Qiwi
В этой статье речь пойдет о приеме оплаты в интернет-магазине через сеть платежных терминалов Qiwi.
Заранее хочу сказать: я не имею никакого отношения к компании Qiwi, а также они мне не платят :-) Статья только для блага сообщества. Эта платежная система позволила мне поднять конверсию и доходность моего магазина. Может быть, она поможет и вам.
Cake PHP: Убираем "модельный" код из контроллеров
В последнее время все чаще в своих контроллерах стал замечать код типа:
$invoices = $this->Invoice->find('all', array(
'fields' => array('Invoice.id', 'Invoice.good_id', 'sum(Invoice.qty) as qty'),
'conditions' => array('bill_id' => $bill_id),
'group' => array('Invoice.good_id', 'Invoice.id')
));
Когда такие участки кода встречаются редко, или файлы контроллера меньше 300-400 строк, такую запись можно проигнорировать. Однако дальше она начинает сильно мешать — код читается намного хуже.
