RSS
[>] basic
to.doc.14
51t(lenina,1) — All
2014-04-02 11:03:32


== плоское api ==

Самая простая реализация, без /u/ и без приёма пойнтовых сообщений, выглядит так:

Сервер (использует bottle.py):

====[python]====
import bottle

@bottle.route('/m/<h:re:[a-zA-Z0-9]{20}>')
def msg(h):
return open('msg/%s' % h).read()

@bottle.route('/e/<echo:re:[a-z0-9_.!-]{60}>.<year:int>')
def elist(echo,year):
return open('echo/%s.%s' % h).read()

bottle.run(port=62220)

Клиент

====[python]====
URL='http://51t.ru/'
ECHO='ii.test.2014 ii.about.2014 ii.dev.2014'

def getf(l):
    import urllib; print l; return urllib.urlopen(URL + l).read()

def get_echoarea(name):
    try: return open('echo/%s' % name).read().splitlines()
    except: return []

def savemsg(ea,h,s):
    open('msg/%s' % h,'w').write(s)
    open('echo/%s' % ea, 'a').write(h + '\n')

for ea in ECHO.split():
    newel = getf('e/%s' % ea).splitlines()
    myel = set(get_echoarea(ea))
    for h in newel:
        if h not in myel:
            s = getf('m/%s' % h)
            savemsg(ea,h,s)


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

Более сложные структуры - только для большей скорости синхронизации с клиентами.

[>] api
to.doc.14
51t(lenina,1) — All
2014-04-02 11:03:32


== /u/ ==

/u/ - это запросы для обмена сообщениями, на которых и строится вся синхронизация.

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

Для всего этого взаимообмена служат три URL-а:


> /u/e/эха.номер/эха.номер/эха.номер

список сообщений из заданных эх, в формате

эха
msgid
msgid
msgid
эха
msgid

отличить эху от сообщения очень просто - в имени эхи есть точка, а в номере сообщения - нет


> /u/m/msgid/msgid/msgid

бандл сообщений, в формате

строка:код
строка:код

где код - закодированное base64 сообщения (все серверы обязаны принимать как обычный, так и urlsafe-словарь, генерируются же бандлы в формате обычного base64)


> GET /u/point/pauth/tmsg или POST /u/point

Передаёт пользовательское сообщение ноду в виде запакованного текста base64 определённого формата (замечания те же, что и выше. кроме того, сообщение можно передать и через get-запрос, и вот там уже обязан быть base64_urlsafe)

[>] push-ноды
to.doc.14
51t(lenina,1) — All
2014-04-03 06:11:13


/u/push

кроме отправки данных, ноды могут (но не обязаны) реализовывать формат push, который принимает нодовые сообщения.

push - это бандл наоборот. если фетчинг скачивает бандлы, то push их проталкивает на другой узел (нововый или пойнтовый.)

ноды, которые поддерживают u/push, называются push-ноды.

формат - такой же, как и у бандлов, метод засылки - такой же, как и у point-пуша (собственно, в версии 0.1 этот метод и назывался push, а нодовый пуш назывался jt)

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

[>] в тему
to.doc.14
51t(lenina,1) — All
2014-04-05 01:51:48


http://www.linux.org.ru/forum/talks/10355292

(тема: куда делся nntp)

[>] письма
to.doc.14
51t(lenina,1) — All
2014-04-05 11:02:38


письма проекту runtu и puppyrus

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

[>] Гейтование
to.doc.14
51t(lenina,1) — All
2014-04-06 05:45:54


Допустим, вы уже можете создавать сообщения, будь то своя станция или php-модуль для форума. Пришла пора гейтоваться. :)

> === Гейтование и синхронизация

В эхе X на станции Y создано сообщение. Чтобы получить это сообщение, нужно быть:

* подписанным на эху X у кого-нибудь из аплинков

и

