Распознаватель «Тессеракт»

При помощи нейросети протестировал пятую версию «Тессеракта» — проекта с открытым исходным кодом для распознавания текста. Тестировал на двух скачанных книжках, текст которых был переведён в картинки и искусственно зашумлён.

Мы до сих пор используем четвёртую версию, и у меня была надежда, что в пятой версии режим rus+eng, в котором одновременно распознаются русский и английский тексты, работает не так отвратительно, как в предыдущей версии.

Надежда не оправдалась. «Пятёрка» по качеству в этом режиме даже уступает «четвёрке», хотя во всех режимах работает значительно быстрее.

Таблица сравнения качества OCR Tesseract 4 и 5 для русского и смешанного текста: точность, время обработки и лидеры по категориям.

Оставить комментарий

«МК-61s»: класси́к

Когда я только присоединился к проекту разработки ретроконсоли «МК-61s» и я не подозревал, что у неё есть несколько исполнений, разных по своим возможностям. Сейчас-то это всё учтено в коде, но какое-то время я пребывал в уверенности, что тот инженерный образец, который мне выслали — единственная аппаратная платформа, на которой прошивка будет работать.

Позже оказалось, что только экранов может быть три разновидности, одна из которых даже имеет графический режим. Чтобы посмотреть как всё на нём смотрится, мне пришлось сделать его эмуляцию, которая транслирует видео ретроконсоли в приложение, запущенное у меня на ноуте.

К сожалению это не даёт понимание как в точности будет выглядеть изображение на реальном экране. А это мешает мне всерьёз заняться шрифтами графического режима — я совсем не уверен, что в жизни всё будет так же хорошо, как на моём виртуальном экране.

И вот, наконец, ко мне едет образец с графическим экраном, плюс заказанный графический двухстрочный экран для той консоли, которая у меня на руках — хочу побаловаться с графическим режимом и там тоже.

Красный калькулятор «ЭЛЕКТРОНИКА МК-61s-Classic» с надписью https://github.com/un7fgo/MK-61s-Classic и зелёный модуль дисплея на пузырьковой плёнке.
Содержимое посылки, которая мне доедет примерно через неделю

Оставить комментарий

«Sarcophagus»: доделки

Дочка в выходные иногда приходила ко мне в кабинет посмотреть, как я прохожу игру «Саркофагус»: проверить, везде ли всё переведено на русский и нет ли где-то незамеченных ранее багов.

Сначала ей было лишь немного любопытно, но когда я начал прокапываться вниз, а потом ещё и строить себе жилище из скрафченных блоков, семя слабенького интереса упало на благодатную почву, когда-то удобренную «Майнкрафтом».

Сегодня она принесла ко мне свой ноутбук и попросила поставить ей «ту игру, где из блоков строить можно». Поставил, только в исходниках кое-что поправил, чтобы было не так темно, и мы оба залипли. У меня, кстати, на третий день появился небольшой огородик и даже курица! Огород я сам сделал, а откуда взялась курица, я пока не понял.

Пока я играл, дочка тоже времени не теряла: разровняла себе площадку под будущий дом и попробовала сделать бассейн из природного озерца, но разлила воду, потому что случайно снесла одну из стенок.

Игру я потихоньку дополировываю. Поправил всякие мелочи, из более-менее крупного — переделал автосохранение так, чтобы оно не останавливало мир. В коде видны были зачатки этой идеи, логично было довести их до полной реализации.

Человек с кудрявыми волосами работает за ноутбуком, на экране которого виден пиксельный интерфейс; на столе также монитор, ретро-консоли, бюст Ленина и книга.

Оставить комментарий

Пироги с черёмухой

Пока дочка была у моих родителей в Лениногорске, мне пришла идея, навеянная увиденным недавно черёмуховым деревом: попросить маму показать Еве, как печь пироги с черёмухой. Когда-то такие пекла моя прабабушка. Она вообще отлично пекла: уже после её смерти я встречал нескольких людей, которые её знали, и все они вспоминали её пироги.

Получилась бы такая передача семейной традиции.

К сожалению, свежую черёмуху найти довольно сложно, поэтому я заказал сушёную на одном из интернет-базаров. В кулинарии я очень плох и подумал, что, если её размочить, особой разницы не будет.

