Две профессиональных болезни ООП: наследование и методы

У ООП-программистов есть две профессиональных болезни: наследование и методы. Нет ничего более поганого, чем наследование. Наследованием пытаются имитировать древовидную логическую структуру, когда вышестоящий объект заключает в себе некие базовые особенности, а дочерние объекты реализуют частные отличия.

Лютый ад и баттхерт начинается, когда надо породить объект, не только включающий в себя особенности сразу нескольких дочерних классов, но и имеющий парочку совсем маааленьких отличий. Continue reading “Две профессиональных болезни ООП: наследование и методы”

Багрепорты с продакшена прямо в вашу IDE с автоматическим тайм-трекингом исправлений

Представьте себе: вы разработчик веб-проекта, работаете над решением задач и фиксом багов, не вылезая из своей любимой IDE. Если на продакшене (или на стейдже) случается какой-то баг, то вам прямо в IDE прилетает полная информация о нём, включая id пользователя сайта и полный стек-трейс. Вы фиксите баг, коммитите и пушите его как обычно, а затраченное на него время автоматически трекается в учётной системе – не надо никуда переключаться. Круто? Безусловно.

В этой краткой заметке я расскажу о том, как построить такую систему на примере продукции JetBrains (Rubymine и PHPStorm). Continue reading “Багрепорты с продакшена прямо в вашу IDE с автоматическим тайм-трекингом исправлений”

50 оттенков геморроя: константы и переменные в PHP

Я ненавижу константы в PHP. Когда мне случайно попадается файлик конфигурации проекта, в котором на три страницы перечислены константы с параметрами, мне хочется оторвать руки автору и пришить их в правильное место. Но давайте разберёмся, почему я их так не люблю. Continue reading “50 оттенков геморроя: константы и переменные в PHP”

Jenkins + PHP по-русски: непрерывная интеграция для php-проектов

Jenkins? Сборка? PHP? – спросите вы и сделаете удивлённые глаза О_о. Какое отношение сборка проектов, естественная для большинства компилируемых языков типа C или Java, имеет отношение к проектам на PHP? Они же не компилируются и не “собираются”.

Когда я искал материалы по непрерывной интеграции (continuous integration), мне так и не удалось найти ни одной простой статьи, где простым русским языком объяснялось бы – зачем (нафига) всё это надо применительно к PHP. Поэтому в посте я расскажу, во-первых, что к чему, а во-вторых – как это использовать в повседневной жизни. Continue reading “Jenkins + PHP по-русски: непрерывная интеграция для php-проектов”