LINUX.ORG.RU

выпуск ii 0.1 — негипертекстовый невекторный нефидонет

 ,


6

3

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

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

Реализация написана на языке python 2.7 (только базовая библиотека), bottle.py и включает в себя http-сервер (который можно использовать и просто как форум или как твитер), клиент на текстовых файлах и http-клиент.

Любой ii-сервер может обмениваться трафиком со всеми подобными серверами или с конечными юзерами.

Это первая публичная версия. Её цель — познакомить с технологией, чтобы где-то, для своих внутренних нужд, создавались мелкие сети по единому стандарту.

Веб-сайт: http://ii.51t.ru

Демо клиента: http://demo.51t.ru

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



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

а в iOS есть гламурная текстовая консоль?

feofil
() автор топика

это новый WhatsApp (я не знаю, что такое вотсап и псто не читал).

mos ★★☆☆☆
()

Раньше каждый считал долгом написать свою ОС, ГУЙ и заканчивались планы наколенной стратегией, застывшей на стадии «инициализирован режим 800x600x16».
Теперь новая мода - «спасись от АНБ - напиши свой мессенджер, с защитой и смайлами».

Как раз недавно читал про дуровские телеграммы - это просто МРАК. Писалось точно под веществами, что протокол, что документация.

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

Теперь новая мода - «спасись от АНБ - напиши свой мессенджер, с защитой и смайлами».

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

feofil
() автор топика

Анонимно писать нельзя что ли?

slony
()

Какой-то лютый шлак. Неведомая уйня, о которой знает только автор.

Никакой документации нет - неизвестен тип сети, отсутсвуют правила именования узлов, правила именований «конференций», отсутсвует описание принципов маршрутизации пакетов данных, непонятно что куда и откуда.

Особенно доставляет сайт http://demo.51t.ru/ - заголовка нет, что это такое, куда попал пользователь неизвестно. Какая-то странная сетка 4x7 из названий разделов и содержимого сообщений. Странная кнопка «загрузить новые сообщения» (откуда? с какого узла? с какой сети? с какой конференции?). Странная кнопка «отправить» (куда? на какой узел? в какую сеть? в какую конференцию?). Чтобы читать сообщения нужно промотать вниз страницы, потом задом наперед подниматься вверх.

Я вообще нифига не понял. Автор не умеет выражать свои мысли и пишет предложения с маленькой буквы. Это диагноз, посему не взлетит.

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

каких библиотек? почему пугает?

у меня вообще лицензии нет. точнее, на выбор:

* лицензия BMI - для ценителей - тех, кто видит разницу между двухкляузной BSD, MIT и ISC

* лицензия CC0 - если кого-то не устраивает её отсутствие

* отсутствие всякой лицензии. вообще.

в комплекте там идут groundworkcss и bottle.py, лицензия на них указана в них самих. я даже не помню, что там, что-то из BMI. эти вещи со мной никак не связаны, что было проще, то и использовал.

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

Какая-то странная сетка 4x7 из названий разделов и содержимого сообщений.
Я вообще нифига не понял.

Фуф! А я уже было подумал что это только мне непонятно.

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

отсутствие всякой лицензии. вообще.
эти вещи со мной никак не связаны

Можно долго и по существу спорить.

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

Никакой документации нет - неизвестен тип сети, отсутсвуют правила именования узлов, правила именований «конференций», отсутсвует описание принципов маршрутизации пакетов данных, непонятно что куда и откуда.

Кто есть тип сети. правила именования конференций и узлов, вроде бы есть в документации. Базовые принципы обмена - тоже.

Плюс, когда вся система - несколько строк на python, можно и их посмотреть. А если что-то непонятно - спросить. :)

Особенно доставляет сайт http://demo.51t.ru/ - заголовка нет, что это такое, куда попал пользователь неизвестно.

Это демо. Клиента. Поэтому оно называется demo. Потому что это демо.

Автор не умеет выражать свои мысли и пишет предложения с маленькой буквы.

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

feofil
() автор топика
Ответ на: комментарий от void_ptr

о чём? что надо сделать, по твоему мнению - я что-то не понимаю.

feofil
() автор топика
Ответ на: комментарий от void_ptr

Фуф! А я уже было подумал что это только мне непонятно.

это недоdashboard. шаблон так и называется, nedodash.html

что конкретно непонятно? имена эх, сообщения? нажимаешь на имя эхи, попадаешь в эху. :) на мой взгляд, это логично.

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

Это демо. Клиента. Поэтому оно называется demo. Потому что это демо.

и это правильно

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

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