* получать эту эху у станции Y
* или получать эту эху у кого-нибудь, кто получает эту эху со станции Y
* или у кого-нибудь, кто получает эту эху со станции, который получает эту эху со станции Y


Если где-то в этой схеме синхронизация односторонняя или отсутствующая (то есть, один из ваших аплинков не получает
эту эху), то это письмо до вас не дойдёт.

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


> === Топология Валенок

Схема простая, как валенок. Эта схема использовалась и до сих пор используется
для гейтования двух первых узлов.

Выбирается список эх. Станция A натравливает фетчер на станцию B и прописывает в cron.
Станция B натравливает фетчер на станцию A и прописывает в cron. Всё.


> === Топология Хоббит

Некая станция-станции только принимают соединения. И кто-то, обзванивая их, делает им pull/push. Туда и обратно.


> === Гейт-посредник

Вместо того, чтобы обзваниваться напрямую, станции выбирают некий транзитный узел/узлы, будь
то хоть простой php-скрипт на бесплатном хостинге.

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


> === Пример: Письмо Романа

Олёна находится на станции voyevoda. Она любит Романа и хочет послать ему сообщение в эху
vvv.olena.14. Станция voyevoda гейтуется только со станцией tsar, через некий гейт pochta.
tsar пушит на voyevoda напрямую, а забирает через pochta. voyevoda пушит на pochta,
туда же пушат остальные посадские. он никого не пулит, только получает напрямую.

Роман находится на станции bastrukov, которая гейтуется с некоторыми узлами в своей локалке,
двухсторонняя синхронизация налажена bastrukov-don и bastrukov-volga, где свой набор эх,
и своя сеть.

Олёна все пишет и пишет письма, и они остаются на станции pochta.

Ребята из сети Бастрюкова уговаривают станцию tsar гейтоваться. Прописывают все эхи,
а благоразумный Роман создаёт и vvv.olena.14, да пропихивает её в список обмена. И пишет туда письмо.

Письмо попадает на станцию tsar. Теперь у нас есть две эхи vvv.olena.14

Одна ходит по маршруту voyevoda -> pochta. Другая по маршруту сети Романа, включающей
обмены bas <-> don, bas <-> vol и bas <-> tsar.

Далее Роман просит станцию tsar добавить эту эху в список пуша на voyevoda.

Теперь письмо Романа есть на всех станциях сети, включая voyevoda и pochta. Олёна видит письма Романа и радуется.

Теперь Роман просит станцию tsar добавить эту эху в список загрузок со станции pochta.
Теперь окончательно всё, и все 1932 письма vvv.olena.14 видны по всем станциям сети.

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

[>] ii.odii.ru
to.doc.14
51t(mira, 2) — All
2014-05-28 19:15:42


есть, что сказать - не молчите! :)

[>] По документации на сайте
to.doc.14
vit01(mira, 1) — All
2014-05-28 19:28:56


>- Там есть шифрование?
> Нет и неприменимо. Это технология для открытого общения, все сообщения доступны всем, и хранятся теоретически вечно.
Не нравится мне это. Лучше написать: "Никто вам не запрещает использовать шифрование в ii. Возможность есть, но в этом нет необходимости. ii - это технология для открытого общения, мы считаем, что все сообщения должны быть доступны всем, поэтому в стандарте шифрования нет".

> - Это фидо?
> и да, и нет
"ii - это не фидо, это гораздо лучше" ... как я там написал :)

Думаю, ссылку вверху "об" лучше заменить на "Что это".

[>] Re: По документации на сайте
to.doc.14
51t(mira, 2) — vit01
2014-05-28 19:39:44


> Не нравится мне это. Лучше написать: "Никто вам не запрещает использовать шифрование в ii. Возможность есть, но в этом нет необходимости. ii - это технология для открытого общения, мы считаем, что все сообщения должны быть доступны всем, поэтому в стандарте шифрования нет".

