Как в docker смонитовать директорию с нужными правами доступа

Допустим, есть директория куда пишутся логи и она монтируется в контейнер). Соответственно php-fpm по умолчанию запускается от www-data и прав писать у него в эту директорию нет. Как можно решить данную задачу? Рассмотрим 6 способов: (далее…)

Как работает антифрод в платёжных шлюзах и биллинговых системах

Недавно занимался онлайн шопингом и получил отказ продавца выполнять заказ по следующей причине:

Your order did not pass the fraud platform for the following reasons: 1. Distance from Shipping/Billing - 4,213 2. Geological billing mismatch --> GEO location Finland / Card Based in - Russia / Shipping - the US.
(далее…)

Что такое pivot tables или entity–attribute–value (EVA модель)

Существует альтернативный подход к проектированию таблиц в реляционных СУБД. Название полностью отражает суть: развёрнутая таблица (pivot table) представляет из себя развёрнутую на 90 градусов обычную таблицу.То есть названия полей будет располагаться не горизонтально, а вертикально. В минимальной реализации такая таблица будет состоять из двух полей: attribute и value, где attribute будет содержать уникальное имя атрибута, а value - его значение. Отсюда и второе название - entity–attribute–value (EVA модель). Работа с такими таблицами будет напоминать работу с key-value хранилищами. Самое интересное, что таблицы с подобной структурой можно создать в абсолютно любой СУБД и не требует никаких дополнительных настроек. (далее…)

su: failed to execute /usr/bin/zsh: No such file or directory

Подобное сообщение появляется если попытаться залогиниться под пользователям, для которого был установлен альтернативный shell, который был впоследствии удалён. Самый эпик фейл, если этим пользователем является root.

su
Password:
su: failed to execute /usr/bin/zsh: No such file or directory
Но ничего страшного, выход есть! Чтобы поменять оболочку для рута не имея доступа к аккаунту придётся загрузиться с LiveCD и вручную поправить файл /etc/passwd. (далее…)

Как в PHP с помощью Guzzle отправить Raw POST запрос

Довольно частая задача, дёрнуть какой-либо сервис и передать ему данные в POST-запросе, но не через форму, а в виде, например, json или бинарных данных. Такой подход называется RAW POST, когда данные оправляются в теле запроса. С помощью библиотеки Guzzle это можно сделать так: (далее…)

Разбираемся с Doctrine в Symfony 3.4

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

Как в Symfony 3.4 работать с миграциями БД

Симфони мать рот его ебал! Худший php-фреймворк не перестаёт удивлять своей ебанутостью и полным отсутствием user-friendly. На этот раз Symfony 3.4 удивил тем, что в нём нет механизма миграций! То есть жирная ОРМ в нём есть, куча никому не нужны модулей есть, а миграций нет. Их нужно ставить отдельным модулем:

composer require doctrine/doctrine-migrations-bundle
(далее…)

Как в Linux поменять hostname сервера

По сути hostname сервера носит больше информационный характер и не должен влиять на работу приложений. Если у вас более одного сервера, то стоит задуматься о настройке для каждого уникального и понятного имени хоста. Например, server1.evilinside.ru, server2.evilinside.ru и т.п. Однако, если серверов очень много, то можно группировать их по странам, дата-центрам или назначению. Например, node1.dc1.ru.evilinside.ru, node2.dc2.de.evilinside.ru и т.п. Либо можно применить фантазию и называть сервера именами персонажей из любимого художественного произведения. (далее…)

Валидация объектов и их свойств в Symfony 3.4

В Symfony есть встроенные валидаторы данных. Окей, а вы уверены что они работают и валидируют по всем правилам? Столкнулся с ситуацией, в которой валидароты скипали правила описанные в аннотациях объектов. Давайте покажу на примере. Допустим есть класс с пропертями, геттерами и сеттерами, т.е. типичный Data Transfer Object (DTO).

// src/Entity/Author.php
namespace App\Entity;

class Author
{
    public $name;
}
(далее…)