Да, я кстати тут уже подумал, что такая поддержка нужна скорее на оконечных нодах, нежели в сети. В сети достаточно обеспечить безопасный обмен данных между нодами. А там пусть ноды предоставляют возможность однозначной идентификации пользователя.

Претензия снимается.

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

там есть зелёная кнопочка, переворачивающая тред

забыл приделать её к клиенту

feofil
() автор топика
Error: 500 Internal Server Error

Sorry, the requested URL 'http://127.0.0.1:62222/' caused an error:

Internal Server Error
Exception:

UnicodeDecodeError('ascii', '/home/ar/\xd0\x97\xd0\xb0\xd0\xb3\xd1\x80\xd1\x83\xd0\xb7\xd0\xba\xd0\xb8/iiclient-01/', 9, 10, 'ordinal not in range(128)')
Traceback:

Traceback (most recent call last):
  File "/home/ar/Загрузки/iiclient-01/clapi/bottle.py", line 783, in _handle
    return route.call(**args)
  File "/home/ar/Загрузки/iiclient-01/clapi/bottle.py", line 1635, in wrapper
    rv = callback(*a, **ka)
  File "run.py", line 21, in dashboard
    return template('tpl/nedodash.html',r=local.r)
  File "/home/ar/Загрузки/iiclient-01/clapi/bottle.py", line 3216, in template
    return TEMPLATES[tplid].render(kwargs)
  File "/home/ar/Загрузки/iiclient-01/clapi/bottle.py", line 3189, in render
    self.execute(stdout, kwargs)
  File "/home/ar/Загрузки/iiclient-01/clapi/bottle.py", line 3177, in execute
    eval(self.co, env)
  File "/home/ar/Загрузки/iiclient-01/tpl/nedodash.html", line 2, in <module>
    %include tpl/01.html r=r
  File "/home/ar/Загрузки/iiclient-01/clapi/bottle.py", line 3166, in subtemplate
    self.cache[_name] = self.__class__(name=_name, lookup=self.lookup)
  File "/home/ar/Загрузки/iiclient-01/clapi/bottle.py", line 2917, in __init__
    self.filename = self.search(self.name, self.lookup)
  File "/home/ar/Загрузки/iiclient-01/clapi/bottle.py", line 2938, in search
    fname = os.path.abspath(os.path.join(spath, name))
  File "/usr/lib/python2.7/posixpath.py", line 78, in join
    path +=  b
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 9: ordinal not in range(128)
jori
()
Ответ на: комментарий от zbarassky

Ух, потихоньку прочитал всё. Интересно, есть ли живые кроссплатформенные реализации? Или из этого выросло что-то, типа Direct Connect или как там эти файлообмены с чатами называются?

feofil
() автор топика
Ответ на: комментарий от jori

судя по трейсу, это какая-то фишка bottle, ввиду русского имени файла. и, кстати, она абсолютно права - нефиг :)

feofil
() автор топика

Зачем оно нужно, когда есть IRC? Веб-клиенты под него есть, сам протокол тоже простой, как бревно, точно также можно хоть на баше реализовать.. В общем, непонятного назначения велосипед, по типу эпичного куска говнокода, названного Pandora от @robux. Зато опенсорц же!

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

1. они разные, вообще разные

2. мой проще

3. мне мой нравится. а тебе я официально разрешаю пользоваться irc.

feofil
() автор топика

Обновил документацию, в которой попытался ответить всем, и критикам, и сомневающимся, и Мицголам. (спасибо им всем за критику, за сомнения и за родной векторный)

Если и теперь не взлетит - то я даже не знаю.

feofil
() автор топика

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

Удачи проекту, надеюсь, у него всё получится.

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

ща почитаем

Бог даст, получится, спасибо.

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

А чо делать когда количество сообщений в msg будет 1 млн, 5млн, 10 млн? И число коммитов git будет к нему стремиться?

Предложения:

1) Раз имя файл - хеш - раскидать по папкам. Может и неудобно, но .git/objects как то справляется.

2) Как-то уменьшить число коммитов в репах для файлов из echo. Похоже они меняются как-то часто, и судя по их содержимому для git-а они больше похожи на бинарники или хлам от компиляций, которые обычно выталкивают в .gitignore.

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

А чо делать когда количество сообщений в msg будет 1 млн, 5млн, 10 млн? И число коммитов git будет к нему стремиться?

хранить в базе данных, вестимо

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

Как-то уменьшить число коммитов в репах для файлов из echo. Похоже они меняются как-то часто, и судя по их содержимому для git-а они больше похожи на бинарники или хлам от компиляций, которые обычно выталкивают в .gitignore.

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

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

