В моей практике часто возникают ситуации, когда в программе один объект должен определённым образом реагировать на другие объекты. То есть – решать, взаимодействовать с ними или игнорировать. Например, когда объект принимает сообщения от других объектов, и должен решать – отреагировать на конкретное сообщение или пропустить его. Понятно, что в простейшем случае достаточно это захардкодить: допустим, объект user реагирует на все сообщения про этого юзера. Но что делать, если ситуация сложнее, и реакции должны быть динамическими? (например, если ваши объекты порождаются фабрикой). Для этого у меня есть некий паттерн, который я называю voter injection. Continue reading “Паттерн voter injection: взаимодействие без хардкода”
Tag: программирование
Код в шаблонах: две стороны одной медали
Страницы интернета в темах про разработку сайтов пестрят громкими фразами: скажем нет говнокоду! Нет коду в шаблонах! Разделим систему на логику и представление! Никакого выполняемого 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”
Как распарсить phpinfo to array
Однажды мы допустили ошибку, которую заметили только спустя пару месяцев. Перед программистом в нашей команде стояла задача: проанализировать настройки сервера (php.ini) и сделать определённые выводы о совместимости с нашим софтом. “Сложность” была в том, что сделать это нужно было внутри php-скрипта, то есть без возможности куда-то положить phpinfo. Шутки ради в тот же день я поручил эту задачу в качестве первого тестового задания стажёру, которого занесла к нам учебная практика. Стажёр промучался с задачей четыре часа, затем исчез и больше никогда не появлялся в нашей жизни. Возможно, он решил навсегда завязать с программированием. И вот тогда я забеспокоился всерьёз.
Тестовое задание для программиста
DEPRECATED WARNING: этот пост был написан для найма программистов в веб-студию в 2010-2013 годах, а сейчас УСТАРЕЛ по многим причинам. Сейчас в мировом вебе используются новые технологии, и нужно задавать новые вопросы. Однако вы можете извлечь из текста что-то полезное.
Я не даю абстрактных, выдуманных из головы тестовых заданий. Я считаю что это абсурд – на основе быстрого решения какой-то единичной проблемы пытаться сделать выводы о том, насколько человек окажется эффективным сотрудником. Реальную эффективность можно оценить только спустя недели и месяцы реальной работы в команде. Поэтому, когда есть такая возможность, вместо тестовых заданий – я задаю самые различные вопросы, чтобы понять обладает ли кандидат широким кругозором, опытом, развитым ассоциативным и нестандартным мышлением. Я решил опубликовать эту подборку, чтобы кандидаты могли реально оценить свои силы для участия в моих проектах. Continue reading “Тестовое задание для программиста”
Закон сохранения работы
Как все помнят из школьной программы, сумма затраченных работ всегда равна приобретённой работе за вычетом неизбежных потерь. Какое отношение это имеет к управлению проектами? Самое прямое: делаете ли вы быстрый говнокод и часто фиксите баги, либо долго и размеренно работаете по правильным методикам с тестированием и бла-бла-бла, – в любом случае в долгосрочной перспективе результата X вы достигнете через равные промежутки времени.
Теория автоматического обновления (deploy)
Каждый разработчик сайтов и веб-приложений регулярно сталкивается с задачей обновлять свои проекты. Хорошо, если вы работаете в правильной среде и имеете все инструменты для деплоя (deploy). Но что, если нет? Давайте рассмотрим несколько способов и выберем наиболее подходящий.
Continue reading “Теория автоматического обновления (deploy)”
OpenID на своём домене
В интернете полно инструкций о том, как сделать OpenID на своём домене. Практически все они не работают. Не работает так же и скрипт phpMyID, который советует каждый второй вебмастер. Я расскажу вам о том, как сделать то, что будет работать. Continue reading “OpenID на своём домене”