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

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

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 Но ничего страшного, выход есть! Чтобы поменять оболочку для рута не имея доступа […]

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

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

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

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

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

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

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

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

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

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

Продвинутая работа с grep и awk: сумма и группировка строк

Любите грепать логи? Я тоже.Но просто грепать иногда не достаточно. Наверняка многие из вас уже познали основы работы с AWK и уже умеют выводить только интересующие столбцы: cat *.log | grep -v challenge | awk ‘{print $5, $3}’ А можно ли посчитать сумму по отфильтрованным полям? Можно! cat *.log | […]

security.INFO: Populated the TokenStorage with an anonymous Token.

Продолжая изучать файл prod.log, можно заметить ещё одно странное сообщение: security.INFO: Populated the TokenStorage with an anonymous Token. Это сообщение генерируется в файле vendor\symfony\symfony\src\Symfony\Component\Security\Http\Firewall\AnonymousAuthenticationListener.php

The service is private, checking for its existence is deprecated since Symfony 3.2 and will fail in 4.0.

Иногда полезно заглядывать в файл prod.log вашего Symfony приложения, чтобы понимать что в нём происходит во время выполнения. Иногда там можно видеть странные вещи, например: php.INFO: User Deprecated: The service is private, checking for its existence is deprecated since Symfony 3.2 and will fail in 4.0. {«exception»:»[object] (ErrorException(code: 0): User […]