В 1 вопросе я думал намекнуть на общие ограничения по inode и некоторые приколы сканирования папки с очень большим количеством файлов как гнушными утилитами (семейством readdir), так и обертками поверх них в разных языках. Если планируется БД - тады ладно.

По 2 - в любом случае будет больше - я смотрю коммиты сграбленного репа, получается надо хранить большое количество новых сообщений (70-80% от общего кол-ва), собсно текст diff-а файла + служебка. А так как преобладают только новые файлы, то diff = размеру файла. В отличии от обычной разработки софта, когда размер дифа часто меньше измененного файла. Хранение в РСКВ конечно неплохо - но сами видите - есть особенности хранения дерева файлов и истории их изменений. Можно еще подумать над объединением файлов, размер вырастет, а дифы будут помельче.

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

В 1 вопросе я думал намекнуть на общие ограничения по inode и некоторые приколы сканирования папки с очень большим количеством файлов как гнушными утилитами (семейством readdir), так и обертками поверх них в разных языках. Если планируется БД - тады ладно.

оно не планируется оно просто без разницы, как храниться

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

можно в бд. можно где угодно. там ровно три операции - сравнить два списка, дописать в список, сохранить уникально именованный объёкт. всё.

Можно еще подумать над объединением файлов

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

ps. а чё сам не зарегистрируешься тама и не напишешь? приходи, будем вместе фиду изобретать :)

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

Есть живые реализации. Даже сервера ещё остались, хотя система в целом скорее загибается.

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

Хотлайн за пределами России тоже, наверное, есть, но я исследованием этого вопроса не занимался. Для этого надо трекер запускать, искать живые сервера и там на них регаться в попытке найти коммьюнити какого-нито.

Хотлайн у нас был на пике в конце девяностых и до середины нулевых. Потом пошёл явный спад.

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

Вот только что проверил, родной для меня ХЛ-сервер пашет, 8 человек в сети, но afk, конечно, в 23 часа-то (они, как правило, с работы все сидят).

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

не совсем понял, с кем планируется знакомиться по фотографии? с десятью макинтошниками? :)

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

feofil
() автор топика
Ответ на: Говно от anonymous

вот все говорят «для дураков, для дураков». а мне очень нравится.

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

вот все говорят «для дураков, для дураков». а мне очень нравится.

Наверное потому-что ты дурак?

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

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

feofil
() автор топика

гипертекст, паратекст, кибертекст

а вот ещё такая идея про гипертекстовый. векторный и всё такое.

Тед Нельсон, который изобрёл гипертекст, вовсе не имел в виду WWW. он даже написал книжку «Possiplex» на тему, гипертекст, you doing it wrong.

и написал программную статью, языки разметки considered harmful , где он критикует SGML/XML/XHTML и предлагает свои тёплые ламповые паратексты.

когда он изобретал гипертекст в 60-х, он изобретал текстовые миксы и footage, сведение и видеомонтаж в текстовом гипертексте.

метафора — монтажный стол для структурных составных документов, параллельных текстов

гипертекст — это текстовые документы (а раз составные документы, compund document), значит структурное дерево, повязанные друг с другом ссылками на узлы структуры.

сейчас он реализуется языками разметки: SGML и его потомки XML, HTML; изоморфные ему latex/tex, texinfo, lout, amiga guide, Sphinx, RST, markdown,literate programming/reproducible research WEB/weave/tangle, org-mode babel, вики, семантические вики, skribillo.

в принципе неважно, какая именно разметка, они все изоморфны.

при этом некоторые гибче, некоторые жёстче. некоторые перенацеливаемы (компилируются во всё), некоторые нет.

гибче это метаязыки разметки: DocBook, latex, WEB weave/tangle, org-mode babel, skribillo, семантические вики.

например, org-mode это простой текстовый язык типа markdown или вики; org-mode babel это метаязык (тама есть метапеременные сниппетов и метафункции сниппетов-блоков); skribillo это метаязык в S-выражениях и с AST макросами; lout/nonparreil это функциональщина к языкам разметки; грамотный хаскель это функциональный метаязык разметки.

XML это половина метаязыка — к универсальному парсеру ещё нужен интерпретатор и схема данных.

суть в том, что все языки разметки сосут. просто некоторые сосут меньше ибо метаязыки.

но, языки разметки не единственный способ. другой способ издревле знают переводчики — это подстрочники параллельных текстов.

дерево XML можно представить в виде потока тегов: (координата-токена-тега, длина-полоски-текста-содержимого-тега, символ-тега-с-нужными-атрибутами).

