Наткнулся на концептуальную проблему. Чувствовал, что с ней будет что-то не так и раньше, но сейчас упёрся лбом.
В Vanilla-форуме сделано не как у многих других, где первое сообщение топика является обычным сообщением-постингом, как и ответы. Тут текст первого поста хранится прямо в записи топика. И поэтому нельзя идентифицировать стартовое сообщение по post_id, оно определяется по topic_id.
Соответственно, если топики режутся/переносятся, то первое сообщение то конвертируется из топика в постинг, то из постинга в топик.
В результате нельзя гарантировать сохранность ID такого сообщения :-/
То есть, я могу передать в Infonesy UUID такого поста равным UUID топика. И, наверное, пока так и придётся сделать. Но тогда, при операциях с топиками Vanilla, этот UUID может потеряться. Или будет указывать уже на другое сообщение.
Конечно, ещё есть вариант хранить в БД отдельные UUID и модифицировать их при операциях форума, но это многократно усложняет работу и требует вмешательства в код чужих плагинов (split/merge топиков).
Сложный, блин, случай :-/
Говорили мне люди, не связывайся с Freenom...
Так что плюнул и поднял на домене второго уровня:
infonesy.wrk.ru
zerogate.tk Реально просто и наглядно :) Но только с точки зрения разработчика верхнего уровня. По примеру так и не понял, как, например, пытаться отправить сообщение в чат стороннему боту, не имеющему подписи на сайт. А я планирую попробовать использовать ZeroNet-чат для p2p-обмена данными взаимно недоверенными ботами :)
Пример тестового чата: zerogate.tk
Посмотрел учебник по созданию ZeroNet чата: Пример тестового чата: zerogate.tk
— Движок Авиабазы и сейчас понимает Markdown, просто чтобы народу голову не забивать, вариант BBCode используется без возможности выбора альтернативы
— MyBB 2
— Vanilla Forum
— FluxBB
— Flarum (правда, там кривой и принципиально не расширяемый Markdown без таблиц)
Получается, всё, что я щупал и признал интересным, теперь сможет поддерживать Markdown. Отлично :)
Решил попробовать включить в файлы для обмена топиков ещё и 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-хеши... Но — не красиво :-/
vole.cc
github.com
К сожалению, не поддерживает комментариев к записям. Зато идеологически близок к моей Infonesy — работает через любой инструмент p2p синхронизации каталогов. Авторы выбрали BTSync (что одобряю), но система прозволяет использовать и смешанные протоколы. Суть в том, что свои записи (Markdown поддерживается) записывается в .json и отдаются в R/O-синхронизации фолловерам. Программа также смотрит в свой каталог на появление новых записей через файловый синк от френдов.
Скачивается бинарник (или компилируется из Go-сорцов, что должно занимать секунды, но не проверял) под Linux/MacOS/Windows, запускается — и готово, можно писать в браузер по 127.0.0.1:6789. Чтобы твои записи мог прочесть кто-то другой, расшариваешь каталог с записями через p2p. Чтобы читать чужие записи — добавляешь синк к себе в катлог чужих шар.
Мой BTSync-ключ для теста — BOBZHCPN4CIXHXTVCAZY7SRXZYOG7TAMB
Жаль, повторюсь, что в системе нет поддержки комментариев. С ними был бы сразу функциональный инструмент для полноценного блоггинга. Так, увы, пока нет.