Сообщения в Разбор idec №2

Re: Разбор idec №2

Ответ на сообщение
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
Andrew Lobanov to ahamai (2024-11-01 03:43:17) [ссылка]

Re: Разбор idec №2

Ответ на сообщение
ahamai> 1.
ahamai> > ВЕСЬ ЗАПРОС СПИСОК ЭХ
ahamai> > ПОЛУЧИЛИ СПИСКИ
ahamai> > ЕСЛИ ЕСТЬ ЛИМИТ, УСТАНОВИЛИ
ahamai> > становится
ahamai> > ПОЛУЧИЛИ СПИСОК ЭХ
ahamai> > ПРОВЕРИЛИ ПОСЛЕДНЮЮ
ahamai> > ЕСЛИ ЭТО СРЕЗ, ТО РАСПАРСИЛИ СРЕЗ
ahamai> > СОХРАНИЛИ ЛИМИТ
ahamai> > УДАЛИЛИ ПОСЛЕДНЮЮ ЭХУ
ahamai> > ПОЛУЧИЛИ СПИСКИ
ahamai> > УСТАНОВИЛИ ЛИМИТ, ЕСЛИ ЕСТЬ
Немного не так. Точнее, совсем не так. То, что ты написал — это манипуляция. «ЕСЛИ ЕСТЬ ЛИМИТ, УСТАНОВИЛИ» тоже не из одного пункта состоит, его тоже надо где-то взять и распарсить. Это раз. Два — «распарсили срез» — это одна операция. Правильнее было бы слегка иначе:

1. Получили список эх (сохранили путь, разделив его по /).
2. Взяли последнюю.
3. Если там есть двоеточие, сохранили всё до него в смещение и всё после него в лимит.
4. Удалили из списка ВСЕ невалидные имена эх (u и e тоже таковыми являются, не только слайс).
5. Выгребли списки из базы по уже установленному лимиту.

Пять шагов. Корректных.
revoltech to ahamai (2024-11-01 04:37:41) [ссылка]

Re: Разбор idec №2

Ответ на сообщение
AL> ЗЫЖ А где посмотреть на ноду на шелле.
Могу сделать хоть на busybox sh (+ busybox nc + busybox sed, возможно), но зачем? Это будет лютый тормоз. Как и связка busybox awk + busybox nc.

Если брать продвинутый шелл вроде bash или oksh, всё можно сделать непосредственно в нём, кроме самой отдачи по TCP. Я, блин, гофер-клиента на чистом баше не так давно делал (Bopher-NG), вопрос только, что это решает.
AL> А то Рома бьёт себя пяткой в грудь
Это от неосиляторства инструментов, не более. Я вот довольно быстро согласился и с 40 айдишниками вместо 380, и с контекстным парсингом /u/e вместо ключ/значение, поскольку принципиально это мало что меняет (алгоритмически тут можно всё тотально упростить, но для этого надо отказаться от обратной совместимости, иначе смысла немного). Те же вещи, на которых настаивает Рома, предложены даже не с позиции оптимизации, а с позиции «лишь бы существующий кривой код не чинить». Противно.
revoltech to Andrew Lobanov (2024-11-01 04:50:23) [ссылка]

Re: Разбор idec №2

Ответ на сообщение
Можно вопрос. На каких вещах я настаиваю. Хоть на одной. Хоть на одной единственной,? Я ВООБЩЕ НИЧЕГО НЕ ПРЕДЛАГАЮ. НИЧЕГО. НИЧЕГО. Неужели это так трудно заметить? Я только разбираю кривой дизайн idec 10 летней давности. Всё. То есть это абсолютно всё. Как можно увидеть то, чего нет вообще, мне непонятно.
ahamai to revoltech (2024-11-01 05:02:23) [ссылка]

Re: Разбор idec №2

Ответ на сообщение
У меня тогда две. Там три строки понятного прозрачного кода.
ahamai to revoltech (2024-11-01 05:03:38) [ссылка]

Re: Разбор idec №2

Ответ на сообщение
ahamai> Можно вопрос. На каких вещах я настаиваю. Хоть на одной. Хоть на одной единственной,?
На изменении формата срезов, например. Как минимум на выносе оных из /u/e.

В моём варианте реализации /u/e (из 5 пунктов) нода, которая не умеет срезы, просто их проигнорирует как невалидное имя эхи, и отдаст все сообщения из запрошенных эх. Это так сложно?
revoltech to ahamai (2024-11-01 05:07:20) [ссылка]