в minifaq? вот я сейчас, два раза видя этот текст, даже его не прочитал :) не надо, чтобы человек уснул на первой же странице. придумай короткий-короткий текст для того, что ты сейчас сказал :)

> "ii - это не фидо, это гораздо лучше" ... как я там написал :)

этот текст тоже будет на главной. но не в minifaq. ещё там должна быть ссылка на скачку (сделай страницу, где раскидай все свои пакеты, тарболы и всё, чё там у тебя, у меня будет только ссылка. кстати, забери последние мелкие фиксы из hg для http-клиента и для сервера), ссылка на битбакет, и пара текстов о том, что эта страница навсегда изменит жизнь пользователя, который на неё зашёл :)

> Думаю, ссылку вверху "об" лучше заменить на "Что это".

как это пошло и скучно :)


ps. ты у нас эксперт по github-документации. как там добавить ДВА CNAME? :)

[>] Re: По документации на сайте
to.doc.14
vit01(mira, 1) — 51t
2014-05-29 05:19:40


> в minifaq? вот я сейчас, два раза видя этот текст, даже его не прочитал :) не надо, чтобы человек уснул на первой же странице. придумай короткий-короткий текст для того, что ты сейчас сказал :)
>> - Там есть шифрование?
В стандарте нет. Хотите - используйте, но в этом обычно нет необходимости.

> этот текст тоже будет на главной. но не в minifaq. ещё там должна быть ссылка на скачку (сделай страницу, где раскидай все свои пакеты, тарболы и всё, чё там у тебя, у меня будет только ссылка. кстати, забери последние мелкие фиксы из hg для http-клиента и для сервера), ссылка на битбакет, и пара текстов о том, что эта страница навсегда изменит жизнь пользователя, который на неё зашёл :)
Ок, сделаю обязательно (но немного потом).

> как это пошло и скучно :)
Зато сразу понятно человеку, который только туда зайдёт :)

> ps. ты у нас эксперт по github-документации. как там добавить ДВА CNAME? :)
Увы, я не эксперт по доменам (я всего один домен зарегал, но cname не настраивал).

[>] Re: По документации на сайте
to.doc.14
Romero Yakovlev(lenina,1) — vit01
2014-05-29 06:10:57


> В стандарте нет. Хотите - используйте, но в этом обычно нет необходимости.

наверное, всё таки "смысла", а не необходимости :)


> Зато сразу понятно человеку, который только туда зайдёт :)

ну, когда объясняют очевидные вещи, особенно таким тоном - это, в том числе, и признак неуважения. правильно as kz раскритиковал мою предыдущую регистрацию, где было про неидентичные списки. :)


> Увы, я не эксперт по доменам (я всего один домен зарегал, но cname не настраивал).

github сделан роботами для роботов. :) типичный пример овертехнологичности, который работает, не смотря ни на что, хотя люди плачут и мучаются... потому что их все вокруг подгоняют "давай, давай, делай гитхаб", только с ним ты человек. :)

[>] вторая часть марлезонской статьи
to.doc.14
51t(mira, 2) — All
2014-05-30 07:01:43


= История одной сети, или революция, которую никто не заметил =

== В начале было фидо ==

Фидошники очень любят повздыхать о старых временах. Но и причина у этого есть - тогда в сети действительно была организация, тогда, чтобы можно было что-то найти, нужно было только найти эхоконференцию, и в ней найдёшь всех единомышленников по этой теме. Централизация, все умы стекаются. А в интернете, наоборот, каждый суслик своему сайту и агроном своему форуму с 50 разделами. Хочешь найти лучшее решение? Обойди все тематические форумы, хотя бы популярные. Умри, но обойди. Каждый форум - кольцо, которое хочет рулить всеми остальными, и никто не хочет отдавать ни толики своего суверенитета.

Если гора не идёт к Магомету, значит вера без дел мертва. Надо сделать что-то, делающее обмен возможным.

