LINUX.ORG.RU

Nastene 0.7 — простая распределённая система сообщений

 , , , ,


4

4

Nastene (она же ii) — это распределённая система сообщений, максимально упрощённое фидо. Операция идёт с двумя объёктами. Объект сообщение это сообщение. Объект эха это именованный список сообщений. Станции по заданному заранее роутингу скачивают с других станций списки, потом забирают те сообщения, которых у них нет. Пойнты пишут сообщения на станции (в веб-интерфейсе или клиентом). Всё, это весь обмен и вся структура сети.

Nastene 0.7 и есть станция. Написана на Python 3 и работает на текстовых файлах.

О роутинге. С помощью list.txt и питоньей скриптоты можно легко обеспечить режим «все обмениваются всем со всеми», но как показывает практика, у разных станций разные списки эх. Так и было задумано. Обычно в сети есть какая-нибудь станция-архив, которая скачивает все сообщения со всех станций.

Есть lite-интерфейс (поддерживает, например win95/ie4+), создана эха retro.talks.

Изначальная цель проекта — ведение маленьких, но дружных сообществ (когда трафика мало, формат эх позволяет больше вовлекаться в обсуждения). Или распределённый мини-твиттер. Проекту более 10 лет, но до сих пор сохранилось много сообщений многолетней давности с сайтов, которых уже давным давно нет. Что написано в ii, не вырубишь топором. Благодаря этому из двух уже давно умерших сайтов и эх воссоздана эха retro.talks.

Изменения (фактически, это изменения с версией 2014 года):

  • Вместо Foundation (где куча css и js файлов) используется chota css (один css-файлик). Светлая и тёмная темы. Иконочный шрифт удалён. Для тех, кому и это слишком тяжело, есть lite-интерфейс.
  • Введение тэга topicid для отслеживания цепочек (даже если какая-то часть сообщений потерялась).

Это всё так же базовая реализация протокола, следующую версию можно выпустить ещё лет через 10.

P.S. Korovan-free product

>>> Подробности

★★

Проверено: hobbit ()
Последнее исправление: unfo (всего исправлений: 7)
Ответ на: комментарий от watchcat382

Вообще,идея использовать протокол HTTP для диалога между узлами сети вместо какого-то самодельного протокола хэндшейка - идея интересная. И по всей видимости работоспособная даже если передаются вовсе не веб-страницы,а какие-то произвольные данные,даже и упакованные.

название НаСтене взято из анонса 2014 года, где говорилось, что протоколом может быть что угодно, хоть один на стене рисует qr коды с бандлами, а второй ходит и их считывает, получая сообщения. но в реале http это самое простое, что поддерживает хоть любой язык программирования, хоть busybox

alt-tab-let ★★
() автор топика
Ответ на: комментарий от watchcat382

Увы, по слову «ii» ничего нагуглить невозможно в виду неудачно выбранного названия/аббревиатуры именно с точки зрения поиска.

да, поэтому я и сменил название

обсуждал я только формирование хэшей, на лоре, остальное полностью моя идея, и как я задумывал, так я её и воплотил.

alt-tab-let ★★
() автор топика
Ответ на: комментарий от alt-tab-let

остальное полностью моя идея, и как я задумывал, так я её и воплотил.

Проделанная вами работа вызывает уважение,вполне серьезно.

watchcat382
()
Ответ на: комментарий от alt-tab-let

я и сменил название

Прошу прощения за это свое мнение,но мне оно тоже не кажется удачным,но по другой причине - из-за «акустического» сходства со словом nasty.

watchcat382
()
Ответ на: комментарий от watchcat382

Есть какой-то комитет/рабочая группа/ответственный координатор?

Был. Недавно сплыл. Посчитал это всё нежизнеспособным.

rebforce
()
Ответ на: комментарий от MOPKOBKA

«Добрый вечер, мистер Андерсон, вас только здесь и не хватало» ©

Тянет вас на смузи прям.

Ну я использую Traefik исключительно для дублирования ноды по грёбаному https (ибо там встроен ACME-клиент для LetsEncrypt), остальное сервачится напрямую. На тикле, да.

