add news section, move some articles and add new one

This commit is contained in:
postscriptum 2026-03-08 03:53:06 +02:00
parent 7dc3b067ca
commit ef746b4be5
8 changed files with 28 additions and 7 deletions

View file

@ -0,0 +1,35 @@
# Реліз Alfis DNS v0.8.7
Стосовно цього резольвера - в мене й досі подвійні "почуття" з поміж:
* його відносно відсутньою нішею і технічними недоліками
* водночас цікавістю через ненависть до класичного централізованого ринку спекуляторів та рекламних аналітиків
Все ще користуюсь, хоча й злісно пропускаю пролонгації: то через глюки реалізації PoS то за відсутності бажання користуватись DNS як таким. Але в цього рішення є перевага: блокчейн розподілений, не цензурований та іноді може дійсно спростити життя аліасами, зокрема у вразі втрати ключів до Yggdrasil.
## Основні зміни v0.8.7
Перекладаю прямо з того що вивалив ШІ
### GUI та крос-платформність
* Перенесено інтерфейс з непідтримуваного веб-переглядача до бібліотеки wry для покращення сумісності з Linux та стабільності в майбутньому.
### Покращення безпеки DNS
* Реалізовано тимчасові порти для DNS-запитів.
* Додано кодування DNS 0x20 для підвищення безпеки.
### Виправлення помилок та поліпшення
* Автоматичне перенесення конфігурацій для некоректного тестового порту (42440 → 4244).
* Виправлено попередження під час тестування.
* Оновлено всі залежності.
Ця версія зосереджена на покращенні стабільності крос-платформності та посиленні функцій безпеки DNS при збереженні сумісності з існуючими конфігураціями.
=> https://github.com/Revertron/Alfis/releases/tag/v0.8.7
## Читайте також
=> ../alfis-dns-domain-registration-in-blockchain.gmi Alfis DNS - реєстрація домену в блокчейн

View file

@ -0,0 +1,19 @@
### Закриваю свій федіверс інстанс
Після приблизно п'яти місяців свого експерименту зародити локальне сузір'я Yggdrasil, постійної мороки з вирішенням проблем інтеграції Snac та не вдалої спроби його апгрейду, вирішив таки припинити це безтолкове заняття.
Пишу цей пост для історії, якщо хтось захоче зайнятись подібним:
* протокол ActivityPub залежний від конкретної мережі: ви постійно матимете мороку з серверами що намагаються міксувати з'єднання на різні мережі (та сама картина що з проксі Invidious де частина трафіку йде через ygg а частина намагається пройти через Веб). тобто юзер налаштував собі інший конфіг і в його стрічці присутні інші мережі, які у вас тупо не працюють або блокуються з PAC
* жорстка прив'язка до хост ID: вам потрібно обрати один хост, якщо це yggdrasil то ніхто окрім yggdrasil його не побачить (якщо не казати про веб-проксі фронтенду а саме сервер сайд); якщо це Alfis, то ваші сусіди повинні також ним користуватись
* мало юзерів: їх тут за час мого перебування було два, при чому географічно далеких та мені не цікавих за тематикою, вся тусовка федіверс - живе в інтернеті
* хоч для мене є зрозумілою, але не сподобалась модель протоколу ActivityPub - надсилати оновлення фоловерам, замість того щоб вони ходили за ними самі (на прикладі RSS). мій сервер блокує вихідний трафік на інші мережі, а Snac постійно намагається кудись конектитись, це тягне купу часу з дослідженнями та фіксами в рамках форку рушія, що мені робити набридло
Інші думки та досвід з розгортання - читайте на цьому форумі, повторюватись вже не буду.
Сам я здампив дані утилітою snac2nex:
=> https://crates.io/crates/snac2nex
Та переїхав на протокол Nex, який в мене без головняка працює на всі мережі без використання JSON, HTTP та іншого трешу.
* UPD. Згодом відмовився й від Nex на користь Gemini TLS/TOFU, що корисно в плані не санкціонованої зміни приватного ключа Yggdrasil через колізії та витоки. Також, Gemini пропонує потрібні мені інтерактивні набори, без компромісів приватності і виправданий всюди, окрім як мабуть медіа-стрімів.

