subject: Разбор idec
31.10.2024 02:20
ahamai (blackcat, 2)
Складывается впечатление, что idec это пример плохого проектирования. Зачем менять устоявшуюся структуру запроса /u/e если можно этого не делать? Зачем вводить ограничение "количество сообщений в эхе может не совпадать со счётчиком", если можно этого не делать?
Формат /u/e был именно только для списка эх. Зачем добавлять туда что-то ещё? Почему не использовать, например /u/e?s=срез? Это значительно всё упрощает, это можно сувать куда угодно без разбора. А так алгоритм отдачи "всё эха" меняется на "последняя эха может быть не эхой":
ВЕСЬ ЗАПРОС СПИСОК ЭХ
ПОЛУЧИЛИ СПИСКИ
ЕСЛИ ЕСТЬ ЛИМИТ, УСТАНОВИЛИ
становится
ПОЛУЧИЛИ СПИСОК ЭХ
ПРОВЕРИЛИ ПОСЛЕДНЮЮ
ЕСЛИ ЭТО СРЕЗ, ТО РАСПАРСИЛИ СРЕЗ
СОХРАНИЛИ ЛИМИТ
УДАЛИЛИ ПОСЛЕДНЮЮ ЭХУ
ПОЛУЧИЛИ СПИСКИ
УСТАНОВИЛИ ЛИМИТ, ЕСЛИ ЕСТЬ
Команда lim появилась добавлением одного роута и одной строчки кода. Совместима с любым ii, хоть с ii-txt-0.1preprepre.
При этом корёжится список:
http://ii.blcat.ru/u/e/blcat.test/-100:100
ЧТО ТЫ ТАКОЕ? Эха? Нет точки, не эха. MSGID? по логике вроде бы да. У меня софт в расчёте на минималистичность и читаемость кода призван валиться при любых невалидных данных, а не разбираться, что это за ёжик.
Тут же появляется x/features. Это на каждый фетч надо ещё один запрос делать? Это не экономия трафика, это его расход. С какой-нибудь ?s= можно просто гонять url-ы и на любой клиент и на любой сервер, не задумываясь, поймёт ли он. А тут получается, надо прочитать x/features, потом подстроиться под сервера, давать ему срез или не давать. Лишний код, лишний трафик, лишнее переусложнение.
Сами же срезы не решают основной задачи "получить все нужные msgid одним запросом". Тебе нужно или обходить эхи по-очереди (привет, /e, от которого специально уходили для ускорения работы), или получать лишние сообщения. В стандарте не предусмотрено "хочу брать столько сообщений оттуда-то".
Кстати, ?sf потребовал добавления, по-моему, 4х строк кода и изменения одной. И он решает вопрос "получить только нужные msgid из нужных эх одним запросом".
И ещё. Для подсчёта по эхам нужно сделать ещё один запрос, чтобы получить текущее количество сообщений на сервере. Для ?sf этого не нужно, там делается ровно один запрос, а не три. И получает в итоге меньший бандл хэшей. И надёжнее, чем полагаться на количество сообщений.
Куча переусложнений там, где их можно было не делать, и при этом основная цель минимизации трафика до конца не доведена. Это пример плохого проектирования, как по мне.
ps. ?sf и ?h появились раньше, чем был сформирован стандарт iDEC.
--------------------------------------------------------------------------------
subject: Re: Разбор idec
31.10.2024 06:17
shaos (spnet, 2) => cQozlzmbjmbUarkRw2wu
Не надо драматизировать :)
Индексы тоже пару строк кода добавляют (ну может чуть больше)
Для разнообразия можно множественные "слайсы" тоже сделать, типа
/u/e/echo.1/echo.2/-1:1/echo.3/-100:100/echo.4
будет означать, что echo.1 и echo.2 должны вернуть одно последнее сообщение, echo.3 должно вернуть 100 последних, а echo.4 должно вернуть всё - в этом случае всё будет логично и гибко ;)
--------------------------------------------------------------------------------
subject: Re: Разбор idec
31.10.2024 06:30
ahamai (blackcat, 2) => 3PasI6H2ATgXy9eQbYWW
кто будет переписывать цезий или фетчеры под замену стандартов? стандарты уже такие, какие получились. у меня вопрос - чому так?
> будет означать, что echo.1 и echo.2 должны вернуть одно последнее сообщение, echo.3 должно вернуть 100 последних, а echo.4 должно вернуть всё - в этом случае всё будет логично и гибко ;)
если менять это, то надо убирать неэхи из стрки для эх. чтобы оно прозрачно накладывалось, а не как у меня пишет -100:100 в файле списка, потому что на это вообще не рассчитвалась. в /u/e должны быть только эхи, это изначальный стандарт
--------------------------------------------------------------------------------
subject: Re: Разбор idec
31.10.2024 06:42
shaos (spnet, 2) => h7Htetm9JeaFFfMiLMrA
> кто будет переписывать цезий или фетчеры под замену стандартов?
никто - сервер может поддерживать и ванильный ii без индексов, и старый IDEC где индексы в конце, и новый многоиндексный вариант - ничто ничему не противоречит!
--------------------------------------------------------------------------------
subject: Re: Разбор idec
31.10.2024 06:46
shaos (spnet, 2) => h7Htetm9JeaFFfMiLMrA
> если менять это, то надо убирать неэхи из стрки для эх
очевидно, что запись [-]N:M не является эхой т.к. там не точка, а двоеточие (и может быть минус вначале)
--------------------------------------------------------------------------------
subject: Re: Разбор idec
31.10.2024 07:20
shaos (spnet, 2) => 3PasI6H2ATgXy9eQbYWW
> Индексы тоже пару строк кода добавляют (ну может чуть больше)
Ну ок не 2 строки, а 20, но тем не менее :)
====
elseif ($opts[0] == 'u' and $opts[1] == 'e') {
$work_options=array_slice($opts, 2);
$w_opts_count=count($work_options);
if (
$w_opts_count > 1 and
strstr($work_options[$w_opts_count-1], ":")!==false
) {
$buffer="";
$numbers=explode(":", $work_options[$w_opts_count-1]);
$a=intval($numbers[0]);
$b=intval($numbers[1]);
$echoareas=array_slice($work_options, 0, $w_opts_count-1);
$messages=[];
foreach ($echoareas as $echo) {
$slice = $access->getMsgList($echo, $a, $b);
if (count($slice) > 0) {
$buffer.=$echo."\n".implode("\n", $slice)."\n";
} else {
$buffer.=$echo."\n";
}
}
echo $buffer;
} else {
foreach($work_options as $echo) {
echo $echo."\n".implode("\n", $access->getMsgList($echo))."\n";
}
}
}
====
Это так в ii-php и я думаю не сильно сложнее будет поддержать "слайсы" в любом месте строки, а не только в конце...
--------------------------------------------------------------------------------
subject: Re: Разбор idec
31.10.2024 07:21
shaos (spnet, 2) => NfQ2OP2jUZBLxvC3ntFw
Блин как эти ==== в этом ii-php работают? Ненавижу регулярные выражения...
--------------------------------------------------------------------------------
subject: Re: Разбор idec
31.10.2024 07:10
ahamai (blackcat, 2) => Ljzxyj23rufpBDAqYanc
Это надо дополнительно разбирать. Когда иожно было бы этого не делать. Это неочевидно, теряется простота. И это порождает артефакты там, где это не поддерживается. Я всё написал выше, это ненужная работа вследствие плохого дизайна. Не надо пихать что то в список эх, это кривит архитектуру.
--------------------------------------------------------------------------------
subject: Re: Разбор idec
31.10.2024 07:28
ahamai (blackcat, 2) => NfQ2OP2jUZBLxvC3ntFw
Можно хоть xml регекспами парсить. Я спрашиваю зачем добавлять в список эх что то ещё, делать проверки которые можно было не делать, терять в прозрачности, если всё это можно было сделать кучей способов, каждый из которых лучше. Какую проблему решили добавив неэховую инфу в /u/e?
--------------------------------------------------------------------------------
subject: Re: Разбор idec
31.10.2024 08:00
revoltech (spnet, 4) => cQozlzmbjmbUarkRw2wu
ahamai> Складывается впечатление, что idec это пример плохого проектирования.
На это я пытался намекнуть чуть ли не с первого дня появления здесь.
ahamai> MSGID? по логике вроде бы да.
Нет, в msgid тоже двоеточий быть не может. И длина должна быть 20 символов.
Но в целом согласен, текущий формат слайсов какой-то недоработанный. Не то чтобы его сложно реализовать, но задачи экономить трафик при запросе большого количества эх он действительно не решает.
Я ещё могу понять, почему всё через / — это проще парсить, чем отдельно компоненты пути и компоненты HTTP query, особенно учитывая, что от HTTP в общем случае можно (и нужно) отходить. Но я не могу понять, почему бы не сделать в запросе такую же железобетонную структуру ключ-значение, как и в тегах бандла ii/ok/repto/blabla:
/u/e/echo.1/all/echo.2/-3:3/echo.3/-10:10
Этот формат (после удаления первого слэша) однозначно парсится в ключ-значение, на тикле он вообще одним сплитом преобразуется в список, читающийся через dict. И тогда и дополнительных проверок на то, где название эхи, а где диапазон, делать не нужно. Первый ключ — u со значением e, второй ключ — echo.1 со значением all и так далее. А сейчас всё как-то дико контекстозависимо получается, потенциал допустить ошибку куда выше.
--------------------------------------------------------------------------------
subject: Re: Разбор idec
31.10.2024 07:52
ahamai (blackcat, 2) => QEPmxFCz7XWSIF8niIJ2
У меня вообще в ноде на парсере нет регулярных выражений :)
--------------------------------------------------------------------------------
subject: Re: Разбор idec
31.10.2024 07:52
ahamai (blackcat, 2) => Ljzxyj23rufpBDAqYanc
Кстати я ошибся мой код ломает
Вечером напишу
--------------------------------------------------------------------------------
subject: Re: Разбор idec
31.10.2024 08:03
revoltech (spnet, 4) => El8TC509rAzTVxpWWAaa
revoltech> /u/e/echo.1/all/echo.2/-3:3/echo.3/-10:10
И да, в моём варианте вместо диапазона легко подставить msgid, и так же легко на стороне сервера проверить, что именно там стоит. Если диапазон, берём диапазон, если msgid, берём от этого msgid.
--------------------------------------------------------------------------------
subject: Re: Разбор idec
31.10.2024 08:31
revoltech (spnet, 4) => clkDeN7fuO5MuAOz4fg1
AL> И это ломает поддержку стандарта.
Ладно. Ломает, так ломает, будем контекстозависимые парсеры городить. А что насчёт /u/mc?
revoltech> А ещё предлагаю ввести /u/mc, возвращающий число, чтобы клиент знал максимум сообщений, который нода может ему отдать за один GET-запрос /u/m.
Сейчас у меня в фетчере это значение по умолчанию равно 12, пока явно не указано обратное. Было бы неплохо, если бы станция сообщала эту информацию клиенту для оптимального выкачивания мессаг.
--------------------------------------------------------------------------------
subject: Re: Разбор idec
31.10.2024 08:03
ahamai (blackcat, 2) => El8TC509rAzTVxpWWAaa
Я про это тоже собирался вечером написать. Это было в bosfor
--------------------------------------------------------------------------------
subject: Re: Разбор idec
31.10.2024 08:21
Andrew Lobanov (tavern,1) => cQozlzmbjmbUarkRw2wu
Я честно пытался с тобой обсуждать, но ты, похоже, наркоман. Ты видишь то, чего нет.
За сим считаю, что обсуждение стандарта с тобой можно завершать. Какие счётчики? Какое скачивание лишних сообщений? Если ты не читал то, что я сюда приносил как черновик, то открой хотя бы исходники своего ii-0.3. Почитай на досуге. Сразу увидишь где ты неправ в своих претензиях. Ну а если не увидишь, то обсуждать с тобой дизайн, стандарт и реализацию тем более нет смысла.
+++ Лично я вижу в этом перст судьбы – шли по лесу и встретили программиста.
--------------------------------------------------------------------------------
subject: Re: Разбор idec
31.10.2024 08:21
Andrew Lobanov (tavern,1) => 3PasI6H2ATgXy9eQbYWW
shaos> Не надо драматизировать :)
shaos> Индексы тоже пару строк кода добавляют (ну может чуть больше)
shaos> Для разнообразия можно множественные "слайсы" тоже сделать, типа
shaos> /u/e/echo.1/echo.2/-1:1/echo.3/-100:100/echo.4
shaos> будет означать, что echo.1 и echo.2 должны вернуть одно последнее сообщение, echo.3 должно вернуть 100 последних, а echo.4 должно вернуть всё - в этом случае всё будет логично и гибко ;)
И это ломает поддержку стандарта.
+++ Лично я вижу в этом перст судьбы – шли по лесу и встретили программиста.
--------------------------------------------------------------------------------
subject: Re: Разбор idec
31.10.2024 08:21
Andrew Lobanov (tavern,1) => h7Htetm9JeaFFfMiLMrA
ahamai> кто будет переписывать цезий или фетчеры под замену стандартов? стандарты уже такие, какие получились. у меня вопрос - чому так?
Из стандарта выкидывается то, что по факту никому не нужно. Стандарты полностью совместимы с ii. Так что не понимаю твоего бухчения. Ты можешь взять хоть свой горячо любимый ii-0.3 и работать в сети полноценно.
+++ Лично я вижу в этом перст судьбы – шли по лесу и встретили программиста.
--------------------------------------------------------------------------------
subject: Re: Разбор idec
31.10.2024 08:21
Andrew Lobanov (tavern,1) => tKKWPpSKHQCXKzXa1x6G
>> кто будет переписывать цезий или фетчеры под замену стандартов?
shaos> никто - сервер может поддерживать и ванильный ii без индексов, и старый IDEC где индексы в конце, и новый многоиндексный вариант - ничто ничему не противоречит!
Ну просто всё несовместимое снимается с фетча. Зачем нам поломанные узлы?
+++ Лично я вижу в этом перст судьбы – шли по лесу и встретили программиста.
--------------------------------------------------------------------------------
subject: Re: Разбор idec
31.10.2024 08:21
Andrew Lobanov (tavern,1) => QEPmxFCz7XWSIF8niIJ2
shaos> Блин как эти ==== в этом ii-php работают?
Это знает только автор. И то вряд ли вспомнит.
shaos> Ненавижу регулярные выражения...
Что может быть проще? Грамматики? Конечные автоматы?
+++ Лично я вижу в этом перст судьбы – шли по лесу и встретили программиста.
--------------------------------------------------------------------------------
subject: Re: Разбор idec
31.10.2024 08:36
Andrew Lobanov (tavern,1) => GKhAkwy8tq1YfzlQqRlO
ahamai> Можно хоть xml регекспами парсить. Я спрашиваю зачем добавлять в список эх что то ещё, делать проверки которые можно было не делать, терять в прозрачности, если всё это можно было сделать кучей способов, каждый из которых лучше. Какую проблему решили добавив неэховую инфу в /u/e?
Проблему длинных индексов. Всё максимально прозрачно и понятно. Использование разных по смыслу значений в роутерах это нормальная практика. Посмотри хоть на ii. У тебя /u/e -- часть пути, которая определяет функционал. А параметры у неё что? Тоже часть пути. Зачем ты сделал эту неоднозначность?
+++ Лично я вижу в этом перст судьбы – шли по лесу и встретили программиста.
--------------------------------------------------------------------------------
subject: Re: Разбор idec
31.10.2024 08:36
Andrew Lobanov (tavern,1) => El8TC509rAzTVxpWWAaa
ahamai>> Складывается впечатление, что idec это пример плохого проектирования.
revoltech> На это я пытался намекнуть чуть ли не с первого дня появления здесь.
Но ты всё ещё здесь. В интернете кто-т неправ? Или что?
ahamai>> MSGID? по логике вроде бы да.
revoltech> Нет, в msgid тоже двоеточий быть не может. И длина должна быть 20 символов.
ahamai просто не помнит свой же стандарт. Надеюсь, у него всё хорошо.
revoltech> Но в целом согласен, текущий формат слайсов какой-то недоработанный. Не то чтобы его сложно реализовать, но задачи экономить трафик при запросе большого количества эх он действительно не решает.
Ну да. Вместо выкачивания сотен килобайт мы выкачиваем сотни байт. Никакой экономии!
В общем, обсуждение не имеет смысла. По делу все высказались, рассуждения не по делу не имеют смысла.
+++ Лично я вижу в этом перст судьбы – шли по лесу и встретили программиста.
--------------------------------------------------------------------------------
subject: Re: Разбор idec
31.10.2024 08:40
shaos (spnet, 2) => El8TC509rAzTVxpWWAaa
ну IDEC клиентов и серверов наклепали за 10 лет некоторое количество, поэтому и /u/e/echo.1/echo.2/echo.3 и /u/e/echo.1/echo.2/echo.3/-10:10 должны продолжать работать, а я предлагаю раширение, которое исправит последнюю претензию, что слайс распространяется на каждую эху из списка - будет возможность задавать разные слайсы на разные наборы эх в пределах одного запроса - чем плохо то? ;)
--------------------------------------------------------------------------------
subject: Re: Разбор idec
31.10.2024 08:42
revoltech (spnet, 4) => OWSdy55FZxEQWkI0Pves
shaos> чем плохо то? ;)
Это не ко мне вопрос.
--------------------------------------------------------------------------------
subject: Re: Разбор idec
31.10.2024 08:42
shaos (spnet, 2) => o49x4sdTqe05SRN8MLy6
> Это знает только автор. И то вряд ли вспомнит.
Да там всё в коде - читай нехочу, но только без поллитры в этих регекспах не разрбраться (мне):
====
for ($i = 0; $i < count ($string); ++$i) {
$string[$i] = preg_replace("/([^\w\/])(www\.[a-z0-9\-]+\.[a-z0-9\-]+)/i", "$1http://$2",$string[$i]);
$string[$i] = preg_replace("/([\w]+:\/\/[\w\-?&;%#~=\.\/\@]+[\w\/])/i","<a target=\"_blank\" href=\"$1\">$1</a>",$string[$i]);
$string[$i] = preg_replace("/([\w\-?&;#~=\.\/]+\@(\[?)[a-zA-Z0-9\-\.]+\.([… href=\"mailto:$1\">$1</a>",$string[$i]);
$echo_check = preg_replace("/(.*)\<a target=\"_blank\" href=\"ii:\/\/(.+?)\"\>(.+?)\<\/a\>(.*)/", "$2", $string[$i]);
if ($access->checkEcho($echo_check)) {
$string[$i] = preg_replace("/target=\"_blank\" href=\"ii:\/\/(.+?)\"/s", "class=\"iilink\" href=\"?echo=$1\"", $string[$i]);
} else {
$string[$i] = preg_replace("/target=\"_blank\" href=\"ii:\/\/(.+?)\"/s", "class=\"iilink\" href=\"?msgid=$1\"", $string[$i]);
}
if (preg_match("/^====$/", $string[$i])) {
if (!$pre_flag) {
$pre_flag = true;
$string[$i] = preg_replace("/====/", "<pre>====", $string[$i]);
} else {
$pre_flag = false;
$string[$i] = preg_replace("/====/", "====</pre>", $string[$i]);
}
}
if(!$pre_flag && preg_match("/^\s?[a-zA-Zа-яА-Я0-9_\-]{0,20}(>)+.+$/i", $string[$i])) {
$string[$i]="<span class='quote'>".$string[$i]."</span>";
}
if(!$pre_flag) {
$string[$i]=preg_replace("/(^|\s+)(PS|P\.S|ЗЫ|З\.Ы|\/\/|#).+$/i", "<span class='comment'>\\0</span>", $string[$i]);
}
}
if ($pre_flag) $string[count($string) - 1] .= "</pre>";
====
--------------------------------------------------------------------------------
subject: Re: Разбор idec
31.10.2024 08:53
shaos (spnet, 2) => o49x4sdTqe05SRN8MLy6
> Что может быть проще? Грамматики? Конечные автоматы?
Мне проще на сях - перебираем строку посимвольно и делаём чо хотим...
--------------------------------------------------------------------------------
subject: Re: Разбор idec
31.10.2024 08:43
ahamai (blackcat, 2) => OWSdy55FZxEQWkI0Pves
Кстати, если в срезе будет точка, то старый софт будет считать это не как неккорректный msgid, а как пустую эху и и игнорировать её
--------------------------------------------------------------------------------
subject: Re: Разбор idec
31.10.2024 10:03
ahamai (blackcat, 2) => 01EQ9U8Emzhd1dm4d9B6
> ahamai просто не помнит свой же стандарт. Надеюсь, у него всё хорошо.
В бандле только эхи и msgid. Эхи с точками, всё осталное msgid. Если там что то ещё, падай а не игнорируй
--------------------------------------------------------------------------------
subject: Re: Разбор idec
31.10.2024 10:52
Andrew Lobanov (tavern,1) => E5UxKDsUWkjOnc6e40tl
AL>> И это ломает поддержку стандарта.
revoltech> Ладно. Ломает, так ломает, будем контекстозависимые парсеры городить. А что насчёт /u/mc?
Ненужная вещь.
+++ Лично я вижу в этом перст судьбы – шли по лесу и встретили программиста.
--------------------------------------------------------------------------------
subject: Re: Разбор idec
31.10.2024 10:52
Andrew Lobanov (tavern,1) => 4T2pxEOLlClAWYzP1XR7
>> Это знает только автор. И то вряд ли вспомнит.
Да там всё в коде - читай нехочу, но только без поллитры в этих регекспах не разрбраться (мне):
====
if (preg_match("/^====$/", $string[$i])) {
if (!$pre_flag) {
$pre_flag = true;
$string[$i] = preg_replace("/====/", "<pre>====", $string[$i]);
} else {
$pre_flag = false;
$string[$i] = preg_replace("/====/", "====</pre>", $string[$i]);
}
}
====
А что тут разбираться? Может, кто-то пихает пробелы после ====? Ну так надо просто им напихать в панамку за это.
+++ Лично я вижу в этом перст судьбы – шли по лесу и встретили программиста.
--------------------------------------------------------------------------------
subject: Re: Разбор idec
31.10.2024 10:52
Andrew Lobanov (tavern,1) => INoKikLAHfak4QI3xOby
>> Что может быть проще? Грамматики? Конечные автоматы?
shaos> Мне проще на сях - перебираем строку посимвольно и делаём чо хотим...
Как только начинаем писать что-то сложнее поиска подстроки, код на Си превращается в чан доширака. Регулярки надо осилить один раз и потом кратко и лаконично описывать желаемое.
+++ Лично я вижу в этом перст судьбы – шли по лесу и встретили программиста.
--------------------------------------------------------------------------------
subject: Re: Разбор idec
31.10.2024 10:52
Andrew Lobanov (tavern,1) => OWSdy55FZxEQWkI0Pves
shaos> ну IDEC клиентов и серверов наклепали за 10 лет некоторое количество, поэтому и /u/e/echo.1/echo.2/echo.3 и /u/e/echo.1/echo.2/echo.3/-10:10 должны продолжать работать, а я предлагаю раширение, которое исправит последнюю претензию, что слайс распространяется на каждую эху из списка - будет возможность задавать разные слайсы на разные наборы эх в пределах одного запроса - чем плохо то? ;)
Тем, что не решает никаких проблем :)
+++ Лично я вижу в этом перст судьбы – шли по лесу и встретили программиста.
--------------------------------------------------------------------------------
subject: Re: Разбор idec
31.10.2024 10:52
Andrew Lobanov (tavern,1) => XBpkmZaRBerzYsGnnv6b
ahamai> Кстати, если в срезе будет точка, то старый софт будет считать это не как неккорректный msgid, а как пустую эху и и игнорировать её
Ты хочешь в срезе получить нецелое количество сообщений? Зачем тебе точка в срезе? Типа, -12.5:12.5?
+++ Лично я вижу в этом перст судьбы – шли по лесу и встретили программиста.
--------------------------------------------------------------------------------
subject: Re: Разбор idec
31.10.2024 11:24
shaos (spnet, 2) => TM4jqb9x0Gc8On1fjrfA
Ну проблему нелогичности решает, на которую некоторые указывают :)
--------------------------------------------------------------------------------
subject: Re: Разбор idec
31.10.2024 11:33
shaos (spnet, 2) => hD58ue3uoVUqzK1uY0BK
Нету пробелов после ====
Он просто иногда работает, но чаще не работает
====
here?
====
--------------------------------------------------------------------------------
subject: Re: Разбор idec
31.10.2024 11:36
shaos (spnet, 2) => ZzsW7tefZS4bxOjsig1X
Вот почему в предыдущем сообщении оно только на последний ==== среагировало? Пустую строку надо до?
====
again?
====
--------------------------------------------------------------------------------
subject: Re: Разбор idec
31.10.2024 11:36
shaos (spnet, 2) => DpizUAp7CfgxVznSUul4
Неа - опять не сработало…
--------------------------------------------------------------------------------
subject: Re: Разбор idec
31.10.2024 11:53
hugeping (ping,1) => KqJroc615wJoEZt10AZX
shaos> Неа - опять не сработало…
Возможно, потому что в сообщении нет последнего перевода строки ( см: http://shaos.net:8085/ii-point.php?q=/m/DpizUAp7CfgxVznSUul4 )
Только можно тестировать это в другой теме, пожалуйста? :)
P.S. Edited: 2024-10-31 08:53:11
--------------------------------------------------------------------------------
subject: Re: Разбор idec
31.10.2024 13:43
Andrew Lobanov (tavern,1) => 9WpkPyShUJjA3ACKXAo5
>> ahamai просто не помнит свой же стандарт. Надеюсь, у него всё хорошо.
ahamai> В бандле только эхи и msgid.
Ещё пустая строка.
ahamai> Эхи с точками, всё осталное msgid. Если там что то ещё, падай а не игнорируй
Откуда оно там возьмётся?
+++ Лично я вижу в этом перст судьбы – шли по лесу и встретили программиста.
--------------------------------------------------------------------------------
subject: Re: Разбор idec
31.10.2024 13:43
Andrew Lobanov (tavern,1) => F2GAFiIMOQfDjuBCkW5c
shaos> Ну проблему нелогичности решает, на которую некоторые указывают :)
Нелогичность пока недоказана :)
+++ Лично я вижу в этом перст судьбы – шли по лесу и встретили программиста.
--------------------------------------------------------------------------------
subject: Re: Разбор idec
31.10.2024 13:43
Andrew Lobanov (tavern,1) => ZzsW7tefZS4bxOjsig1X
shaos> Нету пробелов после ====
shaos> Он просто иногда работает, но чаще не работает
shaos> ====
shaos> here?
shaos> ====
А может, это от тех деятелей, которые \n\r шлют вместо \n? Попробуй поэкспериментировать с этим.
+++ Лично я вижу в этом перст судьбы – шли по лесу и встретили программиста.
--------------------------------------------------------------------------------
subject: Re: Разбор idec
31.10.2024 13:43
Andrew Lobanov (tavern,1) => DpizUAp7CfgxVznSUul4
shaos> Вот почему в предыдущем сообщении оно только на последний ==== среагировало? Пустую строку надо до?
Вангую, что это потому, что не было пустой строки в конце сообщения. Попробуй добавить и оно сломается совсем :)
shaos> ====
shaos> again?
shaos> ====
+++ Лично я вижу в этом перст судьбы – шли по лесу и встретили программиста.
--------------------------------------------------------------------------------
subject: Re: Разбор idec
31.10.2024 13:43
Andrew Lobanov (tavern,1) => 5N5pof5a36WZtdQip6X1
shaos>> Неа - опять не сработало…
hugeping> Возможно, потому что в сообщении нет последнего перевода строки ( см: http://shaos.net:8085/ii-point.php?q=/m/DpizUAp7CfgxVznSUul4 )
По идее, это без разницы. $ -- это в любом случае конец строки.
+++ Лично я вижу в этом перст судьбы – шли по лесу и встретили программиста.
--------------------------------------------------------------------------------
subject: Re: Разбор idec
31.10.2024 19:37
shaos (spnet, 2) => 6K0jkz44OnEp9zXnTFRw
Ну это веб-морда того же ii-php и шлёт :)
Балин!!! Точно!!! Спасибо!!!
--------------------------------------------------------------------------------
subject: Re: Разбор idec
31.10.2024 21:30
ahamai (blackcat, 2) => 645IVvzMNadj5LfFzwUz
> Откуда оно там возьмётся?
http://ii.blcat.ru/u/e/blcat.test/-100:100
--------------------------------------------------------------------------------
subject: Re: Разбор idec
31.10.2024 21:34
ahamai (blackcat, 2) => uHrVWVbRcuLVokOHZ7nB
> Ты хочешь в срезе получить нецелое количество сообщений? Зачем тебе точка в срезе? Типа, -12.5:12.5?
если точка в срезе, то старый софт будет воспринимать это не как непонятный msgid и падать с ошибкой его запросить, а как пустую эху и просто игнорировать. двоеточие можно уронить, 12..12. или нарисовать ху^W самолётик 12.:.12. это мелочи, но мелочи это именно то, что отделяет плохой дизайн от хорошего, когда всё предусмотрено заранее.
--------------------------------------------------------------------------------
subject: Разбор idec №2
31.10.2024 22:18
ahamai (blackcat, 2)
Во-первых, изначально у меня была ошибка, ?sf не прозрачна, её нельзя добавить вообще везде. Потому что есть php-ноды, и там должно быть &. Это, конечно, может задаватся в схеме, и это с точки зрения проектирования куда лучше, чем idec, но это не прозрачная замена, про php ноды я забыл.
Во-вторых, про схемы и проектирование было в прошлом сообщении в этой эхе. Если уже развивать схему, то зачем лезть в уже устоявшийся формат, нарушать его примитивность и топорность: примитивность реализации, примитивность самого формата. Зачем /u/e переюзывать?
Нормальным решением было бы завести свой неймспейс. Тем более, сеть это уже дважды проходила, сначала были /e и /m, но это было медленно и печально, запрос вещь дорогая, на самом деле даже дороже, чем лишний трафик. Потом была /z, потом была /u. И по урлу в конфиге указывалось, по какому протоколу работать. Точно так же можно было сделать и при развитии сети, какой-нибудь /r или /x, всё вынести в этот неймспейс. В случае чего (давайте представим этот дивный мир, где с /u/e ничего не сделали, он всё так же примитивен, как и был изначально) можно даже эмулировать старый интерфейс с неймспейсами /x/e и /x/m, если в старый клиент пропишут новую схему.
И уж если планируются расширения, совершенно точно не надо вешать какие-то костыли, чтобы вопрос "а как задать срез для каждой эхи" не имел ответа.
Про key/value. У босфора был такой интерфейс, /bb/key1/value1/key2/value2. Это было удобно сначала парсить в словарик, а потом с этим словариком работать, минимумом кода достигались красивые вещи, можно было делать разные запросы. Если что-то расширяешь, нужно сразу делать формат, который можно расширять, но который при этом фалбакается, если расширение не поддерживается. Зачем нагромождение ненужных сущностей, которые потом надо ещё прописывать? Когда можно сделать единый урл, единый словарик, а любой фильтр прописывать ровно одной строкой кода, и те системы, которые его не поддерживают, просто не будут по этому критерию фильтровать.
/u/m и /u/e это к тому, что это просто то, что осталось фундаментом, когда всё остальное было удалено для простоты. Тут кое-кто :) пытается переизобрести z/get, который был удалён из-за повышенной нагрузки на сервер, /u/e и /u/m это необходимый самодостаточный минимум, который вообще не должен меняться. А расширения - это то, что должно иметь возможность расширяться, а не хардкодиться в нескольких урлах, и что самое ужасное, при этом изменяя поведение базовых.
Я вообще не понял, к чему были эти изменения idec? Чтобы через 10 лет переизобрести их заново, потому что стандарт, предназначеный для расширения, оказывается не умеет расширяться? Это плохой дизайн. /u/e и /u/m при этом своей актуальности не утратили.
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
31.10.2024 22:39
revoltech (spnet, 4) => PQG3D7UIBViyIuU4kd8M
Уважаемый, я вот вроде тебя и понимаю, и не понимаю одновременно. Например, я пришёл сюда совсем недавно. Старую ii-документацию в этих ваших интернетах уже не сыскать, все старые сайты протухли. Откуда мне было знать про «эмпирическим путём найденный» лимит в 40 мессаг, про /z/get и прочие босфоры?
ahamai> И уж если планируются расширения, совершенно точно не надо вешать какие-то костыли, чтобы вопрос "а как задать срез для каждой эхи" не имел ответа.
Здесь согласен.
ahamai> Про key/value. У босфора был такой интерфейс, /bb/key1/value1/key2/value2. Это было удобно сначала парсить в словарик, а потом с этим словариком работать, минимумом кода достигались красивые вещи, можно было делать разные запросы. Если что-то расширяешь, нужно сразу делать формат, который можно расширять, но который при этом фалбакается, если расширение не поддерживается. Зачем нагромождение ненужных сущностей, которые потом надо ещё прописывать? Когда можно сделать единый урл, единый словарик, а любой фильтр прописывать ровно одной строкой кода, и те системы, которые его не поддерживают, просто не будут по этому критерию фильтровать.
И здесь согласен.
ahamai> и что самое ужасное, при этом изменяя поведение базовых.
А здесь не согласен. Здесь прав товарищ AL, который говорит, что поведение остаётся прежним, нужно только подкорректировать логику парсера. Ну, типа, старые /u/e никуда не деваются, нужно только посмотреть, есть ли двоеточие в последнем элементе и привет.
Другое дело, что логику парсера можно было бы упростить в разы, приняв концепцию железобетонной структуры key/value/key/value/..., но уже имеем то, что имеем.
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
31.10.2024 23:01
ahamai (blackcat, 2) => X4PQO2tMhADvlzs2xy47
> А здесь не согласен. Здесь прав товарищ AL, который говорит, что поведение остаётся прежним, нужно только подкорректировать логику парсера. Ну, типа, старые /u/e никуда не деваются, нужно только посмотреть, есть ли двоеточие в последнем элементе и привет.
это полностью ломает единость формата. /u/e должна быть везде, и должна реализовываться в 3 строках. у неё не должно быть расхождений, не надо в /u/e добавлять парсеры, /u/e должна быть единой и быть везде. все остальные расширения - отдельно.
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
31.10.2024 23:11
revoltech (spnet, 4) => ljv4IAZsd1BbfpUOPYnz
ahamai> это полностью ломает единость формата. /u/e должна быть везде, и должна реализовываться в 3 строках.
Так она и реализуется в 3-5 строках, если нормальные ЯП юзать. И поведение от запроса со слайсом на ноду, которая слайсы не реализует, меняться не будет: этот последний компонент просто не является валидным именем эхи. Нода, которая не умеет слайсить, должна его просто отбросить. Если она так не делает, чини реализацию.
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
31.10.2024 23:21
shaos (spnet, 2) => PQG3D7UIBViyIuU4kd8M
> Во-первых, изначально у меня была ошибка, ?sf не прозрачна, её нельзя добавить вообще везде. Потому что есть php-ноды, и там должно быть &.
Ну я ведь у себя поддержал list.txt?h=1 :)
Просто парсить надо будет вручную
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
31.10.2024 23:30
shaos (spnet, 2) => ljv4IAZsd1BbfpUOPYnz
Ну расширенный слайсами /u/e существует уже тоже 10 лет и поддержан кучей клиентов и серверных реализаций - так что проще добавить одну проверку в blcat.ru дабы исключить падучесть и далее сосуществовать в мире и согласии :)
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
31.10.2024 23:32
ahamai (blackcat, 2) => kk8c1G6BzDRXwqSwUvjo
> Так она и реализуется в 3-5 строках, если нормальные ЯП юзать. И поведение от запроса со слайсом на ноду, которая слайсы не реализует, меняться не будет: этот последний компонент просто не является валидным именем эхи. Нода, которая не умеет слайсить, должна его просто отбросить. Если она так не делает, чини реализацию.
1.
> ВЕСЬ ЗАПРОС СПИСОК ЭХ
> ПОЛУЧИЛИ СПИСКИ
> ЕСЛИ ЕСТЬ ЛИМИТ, УСТАНОВИЛИ
> становится
> ПОЛУЧИЛИ СПИСОК ЭХ
> ПРОВЕРИЛИ ПОСЛЕДНЮЮ
> ЕСЛИ ЭТО СРЕЗ, ТО РАСПАРСИЛИ СРЕЗ
> СОХРАНИЛИ ЛИМИТ
> УДАЛИЛИ ПОСЛЕДНЮЮ ЭХУ
> ПОЛУЧИЛИ СПИСКИ
> УСТАНОВИЛИ ЛИМИТ, ЕСЛИ ЕСТЬ
2. речь не о нормальных языках, речь о том, чтобы реализовать это в 3х шагах даже на posix shell и чтобы это было просто. ну не нужны там они нахрен, есть куча других неймспейсов, там пусть будут парсеры, шмарсеры и прочее. в чём проблема, запустил свой парсер, который можно расширять хоть до посинения, нету его - фалбакнулся. а "ну легко же реализовать" - это не дизайн. теперь туда включается и критерий "нужны нормальные языки". а сеть планировалась работать в аномальных условиях, хоть на дискете с openbsd. и для этого все протоколы простые. и не надо их усложнять, они не для того делались.
3.
ii.dev.2014
1396262024
51t
lenina,1
ksa242
Re: Адреса msgfrom/msgto
...
список - либо /e
номер
номер
номер
либо /z/e (у эхи есть символ ".", у номера сообщения - нет)
эха
номер
номер
номер
эха
номер
номер
номер
...
тут нет никаких "что-то ещё", либо эха либо msgid. когда "надо фильтровать", "надо разбирать последнюю эху" или что-то ещё надо, это вообще не про /u/e. там месяцы ушли, чтобы вырезать всё, что можно вырезать, чтобы прийти к такому предельно простому виду. этот протокол вообще не про проверки, он про примитивность. расширения должны быть расширениями. я вообще не понимаю, в чём проблема не трогать /u/e? мир перевернётся, если это будет какой-то другой запрос. к тому же, этих запросов был вагон и все в итоге оказались не нужны, на проблему повышенного трафика частично забили. ну сделайте нормальный api, с тем же key/value, расширяемый, позволяющий вольности, зачем лезть в /u/e ломая его единство - этот протокол уже определён, зафиксирован, и будет просто средством фалбака, максимально примитивным и рабочим средством, позволяющим общаться всему со всем. ему не нужны версии, он и так в идеальной стадии.. был
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
31.10.2024 23:36
ahamai (blackcat, 2) => Kmf2eYdOTMwKP3ccNtbF
> Просто парсить надо будет вручную
это не есть прозрачная замена. прозрачная замена, это когда ты в любом клиенте просто прописываешь этот url вместо нужного, и ровно ничего не меняется кроме того случая, когда фильтр срабатывает, независимо от того, знает ли нода что-то или нет. если добавлять везде ?sf, то нода с запросом ?q=, ничего не знающая о ?sf, на запросе брякнется
вот /lim/ совместима с любыми существующими клиентами, просто меняешь url в конфиге и всё.
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
31.10.2024 23:41
ahamai (blackcat, 2) => 2uKGzC5ZoZqupt2gtGzS
Я вообще не про это. Я про то, что не надо было трогать протокол, который для трогания совсем не предназначался. В чём проблема была вместо проверки x/feautures всяких просто использовать новый, а при отказе - фэлбекаться? Ну самый же очевидный дизайн. Зачем там, где всё было предельно просто, зачем-то совершенно ненужно это усложнять?
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
31.10.2024 23:45
ahamai (blackcat, 2) => 6HXYALhvjRgppfZzonw2
даже list.txt подстраивается
http://ii.blcat.ru/lim/100/list.txt
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 00:05
shaos (spnet, 2) => KNXDnFAn0KQeKzANNz4k
> тут нет никаких "что-то ещё", либо эха либо msgid.
… либо мусор
Если нет проверки на то, что тебе не подсунули мусор, то это неработоспособное решение - как POC для запуска в песочнице для ограниченного круга лиц - годится, а для реальных применений в массах - нет…
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 00:31
ahamai (blackcat, 2) => JerZ7QzWaExftdldX30k
> Если нет проверки на то, что тебе не подсунули мусор, то это неработоспособное решение - как POC для запуска в песочнице для ограниченного круга лиц - годится, а для реальных применений в массах - нет…
ЕСЛИ МУСОР - ПАДАЙ. Не надо разбирать мусор. Топология сети такая, итить. Ты качаешь с доверенных узлов по предварительной договорённости. Формат бандла определён. Если оттуда летит мусор, то это уже красный код, не надо с него качать и не надо ничего разбирать, надо снимать с фетча.
Какое, итить, неработоспособное решение, если оно работает. Сколько раз повторять, что /u/e/ это базовый фалбак и он должен быть простым и легко воспроизводимым, нигде не должно быть проверки в коде и в стандарте. Как работает твой конкретный фетчер, по барабану. Есть базовая реализация, эталонная. И она должна быть максимально простая. И она должна быть одна.
Это базовый вопрос - НАХРЕНА ВЫ ЛЕЗЕТЕ В /U/E, ЕСЛИ ВЫ ТУПО ДАЖЕ НЕ ПОНИМАЕТЕ, ЧТО ЭТО И ЗАЧЕМ ЭТО НУЖНО???
ну я читаю такую ахинею
> Если нет проверки на то, что тебе не подсунули мусор, то это неработоспособное решение
и вижу люди тупо не понимают, о чём это вообще.
> а для реальных применений в массах - нет…
для каких млять применений в каких млять массах. ii это реализация строго конкретной задачи. основным критерием этой задачи является максимальная простота. НИКТО, НИКТО МЛяТЬ В ЦЕЛОМ СВЕТЕ НЕ МЕШАЕТ ТЕБЕ НАВЕШИВАТЬ СВОИ НАВОРОТЫ. Ну оставь ты млять в покое /u/e, это лингва франка, это база, это долгими бессонными ночами вытачивалось, чтобы удалить всё лишнее и оставить только базу, из которой можно свинтить что угодно, хоть босфор, хоть улисс - и никто при этом не трогал /u/e. Когда человечество вымрет и останутся только ветки и палки, чтобы можно было быстро собрать /u/e, как базовый компонент. И ПОЭТОМУ ОН МЛЯТЬ ДОЛЖЕН БЫТЬ ОФОРМЛЕН, ПРОСТ И ОДНОЗНАЧЕН, чтобы любая макака могла написать его реализацию. Любая. На любом языке. С любым млять навыком. Не мусор собирала.
И это млять не POC. Это и есть млять сама концепция сети. Нахрена переписывать базовый класс, наследуйся от него и потом пиши, как хочешь. А основные 4 стержня, которые работают в любых, любых млять условиях, они для того и сделаны такими простыми чтобы быть такими простыми. Без проверок, х..рок и прочей хрени. Обмен между нодами регламентируется ТОЛЬКО самими нодами. Могут хоть через git обмениваться и индексы по timestamp генерировать, это изначально была валидная версия обмена. Но помимо этого должна быть база, которая должна работать ВСЕГДА, ВЕЗДЕ, она должна быть МАКСИМАЛЬНО ПРОСТОЙ и МАКСИМАЛЬНО ВОСПРОИЗВОДИМОЙ. Поверх этого уже какие хошь расширения, это вообще пофиг, лишь бы клиент и сервер поддерживали. Но когда есть два стандарта на работу /u/e (один мой, другой неправильный (ц)) - это уже маразм.
Я смотрел старую переписку и кто какие фишки предлагал. Это могло быть перетряханием стандартов, какой из них стандартнее, уже тогда. Но я волевым решением отправил всех в лес и зафиксировал самую базовую базу, которая могла быть. Поэтому это всё и работает, поэтому и не было обсуждений стандартов а просто всё работало, а простота рекламировала эту технологию саму за себя. А потом /u/e взяли и изнасиловали.
+++ memo:marazm
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 00:36
ahamai (blackcat, 2) => marazmRnN0jqdGS7hl3P
Многие проблемы решаются кодом, а ещё большие её отсутствием. Плохой дизайн нельзя исправить кодом, или стандартами. Как пример это e-mail/smtp.
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 00:48
ahamai (blackcat, 2) => JerZ7QzWaExftdldX30k
и да, если ты делаешь расширяемый формат, то делай его РАСШИРЯЕМЫМ. потому что кроме x:y это расширение не умеет, и добавить туда, не делая очередные псевдозаменители эх. Типа /эха/x;y/эха/x:y
bosfor имел полноценное key/value api, и при простой внутренней структуре позволял делать крутые вещи, типа выборок "дай мне сообщение с такого-то таймстампа по такой-то таймстамп", хоть в конкретных эхах, хоть во всех, хоть с выборкой по юзеру. и при этом был в обе стороны полностью совместим с ii. можно было просто сделать api, и там кто хочет в серверах, кто хочет в клиентах, использует хоть выборку по сообщениям, хоть выборку по msgid, а клиент/фетчер уже схемой в конфиге указывает, что и где он берёт. отсутствие нужного фильтра просто не фильтрует по этому параметру. у босфора просто ни одного клиента не было, чтобы это где-то использовать :) но когда люди сами пишут клиентов - это самая разумная схема. нет, надо наделать проверок в клиенте, проверок в сервере, чтобы хакнуть /u/e, и теперь у нас два /u/e
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 00:54
ahamai (blackcat, 2) => XhwLCbF46mz2B09yAL7c
/u/e и /u/m захаркожены в урлах именно потому что они топорные, примитивные и неизменяемые. у босфора был свой неймспейс /bb, который решал все задачи и слайсов, и ...яйсов. делай выборку так, как тебе хочется, делай проверку так, как тебе хочется. кода каждая проверка занимала примерно одну-две строчки. Поэтому любое расширение добавить дело было пары минут. И это расширение даже не надо делать мейнстримным, это может быть расширение, которое служит чисто для удобство обмена двух нод (как твой /h/x). И вообще ничего нигде не ломает и не хачит by design. Единый урл, который собирает все key/value в словарик, примерно как тэги в первой строке каждого ii сообщения типа repto, которые тоже позволяют развивать формат, добавляя свои тэги, которые не понимающие их станции игнорят (см. elp, там были тэги topicid и tags, и elp тоже отлично гейтовался в ii)
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 01:00
ahamai (blackcat, 2) => M5lWfvZHCgpvCyjBtHnT
кстати, я нашёл в инете сырцы bosfor. поменять размер msgid с 11 до 20 и добавить обязательные точки в эхах - и будет вообще полноценная прозрачная замена, полностью совместимая с ii и при этом обладающая развитым api
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 01:30
shaos (spnet, 2) => marazmRnN0jqdGS7hl3P
> Ты качаешь с доверенных узлов по предварительной договорённости.
Каких нахрен доверенных узлов? Оно всё в интернет торчит голыми жопами - кто-то напишет сырой клиент который при переполнении чего-нибудь где-нибудь зашлет тебе дамп своей памяти вместо корректного запроса и чо?
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 01:04
ahamai (blackcat, 2) => 7Q2hzYJOka6cmjkREsiU
хотя нет, чёт там всего много :)
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 01:40
shaos (spnet, 2) => M5lWfvZHCgpvCyjBtHnT
> которые не понимающие их станции игнорят
А вдруг не игнорят? Там ведь может быть только либо ii/ok, либо repto/msgid если там не ii/ok то это должно быть repto - где написано что там может быть мусор? :)
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 01:35
ahamai (blackcat, 2) => PScN9S7KyQzHVMYXh2ep
> Каких нахрен доверенных узлов?
таких же как в фидо
> Оно всё в интернет торчит голыми жопами - кто-то напишет сырой клиент который при переполнении чего-нибудь где-нибудь зашлет тебе дамп своей памяти вместо корректного запроса и чо?
это некорректный url. он на этапе сервера отвалится. если url похож на корректный, то ты должен сформировать бандл. если хоть одна малейшая ошибка - ты падаешь. это очевидно. ты не должен пытаться анализировать некорректные данные, если узел, с которого ты фетчишь даёт некорректные данные, это 100% проблема этого узла. всё. зачем анализировать некорректные данные?
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 01:57
ahamai (blackcat, 2) => oA5pejZoXIag72MNA6az
> А вдруг не игнорят? Там ведь может быть только либо ii/ok, либо repto/msgid если там не ii/ok то это должно быть repto - где написано что там может быть мусор? :)
парсинг сообщения это вообще другая тема, с запросом сообщений не связанная
а вообще, ii/ok там только для того, чтобы в любом случае не было пустой строки, которая где-нибудь может отфильтроваться.
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 02:15
shaos (spnet, 2) => 4zzPKRap7ykgVoHMTIyf
если бы создатели сетевых протоколов всецело доверяли друг другу, то интернет бы давно умер…
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 02:34
ahamai (blackcat, 2) => XMaT1z8zBkSFAEuZpiI0
> если бы создатели сетевых протоколов всецело доверяли друг другу, то интернет бы давно умер…
если бы все протоколы были одинаковые, они были бы не нужны, достаточно было бы одного
ps. в чём понятие "получил кривые данные - падай" является доверием?? как раз доверием является "ну у нас тут мусор, но мы попытаемся его как-то разобрать, вдруг там эха". нет, бандл должен быть валидным, иначе это не бандл. всё. все вопросы к ноду, выдающему невалидные данные, ты не обязан их пропускать
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 03:05
shaos (spnet, 2) => 37Y70AH0OLhMwgTz4dwl
> http://ii.blcat.ru/lim/100/list.txt
А это не изнасилование запроса /list.txt? ;)
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 03:19
ahamai (blackcat, 2) => ZmAD4ThCgAlHntiSOqKh
это простая смена эндпоинта:
где было прописано http://ii.blcat.ru/u/, будет написано http://ii.blcat.ru/lim/100/u/
какая разница где эндпоинт задан? он всё равно записан в конфиге, и туда можно написать как первую строку, так и вторую. с запросом ровно ничего не делается, он ровно такой же. /list.txt, только эндпоинт другой
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 03:29
ahamai (blackcat, 2) => 8GAEOaK4oWpMId5X8H4L
и работает он точно так же, и выдаёт то, что ожидается. он просто не знает, что живёт в виртуальном окружении, где всё по 100, и все эхи держат только 100 последних сообщений.
--------------------------------------------------------------------------------
subject: Разбор idec №3
01.11.2024 04:23
ahamai (blackcat, 2)
Ещё вопросы. Оказывается, нет возможности брать определённое количество сообщений из каждой эхи (я думал, это там было изначально). Это, оказывается, не нужно. Логично, в расширении, которое было сделано специально для экономии трафика, нет средств для экономии трафика. Тогда зачем нужен запрос, получающий количество сообщений в конкретных эхах? Что он даёт, для чего он, кто все эти люди.
На вопрос "где архив, где посмотреть сообщения за какой-то год" говорят "архив не нужен, эхи для общения". Это IRC для общения, а формат сохранения сообщения предусматривал их сохранение. Если это для общения, зачем тогда вообще нужны эхи на кучу тысяч сообщений, почему их не trunc-ать со старостью. То есть, в архив выгрузить эху нельзя, но старые сообщения хранить будем. Но будем рекомендовать их не выкачивать. Зачем делать распученые эхи, таская архивы, которые и не архивы вовсе. То есть, взяли идею "каждая эха это законченная капсула, которая или в активной работе или в архиве", потом сделали из неё чатилку, потом сделали средства бороться с оверхедом, которые это породило, сейчас надо бороться с последствиями последствий. Когда всё изначально работало ровно так, как задумано. Шарман.
Окей, если это средство общения, то зачем нужен стандарт. ДЛЯ КОГО он нужен? Что он стандатизирует. Что он декларирует: idec это чатилка или idec это для хранения сообщений на века или idec это для экономии трафика. Это разные вещи, а чатилка и на века вообще противоположные. Стандарт должен быть не для отношения нода-нода, тут вообще никогда стандарта не было, в этом и смысл гибкости сети, стандарт нужен был для написания новых клиентов и новых серверов. И он должен был давать что-то. Когда /u/e бывает и таким, и таким, это не стандарт. Когда возникает вопрос "если есть разное количество сообщений в эхах и надо их взять" и ответ "не нужно" - это не стандарт, есть механизм срезов но он неясен непосвящённому (мне, например, до сих пор неясен). И это в сети, которая была простой и элегантной. А этот неявный и грубый хак вообще неэлегантен - это именно хак. Я хочу чтобы непосвящённому объяснили про адаптивный фетч, чтобы он понял. Я, например, не понял. Про "сравнение двух списков и взятие элементов из одного, которого нет в другом" я могу объяснить даже пробегающей мимо кошке. Это основа дизайна сети и от неё все пляшет, поэтому это стандарт. А так, для каких софтописателей это стандарт, чтобы трём пользователям между собой общаться? А нафига вам стандарт-то нужен, сами не можете договориться?
--------------------------------------------------------------------------------
subject: Re: Разбор idec
01.11.2024 06:43
Andrew Lobanov (tavern,1) => CCZKW0NwzkCBdtFI9i50
>> Откуда оно там возьмётся?
ahamai> http://ii.blcat.ru/u/e/blcat.test/-100:100
А в телеграм такой запрос вообще ничего делать не станет.
Зачем в ii отсылать запросы idec?
+++ Caesium/0.4 RC1
--------------------------------------------------------------------------------
subject: Re: Разбор idec
01.11.2024 06:43
Andrew Lobanov (tavern,1) => vfAqnGW9yupgQFEFzDk5
>> Ты хочешь в срезе получить нецелое количество сообщений? Зачем тебе точка в срезе? Типа, -12.5:12.5?
ahamai> если точка в срезе, то старый софт будет воспринимать это не как непонятный msgid и падать с ошибкой его запросить, а как пустую эху и просто игнорировать. двоеточие можно уронить, 12..12. или нарисовать ху^W самолётик 12.:.12. это мелочи, но мелочи это именно то, что отделяет плохой дизайн от хорошего, когда всё предусмотрено заранее.
Хороший дизайн это когда несуразные запросы не отрабатывают. Если ты пишешь наивный код это всегда будет плохой дизайн. Приведённые тобой запросы просто не будут работать даже в таверне, а там самый старый idec-софт.
Я не очень понимаю почему ты обход кривых запросов считаешь хорошим дизайном.
Как ii отработает /u/e/idec.talks/vfAqnGW9yupgQFEFzDk5 ? И почему?
+++ Caesium/0.4 RC1
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 06:43
Andrew Lobanov (tavern,1) => ljv4IAZsd1BbfpUOPYnz
>> А здесь не согласен. Здесь прав товарищ AL, который говорит, что поведение остаётся прежним, нужно только подкорректировать логику парсера. Ну, типа, старые /u/e никуда не деваются, нужно только посмотреть, есть ли двоеточие в последнем элементе и привет.
ahamai> это полностью ломает единость формата. /u/e должна быть везде, и должна реализовываться в 3 строках. у неё не должно быть расхождений, не надо в /u/e добавлять парсеры, /u/e должна быть единой и быть везде. все остальные расширения - отдельно.
В рамках idec она везде. То, что ты не соблюдаешь стандарт - исключительно твоя проблема.
+++ Caesium/0.4 RC1
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 06:43
Andrew Lobanov (tavern,1) => 6HXYALhvjRgppfZzonw2
ahamai> вот /lim/ совместима с любыми существующими клиентами, просто меняешь url в конфиге и всё.
Праада она не решает задач слайсов. И делает адаптивный фетчинг удобным. Зато в отдельном неймспейсе ага.
+++ Caesium/0.4 RC1
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 06:43
Andrew Lobanov (tavern,1) => MjwO6ONWNaUlotrmrb4A
ahamai> Я вообще не про это. Я про то, что не надо было трогать протокол, который для трогания совсем не предназначался. В чём проблема была вместо проверки x/feautures всяких просто использовать новый, а при отказе - фэлбекаться? Ну самый же очевидный дизайн. Зачем там, где всё было предельно просто, зачем-то совершенно ненужно это усложнять?
Будь последовательным. Твой ii никто не трогает. Просто на его основе сделали нечто другое. Всё строго по твоим заветам из 2014-го. А то сперва ты говоришь одно, потом приходишь и вдруг оказывается, что то, что ты говорил, не имеет значения. Почему тогда то, что ты говоришь сейчас, вдруг должно иметь значение? Завтра ты опять переобуешься и снова будешь делать вид, что ты не говорил того, что говоришь сегодня.
+++ Caesium/0.4 RC1
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 06:43
Andrew Lobanov (tavern,1) => JerZ7QzWaExftdldX30k
>> тут нет никаких "что-то ещё", либо эха либо msgid.
shaos> … либо мусор
shaos> Если нет проверки на то, что тебе не подсунули мусор, то это неработоспособное решение - как POC для запуска в песочнице для ограниченного круга лиц - годится, а для реальных применений в массах - нет…
Очень правильные слова.
ЗЫЖ А где посмотреть на ноду на шелле. А то Рома бьёт себя пяткой в грудь, а ноду на шелле не видать.
+++ Caesium/0.4 RC1
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 06:43
Andrew Lobanov (tavern,1) => marazmRnN0jqdGS7hl3P
ahamai> Какое, итить, неработоспособное решение, если оно работает. Сколько раз повторять, что /u/e/ это базовый фалбак и он должен быть простым и легко воспроизводимым, нигде не должно быть проверки в коде и в стандарте. Как работает твой конкретный фетчер, по барабану. Есть базовая реализация, эталонная. И она должна быть максимально простая. И она должна быть одна.
Где взять эталонную реализацию?
ahamai> Это базовый вопрос - НАХРЕНА ВЫ ЛЕЗЕТЕ В /U/E, ЕСЛИ ВЫ ТУПО ДАЖЕ НЕ ПОНИМАЕТЕ, ЧТО ЭТО И ЗАЧЕМ ЭТО НУЖНО???
Нахоена ты своими ii-ручонками лезешь в idec, если ты тупо даже непонимаешь что это и зачем это нужно?
ahamai> ну я читаю такую ахинею
Ты её пишешь. В больших количествах.
ahamai> и вижу люди тупо не понимают, о чём это вообще.
Да. Некоторые не понимают о чём idec. Застряли в 2014, на эхотаг не смотрят, лезут с какими-то левыми фичами.
>> а для реальных применений в массах - нет…
ahamai> для каких млять применений в каких млять массах. ii это реализация строго конкретной задачи. основным критерием этой задачи является максимальная простота. НИКТО, НИКТО МЛяТЬ В ЦЕЛОМ СВЕТЕ НЕ МЕШАЕТ ТЕБЕ НАВЕШИВАТЬ СВОИ НАВОРОТЫ. Ну оставь ты млять в покое /u/e, это лингва франка, это база, это долгими бессонными ночами вытачивалось, чтобы удалить всё лишнее и оставить только базу, из которой можно свинтить что угодно, хоть босфор, хоть улисс - и никто при этом не трогал /u/e. Когда человечество вымрет и останутся только ветки и палки, чтобы можно было быстро собрать /u/e, как базовый компонент. И ПОЭТОМУ ОН МЛЯТЬ ДОЛЖЕН БЫТЬ ОФОРМЛЕН, ПРОСТ И ОДНОЗНАЧЕН, чтобы любая макака могла написать его реализацию. Любая. На любом языке. С любым млять навыком. Не мусор собирала.
ahamai> И это млять не POC. Это и есть млять сама концепция сети. Нахрена переписывать базовый класс, наследуйся от него и потом пиши, как хочешь. А основные 4 стержня, которые работают в любых, любых млять условиях, они для того и сделаны такими простыми чтобы быть такими простыми. Без проверок, х..рок и прочей хрени. Обмен между нодами регламентируется ТОЛЬКО самими нодами. Могут хоть через git обмениваться и индексы по timestamp генерировать, это изначально была валидная версия обмена. Но помимо этого должна быть база, которая должна работать ВСЕГДА, ВЕЗДЕ, она должна быть МАКСИМАЛЬНО ПРОСТОЙ и МАКСИМАЛЬНО ВОСПРОИЗВОДИМОЙ. Поверх этого уже какие хошь расширения, это вообще пофиг, лишь бы клиент и сервер поддерживали. Но когда есть два стандарта на работу /u/e (один мой, другой неправильный (ц)) - это уже маразм.
Рома, иди проспись. Где ты увидел ii, млять. Это так печально, что интернетом пользуются те, кто так и не научился читать.
ahamai> Я смотрел старую переписку и кто какие фишки предлагал. Это могло быть перетряханием стандартов, какой из них стандартнее, уже тогда. Но я волевым решением отправил всех в лес и зафиксировал самую базовую базу, которая могла быть. Поэтому это всё и работает, поэтому и не было обсуждений стандартов а просто всё работало, а простота рекламировала эту технологию саму за себя. А потом /u/e взяли и изнасиловали.
Ты сделал слишком много ошибок в словосочетании "довели до ума мёртворождённое недоразумение".
+++ Caesium/0.4 RC1
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 07:37
revoltech (spnet, 4) => KNXDnFAn0KQeKzANNz4k
ahamai> 1.
ahamai> > ВЕСЬ ЗАПРОС СПИСОК ЭХ
ahamai> > ПОЛУЧИЛИ СПИСКИ
ahamai> > ЕСЛИ ЕСТЬ ЛИМИТ, УСТАНОВИЛИ
ahamai> > становится
ahamai> > ПОЛУЧИЛИ СПИСОК ЭХ
ahamai> > ПРОВЕРИЛИ ПОСЛЕДНЮЮ
ahamai> > ЕСЛИ ЭТО СРЕЗ, ТО РАСПАРСИЛИ СРЕЗ
ahamai> > СОХРАНИЛИ ЛИМИТ
ahamai> > УДАЛИЛИ ПОСЛЕДНЮЮ ЭХУ
ahamai> > ПОЛУЧИЛИ СПИСКИ
ahamai> > УСТАНОВИЛИ ЛИМИТ, ЕСЛИ ЕСТЬ
Немного не так. Точнее, совсем не так. То, что ты написал — это манипуляция. «ЕСЛИ ЕСТЬ ЛИМИТ, УСТАНОВИЛИ» тоже не из одного пункта состоит, его тоже надо где-то взять и распарсить. Это раз. Два — «распарсили срез» — это одна операция. Правильнее было бы слегка иначе:
1. Получили список эх (сохранили путь, разделив его по /).
2. Взяли последнюю.
3. Если там есть двоеточие, сохранили всё до него в смещение и всё после него в лимит.
4. Удалили из списка ВСЕ невалидные имена эх (u и e тоже таковыми являются, не только слайс).
5. Выгребли списки из базы по уже установленному лимиту.
Пять шагов. Корректных.
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 07:50
revoltech (spnet, 4) => KyZAf1x6esFjzhYpEMdT
AL> ЗЫЖ А где посмотреть на ноду на шелле.
Могу сделать хоть на busybox sh (+ busybox nc + busybox sed, возможно), но зачем? Это будет лютый тормоз. Как и связка busybox awk + busybox nc.
Если брать продвинутый шелл вроде bash или oksh, всё можно сделать непосредственно в нём, кроме самой отдачи по TCP. Я, блин, гофер-клиента на чистом баше не так давно делал (Bopher-NG), вопрос только, что это решает.
AL> А то Рома бьёт себя пяткой в грудь
Это от неосиляторства инструментов, не более. Я вот довольно быстро согласился и с 40 айдишниками вместо 380, и с контекстным парсингом /u/e вместо ключ/значение, поскольку принципиально это мало что меняет (алгоритмически тут можно всё тотально упростить, но для этого надо отказаться от обратной совместимости, иначе смысла немного). Те же вещи, на которых настаивает Рома, предложены даже не с позиции оптимизации, а с позиции «лишь бы существующий кривой код не чинить». Противно.
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 08:02
ahamai (blackcat, 2) => HaOuvsu8Yb4DPXzXEMNu
Можно вопрос. На каких вещах я настаиваю. Хоть на одной. Хоть на одной единственной,? Я ВООБЩЕ НИЧЕГО НЕ ПРЕДЛАГАЮ. НИЧЕГО. НИЧЕГО. Неужели это так трудно заметить? Я только разбираю кривой дизайн idec 10 летней давности. Всё. То есть это абсолютно всё. Как можно увидеть то, чего нет вообще, мне непонятно.
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 08:07
revoltech (spnet, 4) => NJRzAAiCJzfePPTkGavY
ahamai> Можно вопрос. На каких вещах я настаиваю. Хоть на одной. Хоть на одной единственной,?
На изменении формата срезов, например. Как минимум на выносе оных из /u/e.
В моём варианте реализации /u/e (из 5 пунктов) нода, которая не умеет срезы, просто их проигнорирует как невалидное имя эхи, и отдаст все сообщения из запрошенных эх. Это так сложно?
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 08:14
revoltech (spnet, 4) => UFCjXjYSR9NKBJl7xCHm
ahamai> У меня тогда две. Там три строки понятного прозрачного кода.
Ну скинь эти три строки тогда. Почему-то уверен, что всего необходимого там не будет.
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 08:03
ahamai (blackcat, 2) => mhCVNLu6tywpDe5XGQW7
У меня тогда две. Там три строки понятного прозрачного кода.
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 09:02
revoltech (spnet, 4) => BQpz1TTlRLXrQWpV8kkm
ahamai> > Ну скинь эти три строки тогда. Почему-то уверен, что всего необходимого там не будет.
ahamai>
ahamai> url.split('/')
ahamai> for ea on this
ahamai> out.append([ea] + open('e/ea').splitlines()]
Даже не вчитываясь в on вместо in... А где здесь проверка на то, что тебе валидные имена эх подсунули? Хотя бы на наличие точки и длину от 3 до 120 символов?
В общем, как раз то, о чём я и говорил.
ahamai> вот парсер со срезами я сейчас на sh/bash и не напишу
А я напишу, но зачем?
ahamai> Но зато сейчас ты знаешь историю в ретроспективе, подумай об этом :) Ну или может кто ещё зайдёт и подумает.
Не понимаю, чем это знание мне поможет в плане грядущей реализации своей ноды. Вот если вообще свой протокол буду пилить, то, естественно, учту ваш опыт.
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 08:56
ahamai (blackcat, 2) => Nv6O4g4RyYUAhPvxpkzE
> Ну скинь эти три строки тогда. Почему-то уверен, что всего необходимого там не будет.
url.split('/')
for ea on this
out.append([ea] + open('e/ea').splitlines()]
не суть важно. я уе привёл именно как пример разных реализаций. про /u/e я могу понятно, на пальцах и в деталях рассказать всю детализацию домохозяйки. её реализацию осилит почти любой, кто осилил команду cat. а вот парсер со срезами я сейчас на sh/bash и не напишу, надо будет смотреть много документации и вспоминать. "простота" - это не про осиливать, простота это когда осиливать не надо, и технический порог входа минимальный. при введении доп элементов вступают новые критерии.
если для чего-то нужно 2 навыка, то под этот фильтр может попасть 80% людей. а если их, скажем, 5, которые чуть посложнее, то с каждым новым фильтрация будет гораздо сильнее (команду cat на лоре осилило процентов 99, а парсеры на sh - процентов 20-40). для того, чтобы не понимать, достаточно не знать одного навыка - например я знаю 4 из 5, но я не понимаю, как работают срезы, потому что в разных языках разные нумерации, и я этого просто не понимаю.
этим и отличается простое от очень простое. для того, кому и то и то просто, не видит разницы.
я не говорю, какой путь правильный - правильного пути нет. я говорю о том, как изменилось ПРОЕКТИРОВАНИЕ ii при переходе в idec. Правильно-неправильно, хорошо-плохо - это вообще не важно. Раз тут началась тема с новым стандартом, я просто хотел напомнить 2014, когда делали расширения для ii, чтобы экономить трафик. Почему все на внешнее смотрит и ни один вообще не посмотрел вглубь? Зачем код, причём здесь код. 10 лет назад делали расширение. Я напомнил, как это было, в деталях. Расписал отличия и недостатки НА МОЙ ВЗГЛЯД. Из этого, блять, вообще не следует, что это недостатки для других. Я ПРО РАЗНИЦЫ ПОДХОДОВ. Если кто-то говорит, что старые /u/e и новые одинаково простые, он вообще не с той стороны смотрит. Но с другой стороны так никто и не посмотрел. Ладно. Кто как хочет, тот так и делает, жаль только обсуждение сразу ушло в совсем другую сторону. Но зато сейчас ты знаешь историю в ретроспективе, подумай об этом :) Ну или может кто ещё зайдёт и подумает.
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 09:19
shaos (spnet, 2) => mhCVNLu6tywpDe5XGQW7
Вот чего я родил - всем сестра'м по серьга'м как говорится :)
====
elseif ($opts[0] == 'u' and $opts[1] == 'e') {
$work_options=array_slice($opts, 2);
$aecho = [];
$aoff = [];
$alen = [];
$lim = 0;
$count = 0;
foreach ($work_options as $work) {
if(is_numeric($work)) {
if($lim >= 0) die("error: unexpected single number");
$lim = intval($work);
if($lim < 0) die("error: unexpected negative number");
} elseif(strpos($work,".")!==false) {
if($lim < 0) die("error: missing lim value");
array_push($aecho,$work);
if($lim > 0) {
array_push($aoff,-$lim);
array_push($alen,$lim);
} else {
array_push($aoff,NULL);
array_push($alen,NULL);
}
$count = $count + 1;
} elseif(strpos($work,":")!==false || strcmp($work,"all")==0 || strcmp($work,"last")==0) {
if($lim != 0) die("error: slice can not be used with lim");
if(strcmp($work,"all")==0) {
$a = 0;
$b = 0;
} elseif(strcmp($work,"last")==0) {
$a = -1;
$b = 1;
} else {
$numbers=explode(":", $work);
$a = intval($numbers[0]);
$b = intval($numbers[1]);
}
for($i=$count-1;$i>=0;$i--) {
if(!is_null($aoff[$i])) break;
$aoff[$i] = $a;
$alen[$i] = $b;
}
} elseif(strcmp($work,"lim")==0) {
$lim = -1;
} else die("error: wrong arguments");
}
$buffer = "";
for($i=0;$i<$count;$i++) {
$echo = $aecho[$i];
if($aoff[$i]==0 && $alen[$i]==0) {
$slice = $access->getMsgList($echo); // NULL, NULL
} else {
$slice = $access->getMsgList($echo, $aoff[$i], $alen[$i]);
}
if (count($slice) > 0) {
$buffer.=$echo."\n".implode("\n", $slice)."\n";
} else {
$buffer.=$echo."\n";
}
}
echo $buffer;
}
====
тут тебе и стандартный ii, и со слайсами в конце [-]N:M как в IDEC, и со слайсами внутри (между именами эх) как я предлагал ранее, и можно писать last вместо -1:1, и можно писать all внутри если в конце стоит last или какие другие нумера (типа /u/e/echo.1/all/echo.2/echo.3/last если надо только последнее сообщение для последних двух эх и всё для первой), и можно после каждой эхи писать, как предлагал revoltech, и даже lim/N в начале пройдёт как у Ромы (правда при этом уже нельзя будет слайсы воткнуть), а вот от msgid и далее делать неохота ибо оно криво будет работать т.к. порядок может быть чуть разный на разных нодах...
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 09:31
revoltech (spnet, 4) => cLmRcGmwcYhmwDqI2BTj
ahamai> я не помню, есть echo_flt в том коде, но это вообще неважно.
Важно. Поскольку это уже не три строчки.
ahamai> лишнего оно не запросит а на неккоректное просто упадёт.
А надо, чтобы не падало, а игнорировало такие имена.
ahamai> оформление полиси, соглашений, стандартов и прочего - это вообще не технология.
Ну дык. Без чёткого ТЗ результат всегда ХЗ.
ahamai> Я не добавил фразу "как эту задачу решают программист и непрограммист"
Непрограммисты (хотя ХЗ, что ты в это слово вкладываешь) обычно в такие вещи просто не лезут.
ahamai> я, например. не программист
Я тоже. По профессии я вообще девопс, а по образованию криптограф. Но вот почему-то приходится программистам нод очевидные вещи втолковывать.
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 09:10
ahamai (blackcat, 2) => hNOG2UAo7kUSlwnzvv0B
> Даже не вчитываясь в on вместо in... А где здесь проверка на то, что тебе валидные имена эх подсунули? Хотя бы на наличие точки и длину от 3 до 120 символов?
я не помню, есть echo_flt в том коде, но это вообще неважно. главное, чтобы код был проще и понятнее. про валидирование и прочее это не ко мне точно, лишнего оно не запросит а на неккоректное просто упадёт. это для меня стандарт - простота превыше, поэтому ii и самодостаточна и при этом база для расширений.
> В общем, как раз то, о чём я и говорил.
Нет. это то, о чём я говорил. Последние несколько дней.
> Не понимаю, чем это знание мне поможет в плане грядущей реализации своей ноды.
оформление полиси, соглашений, стандартов и прочего - это вообще не технология. это политика. сначала политика определяет стандарты, потом стандарты технологию. так было с ii. дважды.
Блин. я специально старался писать не ответы, а новые темы, чтобы не было обсуждение деталей, а всё опять сходится к обсуждению деталей. :)
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 09:24
Andrew Lobanov (tavern,1) => HaOuvsu8Yb4DPXzXEMNu
AL>> ЗЫЖ А где посмотреть на ноду на шелле.
revoltech> Могу сделать хоть на busybox sh (+ busybox nc + busybox sed, возможно), но зачем? Это будет лютый тормоз. Как и связка busybox awk + busybox nc.
Вопрос то не в теоретической возможности. Вот Рома писал про ноду на шелле и, мол, там это сделать сложно (непонятно почему, правда). Но не показал этой мифической ноды, где это сделать сложно.
revoltech> Если брать продвинутый шелл вроде bash или oksh, всё можно сделать непосредственно в нём, кроме самой отдачи по TCP. Я, блин, гофер-клиента на чистом баше не так давно делал (Bopher-NG), вопрос только, что это решает.
AL>> А то Рома бьёт себя пяткой в грудь
revoltech> Это от неосиляторства инструментов, не более. Я вот довольно быстро согласился и с 40 айдишниками вместо 380, и с контекстным парсингом /u/e вместо ключ/значение, поскольку принципиально это мало что меняет (алгоритмически тут можно всё тотально упростить, но для этого надо отказаться от обратной совместимости, иначе смысла немного). Те же вещи, на которых настаивает Рома, предложены даже не с позиции оптимизации, а с позиции «лишь бы существующий кривой код не чинить». Противно.
Там не только кривой код кривой подход ещё. В идеальном случае, единственно верной реакцией на некорректный запрос должна быть ошибка. Это правильная практика.
Почему ii ходит в idec по своим стандартам я могу понять. Но idec позволяет работать в ii-режиме и вообще не обязан использовать слайсы при фетчинге. Но не в голове у Ромы.
Короче, я забодался и Рома идёт лесом со своим странным нытьём. Ходить с ним кругами смысла нет, полезной нагрузки в его сообщениях нет, наезды и истерики в его сообщениях есть. Ну и нафейхоа? Пока добавил в цезий кривой и косой, но механизм твитов. Доработаю и выдам на суд общественности.
+++ Лично я вижу в этом перст судьбы – шли по лесу и встретили программиста.
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 09:40
revoltech (spnet, 4) => idqUu3ZFWZUo1UHEGOfn
shaos> Вот чего я родил
«...А глянешь — мамочка моя! Эт чё? О чём? А набуя?» ©
Не, прочесть-то можно (хотя да, этот код напомнил, почему я пых терпеть не могу), но вот это как раз тот уровень сложности, от которого я стараюсь держаться подальше. Могу в отдельном сабже сделать разбор сего шындевра. Но у меня в ноде такого не будет точно.
shaos> а вот от msgid и далее делать неохота ибо оно криво будет работать т.к. порядок может быть чуть разный на разных нодах...
Такого, кстати, быть не должно.
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 09:54
shaos (spnet, 2) => 30BtPNvgOWFiHAzHb0em
> это как раз тот уровень сложности, от которого я стараюсь держаться подальше.
Это сложность по твоему? Это наоборот лёгкость и непринуждённость :)
> Такого, кстати, быть не должно.
Да запросто - например я вашу беседу у себя на ноде вижу задом наперёд - сначала твои ответы, потом сообщения на которые ты отвечаешь, а где-то наверное есть правильный порядок...
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 09:56
doesnm (ping,55) => HaOuvsu8Yb4DPXzXEMNu
revoltech> Если брать продвинутый шелл вроде bash или oksh, всё можно сделать непосредственно в нём, кроме самой отдачи по TCP. Я, блин, гофер-клиента на чистом баше не так давно делал (Bopher-NG), вопрос только, что это решает.
Отдачу сделать по CGI (читерство), а вместо nc взять /dev/tcp (фича баша)
+++ Никто не знает, как правильно. Так зачем же выдумывать правила?
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 10:03
doesnm (ping,55) => 3WvTiRIOtz0FpaBWuyJo
>> Такого, кстати, быть не должно.
shaos> Да запросто - например я вашу беседу у себя на ноде вижу задом наперёд - сначала твои ответы, потом сообщения на которые ты отвечаешь, а где-то наверное есть правильный порядок...
Кстати у меня тоже самое. Я думал это прикол ping
+++ Никто не знает, как правильно. Так зачем же выдумывать правила?
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 10:13
revoltech (spnet, 4) => rW6SWjjLxW6UrWbHIl4i
doesnm> Отдачу сделать по CGI (читерство), а вместо nc взять /dev/tcp (фича баша)
Да что ж везде одни теоретики... /dev/tcp только для клиентских соединений работает. Сервер сугубо на нём не сделаешь.
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 10:19
shaos (spnet, 2) => yAk5ehoXESO4AMBOA43j
Возможно revoltech берёт сообщения Ромы прямо с blcat.ru и отвечает на них через меня, а я опрашиваю blcat.ru уже после, соответствено у меня ответы появляются раньше вопросов и затем это распространяется везде, кто берёт idec.talks с меня...
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 10:27
shaos (spnet, 2) => y7oqvEkVRbHojiSe98q7
На http://ii.blcat.ru/idec.talks правильный порядок - значит blcat берёт сообщения с меня чаще, чеми я с него, а revoltech по-видимому читает сразу всех и часто - я просто вижу его ответы раньше т.к. он мой поинт и отвечает через меня...
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 10:25
doesnm (ping,55) => G4Ix9WCuofNezQKQK8k9
doesnm>> Отдачу сделать по CGI (читерство), а вместо nc взять /dev/tcp (фича баша)
revoltech> Да что ж везде одни теоретики... /dev/tcp только для клиентских соединений работает. Сервер сугубо на нём не сделаешь.
Я же сказал что сервер по CGI
+++ Никто не знает, как правильно. Так зачем же выдумывать правила?
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 10:45
Andrew Lobanov (tavern,1) => 30BtPNvgOWFiHAzHb0em
shaos>> а вот от msgid и далее делать неохота ибо оно криво будет работать т.к. порядок может быть чуть разный на разных нодах...
revoltech> Такого, кстати, быть не должно.
Такое, кстати, является вполне штатной ситуацией. Сообщения в индексе располагаются в порядке получения нодой. Все ноды получают сообщения в разном порядке.
+++ Лично я вижу в этом перст судьбы – шли по лесу и встретили программиста.
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 10:58
revoltech (spnet, 4) => y7oqvEkVRbHojiSe98q7
shaos> Возможно revoltech берёт сообщения Ромы прямо с blcat.ru и отвечает на них через меня
Я сейчас опрашиваю ноды в таком порядке: 1) https://sprinternet.io/iii, 2) https://hugeping.tk, 3) http://ii.blcat.ru, 4) http://idec.spline-online.ru. Соответственно, если его ответов на твоей и у пинга нет, то они выкачиваются и добавляются в локальную базу с ii.blcat.ru.
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 10:51
Andrew Lobanov (tavern,1) => G4Ix9WCuofNezQKQK8k9
doesnm>> Отдачу сделать по CGI (читерство), а вместо nc взять /dev/tcp (фича баша)
revoltech> Да что ж везде одни теоретики... /dev/tcp только для клиентских соединений работает. Сервер сугубо на нём не сделаешь.
Перечитай на что отвечаешь. Серверная часть на CGI, клиентская на /dev/tcp. Как раз то, что ты пишешь, и выходит. Ну блин.
+++ Лично я вижу в этом перст судьбы – шли по лесу и встретили программиста.
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 11:02
revoltech (spnet, 4) => 11HUBDGLF9eiKuPtWjk2
shaos> а revoltech по-видимому читает сразу всех и часто
Не так уж и часто. У меня фетч чисто в ручном режиме по кнопке на данный момент. Но порядок чтения уже написал.
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 12:45
hugeping (ping,1) => PQG3D7UIBViyIuU4kd8M
Рома, не нервничай. У меня 3й день подряд мигрень, но я решил немного пояснить ситуацию, не влезая в детали. Как ты предложил. Но по существу! Мой ответ частично обращён к твоим другим сообщениям.
# Про дизайн и простоту ii
Я прекрасно понимаю твои доводы о простоте и сам практикую решения проблем "не в лоб". Это действительно круто, когда проблему можно "обойти" не решая её вообще. Plan9, кстати, отличный пример этого подхода. Я пришёл к этому не сразу, но когда так понял - сразу начал с радостью практиковать. На работе и в быту. И про питон + падения некорректных данных я тоже нормально отношусь. Мы пишем "чистые (сейчас не в терминах ФП)" функции при этом. А контролируемое падение питона (да ещё в рамках веб-фреймворка, например) это, обычно, не является проблемой безопасности.
Поэтому я лично пытался придумать что-то, что было бы так же просто как базовый ii, но всё-таки решало те проблемы, которые мне бы лично хотелось бы решить.
# Проблемы "базового" ii
Собственно это и есть краеугольный момент. Либо мы воспринимаем особенности ii проблемами либо нет. Я согласен, можно проявить аскетичность, смирение и "вложить" себя в базовый ii который предполагает:
- полный фетч;
- архивирование и "бегучесть" эх.
Но аскетика - дело добровольное. Если каким-то людям эти ограничения тесноваты - они вольны решать эти проблемы так, как они это способны делать. И даже, если они делают это по твоему мнению плохо и топорно, вправе ли ты их за это осуждать?
# Обсуждаемые изменения стандарта idec
Обсуждаемые изменения стандарта - в основном, реакция на взгляд со стороны о двусмысленных моментах. Андрей выкинул из текущего idec то, что посчитал лишним. Так что это упрощение. А то, что было неточно сформулировано - сформулировал. Речь вроде бы и не шла о "принципиально новом" стандарте. То-есть, мера хаоса была уменьшена, не революционно, но тем не менее. В этом и есть его ценность.
# Новый стандарт
Вот. А теперь самое интересное. Есть чистый стол. Есть ii. Есть упрощённый idec. И дальше развилка.
1) мне достаточно ii
2) мне достаточно idec
3) я могу сделать лучше
Ты можешь мне сказать где ты? Вроде бы ты на пп1, но при этом я вижу в твоих сообщения обсуждения решений тогоже sf, h которые вроде бы демонстрируют что то из пп3.
Ну так возьми и предложи, связанным текстом непротиворечивый стандарт, который по твоему мнению достаточен.
Я лично могу сформулировать несколько вариантов:
1) ii с полным фетчем но с надёжным механизмом проверки изменений в эхах узла (это то, что у тебя hash эх
2) ii с возможностью забирать n последних сообщений (это твой lim и/или sf)
3) ii с отдачей списка msgid в обратном порядке (моя идея)
Каждая из них мне не нравится по своим причинам:
1) Необходимостью хранить счетчики/хеши/что угодно - мой шкурный интерес. Я тоже иногда люблю экстремальную простоту. Приемлемо, но не прекрасно.
2) Невозможно "чётко" подобрать лимит такого захлёста. Сколько надо ставить чтобы и разброс порядка не влиял и интенсивность чата? 100? А если сисоп уехал в круиз а за пол года его отсутствия пришло 10000 пользователей? Нет, не надёжно.
3) Вроде всё четко технически (читаем и обрываем связь когда считаем нужным) но.. Есть элемент хака.
Текущий idec в терминах простоты мне тоже НЕ НРАВИТСЯ, но! Я НЕ МОГУ придумать лучше и так, чтобы были решены те недостатки, о которых я говорю. И вот слайсы, достаточно просты и их таки решают! И этот адаптивный фетч который ты называешь оверинженирингом, для меня это вынужденный шаг. Другого пути я просто не вижу. Если хочу избавиться от полного фетча и при этом иметь надёжность которая позволила бы мне бросить ноду и не следить за ней год (хотя бы и гипотетически)
В общем, давай конструктивно. Дружно. Корректно! (Мою ноду дети читают!) Предлагай решения если есть что предложить дополнительно или скажи, что тебя устраивает ii в чистом виде, но тогда и не нервничай. Дай нам двигаться своим путём.
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 17:35
hugeping (ping,1) => wZtICHyKNL2Xsnvi9icX
Подумал тут ещё... Хочу добавить. Может какой-то мозговой штурм начнётся. Но это все в рамках некоторого "потенциально нового" ii-подобного протокола. idec3 :)
Адаптивный фетч тоже не 100% надёжен. Но ненадёжен по-другому. Речь о той точке алгоритма, когда мы останавливаемся. Когда видим что такое сообщение у нас есть и начинаем фетч. Это лучше чем жёсткий лимит, но всё-ещё не абсолютно надёжно.
Поэтому мне кажется, что в "идеальном" протоколе нужно выбрать что-то принципиально иное.
1) Либо полный sync если хоть что то поменялось (но тогда стоит вернуться и к перекатыванию эх, потому что в этом решении нет масштабировании при бесконечном росте эхи. Короче - это "принятие" ii)
2) Выборка, основанная на времени.
Вроде бы Рома делал такое когда-то, может ошибаюсь. Запрос вида: дай мне сообщения которые пришли с такого-то времени (время - ну пусть секунды эпохи unix в utc).
Да, тогда мы немного завязаны на время, но это вроде бы окончательно решает всё. Или нет?
Что думаете?
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 17:41
tuple (ping,54) => OXDsX5L6K9KqZuG6lVgZ
hugeping> Но это все в рамках некоторого "потенциально нового" ii-подобного протокола. idec3 :)
Стоило прийти в idec, как его уже хоронят :)
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 17:42
hugeping (ping,1) => TcA3cJhTOMceadQE73v6
tuple> Стоило прийти в idec, как его уже хоронят :)
Не надо вбросов! Давай по существу.
P.S. Ipv4 тоже хоронят давно, но что-то никак. :)
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 17:50
hugeping (ping,1) => OXDsX5L6K9KqZuG6lVgZ
hugeping> Что думаете?
Продолжаю рассуждать. sf=hash становится надёжной, если только мы после последнего фетча запоминаем hash последнего сообщения которое зафетчили и сохранили. Возможно, о таком режиме Рома и говорил, но я до сих пор воспринимал sf=hash совсем по другому. Так что пишу это, если вы тоже воспринимали это по другому...
Так что sf=hash так же надёжна как и время, если мы после каждого фетча успешного записываем hash последнего взятого сообщения для этой ноды.
Мне, правда, не нравится необходимость хранить эти хеши для фетчей (причём для каждой ноды), поэтому идея с временем нравится больше. Но тем не менее.
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 18:34
shaos (spnet, 2) => HyD52YO1X3QiVnOwImce
Если сохранять хеш последнего принятого сообщения для КАЖДОЙ опрашиваемой ноды, то тогда да - имеет право на жизнь. По идее оно может собой заменить хеш списка сообщений для эхи (мой /x/h или /list.txt?h=1) т.к. список не может расти изнутри - только с конца...
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 18:37
shaos (spnet, 2) => OXDsX5L6K9KqZuG6lVgZ
Время ненадёжно т.к. сообщения приходят так как приходят из-за особенностей роутинга и последовательности фетчинга, а вовсе не в хронологическом порядке, и старое сообщение вполне может внезапно "всплыть" выше по списку чем более новые ответы на него (см. беседу revoltech с Ромой).
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 18:46
shaos (spnet, 2) => FfcpM8m3KyA5y2Nou9Rh
Выше по списку в ленте сообщений где сверху показаны последние сообщения, а в списке хешей эхи оно естественно будет ниже по списку...
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 18:48
hugeping (ping,1) => w1Y45EjFWVrS8Tp48h6s
shaos> Если сохранять хеш последнего принятого сообщения для КАЖДОЙ опрашиваемой ноды, то тогда да - имеет право на жизнь. По идее оно может собой заменить хеш списка сообщений для эхи (мой /x/h или /list.txt?h=1) т.к. список не может расти изнутри - только с конца...
Он не то чтобы его заменяет, а решает бОльшую задачу - sync только новых сообщений. При этом /x/h не нужен, так как решена более общая задача. Но хеши надо хранить для всех эх всех нод с которых мы фетчим...
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 18:48
hugeping (ping,1) => FfcpM8m3KyA5y2Nou9Rh
shaos> Время ненадёжно т.к. сообщения приходят так как приходят из-за особенностей роутинга и последовательности фетчинга, а вовсе не в хронологическом порядке, и старое сообщение вполне может внезапно "всплыть" выше по списку чем более новые ответы на него (см. беседу revoltech с Ромой).
Я имел в виду время принятия сообщения нодой, а не время создания сообщения, конечно.
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 20:10
shaos (spnet, 2) => EKXCW5jRBCXG9Ya7tEoy
А ну это сейчас вообще никем не фиксируется
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 20:28
hugeping (ping,1) => rSemEy7Jt61xvjczUTkl
shaos> А ну это сейчас вообще никем не фиксируется
Гм. Действительно, как-то я не подумал об этом. :)
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 20:46
shaos (spnet, 2) => 1QCpSR6T5FlrLNGXPuZI
Ну теоретически если кто хранит мессаги в MySQL или SQLite, то время добавления можно и сохранять, а если только в файлах, то по времени создания файла? Можно попробовать - всё равно ведь не всё перебирать надо, а только последние сообщения в эхе пока не найдём «прошлое»…
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 21:25
hugeping (ping,1) => jX2tAGsaPDnzmefLePvD
shaos> Ну теоретически если кто хранит мессаги в MySQL или SQLite, то время добавления можно и сохранять, а если только в файлах, то по времени создания файла? Можно попробовать - всё равно ведь не всё перебирать надо, а только последние сообщения в эхе пока не найдём «прошлое»…
Да не, ерунда это всё. Не могу я, в общем, ничего принципиально иного придумать. Ну, а о реверсной выдачи ID что думаешь?
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 23:29
shaos (spnet, 2) => 3S4NgNU0tRbX4POfCDJK
Реверсная выдача это когда клиент качает список в обратном порядке пока не дойдёт до знакомых хешей? Это может работать только для отдельных эх (типа /e но в обратном порядке).
Для минимизации количества запросов можно все эхи разом опросить - для этого придётся городить новый вызов и новый формат ответа, где будут все эхи вперемешку (по заданному списку) и имя эхи будет в каждой строке, типа:
echo.1:msgid999
echo.2:msgid998
echo.1:msgid997
…
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 23:50
ahamai (blackcat, 2) => jX2tAGsaPDnzmefLePvD
> Ну теоретически если кто хранит мессаги в MySQL или SQLite, то время добавления можно и сохранять
так было в босфор. я ща гляжу на него, прикольная была штука, только клиентов и фетчеров для него не было :)
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
01.11.2024 23:52
ahamai (blackcat, 2) => Hb7Zz0HLpty4GeqqoSiU
> Он не то чтобы его заменяет, а решает бОльшую задачу - sync только новых сообщений. При этом /x/h не нужен, так как решена более общая задача. Но хеши надо хранить для всех эх всех нод с которых мы фетчим...
x/h единственный валидный триггер. он бывает в двух состояниях "эха изменилась" и "эха не изменилась". всё остальное не даёт полных гарантий.
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
02.11.2024 00:02
ahamai (blackcat, 2) => wZtICHyKNL2Xsnvi9icX
> Собственно это и есть краеугольный момент. Либо мы воспринимаем особенности ii проблемами либо нет. Я согласен, можно проявить аскетичность, смирение и "вложить" себя в базовый ii который предполагает:
Это не проблема. Это основа. Хотел вчера ответить revoltech, но отвечу сразу здесь.
ii это социальная сеть малых сообществ. Так она всегда и называлась. Она не про технологии, она про любительское программирование, радиолюбительство, клуб юного техника и прочие порождения Дворца Пионеров. Чтобы каждый мог собрать свою ноду и общаться со своим хомячком. Потому что это просто. Весь протокол постоянно упрощался. Какие вообще слайсы?
Ещё мне там понравилось, что второй человек уже указывает, что в выводе /u/e может быть мусор. Они походу вообще не понимают сути. Ты синкаешься с доверенным узлом по предельно формализированному и простому формату. Единственный вариант, когда там может быть мусор - это СБОЙ. И как можно в этой ситуации поступать "ну давайте что-нибудь попробуем вычленить". Да ты можешь получить 800 дублей или ещё чего похуже. Вся история и фидо, и ii, говорят об этом.
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
02.11.2024 00:04
ahamai (blackcat, 2) => wZtICHyKNL2Xsnvi9icX
> Ты можешь мне сказать где ты? Вроде бы ты на пп1, но при этом я вижу в твоих сообщения обсуждения решений тогоже sf, h которые вроде бы демонстрируют что то из пп3.
меня не интересует стандарт. ВООБЩЕ. у меня есть /u/e, который проживёт ещё 100 лет и переживёт всех модернизаторов.
я просто напоминал о 2014 году, когда делали стандарт. сейчас 2024 год и опять делают стандарт. на этом всё. умному - достаточно.
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
02.11.2024 00:22
ahamai (blackcat, 2) => R2MgOoCzy9enW4cNbe9J
Мне, старому фидошнику, непонятно, зачем фетчить сразу несколько станций. :) лично я качаю только с shaos
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
02.11.2024 00:29
ahamai (blackcat, 2) => wZtICHyKNL2Xsnvi9icX
> 2) Невозможно "чётко" подобрать лимит такого захлёста. Сколько надо ставить чтобы и разброс порядка не влиял и интенсивность чата? 100? А если сисоп уехал в круиз а за пол года его отсутствия пришло 10000 пользователей? Нет, не надёжно.
полный фетч периодически необходим. и он решает все вопросы. вопросы "уехал в круиз на полгода" тоже решает полный фетч. а лимиты, как и любой другой k/v, можно легко добавить вообще не ломая совместимость с любой версией ii, просто меняя endpoint (что было заложено изначально, когда схема /z менялась на схему /u)
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
02.11.2024 00:32
ahamai (blackcat, 2) => wZtICHyKNL2Xsnvi9icX
но вообще причина не особо понятна. я опрашиваю shaos каждые 5 минут, сейчас слайсами раньше полным фетчем. до h/x и с полным фетчем это 12 мб в сутки (при этом я тяну rss-эхи). после h/x и с полным фетчем 2-4 мб в сутки. (со слайсами, кстати, трафик почему-то нифига не уменьшился). в http есть gzip, который тоже экономит трафик.
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
02.11.2024 00:37
ahamai (blackcat, 2) => wZtICHyKNL2Xsnvi9icX
По мне проблемы ровно три: отсутствие контента, отсутствие клиентов, отсутствие юзеров. Проблему внезапного лишнего трафика решает элементарное внедрение хэширования эх - оно сокращает трафик, и в отличие от адаптивных и ?sf даёт полную гарантию синхронности эх.
Мне вообще эта движуха напоминает создание очередной левонетки, где на серьёзных щах пишут полиси и прочее, раздают эхи, раздают на них модераторов и комодераторов, прочая движуха, а потом остаются с тремя юзерами (зато все модераторы друг друга). Ну или один год, про который я где-то чё-то говорил.
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
02.11.2024 01:08
revoltech (spnet, 4) => BAZMzDa7kFmIsBfCxcvl
ahamai> Чтобы каждый мог собрать свою ноду и общаться со своим хомячком. Потому что это просто. Весь протокол постоянно упрощался. Какие вообще слайсы?
Дык я и начинаю собирать свою ноду. Слайсы мне в этом вообще не помешают. А ещё у меня там будет автопереключение транспортов — по одному и тому же порту можно будет запрашивать как HTTP, так и Nex/Gopher. И потом ещё после стандартной реализации IDEC будет сбоку приделан совсем несовместимый с ним протокол, ещё более простой и при этом решающий ровно те же задачи, но куда более красиво, компактно и всего пятью эндпоинтами.
ahamai> Ещё мне там понравилось, что второй человек уже указывает, что в выводе /u/e может быть мусор.
Не в выводе, а на входе. Это существенная разница.
ahamai> Они походу вообще не понимают сути. Ты синкаешься с доверенным узлом по предельно формализированному и простому формату.
А ты уверен, что ты сам-то суть понимаешь? Это не про доверенные узлы вообще. Для запроса /u/e пароль не нужен, тебе запрос с дичью вместо эхонеймов может прислать вообще кто угодно, когда угодно и в каком угодно количестве.
ahamai> Единственный вариант, когда там может быть мусор - это СБОЙ.
Или сознательная атака. Если твоя нода при этом будет падать от малейшего чиха, толку от неё мало. У меня вон VPS-ку всякие васяны постоянно по SSH брутить пытаются, судя по логам. И обламываются на корню.
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
02.11.2024 01:13
hugeping (ping,1) => PeWoiW3CMuZrpBu8m92o
shaos> Для минимизации количества запросов можно все эхи разом опросить - для этого придётся городить новый вызов и новый формат ответа
Не вижу смысла минимизировать число запросов. До сих пор считаю это ложной целью. У меня и сейчас опрашивается в одном потоке одна эха и работает все быстро.
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
02.11.2024 01:23
ahamai (blackcat, 2) => 3659AVuCrWqWaDEe2HWU
> Дык я и начинаю собирать свою ноду. Слайсы мне в этом вообще не помешают.
ты программист, наверное. а речь про любителей.
> А ты уверен, что ты сам-то суть понимаешь? Это не про доверенные узлы вообще. Для запроса /u/e пароль не нужен, тебе запрос с дичью вместо эхонеймов может прислать вообще кто угодно, когда угодно и в каком угодно количестве.
ты. синкаешься. с доверенным. узлом. всё. а теперь сам перечитай свою же фразу.
ps. при запросе (запросе от тебя) система автоматом разбирается. если есть файлик, то это эха с данными, если всё остальное - то это пустая эха. и ты выдаёшь такой же полностью корректный бандл, где просто перечисляется куча пустых эх. вот тебе вход, список, чего угодно, любой ахинеи. вот тебе выход - ответ на твой запрос, что эха КРАКОЗЯБЛ1 и эха КРАКОЗЯБЛ2 пусты. это полностью корректный и абсолютно формализуемый бандл. бандл состоит только из двух вещей, msgid и эхи, и выдаёт такой бандл, что бы у тебя не запросили вообще.
две стороны. одна даёт список эх, не важно, реальный или абстрактный мусорный. вторая по этому списку выдаёт абсолютно корректный бандл по всем этим эхам, какие бы они не были. всё. не может быть другого варианта, в принципе. список эх -> бандл.
> Или сознательная атака.
то есть, тебя собирается атаковать собственный аплинк. И ТЫ ПРИ ЭТОМ ПЫТАЕШЬСЯ ВАЛИДИРОВАТЬ какие-то данные? ты вообще сам понимаешь, что говоришь - тебе дают заведомо некорректные данные, а ты говоришь "нет, не отлуп давать, а пытаться хоть что-то свалидировать, ВДРУГ ТАМ ЧТО-ТО хорошее?"
+++ memo:absurd
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
02.11.2024 01:28
ahamai (blackcat, 2) => absurdTQz6IRT8w3UGqO
если тебе дают некорректные данные - ты должен падать - это основа безопасности. как и кому в голову может прийти идея их валидировать
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
02.11.2024 01:31
ahamai (blackcat, 2) => XS2q1jEPgCqW2NLGzB0o
а, ну ещё проблема в сути вопроса - нахрена, чтобы навредить, давать НЕКОРРЕКТНЫЙ БАНДЛ??? вот тут вообще непонятно. логичнее давать абсолютно корректный бандл, содержащий, например каждый раз тысячу разных msgid с некорректными данными или просто со случайным флудом
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
02.11.2024 01:22
hugeping (ping,1) => nAwAZKPUtUWuxYGFa0Ab
Я попытался склеить твои сообщения фрагментные в одно и осознать. Но не смог. На моё сообщение ты как-то очень непрямо ответил. По кр. мере я не считаю что ты меня понял и ответил так, чтобы я понял в ответ. Почему уж это происходит так -- я не хочу разбираться. Давай я перестану тогда тебя беспокоить. Буду заниматься дальше своими делами.
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
02.11.2024 01:52
shaos (spnet, 2) => BAZMzDa7kFmIsBfCxcvl
Речь была вроде не про мусор в выводе /u/e а про мусор в запросе /u/e - такой запрос кто угодно может сделать
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
02.11.2024 01:35
ahamai (blackcat, 2) => uDzNXjt8jwxHAO6snBi4
> Не вижу смысла минимизировать число запросов.
ну, в 2014 это было проблемой, раз /e заменили на /u/e. а вообще запрос вещь дорогая, это и лишние tcp-фреймы, и лишняя нагрузка на сервер, и лишняя строка в логах :) упаковка в один запрос лучше в любом случае. иначе можно было бы на /m и /e остаться. и мы бы остались, если бы запросы не были столь дорогими, пришлось прикручивать изначально ненужные бандлы. я не знаю, в текущих реалиях можно было бы, если создавать сеть сейчас, остаться на /m и /e - это бы сильно всё упростило :)
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
02.11.2024 01:36
ahamai (blackcat, 2) => uDzNXjt8jwxHAO6snBi4
> У меня и сейчас опрашивается в одном потоке одна эха и работает все быстро.
u/e для этого вообще не нужна, достаточно e/
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
02.11.2024 01:47
ahamai (blackcat, 2) => Tq4QG9gX2LfpO5vuFTMx
> На моё сообщение ты как-то очень непрямо ответил.
я ровно в каждом сообщении пишу ровно одно и то же.
1. меня не интересуют стандарты и технологии. как я могу ответить вопрос про стандарты и технологии, если мне это неинтересно, и для меня это вообще не проблема, какой бы стандарт в итоге не приняли.
2. вспомните 2014 год. у меня каждое сообщение ровно про одно - вспомните 2014 год. всё. ни о чём другом я не пишу. и про технологии я пишу только в этом разрезе.
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
02.11.2024 01:48
ahamai (blackcat, 2) => uDzNXjt8jwxHAO6snBi4
кстати, любителям множества запросов могу предложить алгоритм хэширования чанков. весь список эх делится на чанки, например по 64 сообщения, и от каждого чанка берётся хэш. первым запросом проверяется хэш чанков, и берутся только те чанки, которые изменились.
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
02.11.2024 02:02
ahamai (blackcat, 2) => rcxriBxPzX6ciS10sM5K
речь была о мусоре в /u/e который нужно игнорировать
а какая разница в запросе??? бандл он нужен только для одного, получить информацию. если тебе нужна информация, ты делаешь конкретный запрос. а так, ты сделал некорректный запрос, ну тебе выдался список пустых эх. И ЧТО.
u/e работает только так. даунлинк запрашивает список эх. аплинк выдаёт бандл. всё. тут нет ничего больше, всё взаимодействие u/e именно такое. ничего другого там нет. список эх -> корректный с точки зрения формата бандл. какая разница кто какой запрос делает, на любой запрос u/e делает только одно, выдаёт запрошенный бандл. всё примитивно. как три копейки, ничего другого там просто нет.
валидация урл на инъекции и прочее это вообще не про ii, это задача другого уровня, задача веб-сервера, url и прочее, это применимо к любому запросу к любому серверу. ii же работает абсолютно топорно - вот тебе список эх, вот тебе бандл, ничего другого в принципе там быть не может. на вход может быть подано вообще что угодно, для станции это список эх. станция смотрит, если есть такая эха, выдаёт контент, если нет, выдаёт пустую эху. ничего другого корректная станция выдать не может. и эту станцию ты сам прописываешь в конфиге.
ну блин, очевидные же вещи. протокол настолько примитивен и технология сети настолько примитивна, что как тут могут возникать такие вопросы. запрашивающий ожидает только одно, бандл. ну создал ты левый урл, получил бандл с кривыми эхами, и что? что от этого. у тебя на руках такой бандл. и что ты им сделаешь? а ничего другого ты получить не можешь. опять же вопросы инъекций, это вопросы чуть более низкого уровня, чем ii, и если сервер пропустил инъекцию, это вина не ii.
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
02.11.2024 07:37
Andrew Lobanov (tavern,1) => uDzNXjt8jwxHAO6snBi4
shaos>> Для минимизации количества запросов можно все эхи разом опросить - для этого придётся городить новый вызов и новый формат ответа
hugeping> Не вижу смысла минимизировать число запросов. До сих пор считаю это ложной целью.
Два чаю этому джентельмену.
+++ Лично я вижу в этом перст судьбы – шли по лесу и встретили программиста.
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
02.11.2024 08:12
shaos (spnet, 2) => os9lB5nWYRtqLUfrasdk
Ну вон я же вчера приводил замеры - каждый HTTPS запрос добавляет 3.5КБ к полезной нагрузке - будет 1000 запросов, будет лишних 3.5 мега...
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
02.11.2024 08:24
ahamai (blackcat, 2) => 3YWnszZFvyL6TyL46fAJ
Еще tcp фреймы, хендшейк и прочее. Если бы всё было так просто, все бы жили на /m и /e и были бы счастливы
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
02.11.2024 08:27
ahamai (blackcat, 2) => 3YWnszZFvyL6TyL46fAJ
Мне интересно почему срезы у нас трафик не уменьшили? До них было 2 мб в сутки, щас то 4.5 то 2.7. У тебя трафик в обе стороны считается или только входящий?
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
02.11.2024 08:50
Andrew Lobanov (tavern,1) => 3YWnszZFvyL6TyL46fAJ
shaos> Ну вон я же вчера приводил замеры - каждый HTTPS запрос добавляет 3.5КБ к полезной нагрузке - будет 1000 запросов, будет лишних 3.5 мега...
Бесплатного HTTPS не бывает. Если хочется HTTPS, всё равно будут накладные расходы.
+++ Лично я вижу в этом перст судьбы – шли по лесу и встретили программиста.
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
02.11.2024 09:00
shaos (spnet, 2) => 3S4NgNU0tRbX4POfCDJK
Вроде сделал по времени сохранения - тормозов не заметил даже на больших эхах
Ща ещё немного погоняю и выложу
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
02.11.2024 09:01
shaos (spnet, 2) => wbB8VHUNQDkBMDUdvYgi
Я считаю тупо по апачи-логам - сколько там байт написано в ответе, столько и приплюсовываю
Сегодня кстати у меня появится /u/e/lim/N/... ;)
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
02.11.2024 09:21
revoltech (spnet, 4) => absurdTQz6IRT8w3UGqO
ahamai> то есть, тебя собирается атаковать собственный аплинк.
Не аплинк. Поинт. Нет, даже не поинт, а косящий под него хрен с горы. Теперь перечитай свои же сообщения в свете полученной информации.
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
02.11.2024 09:15
ahamai (blackcat, 2) => 6v7A4CUtRPZJ2BEm2Q0f
Тока он наоборот, lim/n/u/e
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
02.11.2024 09:27
ahamai (blackcat, 2) => Hkq2kdSTBkljYBdWeMzF
Какой пойнт, если мы говорим про чистоту бандла u/e. С пойнта ты ничего не получишь по u/e
Да и пойнт тебе с u/e ничё не сделает. Он может легально с u/point спаму нагнать
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
02.11.2024 09:31
ahamai (blackcat, 2) => 8EGpBauw7RtFEUa9uNiA
Или мы про фильтрацию эх уже говорим. Не важно, я в ответе к shaos всё расписал
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
02.11.2024 09:52
shaos (spnet, 2) => qGQEO4m5fZXQXeQGxhYp
> Тока он наоборот, lim/n/u/e
Не - так не получится :)
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
02.11.2024 10:22
shaos (spnet, 2) => gE7PC4UM8hbXrSyl4Qqm
По идее можно попробовать и /lim/N/u/e/ поддержать, но через хак - оно будет смотреть если это /lim/N/u/e/ то само будет переупорядочивать в /u/e/lim/N/
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
02.11.2024 10:16
ahamai (blackcat, 2) => gE7PC4UM8hbXrSyl4Qqm
Тогда оно просто дублирует слайсы, смысл именно в том что оно впереди парохода
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
02.11.2024 10:37
shaos (spnet, 2) => 4ff64zqAPIP1QDKx5RWz
Сделал
> curl -XGET https://sprinternet.io/iii/lim/3/u/e/retro.talks/english.talks
retro.talks
yceDK3BmBJnfAZQlktjd
5B3Tra1DRJEcymDcA6Gi
XOjs0DTBN77YYkJT2drY
english.talks
Nw9ofK5x70iFMTrHzjHp
HOYW7nXXHb3HPKAFLz1w
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
02.11.2024 10:41
revoltech (spnet, 4) => 8EGpBauw7RtFEUa9uNiA
ahamai> Да и пойнт тебе с u/e ничё не сделает.
Без фильтрации айдишников — ой как сделает.
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
02.11.2024 10:52
shaos (spnet, 2) => S3ohTogFnbU1MHqau2H8
ну конечно оно в каком-то смысле дублирует слайсы :)
короче с хаком теперь работает, но только применительно к /u/e т.е. например /lim/3/list.txt у меня не пройдёт ;)
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
02.11.2024 10:53
shaos (spnet, 2) => jvipNkBAOT2DuLiwk58f
Хак:
====
elseif (($opts[0] == 'u' and $opts[1] == 'e') ||
($opts[0] == 'lim' and $opts[2] == 'u' and $opts[3] == 'e')) {
$work_options=array_slice($opts, 2);
// lim/N/u/e hack
if($opts[0] == 'lim') {
$work_options[0] = 'lim';
$work_options[1] = $opts[1];
}
====
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
02.11.2024 14:22
Andrew Lobanov (tavern,1) => 3YWnszZFvyL6TyL46fAJ
shaos> Ну вон я же вчера приводил замеры - каждый HTTPS запрос добавляет 3.5КБ к полезной нагрузке - будет 1000 запросов, будет лишних 3.5 мега...
Если в каждой эхе у нас новых сообщений от 128 до 256 штук, то для 1000 запросов, с учётом того, что запрашиваем по одной эхе, нужно запросить 125 эх. Это раз
Далеко не обязательно при адаптивном фетче запрашивать по одной эхе. Можно запрашивать все, наращивать количество, выкидывая из запроса те, где уже определились с индексом, пока не кончатся эхи для запросов. Таким образом количество запросов для получения индекса сокращается до единиц.
Бандлы по 40 сообщений... Если мы возьмём те самые 125 эх, в которых у нас по 256 новых сообщений и начнём их выкачивать такими вот бандлами, у нас всё равно будет 800 запросов, что меньше заявленного тобой ужасного числа на 20%.
В реальности такой оверхед будет только для новых узлов и разово. Дальше, при фетчинге хотя бы пару раз в день, количество запросов будет от силы несколько десятков на сессию, что меньше 10% от заявленного.
+++ Лично я вижу в этом перст судьбы – шли по лесу и встретили программиста.
--------------------------------------------------------------------------------
subject: Re: Разбор idec №2
02.11.2024 14:49
ahamai (blackcat, 2) => eTGeSY0lbmM6a5c7QFsU
> Без фильтрации айдишников — ой как сделает.
каким образом? у нас есть только два состояния - мы делим строку и получаем список эх. для каждого, что мы решили как эху:
1. у нас есть файл с такой эхой - отдаём этот файл
2. у нас нет файла с этой эхой, отдаём пустую эху
третьего не дано
--------------------------------------------------------------------------------
subject: Re: Разбор idec
06.11.2024 09:19
shaos (spnet, 2) => 7nckTeDdcGDlZdbSYITt
Исправил :)
Заодно стал убирать знаки равно
====
X
X
X
X
X
====
--------------------------------------------------------------------------------