Не лучше ли сделать протокол файловый?

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

Что бы можно было запустить апач

И эти люди на трэфик гонят, ага…

То что в распределенной сети какая то нода может своими хешами все сломать это вообще рофл.

Да не может она всё сломать, не слушай эти бредни. По-хорошему ID с коллизиями должны отбрасываться, а нода — дефедерироваться, если она только такие и генерит.

rebforce
()
Ответ на: комментарий от watchcat382

Тогда надо сначала определиться с критериями «полноценности».

Ну я один критерий добавил, это поддержка человеческого поиска в дополнение к машинному.

В текстовой почте «нормальный поиск» - это по словам/сочетаниям в тексте сообщения. Создать какой-то индекс заранее тут не получится.

https://ru.wikipedia.org/wiki/Полнотекстовый_поиск

MOPKOBKA ★★★★★
()
Ответ на: комментарий от watchcat382

Так html-страница это тоже вобщем-то файл,даже если сгенерирована на стороне сервера скриптом «на лету».

В этом протоколе не html страницы, просто обычный text/plain. Но я не считаю их файлами, потому что нельзя заранее их подготовить, для запроса с offset:limit тебе придется сгенерировать очень и очень их большое количество. Файлы о которых я говорю, это возможность избавится от генерации файлов на лету.

Уникальный идентификатор у сообщения в любом случае должен быть чтобы можно было выполнять дедупликацию на узлах при наличии более чем одного пути от узла к узлу. Что кстати плохо умело Фидо.

Согласен, я же его и предложил выше. Я пока не знаю какие должны быть требования, но из того что я вижу, он вроде неплохо подходит. Из плюсов он короче, легче генерируется, и более нагляден.

MOPKOBKA ★★★★★
()
Ответ на: комментарий от MOPKOBKA

https://ru.wikipedia.org/wiki/Полнотекстовый_поиск

Цитата оттуда:

«При этом поисковая фраза должна быть написана слово в слово (то есть «поиска», «поисковик» — невалидные варианты для примера выше)»

Вот именно этот недостаток я и имел в виду - ищем «поиск» не находитм «поиска». А алгоритм Левенштейна - найдет. Кстати, в Фидо была почтовая программа (HPT) которая искать по алгоритму Левенштейна умела. Но искомое надо было задавать ей в конфиге - то есть это было сделано для машинной обработки при сортировке писем,можно было найденное автоматически копировать в отдельную папку.

watchcat382
()
Ответ на: комментарий от alt-tab-let

С файловым подходом тоже можно пачками проверять изменения. Есть даже примеры, это репозитории, наиболее простая структура у Slackware, там можно получить обычный файл CHECKSUMS.md5 через который определяются изменения, но что бы его не скачивать существует CHECKSUMS.md5.asc в пару байт, который можно предварительно проверить. В ii можно добавить HTTP-возможности для этого, в Slackware по некоторым причинам нет. Вместо CHECKSUMS.md5.asc можно отправлять заголовок о изменении CHECKSUMS.md5, остается только один файл с хешами.

base64 хорош тем, что это просто одна строка, и есть однозначный разделитель сообщений - это новая строка

Я думаю задача упрощается тем что нужен лишь терминатор сообщений, а мысль о разделителе приходит из за длительного воздействия Python и Go. Если бы не было батареек с base64, уверен был бы выбран более оптимальный вариант.

Я думаю есть разное понимание простоты, то что я вижу, не только технологический минимализм, но и некое влияние мышления «проще, но проще в том смысле что просто сделать на python, go».

В С например вариант с обработкой терминатора делается проще чем вариант со разделением строки, как и в ассемблере, я заметил что высокоуровневые языки часто делают некие простые вещи сложнее.

MOPKOBKA ★★★★★
()
Последнее исправление: MOPKOBKA (всего исправлений: 3)
Ответ на: комментарий от watchcat382

HTTP относительно неплохо продуман, по нему и видео хорошо передаются, как раз там и используется offset:limit, что бы у пользователя прокрутка видео в конец была моментальной, и не надо было ждать пока скачается весь файл.

