Микроблог капсулы @continue

Микроблог капсулы @continue. Пока в планах писать сюда мета-информацию о капсуле.

Содержимое страницы старается соответствовать формату TinyLogs:

RFC: TinyLogs format
Микроблогинг в Gemini: tinylog и gtl / Microbloging in Gemini: tinylog and gtl

author: @continue

avatar: @

licence: UNLICENSE

2025-12-01 20:00 MSK

Запустил декабрьское приключение в формате микроблога:

2025-10-22 13:00 MSK

Вышел новый "опёнок", но альтернативу openat(2) (O_BELOW / F_BELOW) в него пока не завезли :(

2025-10-20 13:00 MSK

Re: Binary Golf Grand Prix 6 - Forth

Что-то я вчера не прочитал внимательно условия BGGP1 и BGGP2 и замахнулся своим решением на них. Мой промах.

2025-10-11 20:00 MSK

Re: @milkspace.xyz 2025-10-06 21:40 +0400

В продолжении темы капсул, недоступных со стороны РФ: milkspace.xyz попала в их число :( Как-то грустно и требует мер.

(обновление сертификата сервера тут совсем не поможет)

Потратил немного времени и добавил в свой форк AV-98 возможность работы через SOCKS сервер:

Add `socks_proxy` option (SOCKS4 & SOCKS5 proxy)

Теперь (после установки опции socks_proxy) содержимое капсулы снова доступно всем назло:

AV-98> set socks_proxy socks5://127.0.0.1:8888
AV-98> g milkspace.xyz
milkspace.xyz                                                                   

Добро пожаловать на мою страничку в интернете 👋
<...>

Кстати, SOCKS5 можно получить через ssh-соединение с пабниксом, сервер которого находится в нужной географической локации:

ssh — OpenSSH remote login client, -D option

2025-10-10 15:00 MSK

Стал замечать, что капсула offpunk.com всё чаще стала недоступна из РФ :( А там ведь не просто капсула, но и важный для русскоязычного gemini проект "Sphere". Благо есть пара обстоятельств, которые удачно совпали:

Gemini-лента публикаций из Atom-ленты

Вместе они позволяют заглянуть в результаты работы проекта Sphere в виде Gemini-ленты со стороны РФ:

2025-09-08 19:00 MSK

Что-то совсем обленился, поэтому напишу хотя бы в микроблог.

Первый раз прочитал "Улитка на склоне" братьев Стругацких. Понравилось, не разочаровало.

От себя рекомендую читать саму повесть, потом комментарии (да хотя бы на той же флибусте), а затем выступление Бориса Натановича:

Фантасты братья Стругацкие: Интервью - комментарии к Улитке

Комментарии от автора интересны и сами по себе. Но эти необычны хотя бы тем, что по другим своим произведениям братья Стругацкие давали какие-либо разъяснения с большой неохотой. А тут особенный случай.

2025-08-18 16:00 MSK

Ещё немного контента для видео трансляции через gemini (gstream 📺):

смерть в середине августа (134M, 00:05:48.63)

Это небольшой отчёт о прошедшем 16 августа концерте на ART FERMA 36 в пригороде Петербурга. Ролик не мой, я только сохранил себе копию на память об этом мероприятии.

2025-07-25 13:00 MSK

В недавней публикации "gstream 📺 трансляция через gemini" я обратился в gemini сообществу с вопросом о потоковом вещании mp4 файлов:

gstream 📺 трансляция через gemini

А сегодня получил ответ от cthulhu. Ответ от живого человека, решающий мою проблему. Спасибо, это по-настоящему приятно!

(кстати, задумайтесь: когда вы получали последний раз решение своего вопроса от живого человека, а не от поисковика или БЯМ)

Система cthulhu

В моей капсуле все mp4 файлы лежат в одной директории. Поэтому моя проблема решилась вот таким "однострочинком" на sh (исполнить в директории с mp4 файлами):

for file in *.mp4; do cp $file tmp_$file && qt-faststart tmp_$file $file && rm tmp_$file ; done

Теперь (благодаря cthulhu!) можно смотреть все старые записи из архива фотоловушки с использованием gstream.

2025-06-10 15:00 MSK

Сегодня в honk прилетел очередной ActivityPub-пост с просто сумасшедшим форматированием:

Это позволило поймать очередной баг в lonk, который позволял инъекцию строки ``` внутри тэга <pre>. Упрощённо тело поста выглядело так:"<pre>\n```\n</pre>".

Пробел нулевой ширины (U+200B, zero-width space) пригодился и тут. Исправлено.

2025-05-29 16:00 MSK

В списке рассылки OpenBSD Theo de Raadt (deraadt@) предложил отличную (на мой взгляд) идею, как сделать функцию openat безопасной. Что бы лучше разобраться самому я подготовил перевод:

Перевод: openat(2), к сожалению, в основном бесполезен

Если этот код будет принят в OpenBSD, то есть большой шанс, что я внедрю новый подход в свой Gemini сервер vostok. Пока рано говорить, но возможно vostok станет настолько зависимым от этого нового подхода, что я прекращу поддержку других операционных систем. Если вы вдруг используете сервер vostok на ОС, отличной от OpenBSD, пожалуйста, сообщите мне об этом на почту continue@to.any-key.press или через ActivityPub: @continue@honk.any-key.press

2025-05-23 17:00 MSK

Как я и предполагал при создании fork'а AV-98, проблемы в оригинальном репозитории на sourcehut исправлены. Моя ветка AV-98 обновлена до последнего изменения в ветке master на sourcehut (36f64a23).

Форк AV-98

Узелок на память: что бы в got добавить новый remote понадобилось в got.conf (который расположен в клонированном репозитории) дописать новую секцию:

remote "sourcehut" {
        server git.sr.ht
        protocol https
        repository "~solderpunk/AV-98"
        branch { "master" }
}

2025-05-14 13:00 MSK

Больше реализаций ActivityPub серверов - больше крайних случаев. Сегодня с экземпляра GoToSocial прилетел HTML заголовок четвёртого уровня, который я в lonk (по простоте душевной) преобразовал в соответствующий заголовок gemtext. Но я подзабыл, что в gemini только три уровня заголовков. Фикс довольно тривиальный: заголовки уровня 3 и выше конвертируются в заголовоки третьего уровня.

GoToSocial is an ActivityPub social network server, written in Golang
lonk: Gemini клиент honk

2025-05-13 15:00 MSK

Поправил в lonk обработку хэштегов в начале параграфа, что бы они не превращались в заголовок первого уровня. В большинстве случаев этого не происходит потому, что ActivityPub сервер присылает хэштеги ссылками. Но некоторые реализации (например threads.net) оставляют их в теле поста простым текстом:

У центральных теплосетей есть неустранимый недостаток.
Всегда в каких-то квартирах будет жарко (и будут дорого оплачивать за отопление в форточку), а в других – холодно.
#Отопление

Раньше это ломало gemini-разметку текста. Но я сделал простой хак: для этого случая поставил пробел (U+200B, zero-width space) перед "решёткой".

Хотя другие варианты разметки я сознательно не стал обрабатывать. Ещё есть большое количество AP-серверов, которые не поддерживают markdown-разметку, но люди всё равно по привычке ставят, например, символ > в начале строки с цитатой. А gemini клиенты разбирают эту разметку как gemtext и отображают пост в правильной форме.

lonk: Gemini клиент honk

2025-04-25 13:00 MSK

Я со школьной скамьи люблю творчество Андрея Платонова. Но, кстати, отчасти и потому, что прочитал его первую (для меня) повесть "Сокровенный человек" не "по программе", а самостоятельно. Просто случайно открыл книгу, прочитал первые строки и дальше не смог оторваться:

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

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

А в своей капсуле я сохранил архив этого выпуска проекта "Стереотеатр":

Андрей Платонов "Никита" (16.6M, длительность 00:17:12)

2025-04-09 11:00 MSK

Re: @cthulhu 2025-04-08 Конвертер FictionBook2 в GemPub

Кстати, а этот GemPub довольно удобно читать локально командой "tour" браузера AV98:

Распаковываем скачанную книгу в локальную директорию, открываем заглавную страницу (index.gmi или "grep index metadata.txt") в AV98 и заносим все ссылки во внутреннюю очередь tour (например командой "t *"). А затем "итерируемся" по содержимому командой tour (или просто "t") без аргументов:

$ unzip ray_bradbury_short_fiction.gpub 
  inflating: metadata.txt
<...>
$ grep index metadata.txt 
index: book/index.gmi
$ av98 book/index.gmi
Welcome to AV-98!
Enjoy your patrol through Geminispace...
[1 file] Titlepage
[2 file] Imprint
[3 file] Don’t Get Technatal
<...>
AV-98> t *
AV-98> t  
Short Fiction

By Ray Bradbury.

AV-98> t
This ebook is the product of many hours of hard work by volunteers for Standard Ebooks, and builds on the hard work of other literature lovers made
possible by the public domain.
<...>

AV-98> t
Don’t Get Technatal

For several moments Stern had eyed his typewriter ominously, contemplating whether he should utter the unutterable. Finally:

“Damn!” he roared. “I can’t write any more! Look, look at that!” He tore the sheet out of the rollers and crumpled it in his fist. “If I’d known it
would be this way,” he said, “I wouldn’t have voted for it! Technocracy is ruining everything!”
<...>

2025-04-07 19:00 MSK

Раз уж вернулся к проекту "Катастеризм" для исправления ошибки, то решил его немного и доработать. Добавил разбор микроблогов.

Агрегатор "Катастеризм" / "Καταστερισμός" / "Katasterismos"
RFC: TinyLogs format

Не стал делать отдельный разбор "Re:" (детали в "RFC: TinyLogs format"). Это значит, что ссылка на микроблог не будет разобрана. Возможно доработаю это в будущем.

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

Микроблогинг в Gemini: tinylog и gtl

2025-04-02 09:00 MSK

Сегодня с удивлением обнаружил, что страница проекта "Катастеризм" пустая:

Агрегатор "Катастеризм" / "Καταστερισμός" / "Katasterismos"

Входим в пабникс по ssh и вуаля: "You have new mail". Необработанное исключение в cron'е упало в локальную почту, хотя я ничего для этого не настраивал. Это *nix :)

Сперва я пошёл не по тому пути. Я подумал, что не перехватил специфическое исключение из модуля socket. Но ларчик открывался проще: я ловил исключения только при запросе страницы ленты публикаций. А для капсулы muu-online.ru оказалось, что страницу-ленту (gemini://muu-online.ru/) сервер отдаёт, а вот одну из публикаций (gemini://muu-online.ru/2025/02/commander.gmi) - нет (time out).

Ошибка исправлена. Хронология Катастеризма на сегодня немного сбита, но ближе к полуночи должна прийти в норму.

2025-03-25 21:00 MSK

С удовольствием послушал выпуск "Искусствовед Ольга Чуворкина - Как Михаил Врубель из юриста стал художником и получил признание?" из подкаста "Мослекторий". Довольно субъективный, но от того не менее интересный взгляд на жизнь Врубеля. Для себя узнал новые моменты, хотя в своё время целенаправленно интересовался биографией художника. Интересная личность, которой, кажется, претило быть публичной. Поэтому так мало осталось документальных свидетельств, поэтому столько догадок и теорий. Но я со свой стороны отлично понимаю желание творца не выносить личное на всеобщее обозрение.

По традиции сохранил копию у себя в капсуле:

Искусствовед Ольга Чуворкина - Как Михаил Врубель из юриста стал художником и получил признание? (45.5M, длительность 00:45:02.23)

2025-03-21 21:00 MSK

Какое-то время назад я участвовал в пятом Binary Golf и предложил три решения, описав их в своей капсуле:

Binary Golf Grand Prix 5 - openssl s_client
Binary Golf Grand Prix 5 - py[c]

И вот: "Мама, я в телевизоре!" (все три решения взяли первые места в своих номинациях)

BGGP5 Recap
::: File Name Hax ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
continue won python without args (and pyc), by executing the entire filename as a script.
::: 3x Category Winners ::::::::::::::::::::::::::::::::::::::::::::::::::::
continue
- HTTP
- Python (no args)
- Python pyc (no args)

2025-02-14 09:00 MSK

В публикацию "DOSBox как стенд для кода загрузочного сектора" дописал пример формирования nasm'ом содержимого загрузочного сектора целиком (512 байт с требуемыми сигнатурами). Правда DOSBox такое не переварит, нужен, например, QEMU:

DOSBox как стенд для кода загрузочного сектора

2025-02-12 09:00 MSK

Понемногу переформатирую разделы капсулы под формат "Subscribing to Gemini pages" (те, куда добавляю новые публикации).

Subscribing to Gemini pages

На текущий момент переформатированы разделы:

Forth 🏰 и все-все-все
Эзотерическое "программирование"
@continue 🪤 Фото-ловушка

Получается что-то вроде тэгов: можно подписаться на отдельный подраздел.