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

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

4 месяца после UMI.CMS (автобиографический пост)

Мой уход из Юми был похож на бегство. Так сложилось, что я не мог больше выносить тех физических условий работы, той неуловимой, но крайне досадной разницы во взглядах на направления развития бизнеса, и вечной нехватки средств на развитие.

Я перешёл в хайлоад-проект, связанный с дейтингом и прочими убивающими время развлечениями. Аудитория проекта измеряется десятками миллионов человек – это вам не хрен собачий. Несколько сотен серверов, большой отдел фуллтайм-админов и огромное количество сетевого оборудования.

Что я здесь увидел?

В первую очередь, я увидел программерскую контору, в которой действительно есть деньги. Если начальство вам втирает, что везде по рынку зарплата программиста в пределах 100 тысяч и офис на 200-300 квадратов максимум – не верьте. Враньё. Continue reading “4 месяца после UMI.CMS (автобиографический пост)”

Образ VM для UMI.CMS, настройка сервера под Юми

Многие спрашивают: где достать готовый образ виртуальной машины – образ VM для UMI.CMS, чтобы настройка сервера под Юми не занимала слишком много времени у начинающих разработчиков.

На самом деле всё гораздо проще. Выкиньте из головы всю эту возню с “готовыми окружениями” и прочей ерундой. Чтобы стать профессионалом, надо разбираться в технологиях, а не пользоваться готовыми решениями от какого-нибудь доброго дяди. Поставьте убунту-сервер (установка не сложнее винды), при установке из доп.софта выберите только OpenSSH. После установки выполните эти команды: Continue reading “Образ VM для UMI.CMS, настройка сервера под Юми”

Ежедневно стабильный проект, и релизы по чёткому графику? Легко!

У многих компаний-разработчиков цикл развития программного продукта выглядит так:

– делаем, делаем, делаем (при этом тестировщики особо не в напряге);
– тестируем (при этом производство новых фич стоит, а тестировщики взмылены до предела);
– собираем и выпускаем (тут тестировщки снова почти бездельничают);
– некоторое время ждём багрепортов (начинать что-то новоё и сложное – стрёмно, а то вдруг придётся перевыпускать релиз).

Надеюсь, всем очевидно что такая схема неоптимальна. Неравномерно загружено производство, неравномерно заняты тестировщики. А значит, бюджет компании используется неэффективно. Кроме того, настройка регулярного графика выхода релизов кажется задачей из области ненаучной фантастики, так как никто не может чётко сказать сколько по времени займёт процесс “делаем-чиним-выпускаем” в текущей итерации. Для многих это вообще естественное положение вещей.

В этом посте я переключу ваш мозг на 180 градусов и расскажу как сделать, чтобы вы смогли пообещать релизиться каждые N дней и выполняли это обещание лёгким движением руки. При этом каждый раз доставали, словно чёртика из коробочки, несколько клёвых киллинг-фич. Continue reading “Ежедневно стабильный проект, и релизы по чёткому графику? Легко!”

Новый релиз UMI.CMS 2.8.4.1

Мы выпустили минорный релиз 2.8.4.1

В числе нововведений:
– фильтрация картинок через gdlib,
– вывод var_dump при “горящей” отладке в продакшене виден только разработчику (и не виден посетителям),
– десяток мелких улучшений в интерфейсах админки,
– подключение к Merchant API ВКонтакта.

Подробности

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

Мониторинг сайта: как первым узнать, когда что-то сломалось

Этот пост адресован менеджерам проектов по сайтам, а так же тем, кому это ещё предстоит в будущем. Итак, вы ведёте проект по разработке или поддержке сайта. Под вашим руководством работает несколько человек, а так же какие-то правки вносят другие люди – блоггеры, контентщики, сеошники. По хорошему надо ставить все задачи в таск-менеджер, но мы-то с вами знаем, что это не панацея. Ваш руководитель любит пробегать мимо и разбрасывать устные указания. Часть изменений вы вносите в личном общении с верстальщиками. А люди из соседнего отдела вообще вносят мелкие правки и слышать не хотят о том, что вы менеджер и должны контролировать этот процесс.

При этом, если вы с верстальщиками компетентны в плане корректного html-кода, то остальные участники могут тупо редактировать контент через “визуальный редактор” в админке, снося таким образом все тщательно выверенные стили и яваскрипты. Более того, я встречал менеджеров, которые даже не догадываются что когда два человека одновременно редактируют страницу – изменения одного из них всегда будут утеряны. Они уверены в том, что админка “сведёт” их правки воедино, как это сделали бы системы контроля исходного кода (svn). А если к сайту имеет доступ ещё и сам клиент..

Итак, вы менеджер по этому сайту, и у вас ум за разум заходит при попытке контролировать всё и вся. На вас выливают ушаты помоев за то, что на какой-то странице какая-то точка стоит не там где надо. По-хорошему надо было с самого начала писать тесты, но время утеряно, тестов нет, а контролировать надо прямо сейчас. Как? Continue reading “Мониторинг сайта: как первым узнать, когда что-то сломалось”

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

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

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

Как выбирать программистов

Профессиональный программист – это совсем не тот человек, который способен писать сложные SQL-запросы, разбираться в виртуальных деструкторах, и знать все нововведния в последней версии языка PHP. В реальной жизни опытный менеджер ожидает от программиста совсем другие качества:

Программист не должен быть абстрактным творцом

Каждый может взять готовый паттерн или с нуля придумать абстрактное хранилище данных. Это не сложно, но это только половина дела. Если в реальности твоё хранилище при попытке выбрать “все зелёные объекты массой от 10 до 50 кг, которые были куплены не менее 2-х раз за текущую неделю” на несколько секунд вешает выделенный сервак – то грош цена твоей красивой абстракции.

Continue reading “Как выбирать программистов”