Процесс docker-pr слушает 80 порт?

Одним прекрасным утром Вы можете поднимать проект через docker-compose в котором в том числе есть NGINX, и с удивлением увидеть ошибку

ERROR: for nginx  Cannot start service nginx: driver failed programming external connectivity on endpoint  (5c0f6f0cfff4bffb87c94581b7a030859d78e8b77602d6ea59e9bce72d158b25): Bind for 0.0.0.0:80 failed: port is already allocated
Читать далее

Тип перечисления ENUM в PostgreSQL.

 Для ситуаций когда значения поля в таблице PostgreSQL имеет ограниченное количество строковых значений, для использования отлично подходит тип Enums, который предварительно создаем, а потом используем при создании поля в таблице.

Читать далее

PSR-18 HTTP клиент.

В этом документе описывается общий интерфейс для отправки HTTP-запросов и получения HTTP-ответов.

Данная статья, это авторский перевод, описания стандарта. С оригиналом описания Вы можете ознакомиться здесь.

Читать далее

Шаблон проектирования Bridge (Мост).

Паттерн Bridge решает проблему отделения абстракции от ее реализации, чтобы они могли изменяться независимо друг от друга. Шаблон Мост относится к группе структурных паттернов в книге от банды четырех.

Читать далее

Шаблон проектирования Proxy (заместитель).

Паттерн proxy (он же паттерн заместитель) — это структурный паттерн из книги банды четырех.

Прокси — это объект посередине, это подмена реального объекта, прокси класс замещает реальный объект. Вместо того, чтобы клиент напрямую вызывал какой-либо объектный метод, входящий вызов сначала получает объект прокси, и взаимодействие с методами реального объекта уже происходит через него.

Прокси похож на паттерн декоратор, но декоратор это всегда привнесение нового функционала, а паттерн прокси имеет цель именно подмену реального объекта на объект прокси. 

Читать далее

Сущности Entity в DDD.

Зачастую в нашем домене имеются модели, требующие быть уникально идентифицированными в рамках нашего приложения.

Например такими моделями могут являться:

  • автомобиль в системе учета транспорта
  • пользователь в приложении
  • заказ в интернет магазине

Все они должны иметь уникальный идентификатор, чтобы мы могли отличать их от аналогичных. 

Читать далее