commit 8c37adef8137140a41fbfede9486ab1f7f354f23 from: Aleksey Ryndin date: Thu Dec 12 16:55:57 2024 UTC Add /yah2g/report_0.7.gmi commit - 0790c442310bc7e0df1cd25156ffda90823f5019 commit + 8c37adef8137140a41fbfede9486ab1f7f354f23 blob - 2e23114c73aab61061b905acc8a585fa773bc8a8 blob + de519c1ecd22a0ae0b7df7023ff2ffebffd53239 --- capsule/atom.xml +++ capsule/atom.xml @@ -8,7 +8,13 @@ continue continue@to.any-key.press - 2024-11-13T16:35:55.798018+00:00 + 2024-12-12T16:50:15.038274+00:00 + + gemini://any-key.press/yah2g/report_0.7.gmi + + yah2g: накопившиеся изменения и исправление рендеринга заголовка без пробела + 2024-12-12T16:50:15.038274+00:00 + gemini://any-key.press/trap/2024-10-31.gmi blob - 9f6391e80d6389cc759469e6b99d00ac6a13d5fd blob + 480ac4f15550e7956373fe46f6c3a7b341792696 --- capsule/yah2g/case_lines.gmi +++ capsule/yah2g/case_lines.gmi @@ -20,8 +20,10 @@ > Эта строка демонстрирует цитату -#### Заголовок четвертого уровня +#### Заголовок четвертого уровня (не по стандарту!) +#Это снова заголовок первого уровня, но без пробела после # + ``` А тут начался блок преформативанного текста, разметка в котором до конца блока должна быть проигнорирована blob - 9deca8624a07f7a77933f2835a79a0f58c143168 blob + ca990f048189b8d473cbad7c4135cec657514fb0 --- capsule/yah2g/index.gmi +++ capsule/yah2g/index.gmi @@ -11,6 +11,7 @@ ssh://anonymous@got.any-key.press/yah2g ## Дневник разработки +=> report_0.7.gmi Накопившиеся изменения и исправления рендеринга заголовка без пробела (2024-12-12) => report_0.6.gmi Добавлен robots.txt, что бы утихомирить facebook (2024-07-31) => report_0.5.gmi Возврат ошибки не поддерживаемого ответа (2024-04-22) => report_0.4.gmi Ошибка рендеринга, когда за списком идёт ссылка (2024-04-12) blob - 83cf2f0ca0778b15d30e6791099961180ba0bea0 blob + 6007a31a30299ecb4d96b295b2c0ccf0b941893a --- capsule/yah2g/report_0.6.gmi +++ capsule/yah2g/report_0.6.gmi @@ -15,3 +15,5 @@ Комментарии через ActivityPub (Fediverse) можно оставить здесь: => https://honk.any-key.press/u/continue/h/zh8vrVchkRfB956X26 + +=> report_0.7.gmi Следующая запись дневника разработки yah2g blob - /dev/null blob + 6e395761e3db8f9770dd7157c0a49a67fdb40ca0 (mode 644) --- /dev/null +++ capsule/yah2g/report_0.7.gmi @@ -0,0 +1,33 @@ +# Запись дневника разработки yah2g: версия 0.7 + +Накопилось прилично изменений в main'е, плюс исправил ошибку рендеринга. Время новой версии. + +=> report_0.6.gmi Предыдущая запись дневника разработки yah2g + +## Усмиряем роботов (продолжение) + +Как я писал в предыдущей записи дневника разработки, meta начала активно индексировать Gemini через мой экземпляр прокси. Я добавил robots.txt и... и ничего. Ни через сутки, ни через неделю. Как индексировали, так и продолжают индексировать. В документации нашлась интересная ремарка о том, что их бот может игнорировать robots.txt: + +=> https://developers.facebook.com/docs/sharing/webmasters/web-crawlers/?_fb_noscript=1 + +> Note that the FacebookExternalHit crawler might bypass robots.txt when performing security or integrity checks, such as checking for malware or malicious content. + +Раз кравлеры от meta могут игнорировать robots.txt, значит я могу банить их по значению в User-Agent. Хорошо бы когда-нибудь сделать это настройкой. + +## Проксирование не-gemini файлов + +В версии 0.6 не-gemini файлы (которые отдаются "как есть") сначала целиком читались в память, а затем так же целиком отсылались HTTP клиенту. Некрасиво и расточительно. Сделал чтение-запись кусками по 64 килобайта. + +Честно говоря, какой-то ощутимой разницы на файлах в десятки мегабайт я не заметил. Но мне так спокойнее. + +## Использование ThreadingHTTPServer + +@vlnst@shitpost.poridge.club, администратор bloat.cat, заметил на своём экземпляре, что сервер довольно просто "завалить" запросами. Начали разбираться: действительно сервер переставал отвечать от нескольких параллельных запросов. + +Я с самого начал был уверен, что выбрал базовый класс ThreadingHTTPServer для реализации HTTP сервера. Но, внимательно осмотрев код, выяснилось что это не так. Наследование от нужного базового класса решило проблему. + +## Исправление рендеринга заголовков без пробела + +Буквально сегодня обнаружил проблему неправильного рендеринга заголовков, если после символа # нет пробела. Сверился со спецификацией - все "по стандарту". Значит правим код. + +Кстати: по новому алгоритму обработки заголовков (в соответствии со спецификацией Gemini разметки) обрабатываются только заголовки первого, второго и третьего уровней. Заголовок "четвёртого" уровня станет заголовком третьего, а четвертый от начала строки символ # пойдет в текст заголовка.