Что ждать от внедрения Istio? (Андрей Половов, Флант, Kuber Conf 2021)
Istio в разрезе: что умеет и не умеет самый популярный Service Mesh (А. Половов, DevOpsConf 2023)
Istio: распределенное приложение (Алексей Колосков Hilbert Team, DevOpsConf 2023)
(позже)
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 доллар. Ставки можно поднимать сколь угодно долго. Банкнота достанется тому, кто сделал самую большую, никем не перебитую ставку. Победитель выплачивает профессору сумму своей ставки.
Важное условие: участник, который оказался вторым, — последним предлагал свою ставку перед итоговым победителем, — должен выплатить профессору сумму своей итоговой ставки.
…эксперимент обычно завершается, когда у одного из участников заканчиваются деньги.
Календарь для распечатки 2022
дальше — больше
Read More
Fundamentals of personal effectiveness
Jordan Peterson’s Life Advice Will Change Your Future (MUST WATCH)
The Choice We All Have , But Only a Few Apply It | Jordan Peterson
ответственность, стоимость жизни, продуктивность, challenges
Пиринговые войны, или как получить повышение на службе
Обратите внимание, древние все эту тактику и стратегию «провайдерских» отношений давным давно разработали и применяли в структуре устройства императорских дворов, министерств, госкорпораций и других иерархически устроенных бизнесов и предприятий. Любая иерархия крепнет, если в ней устанавливаются и вверх, и вниз связи через одно звено. Иерархия становится «ватной», если связи непосредственные. Организация превращается в стальную крепко склепанную конструкцию, не способную на гибкость и развитие, если иерархия построена на сквозной «вертикали власти». В подтверждение этого шашечного принципа «хождения» через один уровень есть много профессиональных управленческих заветов. Например, «разделяй и властвуй» или «заместитель никогда не должен становиться первым». Именно поэтому, настоящий функционер приобретает неуязвимость лишь тогда, когда налаживает устойчивую связь с начальником своего начальника, а себя от подчиненных отгораживает замами. А вот когда в иерархии уже видна вершина, то надо считать уровни, чтоб не оказаться на четном. В противном случае, при росте угодишь на уровень 2, т.е. на уровень замов и обнулишь вероятность попаданя на место №1. В лучшем случае – вечный зам. Поэтому на подходах иногда выгоднее отступить на ступеньку вниз или надоумить шефа создать себе институт замов и, тем самым, сформировать условия для обустройства засады на перспективном нечетном уровне :))
Удобный 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
Установка 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
Подписывайтесь! =)