← All posts tagged Infonesy

Balancer

Пилю драйвер для Vanilla forum, чтобы, наконец, соединить, хотя бы начерно, несколько рабочих форумов.

Наткнулся на концептуальную проблему. Чувствовал, что с ней будет что-то не так и раньше, но сейчас упёрся лбом.

В Vanilla-форуме сделано не как у многих других, где первое сообщение топика является обычным сообщением-постингом, как и ответы. Тут текст первого поста хранится прямо в записи топика. И поэтому нельзя идентифицировать стартовое сообщение по post_id, оно определяется по topic_id.

Соответственно, если топики режутся/переносятся, то первое сообщение то конвертируется из топика в постинг, то из постинга в топик.

В результате нельзя гарантировать сохранность ID такого сообщения :-/

То есть, я могу передать в Infonesy UUID такого поста равным UUID топика. И, наверное, пока так и придётся сделать. Но тогда, при операциях с топиками Vanilla, этот UUID может потеряться. Или будет указывать уже на другое сообщение.

Конечно, ещё есть вариант хранить в БД отдельные UUID и модифицировать их при операциях форума, но это многократно усложняет работу и требует вмешательства в код чужих плагинов (split/merge топиков).

Сложный, блин, случай :-/

Balancer

Посмотрел учебник по созданию ZeroNet чата: zerogate.tk Реально просто и наглядно :) Но только с точки зрения разработчика верхнего уровня. По примеру так и не понял, как, например, пытаться отправить сообщение в чат стороннему боту, не имеющему подписи на сайт. А я планирую попробовать использовать ZeroNet-чат для p2p-обмена данными взаимно недоверенными ботами :)

Пример тестового чата: zerogate.tk

Balancer

Ура! Сегодня удалось «вручную» отправить тестовое сообщение в ZeroNet. Ну а читать там итак просто. Таким образом есть потенциал для включения в Infonesy ещё и ZeroNet'а (в отличие от закрытого и непонятного RetroShare).

Balancer

Забавно. Держал в syncthing черновики по разработке infonesy-адаптера к форуму mybb. Потом на пару месяцев делами завалило, к этой теме не обращался. Сейчас полез, чтобы возобновить работу — нигде нет! Только в версионном бэкапе .stversion. Подумал, что перенёс в внешний репозиторий и грохнул черновик, да забыл об этом. Но нету нигде. Удивительно. Придётся теперь из версионного бэкапа по частям собирать :)

Balancer

Если я правильно понял https://github.com/mybb/Parser, то на 2-й версии MyBB можно использовать Markdown. И тогда можно будет перевести на него все форумы Infonesy по умолчанию.

— Движок Авиабазы и сейчас понимает Markdown, просто чтобы народу голову не забивать, вариант BBCode используется без возможности выбора альтернативы
— MyBB 2
— Vanilla Forum
— FluxBB
— Flarum (правда, там кривой и принципиально не расширяемый Markdown без таблиц)

Получается, всё, что я щупал и признал интересным, теперь сможет поддерживать Markdown. Отлично :)

Balancer

Решил попробовать включить в файлы для обмена топиков ещё и UUID постингов. Чтобы приёмная нода сразу могла понять, все ли постинги есть у неё и при необходимости запросить у исходной недостающее (например, когда нода включается в работу поздно, когда идут пополнения уже имеющегося давно топика). В таком духе:

{
    "UUID": "ru.balancer.board.topic.39814",
    "Node": "ru.balancer.board",
    "Title": "G36",
    "Date": "Wed, 14 Jun 2006 03:22:00 +0400",
    "Modify": "Fri, 25 Mar 2016 22:57:26 +0300",
    "Type": "Topic",
    "ForumUUID": "ru.balancer.board.forum.6",
    "Keywords": [
        "армия"
    ],
    "Author": "Stribog",
    "AuthorMD": "059a7f25d4be01ae98f401048f0f2f5b",
    "AuthorEmailMD5": "059a7f25d4be01ae98f401048f0f2f5b",
    "AuthorUUID": "ru.balancer.board.user.8395",
    "Posts": [
        "ru.balancer.board.post.759526",
        "ru.balancer.board.post.759563",
        "ru.balancer.board.post.759910",
        "ru.balancer.board.post.759919",
        "ru.balancer.board.post.4124847",
        "ru.balancer.board.post.4125397",
        "ru.balancer.board.post.4126108",
        "ru.balancer.board.post.4126149",
        "ru.balancer.board.post.4126164",
        "ru.balancer.board.post.4126167",
        "ru.balancer.board.post.4126172",
        "ru.balancer.board.post.4126877",
        "ru.balancer.board.post.4126954",
        "ru.balancer.board.post.4144048",
        "ru.balancer.board.post.4144049",
        "ru.balancer.board.post.4144841",
        "ru.balancer.board.post.4144956"
    ]
}

Проблема — есть много огромных топиков. Так что сразу за 4 дня в обменном репозитории легло 23Мбайт файлов. Это на 876 штук. В то время, как всех остальных файлов (постинги, описания аттачей, форумы, категории) за 14 дней всего на 16Мбайт (16255 штук).

Т.е. основной обменный трафик в этом случае будут составлять файлы постингов.

Не то, чтобы 23Мбайт за 4 дня много (хотя трафика реально много больше, т.к. топики же обновляются с каждым постингом), но как-то выглядит неаккуратно. А ещё есть идея попробовать файлы постингов засовывать в ipfs, и хеши вписывать в файл топика. Чтобы приёмная нода могла постинги уметь прочитать даже при падении исходной ноды без поиска других нод с архивом этих постингов. Это ещё примерно удвоит размер файлов топиков...

Прямо не знаю, что делать :) Наверное, пока лучшая идея не появится, буду, таки, писать и UUID постов и IPFS-хеши... Но — не красиво :-/

Balancer

Ещё интересный инструмент для p2p-микроблоггинга — Vole.

vole.cc

github.com

К сожалению, не поддерживает комментариев к записям. Зато идеологически близок к моей Infonesy — работает через любой инструмент p2p синхронизации каталогов. Авторы выбрали BTSync (что одобряю), но система прозволяет использовать и смешанные протоколы. Суть в том, что свои записи (Markdown поддерживается) записывается в .json и отдаются в R/O-синхронизации фолловерам. Программа также смотрит в свой каталог на появление новых записей через файловый синк от френдов.

Скачивается бинарник (или компилируется из Go-сорцов, что должно занимать секунды, но не проверял) под Linux/MacOS/Windows, запускается — и готово, можно писать в браузер по 127.0.0.1:6789. Чтобы твои записи мог прочесть кто-то другой, расшариваешь каталог с записями через p2p. Чтобы читать чужие записи — добавляешь синк к себе в катлог чужих шар.

Мой BTSync-ключ для теста — BOBZHCPN4CIXHXTVCAZY7SRXZYOG7TAMB

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