[#]
Re: Полуневдимые эхи
hugeping(ping,1) — ahamai
2024-10-25 18:47:45
ahamai> Зачем столько запросов? Это и лишняя нагрузка на сервер, и лишний трафик (хедеры, все дела).
Напиши конкретный алгоритм, я не понял твоё предложение.
Начинаю я с -16:1 - я там выше написал что лимит это параметр. В описании алгоритма я для понятности задал его в 1, но в быту мы начинаем не с 1. И обычно, если сообщений < 16 новых это единственный запрос. Если нет, будет -32:1, потом -64:1....
[#]
Re: Полуневдимые эхи
ahamai(blackcat, 2) — hugeping
2024-10-25 19:14:02
ну 16 норм, но потом бы я шаги увеличивал, там 64, потом 256 потом все сообщения. или вообще 16 если чё-то не хватает то забирать все. думаю, такие триггеры будут редко срабатывать.
стоп. -16:1 - это взять один хэш? а почему не -16:16? или я что-то не понял.
[#]
Re: Полуневдимые эхи
ahamai(blackcat, 2) — shaos
2024-10-25 19:33:03
> Мне нравится идея, что у каждого свой суверенный блеклист :)
ну сейчас - да, и в принципе это норм
[#]
Re: Полуневдимые эхи
Andrew Lobanov(tavern,1) — revoltech
2024-10-25 21:06:20
AL>> Это было в ii.
revoltech> А почему документация описывает это как IDEC-расширение?
Потому что документация описывает IDEC.
AL>> Внимание! Вопрос: какая у тебя OS и какое окружение? Пользуешься веб-браузером?
revoltech> К сожалению, пользуюсь. К вопросу об ОС и окружении — Alpine Linux, X/Fluxbox.
Слишком много оверхеда.
[#]
Re: Полуневдимые эхи
revoltech(spnet, 4) — Andrew Lobanov
2024-10-26 06:48:43
AL> Потому что документация описывает IDEC.
Возникает вопрос: её здесь вообще кто-нибудь ещё читал?
Первый же абзац в
https://github.com/idec-net/new-docs/blob/master/extensions.md:
> Здесь описаны расширения протокола, являющиеся основным отличием IDEC от ii. Многие из них реализовывать совсем необязательно.
И далее чуть ниже пункт «Список эхоконференций», описывающий GET /list.txt.
То есть документация называет GET /list.txt одним из основных отличий IDEC от ii. А мне тут рассказывают, что «это было в ii». Ну так документацию тогда поправьте, если это было в ii, а не эксклюзив IDEC.
Я вот вместе с кодобазой tii начал вести свой ii-doc.txt, где описываю только реализованные в tii части протокола. И с пометкой IDEC extension у меня там только GET /x/features и один из вариантов /u/e, который со слайсами.
AL> Слишком много оверхеда.
Слишком много сарказма. Если уж позиционируем протокол как альтернативу щитвебу и если уж спецификация не обязывает именно к HTTP(S)-транспорту (опять гитхаб процитировать?), то вполне логично принимать и предложения по более легковесным протоколам вместо упора в жирный HTTP(S).
[#]
Re: Полуневдимые эхи
revoltech(spnet, 4) — ahamai
2024-10-26 07:03:40
ahamai> ну 16 норм, но потом бы я шаги увеличивал, там 64, потом 256 потом все сообщения. или вообще 16 если чё-то не хватает то забирать все. думаю, такие триггеры будут редко срабатывать.
Сделал у себя с шагом кратности 12 (потом 24, 48 и т.д.), чтобы в самом распространённом случае можно было даже с tgi и подобных за один запрос стянуть.
ahamai> стоп. -16:1 - это взять один хэш? а почему не -16:16? или я что-то не понял.
Ну в том алгоритме главная идея состоит в экономии трафика, полагаю. Сначала пробный запрос с -16:1, а потом, если в базе есть сообщение, то можно и -16:16.
[#]
Re: Полуневдимые эхи
tuple(ping,54) — revoltech
2024-10-26 10:39:47
revoltech> жирный HTTP
Почему жирный-то? Почти натуральный plaintext. Куда меньше?
[#]
Re: Полуневдимые эхи
revoltech(spnet, 4) — tuple
2024-10-26 12:09:01
tuple> Почему жирный-то? Почти натуральный plaintext. Куда меньше?
Потому что статусы и заголовки, например. См. как в гофере или нексе сделано: строка запроса — ответ, всё.
Пример запроса по Nex: echo /u/e/idec.talks | nc station.domain 1900
Ничего, кроме нетката, телнета или подобного, в основе не требуется.
Отвечаю заранее на вопрос «а как же постить»? Как в NPS — на другой порт:
cat <<EOF | nc station.domain 1915
/u/point
[auth_string]
[base64_message]
.
EOF
Вот тут уж действительно меньше некуда.
[#]
Re: Полуневдимые эхи
revoltech(tgi,15) — tuple
2024-10-26 12:06:44
tuple> Почему жирный-то? Почти натуральный plaintext. Куда меньше?
Потому что статусы и заголовки, например. См. как в гофере или нексе сделано: строка запроса — ответ, всё.
Пример запроса по Nex: echo /u/e/idec.talks | nc station.domain 1900
Ничего, кроме нетката, телнета или подобного, в основе не требуется.
Отвечаю заранее на вопрос «а как же постить»? Как в NPS — на другой порт:
cat <<EOF | nc station.domain 1915
/u/point
[auth_string]
[base64_message]
.
EOF
Вот тут уж действительно меньше некуда.
[#]
Re: Полуневдимые эхи
revoltech(spnet, 4) — shaos
2024-10-26 12:56:20
shaos> Меньше это Gopher или Nex овер телнет :)
Да не обязательно овер телнет, но да, суть в том, чтобы не относящихся непосредственно к ii метаданных меньше гонять. Здесь и так сообщения в base64 оборачиваются, что уже 4/3 от полезной нагрузки...
[#]
Re: Полуневдимые эхи
doesnm(ping,55) — revoltech
2024-10-26 15:35:40
shaos>> Меньше это Gopher или Nex овер телнет :)
revoltech> Да не обязательно овер телнет, но да, суть в том, чтобы не относящихся непосредственно к ii метаданных меньше гонять. Здесь и так сообщения в base64 оборачиваются, что уже 4/3 от полезной нагрузки...
Го дропнем base64
[#]
Re: Полуневдимые эхи
ahamai(blackcat, 2) — revoltech
2024-10-26 15:46:55
> Пример запроса по Nex: echo /u/e/idec.talks | nc station.domain 1900
остаётся вопрос в том, как узнать, докачалось ли всё или оборвалось. всё равно нужен con-len или какие-то флаги. кстати я изначально хотел добавить, чтобы любой бандл начинался и заканчивался конкретным тегом, чтобы проверять валидность бандла. но банально забыл. но вроде с http ничё так получилось, от этого не страдаем. а новой технологии придётся показывать себя на практике - ждём реализации :)
[#]
Re: Полуневдимые эхи
revoltech(spnet, 4) — doesnm
2024-10-26 16:19:39
doesnm> Го дропнем base64
Для /u/m не получится без глубинного перелопачивания самого формата бандла, а вот для /u/point, в принципе, легко.
Кто-нибудь скажет, какие проблемы решает base64 именно при постинге, каких не решает тот же самый x-www-form-urlencoded, в который сообщение по итогу всё равно заворачивается?
[#]
Re: Полуневдимые эхи
revoltech(spnet, 4) — ahamai
2024-10-26 16:30:41
ahamai> остаётся вопрос в том, как узнать, докачалось ли всё или оборвалось.
Для сообщений: посчитать хэш, преобразовать в айдишник по алгоритму и сравнить с тем айдишником, который в начале строки в бандле.
Для эх: сравнить количество айдишников с тем, которое мы запрашиваем, и удостовериться в том, что все скачанные айдишники имеют 20 символов.
[#]
Re: Полуневдимые эхи
ahamai(blackcat, 2) — revoltech
2024-10-26 16:27:15
> Кто-нибудь скажет, какие проблемы решает base64 именно при постинге, каких не решает тот же самый x-www-form-urlencoded, в который сообщение по итогу всё равно заворачивается?
я сам давно об этом думал, и в следующих реализациях этого не было, был единый постинг хоть через веб-интерфейс, хоть через пойнта. но изначально можно было запостить сразу несколько сообщений, для чего это и было, а потом я решил, что не можно. в общем, это исторически сложилось. тем более, изначально в станции был только GET, поэтому сообщения больше 6 кб запостить было нельзя :)
[#]
Re: Полуневдимые эхи
ahamai(blackcat, 2) — revoltech
2024-10-26 16:46:24
> Для сообщений: посчитать хэш, преобразовать в айдишник по алгоритму и сравнить с тем айдишником, который в начале строки в бандле.
> Для эх: сравнить количество айдишников с тем, которое мы запрашиваем, и удостовериться в том, что все скачанные айдишники имеют 20 символов.
ну тогда это оверхед в коде. когда я делал, сравнить мне было не с чем, просто сделал на ровном месте, но по http оно работает ровно так, как было сделано в первой версии (хотя я много что забыл, но всё равно как-то работает). поэтому мой вариант естественно не оптимален и не идеален, и если кто-то сделает гораздо красивее, я с радостью перейду на этот формат.
[#]
Re: Полуневдимые эхи
revoltech(spnet, 4) — ahamai
2024-10-26 18:16:33
ahamai> ну тогда это оверхед в коде. когда я делал, сравнить мне было не с чем, просто сделал на ровном месте, но по http оно работает ровно так, как было сделано в первой версии (хотя я много что забыл, но всё равно как-то работает). поэтому мой вариант естественно не оптимален и не идеален, и если кто-то сделает гораздо красивее, я с радостью перейду на этот формат.
Ну вот, кстати, я начал просто отслеживать хэши сообщений вместе с айдишниками, и после перефетча (со всего, кроме spline-online) из 17614 сообщений 14067 оказались с корректными айдишниками (сравнивал по функции LOWER() в базе, так что нюансы с A-z не важны), а вот 3547 сообщений имеют айдишники, которые вообще описанному в доках хэшу не соответствуют. Вопрос: был/имеется ещё какой-то алгоритм хэширования или что за фигня там происходит? А потом коллизиям удивляются.
Статистика сообщений с левыми ID по эхам (не считая spline):
sqlite> SELECT DISTINCT `echoname`, COUNT(`id`) FROM `msg` WHERE LOWER(`msgid`) != LOWER(`content_id`) GROUP BY `echoname`;
blcat.local|1
develop.16|17
game.rogue.14|39
idec.talks|322
idec.test|13
ii.stat|7
linux.14|341
lit.14|4
lor-opennet.17|1
lor.gold|31
music.14|34
ping.local|4
pipe.2032|1123
plan.9|2
python.15|8
retro.talks|27
ru.humor.14|35
spnet.stats|1
std.club|1241
std.favorites|2
std.game|139
std.hugeping|68
std.hugeping.micro|2
std.prog|36
std.rein|1
std.tech|47
zx.spectrum|1
[#]
Re: Полуневдимые эхи
shaos(spnet, 2) — revoltech
2024-10-26 20:53:43
Я три недели назад уже всё посчитал
ii://TfXUY2nZ1vmjAsQhgfsK
Многие узлы допускают редактирование сообщений без изменения хеша и возможно какие-то изначально неправильно хеш реализовывали (т.к. в спеке небыло эталонных сообщений для сверки как это обычно принято) и потом некоторые ботоэхи с какого-то момента стали сломанные:
ii://6kCluOlO0AG8aOvgvRPr
Основные stakeholders (текущий мейнтейнер стандарта с одной стороны и первоначальный создатель с другой) в один голос говорят, что сам алгоритм не важен - главное чтобы msgid был уникальным, поэтому я и отпочковал от ii/IDEC свой strengthened вариант iii т.к. мне для будущих экспериментов важно, чтобы хэш сходился всегда :)
ii://iii.nizya
А вообще было бы сильно прикольнее, если бы история хеширования в ii пошла по другому пути ;)
ii://vTYmGKHeCyvLZ3BV2NoP
Потому что как оказалось сам Создатель упоминал такой способ в комментах на лоре на этапе создания технологии ;)
[линк с пруфом пока не могут отыскать]
[#]
Re: Полуневдимые эхи
shaos(spnet, 2) — doesnm
2024-10-26 20:57:05
не - base64 нужен т.к. позволяет ii транспорту работать в том числе и по последовательным 7-битным каналам - через COM порт там или прямо в тексте е-мейлов без mime кодирования (которое также в текст по сути)...
[#]
Re: Полуневдимые эхи
shaos(spnet, 2) — revoltech
2024-10-26 20:59:24
Я для себя хочу попробовать новый вызов /u/n с ascii85+ вместо base64 - будет покомпактнее чуток
[#]
Re: Полуневдимые эхи
ahamai(blackcat, 2) — revoltech
2024-10-26 22:34:41
> вот 3547 сообщений имеют айдишники, которые вообще описанному в доках хэшу не соответствуют. Вопрос: был/имеется ещё какой-то алгоритм хэширования или что за фигня там происходит? А потом коллизиям удивляются.
во всяких босфорах и улиссах длина хэша была где 8, где 12 символов, поэтому для гейтования в ii до 20 добавлялось что-то типа "bosforbosfor" (а в гейтованых месагах вроде где-то полный хэш был, не помню уже, как это всё между сетями летало, но летало успешно.
[#]
Re: Полуневдимые эхи
ahamai(blackcat, 2) — shaos
2024-10-26 22:35:58
как отличить "конец передачи" от "оборвалось", чтобы не запарсить что не то. хотя, конечно, сейчас просто упадёт декодер с base64 из-за неккоректного ююка, но теоретически может и нет. я не знаю, я просто размышляю.
[#]
Re: Полуневдимые эхи
ahamai(blackcat, 2) — shaos
2024-10-26 22:46:37
вообще, в отношениях станция-станция не важно, как они обмениваются - можно хоть в общий git сливать, а индекс эхи перегенирировать по timestamp, это всё равно будет "обмен в духе ii", разве что вклинивающиеся старые сообщения не так ii-шно, но в принципе так можно.
[#]
Re: Полуневдимые эхи
shaos(spnet, 2) — shaos
2024-10-27 03:48:53
О - нашёл!!!
https://www.linux.org.ru/forum/talks/10258332?cid=10258568
> return base64.urlsafe_b64encode( hashlib.sha256(s).digest() ).replace('-',").replace('_',")[:20]
> мощно я задвинул? внушает? :)
> feofil (06.03.14 09:41:46 PST) автор топика
Мне интересно в какой момент в реплейсах появились 'A' и 'z'? ;)
Если верить гиту, то 1 апреля 2014 года (в момент создания репы):
a45cdfa3 (user 2014-04-01 19:19:03 +1100 16) def hsh(s):
a45cdfa3 (user 2014-04-01 19:19:03 +1100 17) return base64.urlsafe_b64encode( hashlib.sha256(s).digest() ).replace('-','A').replace('_','z')[:20]
Но я знаю, что первый релиз ii был в начале мерта 2014 года...
[#]
Re: Полуневдимые эхи
shaos(spnet, 2) — ahamai
2024-10-27 03:52:20
в старой "болталке с девочками" hc.51 почти все хеши вида 7lwguohJulissiiuliss и mPJSJAI3ulissiiuliss а в других местах видимо просто отредактированные сообщения без изменения msgid...
[#]
Re: Полуневдимые эхи
shaos(spnet, 2) — ahamai
2024-10-27 03:55:20
вот поэтому и нужны железобетонные хеши в качестве msgid - если хеш не сошёлся, то мессага битая или подменянная - т.е. одновременно проверяем и целостоность данных, и подлинность, причём не добавляя никаких лишних сущностей!
[#]
Re: Полуневдимые эхи
revoltech(spnet, 4) — shaos
2024-10-27 04:32:04
shaos> Многие узлы допускают редактирование сообщений без изменения хеша
Что есть маразм by design. Хэш — он на то и хэш, чтобы отражать изменения в содержимом, иначе на... зачем он нужен?
shaos> base64 нужен т.к. позволяет ii транспорту работать в том числе и по последовательным 7-битным каналам - через COM порт там или прямо в тексте е-мейлов без mime кодирования (которое также в текст по сути)
Интересно девки пляшут. То у нас без HTTP(S) никуда, то семибитные каналы через ком. Надо бы уж определиться.
В почте это сделано просто ради кучи легаси-софта из 1980-х, а первая версия ii появилась в 2014 году, когда весь нормальный мир давно перешёл на UTF-8. Для реальных семибитных каналов есть вполне себе другие решения, которые любой восьмибитный трафик через себя туннелируют. Но для 99% населения, умеющего и желающего общаться только по TCP/IP, это реальный оверхед.
И да, ранее описанный подход мог бы применяться и к POST /u/point:
POST /u/point
Content-Type: text/plain; charset=utf-8
[auth_str]
[message]
.
shaos> Я для себя хочу попробовать новый вызов /u/n с ascii85+ вместо base64 - будет покомпактнее чуток
Вот это уж точно не упростит жизнь никому. Всем придётся пилить свою реализацию этого.
shaos> > мощно я задвинул? внушает? :)
Спасибо, с изначальным подходом к проектированию ii всё ясно.
shaos> в старой "болталке с девочками" hc.51 почти все хеши вида 7lwguohJulissiiuliss и mPJSJAI3ulissiiuliss а в других местах видимо просто отредактированные сообщения без изменения msgid...
И с реализациями тоже.
shaos> вот поэтому и нужны железобетонные хеши в качестве msgid - если хеш не сошёлся, то мессага битая или подменянная - т.е. одновременно проверяем и целостоность данных, и подлинность, причём не добавляя никаких лишних сущностей!
Полностью согласен.
[#]
Re: Полуневдимые эхи
revoltech(spnet, 4) — ahamai
2024-10-27 04:59:39
ahamai> как отличить "конец передачи" от "оборвалось", чтобы не запарсить что не то
В том же гофере (как минимум при выдаче гофермапов) наши деды решили это гениальным способом: точкой на конце. Просто точка без ничего на отдельной строке после текста (CRLF . CRLF). Здесь в спецификации я вижу, что содержимое эхи заканчивается пустой строкой (LF LF). Но такое может возникнуть и в результате преждевременного закрытия соединения. А вот точка там не возникнет сама по себе никогда.
[#]
Re: Полуневдимые эхи
shaos(spnet, 2) — revoltech
2024-10-27 05:15:57
> Что есть маразм by design. Хэш — он на то и хэш
с одной стороны редактирование мессаджей это местная самодеятельность (типа ой, я тут запятую забыл поставить, дай ка побырому исправлю пока мессага не зафетчилась другими узлами) т.е. by design таки подразумевалось, что мессаги не редактируются
с другой стороны заявляется использование хешей только для обеспечения уникальности имён файлов сообщений, но не для проверки целостности или подлинности самих сообщений и этот момент мне непонятен т.к. для целостности и подлинности по сути ничего добавлять ненадо - всё уже есть (просто чётко прописываем в стандарте правила хеширования с примерами и запрещаем редактирование уже принятых узлом сообщений - опять же на уровне стандарта)
[#]
Re: Полуневдимые эхи
revoltech(spnet, 4) — shaos
2024-10-27 05:28:56
В сухом остатке _на данный момент_ имеем следующее:
* айдишник сообщения не может использоваться для проверки целостности, поскольку битые есть даже среди относительно новых (за 2024);
* длина файла с айдишниками эхи не настолько велика, чтобы заморачиваться со слайсами, а локально накладные расходы они увеличивают существенно (наверное, откачу логику tiifetch до простого выкачивания эх);
* на данный момент докачанность списка айдишников можно проверять наличием \n\n в конце, но в теории можно придумать сценарий, в котором это не сработает, пусть и крайне маловероятный.
[#]
Re: Полуневдимые эхи
shaos(spnet, 2) — revoltech
2024-10-27 05:53:24
> айдишник сообщения не может использоваться для проверки целостности, поскольку битые есть даже среди относительно новых (за 2024);
ну почему не может? может
просто на новых узлах можно завести специальный атрибут у некоторых эх типа принимать только валидные сообщения ( там где это будет действительно нужно - типа idec.coin ; )
а на старых "классических" эхах несходящиеся сообщения можно продолжать показывать помечая специальным символом...
[#]
Re: Полуневдимые эхи
shaos(spnet, 2) — revoltech
2024-10-27 06:28:24
> длина файла с айдишниками эхи не настолько велика
не будем забывать про слабые ретроплатформы где память 64КБ и меньше
например список хешей lor-openned.17 весит 299КБ и они точно не влезут в память ретрокомпьютера целиком
и потом возможность создания "листающих" клиентов, как было описано чуть ранее, должна оставаться, т.е. слайсы выкидывать ненадо...
[#]
Re: Полуневдимые эхи
revoltech(spnet, 4) — shaos
2024-10-27 07:52:44
shaos> не будем забывать про слабые ретроплатформы где память 64КБ и меньше
А на такие платформы уже портировали Tcl 8.6, sqlite3 и прочее? Я же конкретно насчёт своего клиента/фетчера говорю. Там-то понятное дело, что другие подходы ко всему нужны.
shaos> и потом возможность создания "листающих" клиентов, как было описано чуть ранее, должна оставаться, т.е. слайсы выкидывать ненадо...
Да я не против того, чтобы в стандарте они оставались.
[#]
Re: Полуневдимые эхи
revoltech(spnet, 4) — shaos
2024-10-27 07:54:57
shaos> а на старых "классических" эхах несходящиеся сообщения можно продолжать показывать помечая специальным символом...
Ну я у себя теперь просто делаю приписку (ID hash mismatch!) рядом с айдишником у таких сообщений.
[#]
Re: Полуневдимые эхи
shaos(spnet, 2) — revoltech
2024-10-27 08:16:35
А ну если ты только про своего клиента, то ок
Главное если надумаешь делать свой узел, чтобы он умел слайсы ;)
[#]
Re: Полуневдимые эхи
Andrew Lobanov(tavern,1) — revoltech
2024-10-27 09:09:12
AL>> Потому что документация описывает IDEC.
revoltech> Возникает вопрос: её здесь вообще кто-нибудь ещё читал?
И даже писал.
revoltech> Первый же абзац в https://github.com/idec-net/new-docs/blob/master/extensions.md:
>> Здесь описаны расширения протокола, являющиеся основным отличием IDEC от ii. Многие из них реализовывать совсем необязательно.
revoltech> И далее чуть ниже пункт «Список эхоконференций», описывающий GET /list.txt.
Бывает.
revoltech> То есть документация называет GET /list.txt одним из основных отличий IDEC от ii. А мне тут рассказывают, что «это было в ii». Ну так документацию тогда поправьте, если это было в ii, а не эксклюзив IDEC.
Зачем?
revoltech> Я вот вместе с кодобазой tii начал вести свой ii-doc.txt, где описываю только реализованные в tii части протокола. И с пометкой IDEC extension у меня там только GET /x/features и один из вариантов /u/e, который со слайсами.
Молодец.
AL>> Слишком много оверхеда.
revoltech> Слишком много сарказма. Если уж позиционируем протокол как альтернативу щитвебу и если уж спецификация не обязывает именно к HTTP(S)-транспорту (опять гитхаб процитировать?), то вполне логично принимать и предложения по более легковесным протоколам вместо упора в жирный HTTP(S).
Ну то, как Вы позиционируете протокол, мы узнали только что. Сидим вот, думаем что дальше с этим делать.
[#]
Re: Полуневдимые эхи
Andrew Lobanov(tavern,1) — revoltech
2024-10-27 09:09:33
tuple>> Почему жирный-то? Почти натуральный plaintext. Куда меньше?
revoltech> Потому что статусы и заголовки, например. См. как в гофере или нексе сделано: строка запроса — ответ, всё.
revoltech> Пример запроса по Nex: echo /u/e/idec.talks | nc station.domain 1900
revoltech> Ничего, кроме нетката, телнета или подобного, в основе не требуется.
revoltech> Отвечаю заранее на вопрос «а как же постить»? Как в NPS — на другой порт:
revoltech> cat <<EOF | nc station.domain 1915
revoltech> /u/point
revoltech> [auth_string]
revoltech> [base64_message]
revoltech> .
revoltech> EOF
revoltech> Вот тут уж действительно меньше некуда.
Ну так пиши транспорт какой тебе больше нравится. Стандарт не завязан на HTTP как таковой. Был опыт обмена и по FTP. Просто HTTP всех устраивает, так как дёшево и просто с точки зрения использования и уже так сложилось.
[#]
Re: Полуневдимые эхи
Andrew Lobanov(tavern,1) — doesnm
2024-10-27 09:09:47
shaos>>> Меньше это Gopher или Nex овер телнет :)
revoltech>> Да не обязательно овер телнет, но да, суть в том, чтобы не относящихся непосредственно к ii метаданных меньше гонять. Здесь и так сообщения в base64 оборачиваются, что уже 4/3 от полезной нагрузки...
doesnm> Го дропнем base64
Предлагаю отказаться от HTTP, base64, списков и переделать всё на актбаунды.
[#]
Re: Полуневдимые эхи
Andrew Lobanov(tavern,1) — revoltech
2024-10-27 09:10:07
shaos>> base64 нужен т.к. позволяет ii транспорту работать в том числе и по последовательным 7-битным каналам - через COM порт там или прямо в тексте е-мейлов без mime кодирования (которое также в текст по сути)
revoltech> Интересно девки пляшут. То у нас без HTTP(S) никуда, то семибитные каналы через ком. Надо бы уж определиться.
Мы и определились и отказались от максимализма.
[#]
Re: Полуневдимые эхи
Andrew Lobanov(tavern,1) — revoltech
2024-10-27 09:10:35
ahamai>> как отличить "конец передачи" от "оборвалось", чтобы не запарсить что не то
revoltech> В том же гофере (как минимум при выдаче гофермапов) наши деды решили это гениальным способом: точкой на конце. Просто точка без ничего на отдельной строке после текста (CRLF . CRLF). Здесь в спецификации я вижу, что содержимое эхи заканчивается пустой строкой (LF LF). Но такое может возникнуть и в результате преждевременного закрытия соединения. А вот точка там не возникнет сама по себе никогда.
Почему?
[#]
Re: Полуневдимые эхи
Andrew Lobanov(tavern,1) — revoltech
2024-10-27 09:10:48
revoltech> * длина файла с айдишниками эхи не настолько велика, чтобы заморачиваться со слайсами, а локально накладные расходы они увеличивают существенно (наверное, откачу логику tiifetch до простого выкачивания эх);
Ты бы хоть иногда из крупных городов куда-то выезжал. Слайсы позволяют мне использовать IDEC в деревне, где интернет настолько нестабилен, что без слайсов можно просто забить на эти ваши эхи и общение в них.
revoltech> * на данный момент докачанность списка айдишников можно проверять наличием \n\n в конце, но в теории можно придумать сценарий, в котором это не сработает, пусть и крайне маловероятный.
Просто сделай новый транспорт. Там уже можно считать хоть точку в конце, хоть любую другую метку как частью протокола транспортного уровня, а не ii/idec.
[#]
Re: Полуневдимые эхи
doesnm(ping,55) — Andrew Lobanov
2024-10-27 10:34:15
shaos>>>> Меньше это Gopher или Nex овер телнет :)
revoltech>>> Да не обязательно овер телнет, но да, суть в том, чтобы не относящихся непосредственно к ii метаданных меньше гонять. Здесь и так сообщения в base64 оборачиваются, что уже 4/3 от полезной нагрузки...
doesnm>> Го дропнем base64
AL> Предлагаю отказаться от HTTP, base64, списков и переделать всё на актбаунды.
Поддерживаю
[#]
Re: Полуневдимые эхи
doesnm(ping,55) — Andrew Lobanov
2024-10-27 10:34:16
AL> Ты бы хоть иногда из крупных городов куда-то выезжал. Слайсы позволяют мне использовать IDEC в деревне, где интернет настолько нестабилен, что без слайсов можно просто забить на эти ваши эхи и общение в них.
У моего мобильного оператора бывают такие потери что даже к ирке не подключается
об HTTP и даже IDEC речи уже не идет
[#]
Re: Стандарт
revoltech(spnet, 4) — Andrew Lobanov
2024-10-27 10:48:26
AL> Ты бы хоть иногда из крупных городов куда-то выезжал. Слайсы позволяют мне использовать IDEC в деревне, где интернет настолько нестабилен, что без слайсов можно просто забить на эти ваши эхи и общение в них.
Внезапно, я сам в селе. Интернет спутниковый.
По поводу слайсов на своём клиенте пока окончательно не решил. В принципе, для тестирования симулировать медленный трафик довольно легко: достаточно делать фетч через torsocks.
AL> Просто сделай новый транспорт. Там уже можно считать хоть точку в конце, хоть любую другую метку как частью протокола транспортного уровня, а не ii/idec.
Сделаю. Клиент tii (а конкретнее — компонент tiifetch), собственно, уже поддерживает выкачивание по гоферу, нексу, спартану и джемини. Не на чем только это всё потестить покамест.
AL> Почему?
А кто её передаст, точку эту?
AL> Для этого вообще никакой протокол не нужен. Просто паковать всю станцию в бандл и сразу отдавать клиенту. Ну и что что там несколько сотен мегабайт? Зато всё и клиент сам разберётся что ему надо, а что нет.
Вот для первого выкачивания такая опция не помешала бы. Иначе ему придётся качать те же несколько сотен мегабайт, но маленькими фрагментами.
AL> Мы и определились и отказались от максимализма.
Вместе с минимализмом.
[#]
Re: Стандарт
Andrew Lobanov(tavern,1) — revoltech
2024-10-27 11:22:01
AL>> Ты бы хоть иногда из крупных городов куда-то выезжал. Слайсы позволяют мне использовать IDEC в деревне, где интернет настолько нестабилен, что без слайсов можно просто забить на эти ваши эхи и общение в них.
revoltech> Внезапно, я сам в селе. Интернет спутниковый.
Это что-то на богатом.
AL>> Просто сделай новый транспорт. Там уже можно считать хоть точку в конце, хоть любую другую метку как частью протокола транспортного уровня, а не ii/idec.
revoltech> Сделаю. Клиент tii (а конкретнее — компонент tiifetch), собственно, уже поддерживает выкачивание по гоферу, нексу, спартану и джемини. Не на чем только это всё потестить покамест.
Твой клиент не работает с твоей нодой?
AL>> Почему?
revoltech> А кто её передаст, точку эту?
Твоя нода на новом транспорте?
AL>> Для этого вообще никакой протокол не нужен. Просто паковать всю станцию в бандл и сразу отдавать клиенту. Ну и что что там несколько сотен мегабайт? Зато всё и клиент сам разберётся что ему надо, а что нет.
revoltech> Вот для первого выкачивания такая опция не помешала бы. Иначе ему придётся качать те же несколько сотен мегабайт, но маленькими фрагментами.
Что повышает надёжность передачи на нестабильном канале.
AL>> Мы и определились и отказались от максимализма.
revoltech> Вместе с минимализмом.
Всё так. От крайностей одни неприятности.