координаты хорошо задавать относительные (от предыдущего текста), чтобы не пересчитывать при изменении. вообще текст-оригинал здесь должын быть иммутабельный, как в git blob objects, и при изменении порождаться новая версия.

то есть, дерево XML:

<MY-XML-DATA><RECORD ID=1> <YOBA>Y1</YOBA><DUBBA>D1</DUBBA><DOO>Ы1</DOO></RECORD> <RECORD ID=2> ... </RECORD> ... </MY-XML-DATA>

можно представить в виде параллельных потоков:

линеечка : 012345678...
ORIGINAL: Y1'D1'Ы1;Y2'D2'Ы2;...
MY-XML-DATA: (0,2,YOBA) (1,2,DUBBA) (2,2,DOO) ...
(это данные записей: 1     1 1 2 2 2 3 3 3 ...)
...

то есть, здесь относительные координаты: 0, 1=0+2-1, 3=1+2-1, абсолютные координаты токенов-тегов: 0,3,6 (разделители в потоке-оригинале — чисто для удобства и наглядности).

anonymous
()
Ответ на: гипертекст, паратекст, кибертекст от anonymous

фишка такого представления в том, что:

1. потоков-интерпретаций может быть несколько к одному оригиналу

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

3. данные потока-оригинала теперь редактировать неудобно — координаты могут поехать. поэтому редактирование по уму делается выпуском новой версии, а для неутверждённых черновиков можно придумать «поток правок» (диффы inst-text, del-text, include-transclusive-quoted-text) и «поток рецензий» (одобренных правок диффов).

4. тривиально конвертируется в XML и назад — распарсить дерево в поток оригинала и параллельные потоки интерпретаций; интерпретировать все интерпретации и сдампить итоговое дерево.

назовём такое представление «паратекстом»

здесь польза в «плюрализме интерпретаций» (см. статью Нельсона) в том, что можно расширять новыми интерпретациями, не изменяя разметку (виртуальная «метаразметка» строится «в уме»)

например, добавить парсеры URL: FGHI, HTML, NNTP, torrent: и любых своих протоколов. потом, по факту.

также есть польза в переходе к «кибертексту» (например, текстовому выхлопу дампов транскриптов interactive fiction, MUD, и текстовых логов )

-- интерпретации начинают генерироваться по правилам и метаправилам, правилам правил.

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

собственно, примером таких «параллельных текстов» является конверт MHTML (multi-part HTML), EML (для почты), org-mode babel (для метаязыка грамотного программирования), skribillo (всё это S-выражения).

суть в том, что такой формат «паратекстов» как постом выше, становится расширяемым изначально — ибо метаформат.

не зависимым от формата (языка разметки), не зависимым от протокола (как в прокси Eserv или Delegate: сделать мост и релей сообщений из протокола NNTP в SMTP или HTTP; откомментить потс в бложике через ньюсы или почту).

воистену расширяемым оно становится, если сам парсер и референсную имплементацию паратекста передавать в свою очередь в виде RFC метязыка DSL, написанных на паратексте.

тогда, как в GNU Software Definition Radio вдохновляющая статья форматы (и протоколы!!!) можно будет обновлять программно в новых версиях рассылкой нового RFC.

то есть: паратекст это метаязык, при интерпретации метапрограммы на котором получается референсная имплементация формата и протокола. дальнейшие форматы и протоколы расширяются метаязыком также, как работает Melange DSL

anonymous
()

ещё статейко с хабра в тему «распределённых блогов», распределённого векторного гипертекстового недобраузера: вот и вот

и peerCDN — P2P клиент(/сервер) в браузере на JavaScript.

anonymous
()
Ответ на: гипертекст, паратекст, кибертекст от anonymous

в этом смысле, добрый доктор-психиатор из Emacs — это кибертекст.

сейчас кибертекст реализуется в основном как plain text транскипт, неактивный и без гиперссылок. хотя есть подвижки: например, urxvt perl mode подписывает HTTP гиперссылки, да и в interactive fiction движках научились генерировать HTML-подобные гиперссылки и разметку.

тезис в том, что если реализовать кибертекст через гипертекст через паратекст, то такой «язык разметки» становится виртуальным, интерпретируемым расширяемым, и что отличительно важно произвольным способом (man «плюрализм представлений» Теда Нельсона) — и интерпретации и расширения становятся ортогональны, независимы, аннотируемы друг другом (метаинтерпретатор интерпретирует интерпретации).

и генерировать его будут роботы, протоколы клиент-серверов и транскрипты AI роботов-психиаторов в самообучающейся семантической Емакс ОС.

вот какой-то такой вот выглядит концептуальная теория тёплого векторного лампового гипер- кибер- паратекста.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.