Вышло, если честно, так себе — примерно как пирог с «Полифепаном», есть такой чёрный сорбент. Тесто получилось вкусным, а начинка — сухой и не особенно аппетитной.

Думаю, испечь хороший пирог из сушёной черёмухи вполне возможно, но начинку нужно готовить как-то иначе.

Золотистый пирог с начинкой на тарелке, рядом чашка чая и кусочек лимона на столе с кружевной салфеткой.
Пирог, который испекли мама и Ева. Ева постаралась придать ему форму котика

Оставить комментарий

Игра «Sarcophagus»

В десятые годы Дима Смирнов, известный на заре интернета блогер, увлёкся игровым дизайном. В тот момент, насколько я помню, он выпустил несколько карточных игр и пару компьютерных.

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

В 2019 году он выпустил игру «Саркофагус». Мне очень хотелось поиграть: понравилась идея, но, к сожалению, не вышло. Игра на английском, а моего уровня и сейчас не хватает, чтобы играть в неё комфортно. За прошедшие годы я сделал две попытки, но быстро грустнел от обилия незнакомых слов.

Я вообще мало во что играю, иногда паузы длятся годами, поэтому не то чтобы я сильно страдал от невозможности в неё поиграть. Но недавно подумал: почему бы не перевести её на русский при помощи нейросетей?

Скриншот игры: тёмный подземный уровень с персонажем, интерфейсом (статы, инвентарь, текст), подсказками по краям и сообщением о завершении преобразования.

Попутно пришлось поправить ещё несколько багов. Наверное, нашёл пока не все, но не скажу, что это как-то портит игру. Вообще у неё очень подходящий мне формат: можно бросить и возобновить в любое время, играть можно хоть часами, хоть пятнадцать минут в месяц.

Сама игра — симулятор жизни бессмертного чувака, который ходит по подземельям, населённым разными тварями, сражается с ними, собирает всякое, из чего можно крафтить различные предметы.

Я не так далеко прошёл, но по скриншотам на сайте игры понятно, что дальнейшая перспектива — крепкое хозяйство: огородик, кое-какая живность, что-то из мебели. А пока я бедствую, бродяжничаю и голодаю. Только-только добыл огонь, но пока не вполне ясно зачем. Обжёг себе каких-то пуль из глины, но из чего я их буду пулять — загадка.

Подробного описания у игры нет, но так и задумано. Смысл как раз в том, чтобы искать, экспериментировать и выяснять как всё работает.

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

11 комментариев

0W-Tube: история и скорость

Скриншот истории просмотров: фильмы «Отец солдата» (1965), «Через тернии к звёздам» (версия 2001) и мультсериал «Волик. Пилот отменённого мультсериала».
Внешний вид экрана истории просмотра

Несколько дней дал себе отдохнуть от вайбкодинга. Занятие слишком увлекательное: в последнее время я как-то чрезмерно им увлёкся и спал очень мало. Несколько недель в таком режиме начали сказываться на самочувствии. Чтобы восстановиться, решил дать себе отдых, да и повод подоспел: в один момент я потратил все недельные токены в первый же день и понял, что это хороший повод прерваться.

Сегодня токены возобновились, поэтому я продолжил работу сразу по четырём проектам. Первый из них — «0W-Tube». Выпустил очередную версию с изменением скорости воспроизведения и историей просмотра.

Скорость меняется в настройках воспроизведения, которые поглотили кнопку зеркалирования, а история доступна по жесту смахивания.

На «Андроиде ТВ» история вызывается и скрывается клавишами «вниз» и «вверх» соответственно. Появившиеся в этой версии настройки воспроизведения доступны через кнопку «≡» («меню»).

Из малозаметных изменений: портировал из утилиты yt-dlp различные особенности работы с видеохостингами, которые в основной код этой утилиты пока не попали. По моей просьбе нейросеть прошерстила предложенные исправления и побочные ветки и добавила нам всё полезное.

20 комментариев

Видеонаблюдение: ускорение

Очень понравилось, каким получился проект «Видеонаблюдение». Я написал собственное приложение, которое опрашивает домофоны, установленные в нашем дворе, и распознаёт лица. Если приложение узнаёт человека, оно автоматически открывает соответствующий домофон.