10
public/uk/news/index.gmi Normal file
View file

@ -0,0 +1,10 @@
# Новини
Деякі нотатки з соціалок і так...
=> starting-markdown-support-in-yoda-browser.gmi 2026-03-08 Починаю впровадження підтримки Markdown в браузері Yoda
=> alfis-dns-release-v-0-8-7.gmi 2025-10-28 Реліз Alfis DNS v0.8.7
=> kevacoin-kvazar-edition-release-v-1-4-0.gmi 2025-10-27 Реліз KevaCoin / Kvazar Edition v1.4.0 з експериментальною підтримкою меш
=> mimir-v-2-0-0a9-calls-yggdrasil-messenger-update.gmi 2025-08-25 Оновлення Yggdrasil-месенджера Mimir (v2.0.0a9_calls)
=> closing-my-fediverse-mesh-instance.gmi 2025-07-09 Закриваю свій федіверс-інстанс
=> openlegends-tes-legends-card-game-open-source-alternative.gmi 2024-03-20 Розробка карткової гри з відкритим кодом OpenLegends

View file

@ -0,0 +1,16 @@
# Реліз KevaCoin / Kvazar Edition v1.4.0 з експериментальною підтримкою меш
Власне, так як я постійно кручусь довкола ідеї зробити черговий сервіс з відкритою базою на блокчейн, вирішив натягнути деякі обнови, про які написано на сторінці релізу:
=> https://github.com/kvazar-network/kevacoin/releases/tag/kvazar-1.4.0
Мабуть головна зміна цього разу - експериментальна підтримка маршрутизації пірів Yggdrasil та Mycelium. Наскільки вона працездатна, поки не знаю, але ця функція потрібна в першу чергу користувачам з активним IPv6 на Інтернет. Резольвер дозволяє конектити релевантні сімейства адрес, це в принципі спільний патерн для всіх біткоїн-подібних "core".
Також, в клієнті Qt, пофікшені різні баги з датами і встановлено моноширинні шрифти на таблиці, а також браузер key/value, що дозволяє тепер дивитись ASCII арт і різний преформатед текст (таблички і все таке)
В цілому, все дуже сиро, мені особисто не подобається працювати з C++ і я постійно думаю про міграцію на Rust з його анти-нуб аналізатором, хоча до справи діло не доходить, навіть не знаю чи це можливо технічно:
=> https://github.com/rust-litecoin/rust-litecoin?tab=readme-ov-file#known-limitations
Тут же код брудноватий, масивний, також мені здається є витоки якщо довго крутити ноду без ребуту, але воно працює, китайці щось майнять тому дані зберігаються за лічені хвилини і майже безкоштовно.
Кому цікаво, колись писав про цей коїн тут:
=> ../kevacoin-decentralized-database-in-blockchain.gmi KevaCoin - децентралізована база даних в блокчейн

View file

@ -0,0 +1,12 @@
# Оновлення Yggdrasil-месенджера Mimir (v2.0.0a9_calls)
Revertron анонсував реліз месенджера Mimir з підтримкою голосових викликів:
=> https://zhub.link/@Revertron/115086073810941396
Наразі тільки для Android, тому протестувати я не можу.
Як заявлено автором, даний месенджер не потребує реєстрації.
## Посилання
=> https://github.com/Revertron/Mimir GitHub

View file