И для этого нужна была какая-то основа. Для начала, просто для обмена трафиком - как фидо, но только проще, сильно проще. Чтобы можно было делать либо плюгины, либо внешние гейты для вордпресов, симплмашинов и прочей интернет-ереси - то есть, от сайтов потребуется либо минимальное вмешательство, либо никакого. Я назвал её ii, хотя чувство прекрасного просило назвать Настей или Катей.


== Реализация ==

Мысль не давала мне покоя, но где-то в фоне, никогда на этом не концентрируясь. Несколько лет, сама по себе, не спрашивая меня, она что-то подмечала, что-то проверяла, что-то отбрасывала, и в итоге, в один прекрасный вечер говорит мне - остался только один вопрос, компромисс между длиной хэша и его красивучестью. Небольшой опрос на эту тему помог выбрать оптимальную длину. И... завертелось. Эталонная реализация, включая сервер и txt-клиент была создана минут за 20, и в итоге там ничего не поменялось, каноны закрепились. Как было всё упрощено, так есть, и так будет всегда.

Главные компромиссы, которые упростили сеть, и которые позволили сделать транзитную ноду на php (спасающую от многих проблем и добавляющую распределённости: просто добавь бесплатный хостинг), уместить в байт 300 кода:

* Номера имеют только серверные сообщения: Клиентские сообщения - это вообще не сообщения, пока сервер их не завизирует. Не нужны строгие схемы взаимодействия клиента с сервером. Да, кто-то может подумать, что гонять пользовательское сообщение для того, чтобы получить его обратно - это излишняя трата 500 байт в сети, но... это помогает и сразу обнаружить проблемы (если оно не вернётся), и не ломает общий случай частным.

* Синхронизация, основанная на сравнении: Некоторые пользователи давали советы по различным детекциям, по выборочной сортировке. Да, сейчас проблемы переполнения решаются организационно, а не технически (и это, на мой взгляд, правильно, роботы-детекторы нужного от ненужного так несовершенны), но они решаются. А синхронизация при этом остаётся простой, как три рубля - вот список, и вот список, найди всё то, чего нет, и забери. Из нужных конференций... а ненужные тебя не касаются.

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

* Обязательные постфиксы для конференций: Во-первых, сразу видно, что это конференция (как по забор.точка.ру сразу понятно, что это интернет-сайт). Во-вторых, позволяют не делать раздутых конференций а просто переезжать в другие. Сейчас общеприняты постфиксы .YY (год) или .YYMM (год-месяц)

* Простые решения: Один человек ушёл из проекта, обвинив нас в том, что мы многое переизобретаем. Но то, что есть на python с его огромной библиотекой, может не быть на kolibrios с его ассемблерными перевозками. Реализация, которую просто повторить, частями или целиком - вот, что всегда было для меня главное. Наверное, эталонную реализацию можно собрать с помощью циркуля и линейки. Или на счётах. Например, транзитную ноду на php написал я сам, это было только несколько строк. В полнофункциональную ноду его переписали другие. Где-то в недрах, говорят, зреет и нода на bash. Клиент на bash+dialog уже есть. А если бы не было какой-нибудь библиотеки для чего-нибудь - процесс бы просто остановился, потому что трудоёмкость реализации какой-то библиотеки была бы в разы выше, чем всего остального, вместе взятого.


== Пробки и ошибки ==

Человек с двоящимися мыслями не тверд во всех путях своих. Поэтому нетвёрдой походкой я пытался разглядеть в ii потенциал для роста, чтобы это имя стало известным уху, и тематические сайты мигом бросились меняться друг с другом.


1. Африканские дети и места с плохой связью. Офлайн, все дела. Флоппинет жив. Сигнальнокостёр-нет - будет жить!

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

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


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