Проблема пока одна — время реакции достигает нескольких секунд. Основная загвоздка в том, что устройству тяжело одновременно обрабатывать несколько видеопотоков. Можно использовать альтернативный вариант: получать с каждой камеры отдельные снимки. Такая возможность есть, но изображения обновляются всего раз в секунду. В итоге, пока устройство накопит несколько кадров, чтобы исключить ложноположительные срабатывания, проходит несколько секунд.

Мне пришла в голову идея разделить камеры на два периметра — внешний и внутренний. Обычно человек проходит их последовательно: сначала попадает во двор через калитку внешнего периметра, а затем подходит к подъездной двери.

Поскольку у нас сквозной подъезд, калитки внешнего периметра естественным образом делятся на две группы: каждая группа соответствует одному из двух подъездных домофонов. В большинстве случаев сценарий выглядит именно так: человек заходит во двор через калитку и направляется к ближайшей подъездной двери.

Интерфейс устройства с заголовком «Связи»: список из четырёх записей («Общая калитка 1–4») с привязанными входами («Основной вход», «Домофон у входа 2») и таймером «3 мин» справа.
Скетч интерфейса связи калиток, нарисованный нейросетью «Нанабанана 2»

Новая версия «Видеонаблюдения» теперь работает так: когда человек со знакомым лицом проходит через одну из внешних калиток, программа на три минуты запускает видеопоток с соответствующей камеры в подъезде, не забывая получать картинки и с других камер (вдруг придёт ещё кто-то).

Я ещё не испытал эту схему, но ожидаю, что время прохода двери в подъезд должно сильно сократиться.

2 комментария

Человек и вайбкодинг

Когда-то мемы вытеснили анекдоты. И трудно отрицать, что сегодня они гораздо популярнее, хотя иногда выглядят так же: часть мемов — тот же текст, только в виде скриншота. Мне кажется, секрет их успеха — во времени жизни. Анекдоты жили годами, а порой и десятилетиями, тогда как мемы рождаются и умирают тысячами каждый день. Благодаря этой эфемерности они становятся идеальным зеркалом момента.

Но даже мемы, на мой взгляд, уже не успевают за развитием нейросетей. Многие из них выглядят откровенно нелепо: ситуация меняется настолько быстро, что мемы устаревают почти сразу, выставляя профаном тех, кто продолжает их распространять.

Особенно показательна ситуация с вайбкодингом. В феврале этого года, как я когда-то писал, появилась первая нейросеть, которая пишет код лучше среднего программиста. Это очень сильно поменяло правила игры. Если раньше вайбкодинг был занятием для смелых, то с февраля он стал мало чем отличаться от работы с командой программистов. Для тимлида большой команды любая разработка в каком-то смысле — вайбкодинг.

Тут, кстати, тоже есть неочевидный момент: программисты (которых больше) и тимлиды (которых меньше) по-разному воспринимают вайбкодинг. Тимлидам всегда приходилось доверять решениям других людей, пишущих код, поэтому вайбкодинг прекрасно встроился в сознание опытных тимлидов, тогда как программистам принять это тяжелее.

А так как программистов больше, именно они формируют наиболее распространённый взгляд отрасли на вайбкодинг. По крайней мере, именно так это выглядит из-за информационного шума на профильных ресурсах.

Это, вкупе с неглубоким погружением в предмет, рождает огромное количество дремучих страхов, которые кочуют из статьи в статью, подогреваемые эффектом толпы.

Например, уже невыносимо смотреть, как люди устанавливают себе что-то на ноутбук и считают, что увидели уровень, на котором программируют современные нейросети. Или пользуются чем-то бесплатным. При этом лучшее из бесплатного пока и близко не стоит с тем, что доступно за деньги. И не факт, что когда-либо ситуация изменится.

Пресловутые «техдолг» и «архитектура» — туда же. Чем нас вообще пугают техдолг и кривая архитектура? Тем, что человеку придётся долго в этом разбираться, а потом ещё дольше всё исправлять. Но сеть не устаёт, не нервничает, просматривает код и программирует со скоростью, которую человеку уже не догнать. И создают столько же техдолга, как средний программист, а может и меньше — сейчас некоторые сети уже находятся на синьорском уровне.