Re: Разбор idec №2

Ответ на сообщение
ahamai> У меня тогда две. Там три строки понятного прозрачного кода.
Ну скинь эти три строки тогда. Почему-то уверен, что всего необходимого там не будет.
revoltech to ahamai (2024-11-01 05:14:01) [ссылка]

Re: Разбор idec №2

Ответ на сообщение
> Ну скинь эти три строки тогда. Почему-то уверен, что всего необходимого там не будет.
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 и новые одинаково простые, он вообще не с той стороны смотрит. Но с другой стороны так никто и не посмотрел. Ладно. Кто как хочет, тот так и делает, жаль только обсуждение сразу ушло в совсем другую сторону. Но зато сейчас ты знаешь историю в ретроспективе, подумай об этом :) Ну или может кто ещё зайдёт и подумает.
ahamai to revoltech (2024-11-01 05:56:11) [ссылка]

Re: Разбор idec №2

Ответ на сообщение
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> Но зато сейчас ты знаешь историю в ретроспективе, подумай об этом :) Ну или может кто ещё зайдёт и подумает.
Не понимаю, чем это знание мне поможет в плане грядущей реализации своей ноды. Вот если вообще свой протокол буду пилить, то, естественно, учту ваш опыт.
revoltech to ahamai (2024-11-01 06:02:59) [ссылка]

Re: Разбор idec №2

Ответ на сообщение
> Даже не вчитываясь в on вместо in... А где здесь проверка на то, что тебе валидные имена эх подсунули? Хотя бы на наличие точки и длину от 3 до 120 символов?
я не помню, есть echo_flt в том коде, но это вообще неважно. главное, чтобы код был проще и понятнее. про валидирование и прочее это не ко мне точно, лишнего оно не запросит а на неккоректное просто упадёт. это для меня стандарт - простота превыше, поэтому ii и самодостаточна и при этом база для расширений.
> В общем, как раз то, о чём я и говорил.
Нет. это то, о чём я говорил. Последние несколько дней.
> Не понимаю, чем это знание мне поможет в плане грядущей реализации своей ноды.
оформление полиси, соглашений, стандартов и прочего - это вообще не технология. это политика. сначала политика определяет стандарты, потом стандарты технологию. так было с ii. дважды.

Блин. я специально старался писать не ответы, а новые темы, чтобы не было обсуждение деталей, а всё опять сходится к обсуждению деталей. :)
ahamai to revoltech (2024-11-01 06:10:30) [ссылка]

Re: Разбор idec №2

Ответ на сообщение
Вот чего я родил - всем сестра'м по серьга'м как говорится :)
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 и далее делать неохота ибо оно криво будет работать т.к. порядок может быть чуть разный на разных нодах...
shaos to revoltech (2024-11-01 06:19:54) [ссылка]

Re: Разбор idec №2

Ответ на сообщение
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-режиме и вообще не обязан использовать слайсы при фетчинге. Но не в голове у Ромы.

Короче, я забодался и Рома идёт лесом со своим странным нытьём. Ходить с ним кругами смысла нет, полезной нагрузки в его сообщениях нет, наезды и истерики в его сообщениях есть. Ну и нафейхоа? Пока добавил в цезий кривой и косой, но механизм твитов. Доработаю и выдам на суд общественности.
+++ Лично я вижу в этом перст судьбы – шли по лесу и встретили программиста.
Andrew Lobanov to revoltech (2024-11-01 06:24:30) [ссылка]

Re: Разбор idec №2

Ответ на сообщение
ahamai> я не помню, есть echo_flt в том коде, но это вообще неважно.
Важно. Поскольку это уже не три строчки.
ahamai> лишнего оно не запросит а на неккоректное просто упадёт.
А надо, чтобы не падало, а игнорировало такие имена.
ahamai> оформление полиси, соглашений, стандартов и прочего - это вообще не технология.
Ну дык. Без чёткого ТЗ результат всегда ХЗ.
ahamai> Я не добавил фразу "как эту задачу решают программист и непрограммист"
Непрограммисты (хотя ХЗ, что ты в это слово вкладываешь) обычно в такие вещи просто не лезут.
ahamai> я, например. не программист
Я тоже. По профессии я вообще девопс, а по образованию криптограф. Но вот почему-то приходится программистам нод очевидные вещи втолковывать.
revoltech to ahamai (2024-11-01 06:31:19) [ссылка]