Нужен трафик. Но, такое ощущение, что с того времени интернет сильно изменился. Мне там вообще ничего неинтересно! Мне не хочется никуда ходить, не хочется никого читать, это не вызывает у меня интереса. Хочется сформировать клуб хороших людей, и оградиться от тлетворного влияния интернета, но я понятия не имею, где их искать, как их собрать и как их удерживать до того, как соберётся критическая масса. Дежурный приём:

- Алё, Серёга, привози девчонок, у нас тут столько водки!
- Алё, Витёк, у нас тут девчонки, вези водку!

... не работает. Революция, которую так хотели большевики - не состоялаcь. Остаётся только пункт 2.


== ii и узконишевые os - вместе веселее ==

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

1. Люди. Это явно не те люди, которые гонятся за всем модным, это увлечённые энтузиасты своеого дела, и их мало волнует то, что над ними посмеиваются. :) Это то, что надо, на данном этапе развития сети. Хорошие люди, умеющие методично гнуть свою линию.

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

3. Моментально появляется тематика. А там, люди и во внетематические перекрёстные эхи будут ходить, поболтать о том, о сём, найдутся новые интересы. "Где двое или трое собраны во имя моё, там я посреди них", и там эха для них. Если два пользователя haiku и три kolibri интересуются одной тематикой, это уже повод для эхи. Хоть об angband, хоть о водке. Теперь у сети есть ещё один якорь.

4. Количество и мелкий трафик форумов поддержки этих проектов как раз идеально вписывается в концепцию ii: вместо того, чтобы создавать темы, в которых один ответ в неделю - тематическая лента, где все вопросы и ответы видны всем, и не нужно всё прокликивать. Впрочем, технология позволяет легко заворачивать хоть в ветки, хоть в темы, хоть в своё представление.


== Будущее уже сейчас ==

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

[>] Re: вторая часть марлезонской статьи
to.doc.14
vit01(mira, 1) — 51t
2014-05-30 07:04:20


Как я понял, это статья для Лора, а на хабр мы опубликуем из гита?

[>] ii: основы
to.doc.14
Romero Yakovlev(lenina,1) — All
2014-05-31 07:27:29


== ii: основы ==

Чтобы получить первое представление об ii, не нужно забивать голову распределённостью, форматами, данными. Нужно просто, посмотреть, что это, и как это выглядит. А выглядит это, в принципе, как обычный форум.

http://51t.ru или другая подобная веб-нода (веб-узел) - это первый шаг в этот...


== Новый мир ==

Какой он? скучный? добрый? яркий? зелёный? ответ даст нажатие на эху и чтение сообщений. :) На веб-ноде, после заголовка, идут названия, типа im.1406, ii.dev.14, и так далее (вместе с последним сообщением и общим количеством сообщений после знака конверта). Это эхоконференции, они же конференции, они же эхи, они же ленты. Всё общение и происходит в таких лентах.

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

Сообщения идут в обратном порядке, новые - сверху. Можно обратить порядок к прямому (например, вы новичок, и хотите почитать все последние сообщения ленты), для этого служит кнопка вверху страницы.

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

У каждой эхи своя тематика. Эхи, которые заканчиваются на im.ЧИСЛО - это болталки, там просто болтают обо всём и ни о чём, там вы можете спросить, о чём угодно. Главное правило - не обижать других пользователей или кого-то ещё. Других правил нет. :)

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


== Подписка ==

Устройство сети по технологии ii позволяет пользователям подписываться на эхи, хранить их локально, отвечать на них локально. Чтобы обменяться с сервером - требуется сихнронизация, она выполняется при наличии сервера и интернета. В остальное время интернет не требуется, вы можете читать полученные сообщения, отвечать на них, писать новые.

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

Работа с офлайн-клиентом ведётся по подписке - вы подписываетесь на нужные вам конференции, и получаете их, целиком. Именно по причине того, что пользователи получают конференции целиком, каждая конференция оканчивается цифровым постфиксом - чтобы время от времени менять их, и не заставлять пользователей получать все сообщения с 1995 года: те, кому нужны архивные конференции, могут подписаться на них самостоятельно.