MOPKOBKA ★★★★★
()
Ответ на: комментарий от rebforce

Ну я использую Traefik исключительно

Для меня это как в торт селедку кинуть %) Знаешь где еще встроен ACME клиент? Apache2. В Slackware ставится по умолчанию.

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

Выше написал если интересно, файловый подход не исключает подобных оптимизаций.

Да не может она всё сломать, не слушай эти бредни. По-хорошему ID с коллизиями должны отбрасываться, а нода — дефедерироваться, если она только такие и генерит.

Это может быть и непреднамеренное поведение. Нужно усложнять реализацию что бы искать эти несоответствия, я считаю что можно было и проще сделать, пока тут предложений нету, я не понимаю требования к ID.

MOPKOBKA ★★★★★
()
Последнее исправление: MOPKOBKA (всего исправлений: 1)
Ответ на: комментарий от watchcat382

Извиняюсь, не прочел что за бред я скинул, в современных БД эта проблема решена, понятно что не полностью, для этого нужно читать мысли, но слова с ошибками оно понимает, склонения, различные вариации.

MOPKOBKA ★★★★★
()
Ответ на: комментарий от watchcat382

Это где-то обсуждалось? Если да - можно ли где-то почитать те обсуждения?

Я в теме ii/IDEC только с середины 2021 года, но я очень хорошо умею находить информацию закопанную глубоко в анналах - вот что обсуждалось на лоре в своё время (2014):

Shaos
()
Ответ на: комментарий от alt-tab-let

Есть ещё фидошники в фидовницах :)

Эх, ностальгия... Но у ФИДО как у иерархии есть один косяк!
СЕТЬ! - Сеть это структура ограниченная одним городом. я как NC не мог включить узел из соседней деревни, только внутри города!
Тех кто в деревне - надо было прописывать в зоне, а потом мучительно, вручную роутить.
А ФИДО, это та сеть в которой проявилась Пенза, ещё до появления интернета! Через ФИДО - Пенза впервые вышла в информационное пространство!

n0mad ★★★
()
Ответ на: комментарий от n0mad

не мог включить узел из соседней деревни

Из-за каких-то сложностей набора телефонного номера? Или другие причины? Если из-за номера - то «виновата» жесткая привязка к среде передачи - классической телефонной сети. Потому я и упоминал cheshirenet,где впервые была выдвинута идея отвязки сети доставки контента от среды его передачи.

Кстати - финт ушами - поднимаем ppp-соединение с деревней,а узел прописываем как ip-only. Демон pppd вполне неплохо умеет звонить «on-demand» и класть трубку когда трафика нет. Я это для передачи email когда-то использовал(97 год),думаю для фидо тоже применимо.

watchcat382
()
Последнее исправление: watchcat382 (всего исправлений: 1)
Ответ на: комментарий от alt-tab-let

У нас вроде Находка на 5045 сидела пока 6045 не получила, но я не уверен

Любые правила можно нарушать, в массе никто и не заметит, но в те времена межгород до соседней деревни достаточно дорого стоил и другой код города - это должна быть другая сеть, чтобы в ZMH ему почту могли бесплатно кидать.

n0mad ★★★
()
Ответ на: комментарий от watchcat382

не мог включить узел из соседней деревни

Из-за каких-то сложностей набора телефонного номера? Или другие причины? Если из-за номера - то «виновата» жесткая привязка к среде передачи - классической телефонной сети. Потому я и упоминал cheshirenet,где впервые была выдвинута идея отвязки сети доставки контента от среды его передачи.

В 1994, когда у нас всё начиналось - в Пензе и Интернета небыло, узел Интернета открылся в местном телекоме - силами ФИДОшников, и софт для специфической «пакетной» X25 платы - был выкачан и настроен силами ФИДОшников.

Кстати - финт ушами - поднимаем ppp-соединение с деревней,а узел прописываем как ip-only. Демон pppd вполне неплохо умеет звонить «on-demand» и класть трубку когда трафика нет. Я это для передачи email когда-то использовал(97 год),думаю для фидо тоже применимо.