Разумеется, за сетью пока должен стоять нормальный тимлид. Пока — так. Но обвязки постепенно движутся к тому, чтобы сети сами организовывали свою работу. И здесь они довольно забавно повторяют человеческую эволюцию. Не в том порядке, но всё же: сначала у них рос «мозг», потом они освоили разделение труда, а теперь начинают общаться друг с другом на равных. Буквально несколько дней назад я наблюдал, как у меня в чате начали общаться два агента, работающие над одним проектом в разных вкладках одной и той же обвязки.

В общем, если вы всё ещё боитесь вайбкодинга, попробуйте придумать себе такую задачу, решение которой убедило бы вас, что вайбкодинг сравнялся по качеству с кодом, написанным живыми программистами. Потом оплатите любую подписку на одну из топовых моделей и попробуйте что-нибудь завайбкодить. Только работайте в режиме: сеть пишет код, критикует, исправляет, пишет дальше. Сильно удивитесь.

22 комментария

Бабушкино свидетельство о рождении

Выкладываю второй документ, который привёз из поездки в Лениногорск в эти выходные, — свидетельство о рождении Клавдии Фёдоровны Старостиной, папиной мамы. Именно боевой путь её отца, пропавшего без вести в самом начале Великой Отечественной войны, я пытаюсь пока безуспешно проследить с помощью нейросети.

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

Свидетельство о рождении от Наркомата внутренних дел СССР, выданное 5 ноября 1923 года в Татарской АССР, с рукописными данными о рождении и родителях.
Старая пожелтевшая бумага с фиолетовым штампом: «22 "1" 1958 г. ВЫДАН Паспорт сер. ХVI-9ши № 560099 Нач. пас. стола Л. Калед», видны складки и пятна.

Оставить комментарий

Свидетельство о браке Мироновых

В эти выходные ездили в Лениногорск за дочкой. Она гостила у дедушки с бабушкой — моих родителей, — но уже успела соскучиться по дому. Приехали туда вчера вечером, а сегодня после обеда отправились обратно: хотелось успеть вернуться засветло, всё-таки в темноте ехать гораздо тяжелее.

Пока мы были там, мама, зная, что я собираю всё, что осталось от старших родственников, передала мне два документа, которые нашла среди семейных бумаг. Второй покажу позже, а первый — свидетельство о браке родителей моей мамы. Честно говоря, я даже не ожидал, что такие документы у нас сохранились.

Крупный почерк на свидетельстве принадлежит бабушке — Татьяне Степановне. Видимо записан какой-то адрес в Новом Исакове, это место рождения бабушки. Ниже другим почерком записано о какой-то справке и отказе неких сестёр от наследства в пользу матери. У бабушки сёстры были, но о чьём наследстве речь — непонятно.

Судя по всему, после смерти дедушки этот документ использовали как лист для заметок.

Открытое свидетельство о браке РСФСР 1947 года на татарском и русском языках с гербом, штампом «Татарско-Казанский яз. Гознак. 1947.» и рукописными записями на левой странице.
Свидетельство о браке на татарском и русском языках, выданное 24 октября 1949 года в г. Ст. Исаково; указаны имена супругов, даты и места рождения, печать ЗАГСа.

Оставить комментарий

Дверь куда-то

В прошлые выходные ездили с другом на необитаемые острова. На одном из них нашли вот такую дверь. Поставили её вертикально, чтобы сфотографировать. Судя по ощущениям, весит она килограммов пятьдесят.

Берег там постоянно подмывает, и за десятилетия его размыло очень сильно. Вероятно, дверь упала вместе с каким-то зданием, которое разрушилось из-за эрозии берега. Местные, которые часто приезжают туда собирать металл и сдавать его в металлолом, говорят, что раньше этой двери не видели. Видимо, она долго лежала под песком, а недавно её размыло.

Ржавая металлическая рама с панелью, частично покрытая грязью и обломками, стоит на песке у подножия обрыва с обнажёнными корнями деревьев.
Дверь, поднятая из песка и поставленная вертикально