Основная информация по работе с http-клиентом представлена в его readme-файле.


== Распределённость ==

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

Сравните это с закрытием форума: трагедия. Все бегают, суетятся, не знают, что делать, открывают пять альтернативных форумов. А когда приходит понимание, что надо объединяться, каждый хочет, чтобы именно его форум был главным. Потом, в лучшем случае, 4 из этих форумов закрываются навсегда... вместе с частью пользователей, которым надоело бегать и везде перерегистрироваться.

Отсюда вывод: чем больше узлов (нодов), тем меньше риска, что интересный вам канал общения исчезнет. Подключайтесь к сетям ii. :)

[>] Софт ii: начало работы
to.doc.14
vit01(lenina,50) — All
2014-05-31 08:40:25


Для начала работы с ii вам надо скачать софт: http://irk38.tk/iidownload
Если вы пользуетесь GNU/Linux, то желательно скачать пакет. Если вы пользуетесь другой ОС, то клонируйте репозиторий с Bitbucket (внимание, вместе с программой скачивается база сообщений) или качайте тарбол tar.gz.
----------------------
Сервер (станция)
Веб-интерфейс сервера работает по-умолчанию на порту 62220. Для пакетной версии достаточно набрать в консоли ii-server и выписать пароль пользователя root (на станции ii). Если скачали обычную версию, сначала надо набрать points.py username, выписать пароль первого пользователя и запустить run.py
В конфиге points.txt описываются имена поинтов (т.е. пользователей) в формате пароль:поинт на строку.
Пакетная версия хранит конфиги и базу в ~/.ii, обычная - там, где её запустили.
----------------------
Клиент
Веб-интерфейс клиента работает на порту 62222. Для запуска пакетной версии набираете ii-client, правите конфиг в ~/.iiclient/config.cfg и набираете ii-client снова. В случае обычной версии правите конфиг и запускаете run.py. Формат конфига config.cfg:
пароль(строка авторизации)
http://адрес сервера/
эхоконференция
эхоконференция
эхоконференция
... и.т.д
----------------------
Текстовый клиент
Пользователи *nix могут попробовать txt клиент, работающий исключительно на текстовых файлах, без веб-интерфейса. Формат конфигов у него такой же, как и у обычного клиента. Для получения сообщений в пакетной версии надо запустить ii-txt get, для отправки ii-txt send, в обычной версии просто get.sh и send.sh. Конфиги находятся также в .iiclient
Как с ним работать: Для создания сообщения переходите в каталог, совпадающий с названием эхи, и создайте текстовый файл с подстрокой new (например, mymessage.new) и пишете туда сообщения в особом формате.
Обычное сообщение:
кому
subject
пустая строка
далее текст
...и.т.д

Ответное сообщение:
msgid сообщения, на которое отвечаешь
кому
subject
пустая строка
дальше текст

Сами сообщения также хранятся в каталоге эхоконференции, в файле 0000.txt они находятся все по порядку. Более подробно написано в README.utf8 txt клиента.

[>] База данных
to.doc.14
vit01(lenina,50) — All
2014-05-31 08:52:27


База данных ii состоит из двух каталогов: echo/ и msg/. В msg/ хранятся сами сообщения, имена файлов генерируются как 20 первых символов base64 sha256-bin хэша сообщения. В echo/ хранятся индексы сообщений: там находятся файлы эхоконференций (имена файлов такие же, как и у нас в клиенте). Файл в echo/эха.постфикс состоит из списка имён файлов сообщений, находящихся в msg/, по порядку, в конце пустая строка. Из-за простой структуры базы данных сообщения можно передавать даже офлайн, на флешке: достаточно лишь положить сообщение в msg/ и в файле эхоконференции прописать его хэш.

[>] Всем привет!
to.doc.14
v_alekseev(lenina,82) — All
2014-06-01 12:58:32


