Если текст файла в vi выводится таким тёмным цветом, который сливается с фоном, из-за чего теряется читабельность, то нужно выполнить команду, которая это поправит:

:set background=dark

Или прописать в файле ~/.vimrc:

set background=dark

Допустим у нас есть данные:

$data = 'My secret data!';

И мы хотим зашифровать их, чтобы позже расшифровать с использованием пароля, например такого:

$password = '1234';

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

$key = sha1($password);

Рекомендуется использовать для шифрования библиотеку OpenSSL: openssl_encrypt(), openssl_decrypt() и вспомогательные функции.

Для начала нужно выбрать метод шифрования, например, aes-128-cbc. Все доступные методы можно посмотреть вызвав функцию openssl_get_cipher_methods().

$method = 'aes-128-cbc';

Теперь нам нужно создать вектор инициализации (IV, Initialization Vector) - случайные данные, на основе которых будет произведено шифрование.

RabbitMQ

Как установить RabbitMQ?

Для windows очень просто - скачать с официального сайта инсталлятор и установить. :)

Плюс нужно прописать в PATH путь к консольным скриптам (c:\Program Files\RabbitMQ Server\rabbitmq_server-{VERSION}\sbin\).

И добавить в .bashrc: alias rabbitmqctl='rabbitmqctl.bat', чтобы удобнее было запускать консольные команды.

Для установки на Linux и macOS инструкции есть на официальном сайте.

Как проверить запущен ли сервис?

Выполнить в консоли:

rabbitmqctl status

Как посмотреть список сообщений и количество сообщений в них?

Выполнить в консоли:

rabbitmqctl list_queues

Как добавить сообщение в очередь из php?

Устанавливаем библиотеку php-amqplib:

composer install php-amqplib/php-amqplib

Создаём объект соединения:

MVP

Minimum viable product - минимально жизнеспособный продукт. Подход в создании продукта, который позволяет как можно раньше получить пользовательский фидбэк, чтобы принимать правильные решения относительно развития продукта. Снижаем затраты и риски на то, что пользователям не нужно, максимизируем усилия на перспективных гипотезах.

Tty и pty

Tty обозначает телетайп, т. е. терминал. Например, порты компьютера, к которым подключены терминалы.

Pty обозначает псевдотелетайп, т. е. программа, которая ведёт себя как терминал, т. е. имеет интерфейсы для ввода и вывода, например, winpty для git bash.

Установить 7-zip.

Переименовать первую часть архива из .tar.gz в .tar.gz.001

Переименовать остальные части, например, .tar.gz.1 в .tar.gz.002 и т. д.

Выделить все части архива, нажать правую кнопку мыши и выбрать в 7-zip пункт меню "Распаковать"

Нажать "OK"

Допустим мы получили данные о текущем состоянии счёта пользователя (по первичному ключу) из mysql, выполнив запрос:

SELECT * FROM `balance` WHERE `user_id` = 1;

Теперь, когда мы знаем сколько у пользователя на счету, нам, например, нужно добавить на счёт определённую сумму. Считаем новую сумму и отправляем запрос на обновление строки:

Чтобы объекты, указанные в конструкторе класса создавались и подгружались автоматически можно использовать autowiring в контейнере зависимостей от symfony.

Устанавливаем DI компонент от symfony:

composer require symfony/dependency-injection

Описываем зависимости:

// создаём строитель контейнера
$container = new \Symfony\Component\DependencyInjection\ContainerBuilder();

// добавляем публичные зависимости с автозагрузкой
$container->autowire(Config::class)->setPublic(true);
$container->autowire(Database::class)->setPublic(true);

// компилируем контейнер
$container->compile();

Опишем простой класс Config, который берёт настройки из внешнего файла:

Можно добавить пользовательские обработчики с помощью следующих функций.

В конце работы скрипта:

void register_shutdown_function ( callable $callback [, mixed $parameter [, mixed $... ]] )

При ошибке:

mixed set_error_handler ( callable $error_handler [, int $error_types = E_ALL | E_STRICT ] )

При исключении:

callable set_exception_handler ( callable $exception_handler )

Страницы