155 lines
18 KiB
Markdown
155 lines
18 KiB
Markdown
---
|
||
gitea: none
|
||
include_toc: true
|
||
---
|
||
|
||
# my utility belt
|
||
|
||
Набор различных полезных инструментов и утилит, которые могут пригодиться в повседневной работе и которые помогают лично мне. Описанное здесь обычно не присутствует публично где-то еще (т.е. это не список вида "https://regex101.com - полезный сайт для теста регулярок"), но это пока - позже я и внешние полезные инструменты накидаю. Список будет дополняться по мере необходимости. Актуально для RetailCRM.
|
||
|
||
Выше основного заголовка есть навигация по файлу - надпись `Table of Contents` со стрелочкой слева. Она _кликабельна_, по клику на нее развернется список заголовков в файле. Пользуйтесь ею.
|
||
|
||
## Зеркало 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`
|
||
|
||
В секции "Логин техподдержки" нажмите "Обновить" чтобы в списке появились все почты для входа в системы техподдержки. По клику на почту произойдет копирование ее в буфер обмена. "Пароль техподдержки" позволяет удобно хранить пароль техподдержки и в любой момент скопировать его в буфер обмена. "Доступы в тестовую CRM" тоже позволяют удобно хранить и использовать данные тестовой системы; нажмите "Обновить" чтобы заполнить эти данные. Остальные пункты просто позволяют быстро сделать скриншот или запись экрана, что, опять же, полезно при работе с техподдержкой.
|
||
|
||
Код скрипта страшноват т.к. мне достаточно было чтобы оно просто как-то работало.
|
||
|
||
## Раскукоживатель скриншотеров - переходим по прямой ссылке на картинку скриншот-сервиса
|
||
|
||
Автоматически редиректит ссылки нескольких популярных скриншот-сервисов на прямую ссылку на картинку. Ставится через [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-версия работает кривовато т.к. толком не поддерживается и собирается энтузиастами.
|
||
|
||
## Выключаем оповещения от Mattermost во внерабочее время (Android)
|
||
|
||
В Slack имеется настройка, которая позволяет указать в какое время уведомления будут доставляться. Аналога в Mattermost нет. На домашнем ПК можно просто не ставить Mattermost или закрыть его после работы, а вот на телефоне так не выйдет - там ведь push-уведомления приходят, которые просто так не скрыть. Однако, проблема решаема:
|
||
1. ~~Покупаем приложение [Buzzkill](https://play.google.com/store/apps/details?id=com.samruston.buzzkill) в GPlay~~ ах да, гугель ведь не даст нам это сделать. Для покупки приложений нужно совершить кучу танцев с бубном (TL;DR: идите сразу к слову __пиратим__):
|
||
- завести Oldubil, который может и не завестись (не все операторы в РФ получают сообщения для регистрации);
|
||
- завести Binance и пройти верификацию с паспортом, фоткой, соскобом... молиться, чтобы пропустили;
|
||
- купить USDT или любую другую популярную крипту по P2P-сделке, молиться чтобы не обманули;
|
||
- купить лиры на Oldubil за USDT, молиться чтобы не кинули;
|
||
- поменять платежный аккаунт в гугель-аккаунте, страшно испугаться предложением потерять все свои покупки (спойлер: гугель врет);
|
||
- ждать недельку;
|
||
- добавлять карту Oldubil в гугель-аккаунт с приседаниями с FakeGPS и VPN;
|
||
- пытаться купить приложение только чтобы понять, что гугель как-то пропалил реальный регион и запретил покупки с этой карты. Да, в новых аккаунтах тоже.
|
||
|
||
Долбаный гугель. Искренне желаю им обанкротиться. Начинаем сначала.
|
||
|
||
1. __Пиратим Buzzkill__ т.к. другого варианта банально нет. В том же гугель-поиске пишите `buzzkill app apk`, первая ссылка содержит то, что вам нужно. Птичка напела что-то про `mod` и `yolo`, к чему бы это...
|
||
2. Открываем приложение и даем ему все доступы, которые оно просит.
|
||
3. Настраиваем правило как вам угодно. Я сделал как на картинке ниже. Для интервалов нерабочих часов в будние дни указывайте время так: `18:00 - 9:00`, а чтобы правило действовало весь день выбирайте `00:00 - 23:59` (для субботы и воскресенья подойдет).
|
||
|
||
![Уведомления Mattermost во внерабочее время](buzzkill-rule-mattermost.jpg)
|
||
|
||
В моем случае все уведомления с 6 вечера до 9 утра будут собираться в кучу, а появятся они только в 9 утра. На iOS используйте Focus Mode - менее гибко, но работает.
|
||
|
||
## Используем 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 - мокаем http-запросы в PHP (PSR-18!)
|
||
|
||
Маленькая библиотека на 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 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 - смотрим в http-запросы в stdout
|
||
|
||
Приложение собирается через 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) |