Как в 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;
}
(далее…)

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

Любите грепать логи? Я тоже.Но просто грепать иногда не достаточно. Наверняка многие из вас уже познали основы работы с AWK и уже умеют выводить только интересующие столбцы:

cat *.log | grep -v challenge | awk '{print $5, $3}'
А можно ли посчитать сумму по отфильтрованным полям? Можно!
cat *.log | grep -v challenge | awk '{SUM += $4; print $3} END { print SUM }'
(далее…)

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 Deprecated: The service is private, checking for its existence is deprecated since Symfony 3.2 and will fail in 4.0. at /var/www/app/current/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Container.php:224)"} []
php.INFO: User Deprecated: The service is private, getting it from the container is deprecated since Symfony 3.2 and will fail in 4.0. You should either make the service public, or stop using the container
 directly and use dependency injection instead. {"exception":"[object] (ErrorException(code: 0): User Deprecated: The service is private, getting it from the container is deprecated since Symfony 3.2 and will fail in 4.0. You
 should either make the service public, or stop using the container directly and use dependency injection instead. at vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Container.php:282)"} []
(далее…)

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

Бывают ситуации, когда запиливаешь новый функционал или правишь старый, тестируешь — всё ок. А выкатываешь на продакшен — ничего не работает и вообще ощущение, будто изменения не накатились. Как быть уверенным, что на продакшене крутится именно тот код, который был на него залит? Одним из решений данной проблемы может стать отображение версии текущего билда. Естественно, номерация версий должна быть не ручной, а автоматической. Если вы используете git для ведения репозитория своего проекта, то в качестве номера версии можно использовать хэш-текущего комита + время комита. (далее…)

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

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

yum install caca-utils -y
cacaview var/tmp/9036116903362_623752297389759.jpg
Результат довольно специфичен, но зато быстро и лучше, чем ничего. (далее…)


Любишь мемасики?

Подпишись на мой телеграм-канал!

Открыть
Закрыть