Re: Разбор idec №2

Ответ на сообщение
shaos> Вот чего я родил
«...А глянешь — мамочка моя! Эт чё? О чём? А набуя?» ©
Не, прочесть-то можно (хотя да, этот код напомнил, почему я пых терпеть не могу), но вот это как раз тот уровень сложности, от которого я стараюсь держаться подальше. Могу в отдельном сабже сделать разбор сего шындевра. Но у меня в ноде такого не будет точно.
shaos> а вот от msgid и далее делать неохота ибо оно криво будет работать т.к. порядок может быть чуть разный на разных нодах...
Такого, кстати, быть не должно.
revoltech to shaos (2024-11-01 06:40:05) [ссылка]

Re: Разбор idec №2

Ответ на сообщение
> это как раз тот уровень сложности, от которого я стараюсь держаться подальше.
Это сложность по твоему? Это наоборот лёгкость и непринуждённость :)
> Такого, кстати, быть не должно.
Да запросто - например я вашу беседу у себя на ноде вижу задом наперёд - сначала твои ответы, потом сообщения на которые ты отвечаешь, а где-то наверное есть правильный порядок...
shaos to revoltech (2024-11-01 06:54:14) [ссылка]

Re: Разбор idec №2

Ответ на сообщение
revoltech> Если брать продвинутый шелл вроде bash или oksh, всё можно сделать непосредственно в нём, кроме самой отдачи по TCP. Я, блин, гофер-клиента на чистом баше не так давно делал (Bopher-NG), вопрос только, что это решает.
Отдачу сделать по CGI (читерство), а вместо nc взять /dev/tcp (фича баша)
+++ Никто не знает, как правильно. Так зачем же выдумывать правила?
doesnm to revoltech (2024-11-01 06:56:04) [ссылка]

Re: Разбор idec №2

Ответ на сообщение
>> Такого, кстати, быть не должно.
shaos> Да запросто - например я вашу беседу у себя на ноде вижу задом наперёд - сначала твои ответы, потом сообщения на которые ты отвечаешь, а где-то наверное есть правильный порядок...
Кстати у меня тоже самое. Я думал это прикол ping
+++ Никто не знает, как правильно. Так зачем же выдумывать правила?
doesnm to shaos (2024-11-01 07:03:08) [ссылка]

Re: Разбор idec №2

Ответ на сообщение
doesnm> Отдачу сделать по CGI (читерство), а вместо nc взять /dev/tcp (фича баша)
Да что ж везде одни теоретики... /dev/tcp только для клиентских соединений работает. Сервер сугубо на нём не сделаешь.
revoltech to doesnm (2024-11-01 07:13:50) [ссылка]

Re: Разбор idec №2

Ответ на сообщение
Возможно revoltech берёт сообщения Ромы прямо с blcat.ru и отвечает на них через меня, а я опрашиваю blcat.ru уже после, соответствено у меня ответы появляются раньше вопросов и затем это распространяется везде, кто берёт idec.talks с меня...
shaos to doesnm (2024-11-01 07:19:03) [ссылка]

Re: Разбор idec №2

Ответ на сообщение
doesnm>> Отдачу сделать по CGI (читерство), а вместо nc взять /dev/tcp (фича баша)
revoltech> Да что ж везде одни теоретики... /dev/tcp только для клиентских соединений работает. Сервер сугубо на нём не сделаешь.
Я же сказал что сервер по CGI
+++ Никто не знает, как правильно. Так зачем же выдумывать правила?
doesnm to revoltech (2024-11-01 07:25:19) [ссылка]

Re: Разбор idec №2

Ответ на сообщение
На http://ii.blcat.ru/idec.talks правильный порядок - значит blcat берёт сообщения с меня чаще, чеми я с него, а revoltech по-видимому читает сразу всех и часто - я просто вижу его ответы раньше т.к. он мой поинт и отвечает через меня...
shaos to shaos (2024-11-01 07:27:12) [ссылка]

Re: Разбор idec №2