подскажите, как понять при заходе в комнату зачем она нужна? описание какоенибудь бы

[>] Re: Всем привет!
to.doc.14
Romero Yakovlev(lenina,1) — v_alekseev
2014-06-01 13:01:35


вообще, описания эх есть в эхолисте:

http://51t.ru/list.txt

[>] Re: Всем привет!
to.doc.14
v_alekseev(lenina,82) — Romero Yakovlev
2014-06-01 13:06:35


спасибо можно было бы это на главную сбацать)))

[>] Re: Всем привет!
to.doc.14
Romero Yakovlev(lenina,1) — v_alekseev
2014-06-01 13:18:44


есть мысли в шапку загнать... надо будет попробовать

[>] Числа
to.doc.14
Romero Yakovlev(lenina,1) — All
2014-06-04 04:24:38


> Числа - четвёртая книга Моисея. в которой евреи шли, шли, и дошли. почти.

В отличие от fido, usenet/relcom и других сетей, конференции в ii имеют цифровой постфикс. Вот, например: im.100.

И, в связи с этим поступает многочисленное количество вопросов, почему именно так?


*. Ну, во-первых, это понятно. Как чтото.ru говорит, что это сайт, так чтото.14 говорит, что это эха ii.


*. Во-вторых, оно же в главных, оно сильно упрощает реализацию. Варианта "не переполняйся" было всего два. Либо делать реализацию с внешним хранением дат (а такой вариант тоже был. в итоге ничего так и не делалось. Введение постфиксных эх упростило реализацию настолько, что можно было сделать всю ii здесь и сейчас, что и было, собственно, проделано), и потом разбирать их.

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

А в случае с текущей реализацией, тот же вопрос звучит так: скачай файл эхи и его сообщения. 2 wget и 1 cat. Вероятность ошибки - минимальна. Все, кто сихнронизируется, знают, с чем синхронизируются.

У нас есть бон. И есть эхи. И вся эта совокупность составляет N последних сообщений в X эхах. Которые и составляют жизнь ii. Эхокоординатор следит за тем, чтобы бон был и интересным, и не переполнялся сообщениями, а пользователь, новичок, просто подписывается, и сразу получает всю видимую часть сети, которая есть сейчас. Что там вне бона - это другой вопрос... там тоже интересно.


*. В-третьих, легко собирать и раскладывать архивы. Обычные эхи, которые копятся годами, имеют неопределённое начало и конец. В случае же с номерными эхами можно просто взять нужные архивы, тем самым собрав такую коллекцию, какая требуется.


*. В-четвёртых, уже есть определённость, что смотреть пользователю. В случае с outbound-style, пользователь оказывался перед пустым голдедом.

> да, был рескан, но про это надо было знать, запрос надо было составлять, тоссер нода должен поддерживать, нужные архивы должны быть - в общем, этим мало кто пользовался. новички - так и вовсе не пользовались.

В случае с набором эх бона у нас больше определённости. Новичок выкачивает последний бон, и он уже в курсе всех событий.

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


* Ну и в-пятых - эта схема уже есть и никуда не денется. Можно бесконечно спрашивать "а почему не так", при этом так и не определившись. А можно просто принять решение и следовать ему. Номерные эхи не являются проблемой (на мой взгляд, это вообще основное достоинство сети, как и отсутствие аутбаунда: впрочем эти вещи сильно связаны. но оценят его пользователи только тогда, когда у нас будут многолетние архивы тематических эх), а вопрос автопереподписки можно решать и автоматически.


(черновик для газеты)

[>] Re: Числа
to.doc.14
Romero Yakovlev(lenina,1) — Romero Yakovlev
2014-06-04 15:38:01


надо бы потсократить раза два... была какая-то ключевая идея, которая здесь не обозначена - но забыл. вспомнить! и на сайт, наверное, тоже зафигачить :)