Паттерн voter injection: взаимодействие без хардкода

В моей практике часто возникают ситуации, когда в программе один объект должен определённым образом реагировать на другие объекты. То есть – решать, взаимодействовать с ними или игнорировать. Например, когда объект принимает сообщения от других объектов, и должен решать – отреагировать на конкретное сообщение или пропустить его. Понятно, что в простейшем случае достаточно это захардкодить: допустим, объект user реагирует на все сообщения про этого юзера. Но что делать, если ситуация сложнее, и реакции должны быть динамическими? (например, если ваши объекты порождаются фабрикой). Для этого у меня есть некий паттерн, который я называю voter injection. Continue reading “Паттерн voter injection: взаимодействие без хардкода”

Код в шаблонах: две стороны одной медали

Страницы интернета в темах про разработку сайтов пестрят громкими фразами: скажем нет говнокоду! Нет коду в шаблонах! Разделим систему на логику и представление! Никакого выполняемого php и запросов к БД в html-разметке страницы!

Однако многие серьёзные фреймворки, до которых некоторым разработчикам в своём умственном развитии далеко как до луны раком, штатно применяют программный код прямо в шаблонах. Это и Zend Framework, и Symphony, и Ruby on Rails, и даже новомодный Yii. Казалось бы, куда катится мир? Неужели всё делается в угоду недоразвитым “программистам”, которые прочитали “самоучитель PHP за 30 минут” и хотят делать сайты без изучения MVC, REST, XSLT и прочих “взрослых” технологий?

Естественно нет. Как догадается любой здравомыслящий человек, всё это делается не просто так. В этом посте я расскажу, в чём здесь глубокий смысл. Continue reading “Код в шаблонах: две стороны одной медали”

Яндекс.Метрика Веб-визор – бесплатно своими руками

Недавно популярный сервис статистики “Яндекс.Метрика” опубликовал новую киллинг-фичу: веб-визор. Владельцы корпоративных сайтов сразу начали сходить по ней с ума: вау! Это же фактически съёмка видео в реальном времени действий посетителей на вашем сайте! Не просто тепловая карта, не просто карта кликов, а реальный “ай-трекинг” того как люди возят курсором мыши по вашим веб-страницам. Потрясающий инструмент для маркетолога, но меня в тот момент сильно задела цена, которую Яндекс просил за эту услугу: нужно в течение трёх месяцев тратить не менее 6000 рублей рекламного бюджета в месяц.

Деньги в целом небольшие, но неприятен сам факт. Поэтому сегодня у меня наконец-то дошли руки рассказать, как устроена эта технология и как сделать аналогичную штуку на своём сайте совершенно бесплатно. Continue reading “Яндекс.Метрика Веб-визор – бесплатно своими руками”

Асинхронное программирование в веб-проектах

Согласно каноническому определению, асинхронное программирование (event-driven) – это когда результат функции вы получаете не сразу, а “когда-нибудь потом”. В этом посте я не буду говорить о мультипоточном выполнении программного кода. Речь о другом: вместо того, чтобы бороться с нагрузкой на систему путём масштабирования или тупой оптимизации кода и архитектуры, Continue reading “Асинхронное программирование в веб-проектах”

Как распарсить mantis

Во многих программерских конторах в качестве багтрекера (или в целом для управления задачами) используется популярный продукт Mantis. Нам, руководителям рабочих групп, регулярно нужно доставать из него статистику: с какой скоростью мы движемся, успеваем ли решать задачи в срок, сколько багов осталось до релиза, кто из команды работает медленнее всех остальных. В Мантисе есть своя статистика, но её информативность сгодится лишь для агит-плаката на тему “пятилетка в четыре года”. В реальной жизни нужны гораздо более кастомизированные отчёты.

Я раскопал свой старый php-скрипт, который писал в далёкой молодости, и адаптировал его к сегодняшним реалиям. И вот что получилось: Continue reading “Как распарсить mantis”