@ -0,0 +1,172 @@
# Розробка карткової гри з відкритим кодом OpenLegends
OpenLegends - це проєкт реалізації вільного рушія та інтерфейсу багатокористувацької карткової гри The Elder Scrolls Legends:
=> https://bethesda.net/en/game/legends
Репозиторій OpenLegends розташований за адресою:
=> https://github.com/openlegends
В першу чергу орієнтований на браузерний формат з використанням технологій HTML5.
Початковий код реалізовано мовою PHP 8, з використанням пакетного менеджеру Composer.
Причина обрання цієї мови - наявний досвід та переконання що її можливостей буде цілком достатньо для опису ігрової логіки.
Також це зручно для інтеграції веб-застосунків.
В процесі, можливо буде виконано адаптацію для десктопів на Rust з використанням QT, хоча більш ймовірною буде імплементація на Electron.
Окремо хотілось би мати альтернативу для CLI та протоколу Gemini, з підтримкою графіки ASCII.
Враховуючи функціональний потенціал оригінальної гри - завдання для однієї людини не тривіальне, утім мені все ж цікаво спробувати здійснити цю давню мрію і можливо, за цей час хтось також долучитися до розробки!
## Структура
Проєкт ділиться на три окремі гілки розробки:
* core-php - базовий інтерфейс рушія та набір абстрактних класів ядра
* asset-php - ігрові набори: карти, ігрові режими та інші компоненти, що реалізують "core-php"
* сервер - багатокористувацький інтерфейс, ймовірно буде реалізований на базі фреймворку Symfony
## Ядро (core-php)
Мета core-php - відділити будь яку ігрову логіку від базової структури рушія, що дозволить робити менш часті оновлення ядра (зберігаючи сумісність як найдовше) та активніше розвивати зовнішні інтерфейси - наприклад, ігрові набори, що реалізують певну його версію.
Наразі перебуває на стадії прототипу, для встановлення використовується остання версія з репозиторія:
```
composer require openlegends/core:dev-main
```
Відповідно, розробка ведеться в репозиторії:
=> https://github.com/openlegends/core-php
З появою першої стабільної версії, буде виконано перехід на Семантичні версії релізів:
=> https://semver.org/lang/uk
По суті, ядро складається з класів двох типів - Інтерфейси, що власне описують можливості класів карт, гравців, ігрових сесій тощо, та Абстрактні класи - що частково реалізують ці інтерфейси та використовуються ігровими наборами.
Здебільшого, Абстрактні класи містять у собі такі універсальні методи як Сетери і Гетери, але можуть містити й інші - для запобігання їх дублікації в наборах (де наприклад тільки карткових класів може бути близько тисячі).
Також, Абстрактні класи містять деякі абстрактні методи, які вимагають специфічної реалізації окремим класом: наприклад, дія карти, або гравця, яка в TES Legends мало чи не описує всю ігрову логіку в одному акті.
## Ігрові набори (asset-php)
Ігрові набори описують ігрову логіку і представлені в репозиторії asset-php:
=> https://github.com/openlegends/asset-php
Сюди входить оголошення та опис кожної карти, гравця, режиму гри та їх можливостей.
Ігровий набір у своєму релізі має орієнтуватись на певну версію ядра "core-php", що спростить розробку та супровід окремо взятого ігрового серверу, який реалізує певний набір.
В розробці використовується остання версія репозиторія, яка наразі не містить стабільних релізів:
```
composer require openlegends/asset:dev-main
```
Дана версія включає тільки умовний тестовий набір класів, що складається з декількох умовних гравців (Player1, Player2), карт (Mouse, Goblin, Rat) та режиму гри з двох гравців (Arena), достатніх для тестування `core-php` та майбутнього ігрового серверу.
Після появи першого стабільного релізу ядра, можна буде створити реальний набір, оскільки ядро перебуває в розробці а інтерфейс може змінюватись, у тестовому наборі не доречно обслуговувати більше трьох карт.
Говорячи про реліз, ймовірно, це буде копія набору TES Legends, оскільки розрахунок нового ігрового балансу - це окреме завдання з області математики і потребує немало часу, включно з тестуванням реальними гравцями.
Ігрові дані для набору можна подивитись на сайті "TES Legends Pro" (можна запозичити звідти графіку):
=> https://teslegends.pro
По зрозумілим причинам, розмістити такі дані в рамках проєкту OpenLegends не є доречним, але це не заважає розгорнути альтернативний форк "asset-php".
## Приклади роботи
Завдання будь якого рушія - спрощення розробки гри.
Отже, для кращого розуміння що собою являє рушій OpenLegends, розглянемо декілька найпростіших прикладів на основі тестового набору.
У даному матеріалі не будуть описані інші можливості, враховуючи що вони можуть різнитися в новіших версіях.
### Взаємодія карт
```
<?php
$mouse = new \OpenLegends\Asset\Test\Card\Mouse();
$rat = new \OpenLegends\Asset\Test\Card\Rat();
$damage = new \OpenLegends\Asset\Test\Card\Action\Damage(
$mouse
);
$damage->card(
$rat
);
var_dump(
$rat->getHealth()
);
```
### Картковий пул
Використовується здебільшого в ігрових сесіях для організації карткових наборів, наприклад колоди, стопки скиду, карт в руці, тощо:
```
<?php
$deck = new \OpenLegends\Asset\Test\Pool\Card();
$deck->addCard(
new \OpenLegends\Asset\Test\Card\Goblin()
);
$deck->addCard(
new \OpenLegends\Asset\Test\Card\Mouse()
);
$deck->addCard(
new \OpenLegends\Asset\Test\Card\Rat()
);
var_dump(
$deck->getRandomCard()->getName()
);
```
### Ігрова сесія
На реальному сервері, гра та її учасники створюються інтерактивно через запити графічного інтерфейсу.
У тестовому наборі, сесія кожного гравця ініціюється в конструкторі його класу автоматично, наприклад:
=> https://github.com/openlegends/asset-php/blob/main/src/Test/Game/Player/Player1.php
При цьому, реалізується абстрактний клас ядра "\OpenLegends\Core\Abstract\Game\Player", що у свою чергу - включає готові набори карт, об'єкт користувача, статус здоров'я тощо.
Після того, як об'єкт або клас гравця з картковими пулами було створено, ці дані передаються до об'єкту нової гри та ініціюється сценарій старту:
```
<?php
$game = new \OpenLegends\Asset\Test\Game\Arena();
$game->addPlayer(
new OpenLegends\Asset\Test\Game\Player\Player1()
);
$game->addPlayer(
new OpenLegends\Asset\Test\Game\Player\Player2()
);
$game->start();
```
Інші приклади (зокрема специфіка роботи ігрового серверу через веб-сокети, взаємодія з базами даних, створення інтерактивних інтерфейсів) вартують розгляду в рамках окремої гілки серії.
Сподіваюсь, на даному етапі, мені вдалось описати загальний статус та принципи розробки проєкту.
Кому цікава реалізація TES Legends з відкритим кодом - ласкаво просимо до OpenLegends!
## Посилання
=> https://github.com/openlegends Сторінка проєкту на GitHub

