Самым популярным инструментом для анализа кода PHP является Codesniffer. Установить его можно как глобально, так и локально. Через композер выглядит это так:

Запуск через:

Настройка Codesniffer это отдельная тема, сейчас пойдет речь про авто запуск этой команды. Чтобы не запускать каждый раз перед коммитом или пушем, можно привязать запуск на git webhooks. Все хуки лежат в папке .git\hooks. Возьмем к примеру файл pre-commit.sample, событие вызывается до коммита. Этот хук легче всего тестировать локально, так что и другие скрипты, необходимые для других хуков, можно потренировать «на кошках» Для начала нужно переименовать или создать новый файл с именем pre-commit. Вставить туда вот такой код

Подведение итогов года 2019

Под конец года принято писать про итоги и произошедшие события за год. Что ж, даже несмотря на то, что все эти «топы и итоги» окутаны хайповостью и кликбейстностью, опутаны бородатостью и пахнут вермутом бьянко, и моя натура, относящаяся с критическим мышлением к таким вещам, не хотела вливаться в этот поток. Но пульсирующая мысль, корнем, которого было где то невпопад прочитанная: «Что не записано, того не было», не давало покоя. Кажется, это высказывания великого римского историка. Или высказывание моей одноклассницы, постоянно ведшая дневник и писавшая любую мелочь туда. Хотя… больше похоже на девиз бухгалтеров.

Переписал проект Gitlab Webhooks + Redmine, интеграция с помощью вебхуков на Lumen. Основная идея — посмотреть отличия между проектом на чистом PHP и проектом на известном фреймворке. Из побочных эффектов — возможность использования Dependency Injection в тестах. С помощью Laravel Service Container and PHPUnit сделать это легко. Исходный код лежит в репозиторий: https://github.com/Carsak/GitlabWebhookExample

Gitlab webbhooks + Redmine

Задача — при создании мерж реквеста(pull request) в Gitlab обновлять задачу в Redmine. Например, обновить описание задачи, добавив ссылку на мерж реквест, или отредактировать любое другое поле. Стандартная интеграция из под коробки Gitlab не позволяла это сделать. Было решено делать это через веб хуки. Алгоритм работы: после каждого открытия мерж реквеста отправляется событие на кастомный endpoint. Будет отправляться имя ветки из MR, projectCode-issueId-task-description, откуда будет парситься ID задачи Redmine. Пример имени ветки wh-123456-add-webhooks, где 123456 — это ID задачи.

Список прочитанных книг за осень

Заметка о том, что удалось прочитать за квартал, за эту осень. За три месяца было прочитано четыре книги «Предметно-ориентированное проектирование (DDD)» Эрика Эванса, «Использование Docker» Моуэт Эдриен и «Проект Феникс. Роман о том как DevOps меняет жизнь» авторов Ким Джин, Спаффорд Джордж, Бер Кевин, также книга Mastering Gitlab 12 Packt Publishing Общие впечатления о книгах.

install gitlab on windows 10

Как установить Gitlab в Windows? Первая же ссылка в поисковике дала ответ: Самый легкий способ установить Gitlab в Windows-е — это установить виртуальную машину Linux и уже там установить Gitlab. Пост был опубликован на официальном форуме Гитлаба. Автор кажется не шутить? Хм… А есть ли все таки способ?

Mmock мокирование http запросов- preview

У любого разработчика или даже программы возникает потребность в интеграции с другой программой или микросервисом. Возьмем как частность интеграцию через REST интерфейс. Хорошо если у поставщика есть тестовый API для периода разработки и/или ручного тестирования. А вдруг его нет, или еще не готов, или нужно написать автотесты для адаптера. Что ж в этом случае нам поможет MMock сервер

Желание добавить простой мета тег description привели к установке плагина. Сначала думал, как «ярый» программист, генерировать мета тег через какое нибудь событие в WordPress-e или добавить функцию генератор в шапку сайта. Но решил воспользоваться уже готовыми решениями.

В данный момент идет смена домена с almat.pro на almat.su. Могут возникнуть проблемы с загрузкой картинок из за того что WordPress вставляет абсолютные урлы в посты. Придется заменить домен во всех ссылках. К счастью, проблема не нова и уже существуют готовые плагины для этого UPD:  Замена ссылок завершена, если найдете ошибки, то напишите мне на емаил