Commit Diff


commit - 0790c442310bc7e0df1cd25156ffda90823f5019
commit + 8c37adef8137140a41fbfede9486ab1f7f354f23
blob - 2e23114c73aab61061b905acc8a585fa773bc8a8
blob + de519c1ecd22a0ae0b7df7023ff2ffebffd53239
--- capsule/atom.xml
+++ capsule/atom.xml
@@ -8,7 +8,13 @@
         <name>continue</name>
         <email>continue@to.any-key.press</email>
     </author>
-    <updated>2024-11-13T16:35:55.798018+00:00</updated>
+    <updated>2024-12-12T16:50:15.038274+00:00</updated>
+    <entry>
+        <id>gemini://any-key.press/yah2g/report_0.7.gmi</id>
+        <link href="gemini://any-key.press/yah2g/report_0.7.gmi" rel="alternate"/>
+        <title>yah2g: накопившиеся изменения и исправление рендеринга заголовка без пробела</title>
+        <updated>2024-12-12T16:50:15.038274+00:00</updated>
+    </entry>
     <entry>
         <id>gemini://any-key.press/trap/2024-10-31.gmi</id>
         <link href="gemini://any-key.press/trap/2024-10-31.gmi" rel="alternate"/>
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 разметки) обрабатываются только заголовки первого, второго и третьего уровней. Заголовок "четвёртого" уровня станет заголовком третьего, а четвертый от начала строки символ # пойдет в текст заголовка.