Loess.ru

having fun

Pyinstaller+Alembic

При упаковке работающего Py-кода с миграциями alembic возникает множество проблем, с ходу погуглив которые — не решить:

Для нормальной компиляции в Venv и вывода проблем при запуске бинарника — необходимо запускать Pyinstaller модулем прям там:
./venv/bin/python3 -m PyInstaller -d bootloader [other args]

«Can't find Python file env.py» лечится добавлением папки миграций к бинарнику --add-data — файлы распаковываются в /tmp/ вместе с остальными исполняемыми файлами (https://ru.stackoverflow.com/questions/1360697/%D0%9A%D0%B0%D0%BA-%D0%B4%D0%BE%D0%B1%D0%B0%D0%B2%D0%B8%D1%82%D1%8C-%D0%BD%D0%B5%D1%81%D0%BA%D0%BE%D0%BB%D1%8C%D0%BA%D0%BE-%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2-%D0%BA-exe-add-data)

env.py должен быть совместимым с целевой ОС: «No module named 'logging.config'» при запуске собранного бинарника — не лечится добавлением --hidden-import, но лечится закомменчиванием строк fileConfig() в env.py и добавлением опций из alembic.ini в скрипт: alembic_cfg.set_main_option(…)
«Warning When using programmatic configuration, make sure the env.py file in use is compatible with the target configuration; including that the call to Python logging.fileConfig() is omitted if the programmatic configuration doesn’t actually include logging directives.»
(WARNING at https://alembic.sqlalchemy.org/en/latest/api/config.html)

Пути в скрипте миграций должны иметь явное указание или на директорию, откуда запускается бинарник, или на /tmp/_MEI…, второе можно сделать с sys._MEIPASS (https://stackoverflow.com/questions/51060894/adding-a-data-file-in-pyinstaller-using-the-onefile-option , example)

«Path ... is not represented in current version locations» чинится указанием:
alembic_cfg.set_main_option('script_location','relative/folder')
alembic_cfg.set_main_option('version_locations','same as script_location param[/subdir]')

Flipper Zero unlocked region tx firmware

По-умолчанию Флиппер умеет читать все частоты, но передавать — только по фиксированным после прошивки (https://docs.flipperzero.one/sub-ghz/read).
При обновлении прошивки через qFlipper (https://docs.flipperzero.one/basics/firmware-update) регион детектируется вероятнее всего, по ip, с которого скачивается прошивка, но говорят, что по совокупности показателей. Устанавливается соответствующий регион, который написан примерно как «HW: R1, provisioned R2».

Нашёл последнюю кастомную прошивку со всеми разлоченными частотами и дополнительными плюшками: https://github.com/DarkFlippers/unleashed-firmware/tags -> https://github.com/UberGuidoZ/unleashed-firmware/tags, можно сразу брать и заливать файлом через qFlipper
Ещё инструменты: https://flippermaker.github.io/
Ещё приложения под прошивку unleashed: https://github.com/RogueMaster/flipperzero-firmware-wPlugins

Эксперимент Базермана: Боязнь потерять и её эксплуатация

Очередное когнитивное искажение: Мы теряем постоянно драгоценные секунды жизни в попытках удержать то. что уже есть

Правила аукциона
У эксперимента простые правила:
Профессор проводит аукцион, на котором продаёт банкноту в 20 долларов.
Начальная стоимость банкноты — 1 доллар.
Участники по классическим правилам любого аукциона называют свои ставки. Шаг ставок — 1 доллар. Ставки можно поднимать сколь угодно долго. Банкнота достанется тому, кто сделал самую большую, никем не перебитую ставку. Победитель выплачивает профессору сумму своей ставки.
Важное условие: участник, который оказался вторым, — последним предлагал свою ставку перед итоговым победителем, — должен выплатить профессору сумму своей итоговой ставки.

…эксперимент обычно завершается, когда у одного из участников заканчиваются деньги.

https://habr.com/ru/post/596543/

Пиринговые войны, или как получить повышение на службе

Обратите внимание, древние все эту тактику и стратегию «провайдерских» отношений давным давно разработали и применяли в структуре устройства императорских дворов, министерств, госкорпораций и других иерархически устроенных бизнесов и предприятий. Любая иерархия крепнет, если в ней устанавливаются и вверх, и вниз связи через одно звено. Иерархия становится «ватной», если связи непосредственные. Организация превращается в стальную крепко склепанную конструкцию, не способную на гибкость и развитие, если иерархия построена на сквозной «вертикали власти». В подтверждение этого шашечного принципа «хождения» через один уровень есть много профессиональных управленческих заветов. Например, «разделяй и властвуй» или «заместитель никогда не должен становиться первым». Именно поэтому, настоящий функционер приобретает неуязвимость лишь тогда, когда налаживает устойчивую связь с начальником своего начальника, а себя от подчиненных отгораживает замами. А вот когда в иерархии уже видна вершина, то надо считать уровни, чтоб не оказаться на четном. В противном случае, при росте угодишь на уровень 2, т.е. на уровень замов и обнулишь вероятность попаданя на место №1. В лучшем случае – вечный зам. Поэтому на подходах иногда выгоднее отступить на ступеньку вниз или надоумить шефа создать себе институт замов и, тем самым, сформировать условия для обустройства засады на перспективном нечетном уровне :))

http://kipchatov.ru/blog/-p=202.htm(pdf)

Удобный self-hosted список задач (ToDo list) с синхронизацией в NextCloud

Ставим NextCloud на выделенный IP
Ставим Nginx-proxy для подключения к нему по SSL
На телефон — ставим F-Droid
Устанавливаем tasks.org из F-Droid

Открываем tasks.org, авторизуемся на сервере NextCloud с помощью CalDAV

Создаём виджет на экране, и ставим галочку в «настройки — внешний вид — Временно показывать задачи после завершения», получаем что-то вроде:

Туда же можно подключить синхронизацию закладок браузеров с помощью Floccus

Windows RDP bruteforce logging

Включаем аудит: secpol.msc -> Local Policy > Audit Policy and right click the Audit account logon events policy option and choose Properties
Смотрим журнал: eventvwr.msc -> Windows logs — Security

Решения: использовать адреслисты по превышению трафика/соединений, port-knocking, VPN, фильтр по ip

Установка streamripper

Качаем темплейт деб 10 потому что на пве6.3 (под управлением деб10) образ 11 деб не работает
заводим CT деб 10
Добавляем публичный ключ putty в /root/.ssh/authorized_keys
смотрим локалю, если её нет и кракозябры — делаем dpkg-reconfigure locales, перезагружаемся
коннектимся в консоль, cкачиваем стримриппер https://sourceforge.net/projects/streamripper/files/streamripper%20%28current%29/1.64.6/

apt install gcc glib2.0 libogg-dev libvorbis-dev make
./configure
make

./streamripper http://chill.friskyradio.com/frisky_aac_high -r 8008 -z -L playlist.pls -t -o version -D "%S/%1q %A - %T" --xs_offset=3000

делаем демона /etc/systemd:

[Unit]
Description=streamripper-frisky
After=network-online.target
Wants=network-online.target systemd-networkd-wait-online.service

StartLimitIntervalSec=500
StartLimitBurst=5

[Service]
Restart=on-failure
RestartSec=10s

ExecStart=/path/to/streamripper-1.64.6/streamripper http://chill.friskyradio.com/frisky_aac_high -r 8008 -z -L playlist.pls -o version -t -D '/path/to/FriskyChill/%%1q %%A - %%T' --xs_offset=3000

[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable streamripper-frisky
apt install incron

Добавляем юзера в /etc/incron.allow

incrontab -e

ебёмся с тем, что инкронтаб вообще никак не умеет обрабатывать пути с пробелами,

тыкаем галку «Disable application keypad mode» in PuTTY (on the Features panel) для того, чтобы нумпад наконец-то заработал

пишем скрипт, на вход которому скармливаем параметр для выгрузки файла в тг:

/path/to/FriskyChill       IN_CREATE,IN_MOVED_TO   /path/to/py-frisky-bot/py-frisky-bot.py "$@/$#" $% >> /path/to/py-frisky-bot/py-frisky-bot.log 2>&1

Осознаём, что файлы больше 50 мб ботами в телегу не выгружаются, и делаем http-сервер и отправку урла в чат вместо аудио.

Получаем что-то типа этого: https://t.me/FriskyChill
Подписывайтесь! =)