Генерация карточек для ANKI с помощью ChatGPT

Который день экспериментирую с возможностями искусственного интеллекта от OpenAI (ChatGPT). Сегодня вдруг вспомнил, что летом писал на python скрипт, который на входе получал список английских слов, а на выходе готовил данные для карточек в Anki. Транскрипцию он брал с одного сайта, “толкование” слова – с другого. Пришлось отлаживать все это, чтобы парсилось корректно. Обрабатывать странные ответы и … В общем, позабыты хлопоты, остановлен бег. Пусть вкалывают роботы, а не человек. За какое-то количество итераций сформировал prompt для ChatGPT, которая сама все это делает.

Автоматическая озвучка на английском

Качество генерации синтетического компьютерного голоса в последнее время возросло настолько, что я не удержался от экспериментов с автоматическим созданием английской аудио-дорожки для youtube роликов. Имеем на входе субтитры, переводим, а на выходе получаем голосовую озвучку, где и не каждый поймет, что это говорит робот. :) https://github.com/KMiNT21/subtitles-to-audio-track В общем, схватился за Jupyter Notebook, TSS от Mozilla и начал активно прожаривать свою видео-карту мозилловской нейросеткой. Больше всего заморочек было с перестройкой субтитров. Оказалось, что универсальных решений быть не может.

Футбольный телеграм бот

Этим летом нашелся приятный повод попрограммировать. А это отличное занятие, чтобы выйти из цикла ежедневного мониторинга военных сводок. В одной из футбольных телеграм-групп “сломался” бот, через который люди собирались на игры. Я загуглил его по названию, нашел статью на хабре от автора. Увидев, что бот написан на Node.js, перехотел смотреть исходники. Решил почитать как в целом они пишутся, и какие у них есть возможности. И так залип, что не мог остановиться, пока к ночи не сделал уже рабочий вариант на python, которым можно было бы пользоваться в группе.

OpenCV/Python: Reatime ball tracking DEMO

Хоть я пока и не оставил попыток найти подходящий вариант датчиков попадания мяча (с тензометрическими не вышло), решил-таки, наконец, попробовать и распознавание с изображений (видео-поток в режиме реального времени).Мяч отслеживает хорошо, но дальше вопросы посложней. Надо теперь как-то анализировать эту базу 2D координат. Например, посчитать, сколько было резких изменений траектории (т.е. отскоков мяча).Сначала надо каким-то алгоритмом выполнить компрессию, убрав лишние (избыточные) точки на траектории. А потом с помощью метода интерполяции (нашел на stackoverflow) найти и посчитать все эти отскоки.

Контроллер №2

В процессе проектирования новой версии контроллера (сразу с внутренним БП и 4-мя управляемыми розетками 220В) я уже жалел, что затеял его в OpenSCAD. Столько формул и привязок пришлось писать, что мозги часто закипали. Не-не-не, для более-менее сложных объектов буду брать теперь SolidWorks. Но, к счастью, снова с размерами нигде критично не промазал, потому перепечатывать не пришлось. Разве что розетки чуть-чуть пришлось подправить канцелярским ножом, бо слишком тяжело вставлялись. А вчера, наконец, появились саморезы необходимого размера, так что появился повод уже допаять все до конца и протестировать.

Парадок Монти-Холла -> симуляция

Попался мне на одном канале сюжет про парадокс Монти-Холла. Про ту игру, в которой три двери, за которыми автомобиль и две козы. Давным-давно я даже по телевизору это видел, вроде бы. Захотелось вспомнить детство, когда я на “ZX Spectrum” написал симулятор игры в казино, где проверялась стратегия удвоения ставок (мартингейл), которую я тогда и придумал. Решил на python написать симуляцию этой телевизионной игры с выбором дверей. Причем, написать так, чтобы код был максимально нагляден даже для непрограммистов.

Portsnap fetch update...

Попалось на глаза видео “FreeBSD | Обзор, мнение, пригодность для десктопа”. Что-то ностальгическое отозвалось в голове. Дай, думаю, включу. Ну и слушал в фоне ролик, пока там про обновление портов не началось. Вспоминаю, что и мне не помешало бы. Захожу на Debian и … почти начинаю писать “portsnap fetch update”. 🙂 Вот это впечаталось. Хотя я даже и вспомнить уже не могу когда FreeBSD перестал использовать. Но их “порты” в момент первого знакомства с этой системой мне очень пригодились.

Контроллер №1

Последний этап создания контроллера для теплицы меня даже затянул. Тут и попрограммировать раздолье, и интерфейс порисовать. То туда сдвинуть на несколько пикселей, то сюда, то пиктограммки захотелось добавить. В конце еще и OTA добавил (удаленная перепрошивка микроконтроллера по WiFi). А 3D модель сделал на удивление точную по размерам. Все с первого раза совпало. Разве что улучшить пару моментов захотелось, да корпус покрепче напечатать. Но это как-нибудь позже.

Прошел все круги ада с этими микроконтроллерами

В конце нескольких часов паяния вдруг обнаружилось, что Wemos D1 mini не видит WiFi… А нормально выпаять там нереально, так что разрушил все и начал с нуля с другим микро-контроллером (ESP-12E). То начались непонятные перезагрузки модуля, как только управляющий пин управлял мосфетом с включенной индуктивной нагрузкой. И защитные диоды, гасящие обратный ток, и сглаживающие конденсаторы везде, где только есть смысл. И даже психанул и полностью переписал прошивку, сделав ее совместимой командами с оупэнсорсной Tasmota, которую часто используют вместо родной Sonoff (и еще целой кучи устройств).

Программирование микроконтроллеров на C и Python

Сижу тут, пишу себе прошивку для микроконтроллера esp8266 на C и ловлю себя на мысли: до чего же иногда уже раздражает писать примитивную низкоуровневую логику. Принять по MQTT char *topic, пройтись в цикле по каждому char, сделать tolower(), потому что там нет strcmpi(), потом делать strcmp()… Как же к хорошему (к Python) привыкаешь. :) На нем программирование превращается в процесс творения. А на Си это какой-то бег по кругу с препятствиями.