Я успел её сфотографировать, пока она не отправилась в металлолом — уж очень колоритно выглядит: кованая, клёпаная.

Говорят, на этом острове когда-то была тюрьма. Там до сих пор находят алюминиевые ложки с инициалами, так что, возможно, за этой дверью когда-то сидели заключённые. Хотя не исключено, что она была дверью какой-нибудь хозяйственной постройки.

Грязная металлическая деталь овальной формы с выступом, покрытая царапинами и пятнами земли, лежит в ладони на фоне размытой зелени.
Одна из ложек с инициалами (тут написано «АНИ»), найденная 25 августа 2024 года

2 комментария

Видеонаблюдение: что вышло

Вчера писал, как пытался превратить бывший платёжный терминал, который стоит у меня на столе, в систему видеомониторинга с распознаванием лиц. Забегая вперёд — всё получилось: от момента, когда я начинаю смотреть в камеру, до открытия двери проходит около трёх секунд. Это вполне комфортно.

Вчера вечером, когда я вернулся домой, решил взять запись моей утренней попытки открыть дверь лицом и скормить её нейросети внутри терминала, чтобы посмотреть, насколько быстро она меня узнает. К моему удивлению, это произошло почти моментально.

Оказалось, что приложение уже работало, просто очень медленно — пришлось бы торчать у камеры примерно полминуты, прежде чем опрос камер дошёл бы до меня и распознал лицо.

На экране планшета отображается результат диагностики: «Готово», кадров 46, лиц найдено 43, совпадений ≥0.42: 23, Consensus: 21, путь к файлу report.json.
Тестовая обработка заснятых кадров нейросетью бывшего платёжного терминала

То есть проблема была в том, что приложение очень медленно обходит камеры.

Причин оказалось две. Во-первых, почти целиком одно ядро утилизировали часы — приложение, которое я написал для этого терминала в качестве развлечения. В условиях нехватки ресурсов это только усугубляло ситуацию. Во-вторых, снимать несколько видеопотоков и извлекать из них кадры оказалось слишком сложно для скромной аппаратной начинки устройства.

Первая проблема решилась легко: датчика освещения в терминале нет, поэтому я использовал в этом качестве камеру, чтобы переключать тему часов с тёмной на светлую в зависимости от уровня освещённости. Постоянное использование камеры создавало серьёзную нагрузку. Я просто сделал эту функцию отключаемой — не так уж она мне и нужна.

Заодно снизил расход памяти. Часы выводятся случайными шрифтами, чтобы было интереснее, и раньше все 1500 шрифтов регистрировались при запуске, занимая память. Теперь это место переделано: загружаются случайные сто шрифтов, которые перевыбираются каждые пять минут.

Со второй причиной было посложнее, но способ нашёлся. Вместо видеопотоков теперь забираются отдельные кадры несколько раз в секунду: интерфейс домофона предоставляет такую возможность. А вместо анализа разницы между кадрами теперь измеряется изменение освещённости.

При таких условиях даже довольно хиленькое оборудование терминала заработало как надо. Попробую ещё снизить время обработки, но три секунды на распознавание — уже хороший результат.

Оставить комментарий

Видеонаблюдение

Возможно, помните, как я приспособил купленный на «Авито» платёжный терминал под настольные часы. Поскольку сейчас я много времени провожу в кабинете, решил встроить туда ещё и систему видеонаблюдения, чтобы было удобно открывать домофоны со всех сторон дома.

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

Кроме того, поскольку в платёжном терминале есть нейросетка для распознавания лиц, у меня родилась идея непрерывно мониторить все камеры и, если кадры существенно отличаются, запускать эту сеть, чтобы она распознавала всех членов нашей семьи и открывала нам дверь без ключа.

Разобраться, как вызывать эту сеть из приложения, оказалось несложно, но практического результата пока нет. Думаю, это связано с тем, что камера терминала, перед которой я крутил головой, чтобы модель научилась меня узнавать, и камеры домофона сильно различаются по характеристикам. Видимо, придётся как-то компенсировать различия в геометрии изображения.

Экран видеодомофона с заголовком «Домофоны» и сеткой из шести камер: «Домофон у входа 2», «Вход 2», «Основной вход», «Общая калитка 1», «Общая калитка 2», «Общая калитка 3».
Изображение нарисовано сетью «Нанабанана 2» по мотивам реального фото интерфейса

