Вы пользуетесь putty? Тогда у меня для вас штука, которая умеет копировать настройки из одной сессии в другие (например, поменяли шрифт в Default Session, и желаете применить его во всех остальных).

https://github.com/LogicDaemon/PersonalUseScripts/blob/master/misc/copy_putty_settings.ahk

--
En: For anyone who use putty, I've wrote a GUI utility to copy settings between sessions. Useful, for example, for updating font or term type in all sessions.
Questions welcome.
🔥1
latest_python3.py
11.6 KB
Давно хотел запилить, и вот оно.
github.com/.../latest_python3.py

Скрипт находит последнюю версию python на официальном сайте, опционально: скачивает, в linux собирает из исходника, и ставит в $HOME/.local, а в windows просто скачивает exe и устанавливает пользователю.

Если запустить без параметров, выведется краткая справка; если с -h или --help — подробная

Перед запуском, установите lxml:
pip install lxml packaging
Я сделал свой первый python3 asyncio скрипт. Сравнивает два каталога, и для одинаковых файлов (расположенных по одинаковому под-пути) устанавливает дату более старого.

Нужен, чтобы восстановить даты файлов из бэкапа после git checkout, но только тех, которые не поменялись.

set_older_datetimes_for_same_files.py

P.S. asyncio – какой-то ужас. Легче сразу на go писать.
concurrency в python:

* Threading: работает как ожидается, внедрять можно постепенно в отдельные модули, остальная программа может про это вообще ничего не знать. Но отдельный тред создаётся на каждый чих, либо надо писать собственный пул-менеджер.
* Concurrent.futures: только для простых задач или для одной процедуры (main?), т. к. если таска в pool'е, и попытается запустить другую таску, может случиться дэдлок прямо в этом месте (если пул уже будет заполнен)
* asyncio (async, await): вроде лишен этих недостатков, но требует полного переписывания всего кода. "Постепенное" внедрение невозможно. Все синхронные примитивы, типа стандартного open(), все операции с файлами, все вызовы внешних библиотек, не поддерживающих asyncio, блокируют всю программу целиком.
Коллега посоветовал gevent.
Выглядит хорошо.

from gevent import monkey; monkey.patch_all()
Нашел для python модуль logicmin, минимизирующий логику по таблицам истинности; причем в моём случае оптимизированная логика используется, чтобы объяснить, почему то или иное состояние приводит к определённому действию сервера.

Вроде, то же самое умеет pyeda, но logicmin явно меньше и проще.
С прискорбием узнал, что KC Softwares закрывается :-( SUMo и DUMo больше не работают, и больше никогда работать не будут.

Замены им нет, пока (временно) начал использовать https://github.com/NexovaDev/UpdateHub, но он из нескольких сотен программ видит пару десятков :-(
забавное интервью. Тем, насколько я согласен с Bobuk-ом, и не согласен с интервьюером https://youtu.be/Ro1T-e0455g, особенно в последних ~30 минутах.
Скрипт для бэкапа почты из IMAP4. И бойлерплейт для питонячих скриптов с CLI и чтением конфига (причем параметры конфигурации в CLI и конфиге идентичны, их не надо указывать дважды)
https://t.me/logicdaemon_pub/6
Интересная Copilot-like дополнялка-рефакторилка https://marketplace.visualstudio.com/items?itemName=Morph.rift-vscode https://github.com/morph-labs/rift
Есть фичи, которых нет в Copilot, но нет автоподбора контекста из открытых и соседних файлов (который есть в Copilot).
Модель выбирается: можно использовать OpenAI-шное (если есть токен), но можно и локальные модели GPT4All и HuggingFace.
commit_message.py
20.4 KB
тут в пятницу и сегодня утром запилил генератор commit message по git diff-у, используя gpt4all (тестировал с mistral-7b-openorca.gguf2.Q4_0.gguf но может заработать и с другими моделями).
Есть такая штука, генератор парольных фраз на javascript'е, давно пользуюсь https://www.fourmilab.ch/javascrypt/pass_phrase.html

Кроме парольных фраз, бывает удобно генерировать и e-mail'ы для моего домена.

Открывать новую страницу в браузере и вручную копипастить оттуда надоело, поэтому я запилил (вдохновляясь тем самым javascrypt и его словарем) пару скриптов:

email.ahk — использует буфер обмена в качестве суффикса, и набирает на клавиатуре сгенерированный e-mail. Его предполагается вешать на горячую клавишу;

pass_phrase.ahk — GUI, генерирует e-mail и набор слов в поле, откуда их можно скопировать.

Оба читают %LocalAppData%\_sec\EmailSuffix.txt и дописывают первую строчку к сгенерированному e-mail-у.

Кроме самих скриптов, потребуется wordstab.txt оттуда же.
Режим Agent у Copilot — 💪

С ним сегодня за утро замутил скрипт, который репостит новости с сайта Магти в телегу https://t.me/magticomnews_wonderdays

При этом 99% этого кода Copilot написал сам. И потом ошибки исправлял (после запроса).

https://github.com/LogicDaemon/tgbot/
👍1
Если вы используете Firefox с Dark Reader в режиме Filter, и получаете нечитаемый plaintext (например), откройте
DarkReader → Settings → Advanced → Developer tools → Inversion Fix Editor
и сверху, под
*

INVERT
добавьте
html > body > pre:nth-child(1):not([class])