Ответ на сообщение
shaos>> а вот от msgid и далее делать неохота ибо оно криво будет работать т.к. порядок может быть чуть разный на разных нодах...
revoltech> Такого, кстати, быть не должно.
Такое, кстати, является вполне штатной ситуацией. Сообщения в индексе располагаются в порядке получения нодой. Все ноды получают сообщения в разном порядке.
+++ Лично я вижу в этом перст судьбы – шли по лесу и встретили программиста.
Andrew Lobanov to revoltech (2024-11-01 07:45:04) [ссылка]

Re: Разбор idec №2

Ответ на сообщение
doesnm>> Отдачу сделать по CGI (читерство), а вместо nc взять /dev/tcp (фича баша)
revoltech> Да что ж везде одни теоретики... /dev/tcp только для клиентских соединений работает. Сервер сугубо на нём не сделаешь.
Перечитай на что отвечаешь. Серверная часть на CGI, клиентская на /dev/tcp. Как раз то, что ты пишешь, и выходит. Ну блин.
+++ Лично я вижу в этом перст судьбы – шли по лесу и встретили программиста.
Andrew Lobanov to revoltech (2024-11-01 07:51:36) [ссылка]

Re: Разбор idec №2

Ответ на сообщение
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.
revoltech to shaos (2024-11-01 07:58:49) [ссылка]

Re: Разбор idec №2

Ответ на сообщение
shaos> а revoltech по-видимому читает сразу всех и часто
Не так уж и часто. У меня фетч чисто в ручном режиме по кнопке на данный момент. Но порядок чтения уже написал.
revoltech to shaos (2024-11-01 08:02:45) [ссылка]

Re: Разбор idec №2

Ответ на сообщение
Рома, не нервничай. У меня 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 в чистом виде, но тогда и не нервничай. Дай нам двигаться своим путём.
hugeping to ahamai (2024-11-01 09:45:04) [ссылка]

Re: Разбор idec №2

Ответ на сообщение
Подумал тут ещё... Хочу добавить. Может какой-то мозговой штурм начнётся. Но это все в рамках некоторого "потенциально нового" ii-подобного протокола. idec3 :)

Адаптивный фетч тоже не 100% надёжен. Но ненадёжен по-другому. Речь о той точке алгоритма, когда мы останавливаемся. Когда видим что такое сообщение у нас есть и начинаем фетч. Это лучше чем жёсткий лимит, но всё-ещё не абсолютно надёжно.

Поэтому мне кажется, что в "идеальном" протоколе нужно выбрать что-то принципиально иное.

1) Либо полный sync если хоть что то поменялось (но тогда стоит вернуться и к перекатыванию эх, потому что в этом решении нет масштабировании при бесконечном росте эхи. Короче - это "принятие" ii)

2) Выборка, основанная на времени.

Вроде бы Рома делал такое когда-то, может ошибаюсь. Запрос вида: дай мне сообщения которые пришли с такого-то времени (время - ну пусть секунды эпохи unix в utc).

Да, тогда мы немного завязаны на время, но это вроде бы окончательно решает всё. Или нет?

Что думаете?
hugeping to hugeping (2024-11-01 14:35:41) [ссылка]

Re: Разбор idec №2

Ответ на сообщение
hugeping> Но это все в рамках некоторого "потенциально нового" ii-подобного протокола. idec3 :)
Стоило прийти в idec, как его уже хоронят :)
tuple to hugeping (2024-11-01 14:41:38) [ссылка]

Re: Разбор idec №2

Ответ на сообщение
tuple> Стоило прийти в idec, как его уже хоронят :)
Не надо вбросов! Давай по существу.

P.S. Ipv4 тоже хоронят давно, но что-то никак. :)
hugeping to tuple (2024-11-01 14:42:42) [ссылка]

Re: Разбор idec №2

Ответ на сообщение
hugeping> Что думаете?
Продолжаю рассуждать. sf=hash становится надёжной, если только мы после последнего фетча запоминаем hash последнего сообщения которое зафетчили и сохранили. Возможно, о таком режиме Рома и говорил, но я до сих пор воспринимал sf=hash совсем по другому. Так что пишу это, если вы тоже воспринимали это по другому...

Так что sf=hash так же надёжна как и время, если мы после каждого фетча успешного записываем hash последнего взятого сообщения для этой ноды.

Мне, правда, не нравится необходимость хранить эти хеши для фетчей (причём для каждой ноды), поэтому идея с временем нравится больше. Но тем не менее.
hugeping to hugeping (2024-11-01 14:50:13) [ссылка]