3 комментария

«0W-Tube»: зеркалирование

Скриншот видеоплеера с фильмом «Через тернии к звездам»: два мужчины в профиль на тёмном фоне, прогресс-бар на 1:26:05 из 2:20:09, кнопки перемотки ±15/+30 сек и пауза.

Выпустил новую версию своего агрегатора видео, который я пишу для своего проектора (хотя он запускается на любом устройстве с «Андроидом»).

Добавил поддержку новых способов получения видео, которые подсмотрел в ещё не принятых коммитах утилиты yt-dlp, а также реализовал функцию, которую давно хотел сделать, — отзеркаливание видео.

Заметная часть роликов на видеохостингах загружается в зеркальном виде, и меня это всегда раздражало. Теперь их можно смотреть как задумано. Отзеркаливание реализовано с помощью небольшого шейдера, поэтому размер программы увеличился совсем незначительно.

8 комментариев

«МК-61s»: инструкция к играм (подробности)

Хочу чуть подробнее рассказать о том, как сделана инструкция к играм для «MK-61s».

Как я уже говорил, если при входе в папку Проводник ретроконсоль обнаруживает внутри файл autoexec.m61, она запускает его. Файл содержит инструкции для терминала. Это существовавший ещё до моего прихода в проект простой язык, который я довольно сильно расширил под свои нужды. Сейчас в нём есть даже условные конструкции и подпрограммы. То есть это аналог BAT-файла из мира «Виндоуса» или шелл-скрипта из мира «Линукса» и «Мака».

В данном случае autoexec.m61 первым делом командой open открывает для просмотра маркдаун-файл manual.md. Маркдаун — хорошо документированный и широко используемый формат. В ретроконсоли реализовано лишь его подмножество, так как полная поддержка не имела смысла.

На скриншоте видно оба файла. В маркдауне видно всю разметку, которая потом во что-то превращается на экране (например, символы «решётки» выделяют заголовки) и ссылки на картинки в формате WBMP — был такой очень простой формат однобитной графики во времена интернета для кнопочных сотовых телефонов. На графическом экране графика внедрённая, то есть на месте, где в файле находится ссылка на картинку, будет выведена сама картинка.

Скриншот manual.md: инструкция к игре «Погоня». Управление, цель — врезаться в машину мафиози. Сообщения: «ВСЕ» — победа, «ЕГГОГ» — авария.

После того как пользователь выйдет из инструкции, запустится сама игра — в данном случае она вводится в шестнадцатеричных кодах командой hin, потом выставляются регистры, а в конце подаются команды для старта.

В принципе, таким сценарием мы не ограничены, всё зависит от фантазии — можем выводить что-то не экран, опрашивать клавиши, проигрывать звук, запускать программы на всех трёх встроенных языках программирования и вообще реализовывать любую логику.

Оставить комментарий

«МК-61s»: инструкция к играм

Игры для калькулятора «МК-61» рассчитаны на бурную фантазию — без неё играть практически невозможно. На его экран много не выведешь, поэтому многое приходится обозначать условно. Но даже с самой развитой фантазией без инструкции часто невозможно понять, что же происходит на экране.

У меня давно была мысль сделать для ретроконсоли «MK-61s» возможность собирать игры в некий пакет, в который будут включены как сама игра, так и её описание, а по возможности — даже иллюстрации. Мне это виделось как папка в файловой системе, при открытии которой автоматически запускается файл, показывающий инструкцию, после чего запускается сама игра.

Я давно, шаг за шагом начал реализовывать этот проект и вчера вечером наконец-то его завершил. Для этого пришлось последовательно сделать файловую систему, потом папки на ней, расширить команды терминала и сделать из этого псевдоязык для управления устройством, добавить виртуальный графический экран, просмотр графических файлов в формате WBMP, поддержку файлов в формате «маркдаун» и автозапуск файла autoexec.m61 — это как раз файл, содержащий управляющие команды терминала.

Скриншот игры «Погоня» Сергея Шинкевича (1991): пиксельный город, машина мафии, инструкция «Вы — полицейский. Погоняйте машину мафии...
Тут я склеил три экрана для наглядности