View file

@ -0,0 +1,15 @@
# Починаю впровадження підтримки Markdown в браузері Yoda
Так як мене явно понесло не в ті хащі з розшифруванням меш-роутерів, вирішив зайнятись тим, на що поки вистачає клепки: підримкою MIME text/markdown в браузері Yoda:
=> https://github.com/YGGverse/Yoda/pull/15
Цього ніхто досі не зробив, а чекати у моря погоди в моїй ситуації не варіант. Коли я це діло завершу - не знаю. Кожного разу примушую себе додати якусь фічу (от як проксі, яке не працює в Lagrange, чи якісь там "фішки" типу Titan які в інших браузерах або відсутні або виглядають не юзабельно)
По трішки буду пиляти, бо:
• в просторі geminiprotocol мені явно не вистачає сек'юрної документації онлайн, а в 99% це Markdown, який руками в Gemtext не перепортуєш, але MD є дуже схожим за своєю чистотою; картинки я планую лишити посиланнями, щоб не порушувати концепт 1 лінк - один перехід, все інше сумісне, хіба що не специфіковані fragments.
• протокол HTTP мені не подобається архітектурно, я не бачу сенсу завантажувати на комп слона, щоб залишати від нього хвостик (засобами фільтруючих додатків чи костильних проксі того вашого DNS)
З готових рішень, по типу SourceView, я не зустрічав. Є наближений до мети quickmd але GtkWebkit.. це не туди. Як хтось знає таки штатний вихід для TextView - маякніть. Я ж бачу для себе тільки ручну обробку засобами GtkTag.
Такі, малята, плани і така історія цього вже дво- чи три-річного проєкту на тисячі годин Wakatime, трекер якого я давно викинув.