PHPUnit worst practices

One of my recent larger projects at work was to improve our pretty large PHPUnit test suite, which consists of nearly 7000 test cases. While accomplishing this useful but exhausting work, I made my notes of the most common bad coding, architecture and setup patterns, and this compilation I’d like […]

Кратко об SSO через OAuth2

Устройство SSO Как устроено SSO? Принцип всегда один — всегда есть кто-то, кто авторизует первым — это провайдер. Дальше все сервисы получают от провайдера какой-то вид ключа (токен). Точнее в OAuth2 пара токенов — access и refresh, но не суть. С токеном ты идёшь в API провайдера и спрашиваешь — […]

Booting Eloquent Model Traits

So I’ve learnt a little Laravel/Eloquent trick today that is very much under-documented. Save for a casual mention in the Laravel documentation. Skip to TL;DR if you’re you just want to see the trick. You may know that you can add a static boot() function to an Eloquent model which […]

Ротация функций на практике (feature toggling) 22 января 2013, 17:40

Один из самых распространенных способов параллельной (конкурентной) разработки нескольких функций – применение при контроле версий самостоятельных функциональных веток. В каждой из таких веток конкретная функция разрабатывается отдельно от других, а потом интегрируется в основной рабочий поток, когда разработка данной функции будет завершена. Такой паттерн называется «Feature Branch» (ветвление функций), см. […]

Что такое feature toggle или как избавиться от мучительных мёржей и долгоживущих веток?

Допустим, вы хотите разработать новую фичу, но не уверены, что она понравится пользователям, и вам нужно иметь способ безболезненно её скрыть. Или предположим, что вы работаете над новой большой фичей и хотите избежать монстр-коммитов. Или просто хочется сделать поведение сайта легко конфигурируемым. Как можно решить все эти проблемы, читайте под […]

Using Laravel’s Bootable Eloquent Traits

In this blog post we’ll take a look at using PHP traits with Laravel’s Eloquent models, hooking them up with events and making them configurable. Traits are a useful means of writing DRY code. They provide a way of horizontally sharing logic between classes. Any properties or methods of a […]

Finding Docker container processes from host point of view

You can use docker top command. This command lists all processes running within your container. For instance this command on a single process container on my box displays: UID PID PPID C STIME TTY TIME CMD root 14097 13930 0 23:17 pts/6 00:00:00 /bin/bash All methods mentioned by others are […]

Что будет нового в PHP 8

PHP 8 — следующая мажорная версия, примерная дата релиза конец 2020 года. Итак, PHP 7.4 вышел и должен закончить эпохальную ветку седьмой версии. Столько много всего интересного было в ней реализовано, но разработчики PHP не стоят на месте и уже готовят 8 версию, которая будет содержать в себе много грандиозных […]

Капризы WebSocket и при чём здесь костыли

Протокол WebSocket, как и любые другие протоколы, имеет свои преимущества и свои недостатки. Именно из-за последних появляются новые версии протоколов, новые протоколы и новые подходы к реализации всего, что вокруг них, а конкретно — клиентских и серверных приложений. Хороший сервер — это такой сервер, который учитывает особенности протокола. Хороший клиент […]