Вышло, на мой взгляд, очень здорово и уместно. Я в качестве теста сделал инструкцию к одной из игр, мне понравилось как это всё смотрится, возможно только листание надо переделать по более плавное, чтобы можно было прочитать разрезанные фразы. Но это уже косметика, которая легко правится.

Оставить комментарий

«Флог»: блог в одном файле

«Флог» — это проект, который я давно вынашивал и даже когда-то начинал программировать. Вайбкодинг подарил этой идее вторую жизнь.

Его смысл в том, что вы можете вести персональный секретный блог прямо в файле. Поэтому он и называется «флог» — «файловый лог».

Выглядит флог как обычный сайт и работает в браузере, только лежит не в интернете, а где-нибудь у вас на компьютере или флешке. С разрешения пользователя браузер записывает новые заметки прямо в файл. Получается что-то вроде персонального дневника, который одновременно является сайтом, программой и собственной базой данных.

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

У флога есть пять скинов, возможность задать собственный фон и две темы — тёмная и светлая. Все эти настройки, разумеется, тоже сохраняются внутрь самого файла.

Ниже — два примера скинов:

Запись блога «Поиск прадеда: логика» от 28 июля 2026 г. о том, как нейросеть нашла предка по соседям по призыву — способ, который автор ранее предлагал поисковику.
Флог в стиле «консоль» с зелёным фоном
Скриншот поста блога «Мой персональный флог» от 28 июля 2026 г. с заголовком «Поиск прадеда: логика» и текстом о поиске предка через нейросеть и форум.
Флог в стиле «сердечки» с розовым фоном

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

Шифрование происходит прямо в браузере. Пароль никуда не отправляется и нигде не сохраняется, поэтому, если вы его забудете, восстановить доступ уже не получится. Никакой кнопки «я забыл пароль» тут принципиально нет.

На экране — окно с надписью «Мой персональный флог» и иконкой замка; подзаголовок: «Нажмите на замок, чтобы открыть». В правом нижнем углу — уведомление: «Блог закрыт».
Флог, закрытый паролем, в стиле «нормкор»

Поскольку весь флог живёт в одном файле, резервные копии делаются очень просто: надо всего лишь иногда копировать этот файл в безопасное место. Но делать это действительно стоит — отдельной серверной копии, из которой можно восстановить удалённый или испорченный дневник, не существует.

Есть ещё один важный момент с обновлением. Поскольку файл флога и есть сам флог, просто заменить его более свежей версией нельзя: вместе со старым файлом вы потеряете все свои заметки. Поэтому для обновления внутренней программы надо скачать новую версию из моего репозитория и кинуть её в браузер на окно текущего флога. После этого он обновит себя сам, сохранив записи и настройки.

Наверное, больше всего мне здесь нравится сама конструкция: это сайт, который не нужно никуда выкладывать, и документ, для которого не нужно устанавливать отдельную программу. Всё необходимое — код, оформление, настройки, картинки и сами записи — находится внутри одного переносимого файла.

Проект вместе с инструкцией выложен в моём репозитории.

26 комментариев

Поиск прадеда: логика

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

Самое забавное, что этого поисковика я знаю. Мы с ним переписывались много лет назад: тогда я пытался нанять его для поиска прадеда, которого сейчас ищу с помощью нейросети. И именно я тогда предложил ему этот способ. Но за заказ он не взялся.

Интересно, у него действительно получилось или он так творчески переосмыслил наш с ним разговор?

Так или иначе, поиск пока продвигается без особых прорывов. Кажется, мы уже упёрлись в ограниченность информации, которая есть в интернете. Скоро будем рассылать вторую волну писем, а пока нейросеть обнаружила интерфейс для платных запросов в наш местный архив. Одно дело мы уже заказали, изучили и после этого дозаказали ещё пять.

Нейросети, конечно, очень хороши в проработке архивной информации. Сам бы я давно уже устал рыться в таких объёмах, а им — только подноси новые источники.

Чего им не хватает — так это фантазии. Интерполируют они хорошо, а с экспрополяцией полный швах пока. Хотя уровень размышлений всё растёт и растёт с выходом новых моделей. Вот совершенно поразивший меня кусочек:

