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

The REAL math

Мнимые числа реальны: #1-13 [Welch Labs]
«Откуда вообще берутся новые числа, что такое комплексная плоскость, как представить четыре измерения в нашем трёхмерном мире, и почему мнимые числа более чем реальны.»

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

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

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

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

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

NSA Green Lambert for OS X rootkit investigation

Green Lambert is described as an “active implant” and “the only one where non-Windows variants have been found.”

“C2 jitter, secure erase / uninstall, SSL/TLS+extra crypto, size below 150K, encrypt logs and local collection, decrypt strings on the fly in mem… simply following these guidelines immediately makes the malware (“tools”) more interesting and, recognizable by a skilled analyst.”

https://objective-see.com/blog/blog_0x68.html (pdf)

Про сон

Сумбурная копипаста с кучей информации на одной странице https://habr.com/ru/company/timeweb/blog/579626/. В т.ч. — написано и про глицин, и про мелатонин, и про ГАМК

Ася Казанцева <3 «Зачем нужно спать и как делать это правильно?»:

Вячеслав Дубынин. Мозг и сон (основная лекция, по материалам которой собрана выжимка на хабре):

Установка 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
Подписывайтесь! =)