--- gitea: none include_toc: true --- # my utility belt Набор различных полезных инструментов и утилит, которые могут пригодиться в повседневной работе и которые помогают лично мне. Описанное здесь обычно не присутствует публично где-то еще (т.е. это не список вида "https://regex101.com - полезный сайт для теста регулярок"). Список будет дополняться по мере необходимости. Актуально для RetailCRM. Выше основного заголовка есть навигация по файлу - _пользуйтесь ею_. ## Зеркало GitHub компании Зеркало публичных репозиториев компании на GitHub. Содержит ТОЛЬКО публичные репозитории, обновляется автоматически. Может помочь если GitHub лежит или если GitHub начнет банить аккаунты, которые ему не нравятся. - [Ссылка](https://gitea.neur0tx.site/RetailCRM) ## Быстрое меню Простейший скрипт на bash, который позволяет вывести удобную менюшку для повседневных действий вроде копирования пароля техподдержки или перехода в свою тестовую систему. Совместимо с Argos в Gnome, можно допилить и для работы в macOS с xbar (у меня пока руки не дошли, к сожалению). Установка: 1. Устанавливаем [Argos](https://extensions.gnome.org/extension/1176/argos/). Иногда он не работает и нужно ставить с github версию. 2. ```sh mkdir -p ~/.config/argos && curl -o ~/.config/argos/menu.+.sh https://gitea.neur0tx.site/Neur0toxine/utility-belt/raw/branch/master/menu.+.sh ``` Обязательные зависимости: `jq zenity`, `xclip` или `wl-copy`, `xargs inotify curl jq bash` Дополнительные зависимости (без них связанные пункты меню просто ничего не делают): - `flameshot` - `peek` - `simplescreenrecorder` - `wmctrl` - `xdotool` Код скрипта страшноват т.к. мне достаточно было чтобы оно просто как-то работало. ## Раскукоживатель скриншотеров Автоматически редиректит ссылки нескольких популярных скриншот-сервисов на прямую ссылку на картинку. Ставится через [Violentmonkey](https://violentmonkey.github.io) или любое другое расширение для юзерскриптов. Поддерживает Joxi, Monosnap, Nimbus, Lightshot, ibb.co, scr.sh. Цель проста - не видеть рекламу и прочую бесполезную шелуху на странице скриншот-сервисов. - [Ссылка на установку](/Neur0toxine/utility-belt/raw/branch/master/screenshot-unwrap.user.js) ## Редирект ссылок Mattermost в приложение Mattermost может "забывать" о том, что ссылки нужно редиректить в приложение. В таком случае вместо перехода в приложение открывается страница с кнопкой SSO или сам Mattermost в браузере (если уже залогинены). Юзерскрипт автоматически редиректит такие ссылки в приложение. Ставится через [Violentmonkey](https://violentmonkey.github.io) или любое другое расширение для юзерскриптов. - [Ссылка на установку](/Neur0toxine/utility-belt/raw/branch/master/screenshot-unwrap.user.js) В дистрибутивах Linux может сразу не работать. Лечится так: ```sh # mattermost-desktop.desktop должен лежать в /usr/share/applications и содержать строчку MimeType=x-scheme-handler/mattermost; xdg-mime default mattermost-desktop.desktop x-scheme-handler/mattermost ``` Если Mattermost ставили из Flatpak - удаляйте и ставьте нативный. Flatpak-версия работает кривовато т.к. толком не поддерживается и собирается энтузиастами. ## Используем RNNoise (нейронковый шумодав) в Linux ВНИМАНИЕ: нижеуказанные действия могут оставить вашу систему **без звука**, будьте ПРЕДЕЛЬНО аккуратны. 1. Удаляем PulseAudio по инструкции для вашего дистрибутива. Этот шаг пропускаем если уже используется Pipewire (если в выводе `ps aux | grep pipewire` есть `/usr/bin/pipewire`). Устанавливаем PipeWire по инструкции вашего дистрибутива. [Инструкция для Ubuntu / Debian](https://pipewire-debian.github.io/pipewire-debian/). 2. Ставим [EasyEffects](https://github.com/wwmm/easyeffects) из репозиториев вашего дистрибутива или Flatpak ([инструкция](https://ubuntuhandbook.org/index.php/2021/09/easyeffects-audio-effects-to-pipewire/)). Перезагружаемся. 3. В EasyEffects переходим на "Вход" > "Эффекты" > "Добавить эффекты". Отсюда добавляем "Подавление шума" и "Эхоподавление". После этих действий для подавления шума будет использоваться RNNoise и качества звука улучшится _значительно_. ## pock Маленькая библиотека на PHP, которая позволяет мокать запросы, сделанные из API-клиентов, использующих PSR-18 совместимый http-клиент. Похожа на [gock](https://github.com/h2non/gock) (аналог для ноды - [nook](https://github.com/node-nock/nock) и для питона [pook](https://github.com/h2non/pook)). Код простой и очень сильно покрыт тестами. Используется в некоторых боевых проектах в тестах т.к. [api-client-php](https://github.com/retailcrm/api-client-php) использует PSR-18. - [Ссылка](https://packagist.org/packages/neur0toxine/pock) - [Код на GitHub](https://github.com/Neur0toxine/pock) ## Локальный мок-сервер для метрик Zabbix Простейший мок Zabbix Server, который принимает Zabbix-пакет с метриками и выводит их содержимое. Пока что размер пакета ограничен кибибайтом (попозже поправлю это если понадобится, PR приветствуются). Используется очень просто в докеризированных приложениях: ```yaml # Представим, что это docker-compose.yml services: zabbix: image: "neur0toxine/zabbix-metrics-mock:latest" ``` после чего можно смело указывать `zabbix` как хост Zabbix Server и наблюдать метрики в stdout. - [Ссылка](https://hub.docker.com/r/neur0toxine/zabbix-metrics-mock) - [Код на GitHub](https://github.com/Neur0toxine/zabbix-metrics-mock) ## Локальная альтернатива webhook.site Приложение собирается через go build. Запускается с адресом для прослушивания примерно так: ```sh ./main ":8080" ``` Любой входящий http-запрос выведется в stdout с цветами и всем содержимым. - [Код на GitHub](https://github.com/Neur0toxine/whprintf) В дальнейшем работать с этой штукой будет попроще. ## Образы Go Используются в транспортах и содержат ряд полезных утилит. Обновляются автоматически каждую неделю. - [Ссылка](https://hub.docker.com/r/neur0toxine/golang-alpine) - [Код на GitHub](https://github.com/Neur0toxine/docker-golang-alpine) ## Образы NodeJS Основаны на [этих образах](https://hub.docker.com/r/timbru31/node-alpine-git). Добавлены зависимости, которые позволяют проще собирать бинарники в CI и локально (например, помогает с sass). Обновляются автоматически каждую неделю. - [Ссылка](https://hub.docker.com/r/neur0toxine/node-alpine-git-gyp) - [Код на GitHub](https://github.com/Neur0toxine/docker-node-alpine-git-gyp) ## Для транспортов ### Вспомогательное приложение для отчетов & пакетных операций для транспортов Приложение содержит набор команд, которые позволяют выполнять пакетные операции навроде: - генерации отчетов с верификацией систем / API-ключей / etc; - пакетной смены настроек соединений или аккаунтов. Предоставляется только в виде кода т.к. часто требуется добавить какую-нибудь свою команду для обработки данных или массовых операций. Приложение предоставляет небольшой "фреймворк" для облегчения этого действия, в частности, для простого написания генераторов отчетов из исходных csv-данных. Отчеты при этом генерируются конкуррентным образом (по возможности в несколько потоков). Абсолютно все команды можно увидеть запустив приложение без аргументов. Любая команда с аргументом `help` опишет зачем она нужна и как ей пользоваться. Приложение собирается через `make` (нужен Go 1.18 и выше локально). - [Код на GitHub](https://github.com/Neur0toxine/transport-reports), но сначала получите доступ [у меня](https://t.me/neur0tx). ### Простейший мок-сервер для WhatsApp On-Premises API Умеет принимать вебхук с сообщением и слать статус доставки в ответ. Настраивается через маршрут `/mock`. Требует сборки и запуска локально. Удобной обвязки нет, понять как настроить можно по `server.go`. - [Код на GitHub](https://github.com/Neur0toxine/waba-coreapp-mock) ### Бот для тестов быстрых ответов в транспортах Инструкция по сборке в readme. Бот сам регается в системе. При запуске бинарник укажет обязательные переменные окружения, необязательные можно посмотреть в `main.go`. - [Код на GitHub](https://github.com/Neur0toxine/simla-bot-quickreplies-test)