На скриншоте: июльская строка в списке по Ленингорскому району, появившемся 18 августа 1955 г. Дата 29.VII.41 — поздняя перепись, ошибка месяца.

Нейросеть по названию района догадалась, что источник с расхождением дат послевоенный и поняла, что новая дата в нём — ошибка, а не новый факт.

2 комментария

Спасская церковь в Салманах

Вчера я писал про черёмуху — мы с другом встретили её у церкви Спаса Нерукотворного Образа в селе Салманы. Про саму церковь тогда почти ничего не написал, хотя она оказалась довольно любопытной.

Разрушенное кирпичное здание с обвалившейся крышей и пустыми оконными проёмами, заросшее травой и кустарниками на фоне голубого неба.
Спасская церковь в селе Салманы

С дороги церковь выглядит как обычное хозяйственное здание — длинная заброшенная кирпичная постройка. Колокольни, купола и крыши давно нет, стены заросли, и только ряд высоких окон выдаёт храм. В справочниках это деликатно называется «первоначальный облик утрачен».

Вид через разрушенный кирпичный проём с декоративными арками и круглыми нишами на зелёное поле, дорогу и мост под голубым небом с облаками.
Внутри Спасской церкви в Салманах

По данным Татарской энциклопедии, церковь построили в 1795 году на средства помещика Сергея Фёдоровича Желтухина. В карточке храма перечислены три престола: главный — Спаса Нерукотворного Образа, приделы — Донской иконы Божией Матери и Николая Чудотворца.

История у неё с самого начала вышла странная. По краеведческой справке, Желтухин построил храм без разрешения епархии, поэтому его почти тридцать лет не соглашались освящать. На сайте сельского поселения указано, что освятили его только в 1824 году — почти через тридцать лет после постройки.

До 1939 года само село называлось Церковными Салманами, а в дореволюционных источниках — Новоспасским.

Вид снизу на разрушенную кирпичную стену с обвалившейся штукатуркой, деревянными балками и металлическими креплениями под ясным голубым небом.
Широкий проём с деревянной рамой

Церковь просто огромная, то ли строилось под большое село, то ли она задумывалась как приход для всех окрестных деревень. Посмотрите какой огромный проём, у церкви их два — по одному с противоположных сторон. Рама вся обита железом, по краям — скобы и кольца, сохранились массивные петли. Представляю какие там были ворота!

Обветшалая кирпичная стена с облупившейся штукатуркой, на которой закреплены ржавые металлические скобы и кольца, а также старые потемневшие деревянные балки.
Металлические детали с правой стороны рамы
Детали старой кирпичной стены с облупившейся штукатуркой, ржавыми металлическими скобами и выветрившимися деревянными балками под голубым небом.
Металлические детали с левой стороны рамы

Я надеялся, что сохранились какие-то изображения, но ничего не нашёл, поэтому не вполне ясно как она выглядела в своё время. Можно только предположить, что верх был деревянный, поэтому и не сохранился. В самой церкви тоже мало что сохранилось — стены, да следы более поздних переделок — видимо в советские годы её под что-то пытались приспособить.

Оставить комментарий

Поиск прадеда: как продвигается

В 2018 году я фактически забросил исследование своего родового дерева, потому что считал, что через пять—семь лет искусственный интеллект сможет проводить такие исследования эффективнее, чем человек. Как видите, не ошибся.

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

Мне в этом помогает, а точнее делает львиную часть работы, нейросетка «ГПТ-5.6» в максимальном режиме. Она уже перелопатила такую гору архивов на русском и немецком языках, что я даже не знаю сколько времени это заняло бы у живого человека.

К решению задачи мы идём с двух сторон — пытаемся выяснить куда же он ушёл воевать и где мог погибнуть. В первом случае нейросеть анализирует куда направили его соседей по призыву, во втором — пытается связать могилы с конкретными людьми, чтобы исключить те, где прадеда точно быть не может.

Ниже — сводная инфографика, которую мне нарисовала нейросеть по текущим направлениям. Параллельно мы добиваем те источники в интернете, которые остались, плюс будем досылать бумажные и электронные обращения.

Оставить комментарий