Вопрос не в извращениях, а в идеологии. Зачем деревне быть внутри сети другого города? Пусть будет гордой 2:50/xxxxx

n0mad ★★★
()

Как будет происходить синхронизация данных, когда станций будет более 100, а 1000? Сколько потребуется времени, чтобы каждая станция синхронизировалась с каждой? По сути здесь вопрос о репликации данных БД, формат при этом уже не важен, текстовый он или бинарный. Не рассматривался вопрос о синхронизации станций не всех со всеми а по цепочке?

Nelfo
()
Ответ на: комментарий от Nelfo

Ну автор изначально не предполагал что все будут фетчить всех как сейчас (т.к. нас мало) - изначально предполагалась некая иерархия из колец - ну он наверное сам расскажет, если захочет.

P.S. И кстати даже сейчас все не синхронизируются со всемни на 100%, а только берут интересующие их эхи, т.е. вполне возможен вариант, что кто-то куда-то ответит, а оно никому не придёт либо придёт не всем, т.к. эту конкретную эху забирают не все…

Shaos
()
Последнее исправление: Shaos (всего исправлений: 1)
Ответ на: комментарий от Nelfo

Не рассматривался вопрос о синхронизации станций не всех со всеми а по цепочке?

Насколько мне известно, этот вариант вообще закладывался в дизайн сети как основной. Когда я пришёл и начал фетчить всех своим клиентом, некоторые меня даже во внесении беспорядка обвинили, потому как я отвечал на сообщения blcat раньше, чем их фетчил себе shaos, и ответы добавлялись в базу раньше исходных сообщений. Правда, доводы о том, что порядок отображения сообщений должен всё-таки клиентом разруливаться, а не нодой, победили, но осадочек, как говорится, остался.

rebforce
()
Ответ на: комментарий от alt-tab-let

название НаСтене взято из анонса 2014 года

Предлагаю логотип: ультрафиолетовая лампа на фоне узора старых советских обоев.

macrohard ★★
()
Ответ на: комментарий от Shaos

И кстати даже сейчас все не синхронизируются со всемни на 100%, а только берут интересующие их эхи, т.е. вполне возможен вариант, что кто-то куда-то ответит, а оно никому не придёт либо придёт не всем, т.к. эту конкретную эху забирают не все…

Что, кстати, слегка напрягает, ибо не знаешь, где тебя гарантированно прочтут, кроме idec.talks.

P.S. И здесь привет.

rebforce
()
Ответ на: комментарий от rebforce

На написание GUI-клиента ii с нуля у меня ушло в районе двух недель с перерывами.

Я не понимаю. То есть, поинт еще и по описанию формата должен себе софт написать? Нодовый софт вроде есть, а создать поинтовский софт никто не озаботился?

Xintrea ★★★★★
()
Ответ на: комментарий от Xintrea

Ну Цезий есть - текстовый клиент на питоне написанный. Андроидовский клиент есть (был т.к. больше не собирается). Кто-то делал на Qt5, но хрен знает в каком оно состоянии. А так-то конечно проще через веб-интерфейс читать-писать прям на вебстранице ноды…

Shaos
()
Ответ на: комментарий от rebforce

Что, кстати, слегка напрягает, ибо не знаешь, где тебя гарантированно прочтут, кроме idec.talks.

А что значит «гарантированно прочтут»?? Нет такого в природе, и никто не обязан вас читать... Только если тематика интересна и подпишутся...И то это гарантирует получение, но никак не прочтение...

Somebody ★★
()
Последнее исправление: Somebody (всего исправлений: 2)
Ответ на: комментарий от rebforce

«потому как я отвечал на сообщения blcat раньше, чем их фетчил себе shaos, и ответы добавлялись в базу раньше исходных сообщений»

А вот это вообще отдает малопригодностью технологии. Сама идея распределенного форума очень классная, эта тема меня заставила здесь зарегистрироваться, хотя и читаю лор несколько лет. Сам в процессе обдумывания чего-то подобного, но нужно решить несколько совсем не простых алгоритмических задач, чтобы было просто для пользователя.

Nelfo
()
Ответ на: комментарий от Nelfo

