Echo :: Forum :: Blog :: RSS
Числа [1]
Re: Числа
Romero Yakovlev(lenina,1) — Romero Yakovlev
2014-06-04 15:38:01


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

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


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

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


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

Софт ii: начало работы [0]
Софт ii: начало работы
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://адрес сервера/
эхоконференция
эхоконференция ... [>>>]

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


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

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

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


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

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

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

вторая часть марлезонской статьи [2]
Re: вторая часть марлезонской статьи
51t(mira, 2) — vit01
2014-05-30 07:04:56


да.

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


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

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


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

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


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

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

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


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

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


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

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

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

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

и

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


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

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


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

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

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

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


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

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

в тему [0]
в тему
51t(lenina,1) — All
2014-04-05 01:51:48


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

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

push-ноды [0]
push-ноды
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 на станцию загружаются недостающие.

отзыв про android [0]
отзыв про android
51t(lenina,1) — All
2014-04-02 15:41:04

api [0]
api
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) ... [>>>]

basic [0]
basic
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.

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