Сообщения

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

Изображение
Есть довольно распространённая потребность в функции, которая могла бы распределять заданную сумму согласно весовым коэффициентам. На первый взгляд, не очень понятно, о чём речь. Приведу примеры.
Распределение скидки на заказ Допустим, интернет-магазин предоставляет клиенту скидку на заказ (по бонусной карте, купону или ещё как-то). Скидка даётся на весь заказ, но её действие нужно пропорционально распределить по товарам, чтобы, например, правильно сформировать кассовый чек (в нём каждую позицию чека нужно расписать: цена до применения скидки и сумма с учётом скидки). Пример:
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 создал ещё каталоги tmp/, sess/…

Shadowsocks на CentOS 7

Изображение
В продолжение статьи по настройке SOCKS 5 прокси-сервера "Socks5 proxy на CentOS 7" настроим ещё один прокси-сервер - Shadowsocks. Тот прокси SOСKS 5 с авторизацией нельзя применить, например, в браузере Firefox, зато отлично можно применить, например, в Telegram. Этот же прокси можно будет применить для любого приложения, поддерживающего прокси. Но тут есть минус, чтобы это заработало, на клиентской машине нужно устанавливать ещё одну программу, которая выступает промежуточным звеном цепочки проксирования.
Основные моменты этой статьи почерпнуты из статьи "Create a SOCKS5 Proxy Server with Shadowsocks on Ubuntu and CentOS 7". Но попутно пришлось столкнуться с некоторыми трудностями.
Поясню для начала вот какой момент, а то сам я не сразу понял, что к чему. Есть несколько реализаций алгоритма прокси сервера Shadowsocks. Наиболее часто мне в сети попадались инструкции по настройке Python реализации, например, статья "Set up Your Own Shadowsocks Server On Debia…

Продление сертификата Let's Encrypt через systemd

Текущий рецеп основан на статье "Renew let’s encrypt SSL via systemd". Изменены только пути и время запуска - для соответствия статье по настройке получения сертификата "Настройка Nginx с Let's Encrypt на CentOS 7". В результате описанных в данной статье действий, сертификат будет обновляться не через cron, а с помощью таймера systemd.
Итак. Шаги для настройки автоматического продления сертификатов (которые выдаются на 90 дней).
1. Создаём сервис systemd:sudo nano /etc/systemd/system/letsencrypt.service Вставляем такое содержимое:
[Unit] Description=Renews letsencrypt certificates After=network.target [Service] Type=oneshot WorkingDirectory=/opt/letsencrypt/ ExecStart=/opt/letsencrypt/letsencrypt-auto renew 2. Создаём таймер для запуска:sudo nano /etc/systemd/system/letsencrypt.timerВставляем такое содержимое:
[Unit] Description=letsencrypt timer [Timer] OnCalendar=*-*-10 02:12:0 Persistent=true Unit=letsencrypt.service [Install] WantedBy=basic.target Это по…

МФУ Panasonic KX-MB2051 на Kubuntu 16.04

Изображение
В первый раз пришлось столкнуться с настройкой устройства фирмы Panasonic для работы в GNU/Linux (если не считать подключение домашнего фотоаппарата Panasonic DMC-LZ5, который автоматом распознаётся). Сначала закрались подозрения, что МФУ Panasonic KX-MB2051 не имеет родных драйверов для Linux. Но оказалось, что драйвера есть, хоть и запрятаны в недрах официального сайта.
Итак, поиск драйверов нужно выполнять на сайте https://www.panasonic.com (а не в официальных залежах CUPS). Прямая ссылка, которую я приведу может вам не помочь, т.к. наверняка она формируется динамически и нет гарантии, что это долгосрочная прямая ссылка (все указанные в статье ссылки в любой момент могут перестать существовать, но есть шанс, что останется логика переходов). Переходим: Support -> Download / Business / Consumer FAX. Далее Download for PC interface software. Тут внизу есть карта.

Кликаем на "Europe" и попадаем в перечень МФУ. Выбираем нужную модель и попадаем автоматически на страницу с …

Socks5 proxy на CentOS 7

Изображение
Введение Всё чаще возникает необходимость отстаивать базовые конституционные права. Эта статья о том, как защитить право на тайну переписки. Самый базовый и простой вариант - настроить прокси соединение (вариант соединения настраивается отдельно в каждом приложении). Это само по себе не даст гарантии, что вашу переписку не прочтут злые хакеры, но позволит "притвориться", что вы ходите на какой-то обычный сайт по HTTPS. Хотя на самом деле это может быть вовсе не сайт, а сервер, например, Telegram.
Чтобы проделать всё описанное в статье, нужно иметь подопытный сервер с CentOS 7 (хотя инструкция подойдёт и для других ОС GNU/Linux), например, купленный VDS или VPS в какой-нибудь стране, где неукоснительно соблюдаются права человека.
Установка и настройка Dante Выбор пал на Dante прокси из-за того, что у него оказался готовый пакет для CentOS (в инструкциях к другим прокси рекомендовалось компилировать из исходников). Сначала настройку делал по статье "Установка Dante Socks…

Полезные запросы к Simpla CMS

Изображение
CMS Simpla пользуется определённой популярностью среди небольших интернет-магазинов. CMS имеет довольно скромные возможности, но при этом есть всё минимально необходимое, чтобы начать продавать сразу после установки. Со временем появляются желания по функционалу, которые можно реализовать только с привлечением программиста. В этой статье я приведу некоторые полезные приёмы, которые может повторить каждый без привлечения программиста, - нужен только доступ к выполнению SQL-запросов. Чаще всего на хостинге есть phpMyAdmin - это идеально подходит. Только выполните резервное копирование перед операциями с базой данных ;-)
Ленивые пользователи В этом движке интернет-магазина покупателям разрешено делать заказы без регистрации. Для пользователя, чаще всего, это удобно. Заказал и забыл про этот интернет-магазин. Для интернет-магазина тоже казалось бы хорошо: снижается сложность оформления заказа, - большее количество человек дойдёт до оформления заказа. Но вот возвратить такого клиента уже с…