Почему бы это малопригодностью? В спецификации у сообщения есть таймштампы, поэтому на нодах сообщения хранятся в порядке получения нодой, а вот клиент уже выстраивает их хронологически.

rebforce
()
Ответ на: комментарий от rebforce

Если сообщение не пришло, а ответ на него пришел, то таймштамп и сортировки по нему не помогут. Придется, грубо говоря, пользователю сидеть и обновлять страницу в ожидании, когда подъедут все данные. Опять же, еще нужно понять, что каких-то сообщений не хватает. Не всегда это получится сделать по контексту ответа.

Nelfo
()
Ответ на: комментарий от Nelfo

Если два человека являются поинтами разных нод, которые между собой редко синхронизируются, то это неизбежная ситуация. Поскольку читать можно со всех сразу, а вот пишут обычно только в одну. Как вариант, один из участников процесса может зарегаться на ноде другого и писать через неё.

Но «сидеть и обновлять страницу» не надо. Такие сети — вообще не про реалтайм, а про шахматную игру по переписке общение довольно медленное и обстоятельное.

rebforce
()
Ответ на: комментарий от Xintrea

Я не понимаю. То есть, поинт еще и по описанию формата должен себе софт написать? Нодовый софт вроде есть, а создать поинтовский софт никто не озаботился?

Поинтовский софт есть, просто мне свой удобнее.

rebforce
()
Ответ на: комментарий от Shaos

А так-то конечно проще через веб-интерфейс читать-писать прям на вебстранице ноды…

Но для этого надо быть нодой.

Ладно, подождем еще лет 10, может автор этой дичи разродится документацией, или кто-то ему поможет.

Xintrea ★★★★★
()
Ответ на: комментарий от Xintrea

Но для этого надо быть нодой.

Не обязательно. У Шаоса, например, вебморда позволяет вбивать текст и authstring прямо там.

rebforce
()
Ответ на: комментарий от watchcat382

Какая там у вас скорость доступа к ютубу?

Попався!

А сколько сайтов вообще недоступны,причем просто потому что им не повезло оказаться на одном хостинге с чем-то неугодным властям?

Докер Хаб никто не блокировал, но он не доступен. Хмм, интересно, почему?.. И какое отношение это имеет к убогой борде из ОП?

somemong
()
Ответ на: комментарий от rebforce

Не обязательно. У Шаоса, например, вебморда позволяет вбивать текст и authstring прямо там.

Кто такой Шаос и где у него вебморда?

Xintrea ★★★★★
()
Ответ на: комментарий от somemong

Докер Хаб никто не блокировал, но он не доступен. Хмм, интересно, почему?.

А вот хрен его знает. Еще до всех этих блокировок я неоднократно замечал что в интернете не все со всеми могут связаться. Еще когда работал программистом и админом и под моим управлением были компы в разных местах подключенные через разных провайдеров. Так вот специально бывало проверял - одни сайты недоступны с одного компа,другие с другого. Особенно это касается сайтов находящихся в далёких странах и малоизвестных.

И какое отношение это имеет к убогой борде из ОП?

Экономия трафика потому что. Интерфейс Лора тоже некоторые считают «убогим» потому что на нем нет никаких лишних украшательств. А мне наоборот нравится. И с настройкой блокировщика рекламы возиться не надо(он способен бороться не только с собственно рекламой но и с украшательствами).

watchcat382
()
Ответ на: комментарий от Xintrea

А что такое Шаос?

Блин, чувак, Шаос - это я :)

Я тебе там выше уже отвечал:

Nastene 0.7 -- простая распределённая система сообщений (комментарий)

И ты мне уже отвечал:

Nastene 0.7 -- простая распределённая система сообщений (комментарий)

Но для этого надо быть нодой.

Не надо быть нодой - надо быть поинтом ноды у которой есть веб-морда и иметь веб-браузер (а чтобы просто читать - просто браузера достаточно).

P.S. линк на мою ноду ii/IDEC тут в комментах уже несколько раз пролетал…

Shaos
()
Последнее исправление: Shaos (всего исправлений: 2)
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.