utility-belt/README.md

123 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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)
### Простейший мок-сервер для 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)