Сообщения

Сообщения за 2019

Пропорциональное распределение суммы

Изображение
Есть довольно распространённая потребность в функции, которая могла бы распределять заданную сумму согласно весовым коэффициентам. На первый взгляд, не очень понятно, о чём речь. Приведу примеры. Распределение скидки на заказ Допустим, интернет-магазин предоставляет клиенту скидку на заказ (по бонусной карте, купону или ещё как-то). Скидка даётся на весь заказ, но её действие нужно пропорционально распределить по товарам, чтобы, например, правильно сформировать кассовый чек (в нём каждую позицию чека нужно расписать: цена до применения скидки и сумма с учётом скидки). Пример: 1) Товар №1 - цена 1500 руб. 2) Товар №2 - цена 1700 руб. Итого сумма заказа получается 3200 руб. Допустим, клиенту предоставляется скидка 10%. В данном случае легко посчитать, что скидка в процентах будет одинаковой для каждого товара: 1) Товар №1 - цена со скидкой 1500 - 10% = 1350 руб. 2) Товар №2 - цена со скидкой 1700 - 10% = 1530 руб. Это лёгкий пример, где никакого распределения не потребовалось

Сервер очередей Beanstalkd на Fedora

Изображение
Введение Сервер очередей выручает, когда нужно какие-то задачи выполнять параллельно от основного тела программы. Т.е. какую-то часть логики вынести из основной программы, если выполняемые действия не требуют немедленной синхронной обработки. Установка Установка обычным способом: sudo dnf install beanstalkd Я дополнительно поставил ещё несколько вспомогательных вещей: sudo dnf install PyYAML supervisor Запуск сервера производится через systemd: sudo systemctl start beanstalkd.service Добавить в автозапуск: sudo systemctl enable beanstalkd.service Проверить текущий статус: sudo systemctl status beanstalkd.service или ps ax | grep beanstalkd Краткая справка: man beanstalkd Настройки находятся в файле /etc/sysconfig/beanstalkd Дополнительно я сразу поставил систему мониторинга " Admin console for Beanstalk queue server " по их инструкции (там есть описание и на русском языке) в каталог ~/vhosts/beanstalk-console/www. В каталоге ~/vhosts/beanstalk-console со