Как в 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 […]

Как вывести текущий хэш коммита git-репозитория в приложении или на веб-сайте

Бывают ситуации, когда запиливаешь новый функционал или правишь старый, тестируешь — всё ок. А выкатываешь на продакшен — ничего не работает и вообще ощущение, будто изменения не накатились. Как быть уверенным, что на продакшене крутится именно тот код, который был на него залит? Одним из решений данной проблемы может стать […]

Как в Linux просмотреть jpg изображение в консоли

Достаточно специфическая задача — посмотреть содержимое графического файла не выходя из консоли bash. Причём посмотреть не в виде текста, а в виде изображения. Один из вариантов решения — установить пакет caca-utils и воспользоваться утилитой cacaview: yum install caca-utils -y cacaview var/tmp/9036116903362_623752297389759.jpg Результат довольно специфичен, но зато быстро и лучше, чем ничего.

Как в nginx отдавать ошибки в виде json

При разработке API часто бывает так, что абсолютно все ответы даже с непредвиденными ошибками нужно отдавать в json-формате. В плане PHP, ошибки и эксепшены перехватывать достаточно легко. А вот 500, 502, 504, 404 и прочие ошибки могут генерироваться уже не на стороне PHP, а на стороне веб-сервера, например, nginx. В […]

Как определить, выполняется ли текущая система в виртуальной машине?

Хороший вопрос — является ли Lnux-система реальной железкой или выполняется в виртуальной машине? Для этого можно проверить вывод команды dmesg. Также можно также использовать команду dmidecode, для получения информации из системного BIOS. Далее примеры выполнения команд в разных средах виртуализации. Как определить, что система запущена в внутри KVM? $ dmesg | grep -i virtual […]