[#]
Разбор idec №2
ahamai(blackcat, 2) — All
2024-10-31 19:18:59
Во-первых, изначально у меня была ошибка, ?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 при этом своей актуальности не утратили.
[#]
Re: Разбор idec №2
revoltech(spnet, 4) — ahamai
2024-10-31 19:39:32
Уважаемый, я вот вроде тебя и понимаю, и не понимаю одновременно. Например, я пришёл сюда совсем недавно. Старую ii-документацию в этих ваших интернетах уже не сыскать, все старые сайты протухли. Откуда мне было знать про «эмпирическим путём найденный» лимит в 40 мессаг, про /z/get и прочие босфоры?
ahamai> И уж если планируются расширения, совершенно точно не надо вешать какие-то костыли, чтобы вопрос "а как задать срез для каждой эхи" не имел ответа.
Здесь согласен.
ahamai> Про key/value. У босфора был такой интерфейс, /bb/key1/value1/key2/value2. Это было удобно сначала парсить в словарик, а потом с этим словариком работать, минимумом кода достигались красивые вещи, можно было делать разные запросы. Если что-то расширяешь, нужно сразу делать формат, который можно расширять, но который при этом фалбакается, если расширение не поддерживается. Зачем нагромождение ненужных сущностей, которые потом надо ещё прописывать? Когда можно сделать единый урл, единый словарик, а любой фильтр прописывать ровно одной строкой кода, и те системы, которые его не поддерживают, просто не будут по этому критерию фильтровать.
И здесь согласен.
ahamai> и что самое ужасное, при этом изменяя поведение базовых.
А здесь не согласен. Здесь прав товарищ AL, который говорит, что поведение остаётся прежним, нужно только подкорректировать логику парсера. Ну, типа, старые /u/e никуда не деваются, нужно только посмотреть, есть ли двоеточие в последнем элементе и привет.
Другое дело, что логику парсера можно было бы упростить в разы, приняв концепцию железобетонной структуры key/value/key/value/..., но уже имеем то, что имеем.
[#]
Re: Разбор idec №2
ahamai(blackcat, 2) — revoltech
2024-10-31 20:01:31
> А здесь не согласен. Здесь прав товарищ AL, который говорит, что поведение остаётся прежним, нужно только подкорректировать логику парсера. Ну, типа, старые /u/e никуда не деваются, нужно только посмотреть, есть ли двоеточие в последнем элементе и привет.
это полностью ломает единость формата. /u/e должна быть везде, и должна реализовываться в 3 строках. у неё не должно быть расхождений, не надо в /u/e добавлять парсеры, /u/e должна быть единой и быть везде. все остальные расширения - отдельно.
[#]
Re: Разбор idec №2
revoltech(spnet, 4) — ahamai
2024-10-31 20:11:59
ahamai> это полностью ломает единость формата. /u/e должна быть везде, и должна реализовываться в 3 строках.
Так она и реализуется в 3-5 строках, если нормальные ЯП юзать. И поведение от запроса со слайсом на ноду, которая слайсы не реализует, меняться не будет: этот последний компонент просто не является валидным именем эхи. Нода, которая не умеет слайсить, должна его просто отбросить. Если она так не делает, чини реализацию.
[#]
Re: Разбор idec №2
shaos(spnet, 2) — ahamai
2024-10-31 20:21:12
> Во-первых, изначально у меня была ошибка, ?sf не прозрачна, её нельзя добавить вообще везде. Потому что есть php-ноды, и там должно быть &.
Ну я ведь у себя поддержал list.txt?h=1 :)
Просто парсить надо будет вручную
[#]
Re: Разбор idec №2
shaos(spnet, 2) — ahamai
2024-10-31 20:30:19
Ну расширенный слайсами /u/e существует уже тоже 10 лет и поддержан кучей клиентов и серверных реализаций - так что проще добавить одну проверку в blcat.ru дабы исключить падучесть и далее сосуществовать в мире и согласии :)
[#]
Re: Разбор idec №2
ahamai(blackcat, 2) — revoltech
2024-10-31 20:32:27
> Так она и реализуется в 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 ломая его единство - этот протокол уже определён, зафиксирован, и будет просто средством фалбака, максимально примитивным и рабочим средством, позволяющим общаться всему со всем. ему не нужны версии, он и так в идеальной стадии.. был
[#]
Re: Разбор idec №2
ahamai(blackcat, 2) — shaos
2024-10-31 20:36:39
> Просто парсить надо будет вручную
это не есть прозрачная замена. прозрачная замена, это когда ты в любом клиенте просто прописываешь этот url вместо нужного, и ровно ничего не меняется кроме того случая, когда фильтр срабатывает, независимо от того, знает ли нода что-то или нет. если добавлять везде ?sf, то нода с запросом ?q=, ничего не знающая о ?sf, на запросе брякнется
вот /lim/ совместима с любыми существующими клиентами, просто меняешь url в конфиге и всё.
[#]
Re: Разбор idec №2
ahamai(blackcat, 2) — shaos
2024-10-31 20:41:10
Я вообще не про это. Я про то, что не надо было трогать протокол, который для трогания совсем не предназначался. В чём проблема была вместо проверки x/feautures всяких просто использовать новый, а при отказе - фэлбекаться? Ну самый же очевидный дизайн. Зачем там, где всё было предельно просто, зачем-то совершенно ненужно это усложнять?
[#]
Re: Разбор idec №2
shaos(spnet, 2) — ahamai
2024-10-31 21:05:17
> тут нет никаких "что-то ещё", либо эха либо msgid.
… либо мусор
Если нет проверки на то, что тебе не подсунули мусор, то это неработоспособное решение - как POC для запуска в песочнице для ограниченного круга лиц - годится, а для реальных применений в массах - нет…
[#]
Re: Разбор idec №2
ahamai(blackcat, 2) — shaos
2024-10-31 21:31:49
> Если нет проверки на то, что тебе не подсунули мусор, то это неработоспособное решение - как POC для запуска в песочнице для ограниченного круга лиц - годится, а для реальных применений в массах - нет…
ЕСЛИ МУСОР - ПАДАЙ. Не надо разбирать мусор. Топология сети такая, итить. Ты качаешь с доверенных узлов по предварительной договорённости. Формат бандла определён. Если оттуда летит мусор, то это уже красный код, не надо с него качать и не надо ничего разбирать, надо снимать с фетча.
Какое, итить, неработоспособное решение, если оно работает. Сколько раз повторять, что /u/e/ это базовый фалбак и он должен быть простым и легко воспроизводимым, нигде не должно быть проверки в коде и в стандарте. Как работает твой конкретный фетчер, по барабану. Есть базовая реализация, эталонная. И она должна быть максимально простая. И она должна быть одна.
Это базовый вопрос - НАХРЕНА ВЫ ЛЕЗЕТЕ В /U/E, ЕСЛИ ВЫ ТУПО ДАЖЕ НЕ ПОНИМАЕТЕ, ЧТО ЭТО И ЗАЧЕМ ЭТО НУЖНО???
ну я читаю такую ахинею
> Если нет проверки на то, что тебе не подсунули мусор, то это неработоспособное решение
и вижу люди тупо не понимают, о чём это вообще.
> а для реальных применений в массах - нет…
для каких млять применений в каких млять массах. ii это реализация строго конкретной задачи. основным критерием этой задачи является максимальная простота. НИКТО, НИКТО МЛяТЬ В ЦЕЛОМ СВЕТЕ НЕ МЕШАЕТ ТЕБЕ НАВЕШИВАТЬ СВОИ НАВОРОТЫ. Ну оставь ты млять в покое /u/e, это лингва франка, это база, это долгими бессонными ночами вытачивалось, чтобы удалить всё лишнее и оставить только базу, из которой можно свинтить что угодно, хоть босфор, хоть улисс - и никто при этом не трогал /u/e. Когда человечество вымрет и останутся только ветки и палки, чтобы можно было быстро собрать /u/e, как базовый компонент. И ПОЭТОМУ ОН МЛЯТЬ ДОЛЖЕН БЫТЬ ОФОРМЛЕН, ПРОСТ И ОДНОЗНАЧЕН, чтобы любая макака могла написать его реализацию. Любая. На любом языке. С любым млять навыком. Не мусор собирала.
И это млять не POC. Это и есть млять сама концепция сети. Нахрена переписывать базовый класс, наследуйся от него и потом пиши, как хочешь. А основные 4 стержня, которые работают в любых, любых млять условиях, они для того и сделаны такими простыми чтобы быть такими простыми. Без проверок, х..рок и прочей хрени. Обмен между нодами регламентируется ТОЛЬКО самими нодами. Могут хоть через git обмениваться и индексы по timestamp генерировать, это изначально была валидная версия обмена. Но помимо этого должна быть база, которая должна работать ВСЕГДА, ВЕЗДЕ, она должна быть МАКСИМАЛЬНО ПРОСТОЙ и МАКСИМАЛЬНО ВОСПРОИЗВОДИМОЙ. Поверх этого уже какие хошь расширения, это вообще пофиг, лишь бы клиент и сервер поддерживали. Но когда есть два стандарта на работу /u/e (один мой, другой неправильный (ц)) - это уже маразм.
Я смотрел старую переписку и кто какие фишки предлагал. Это могло быть перетряханием стандартов, какой из них стандартнее, уже тогда. Но я волевым решением отправил всех в лес и зафиксировал самую базовую базу, которая могла быть. Поэтому это всё и работает, поэтому и не было обсуждений стандартов а просто всё работало, а простота рекламировала эту технологию саму за себя. А потом /u/e взяли и изнасиловали.
[#]
Re: Разбор idec №2
ahamai(blackcat, 2) — ahamai
2024-10-31 21:36:53
Многие проблемы решаются кодом, а ещё большие её отсутствием. Плохой дизайн нельзя исправить кодом, или стандартами. Как пример это e-mail/smtp.
[#]
Re: Разбор idec №2
ahamai(blackcat, 2) — shaos
2024-10-31 21:48:06
и да, если ты делаешь расширяемый формат, то делай его РАСШИРЯЕМЫМ. потому что кроме x:y это расширение не умеет, и добавить туда, не делая очередные псевдозаменители эх. Типа /эха/x;y/эха/x:y
bosfor имел полноценное key/value api, и при простой внутренней структуре позволял делать крутые вещи, типа выборок "дай мне сообщение с такого-то таймстампа по такой-то таймстамп", хоть в конкретных эхах, хоть во всех, хоть с выборкой по юзеру. и при этом был в обе стороны полностью совместим с ii. можно было просто сделать api, и там кто хочет в серверах, кто хочет в клиентах, использует хоть выборку по сообщениям, хоть выборку по msgid, а клиент/фетчер уже схемой в конфиге указывает, что и где он берёт. отсутствие нужного фильтра просто не фильтрует по этому параметру. у босфора просто ни одного клиента не было, чтобы это где-то использовать :) но когда люди сами пишут клиентов - это самая разумная схема. нет, надо наделать проверок в клиенте, проверок в сервере, чтобы хакнуть /u/e, и теперь у нас два /u/e
[#]
Re: Разбор idec №2
ahamai(blackcat, 2) — ahamai
2024-10-31 21:54:11
/u/e и /u/m захаркожены в урлах именно потому что они топорные, примитивные и неизменяемые. у босфора был свой неймспейс /bb, который решал все задачи и слайсов, и ...яйсов. делай выборку так, как тебе хочется, делай проверку так, как тебе хочется. кода каждая проверка занимала примерно одну-две строчки. Поэтому любое расширение добавить дело было пары минут. И это расширение даже не надо делать мейнстримным, это может быть расширение, которое служит чисто для удобство обмена двух нод (как твой /h/x). И вообще ничего нигде не ломает и не хачит by design. Единый урл, который собирает все key/value в словарик, примерно как тэги в первой строке каждого ii сообщения типа repto, которые тоже позволяют развивать формат, добавляя свои тэги, которые не понимающие их станции игнорят (см. elp, там были тэги topicid и tags, и elp тоже отлично гейтовался в ii)
[#]
Re: Разбор idec №2
ahamai(blackcat, 2) — ahamai
2024-10-31 22:00:53
кстати, я нашёл в инете сырцы bosfor. поменять размер msgid с 11 до 20 и добавить обязательные точки в эхах - и будет вообще полноценная прозрачная замена, полностью совместимая с ii и при этом обладающая развитым api
[#]
Re: Разбор idec №2
shaos(spnet, 2) — ahamai
2024-10-31 22:30:11
> Ты качаешь с доверенных узлов по предварительной договорённости.
Каких нахрен доверенных узлов? Оно всё в интернет торчит голыми жопами - кто-то напишет сырой клиент который при переполнении чего-нибудь где-нибудь зашлет тебе дамп своей памяти вместо корректного запроса и чо?
[#]
Re: Разбор idec №2
shaos(spnet, 2) — ahamai
2024-10-31 22:40:08
> которые не понимающие их станции игнорят
А вдруг не игнорят? Там ведь может быть только либо ii/ok, либо repto/msgid если там не ii/ok то это должно быть repto - где написано что там может быть мусор? :)
[#]
Re: Разбор idec №2
ahamai(blackcat, 2) — shaos
2024-10-31 22:35:52
> Каких нахрен доверенных узлов?
таких же как в фидо
> Оно всё в интернет торчит голыми жопами - кто-то напишет сырой клиент который при переполнении чего-нибудь где-нибудь зашлет тебе дамп своей памяти вместо корректного запроса и чо?
это некорректный url. он на этапе сервера отвалится. если url похож на корректный, то ты должен сформировать бандл. если хоть одна малейшая ошибка - ты падаешь. это очевидно. ты не должен пытаться анализировать некорректные данные, если узел, с которого ты фетчишь даёт некорректные данные, это 100% проблема этого узла. всё. зачем анализировать некорректные данные?
[#]
Re: Разбор idec №2
ahamai(blackcat, 2) — shaos
2024-10-31 22:57:59
> А вдруг не игнорят? Там ведь может быть только либо ii/ok, либо repto/msgid если там не ii/ok то это должно быть repto - где написано что там может быть мусор? :)
парсинг сообщения это вообще другая тема, с запросом сообщений не связанная
а вообще, ii/ok там только для того, чтобы в любом случае не было пустой строки, которая где-нибудь может отфильтроваться.
[#]
Re: Разбор idec №2
shaos(spnet, 2) — ahamai
2024-10-31 23:15:22
если бы создатели сетевых протоколов всецело доверяли друг другу, то интернет бы давно умер…
[#]
Re: Разбор idec №2
ahamai(blackcat, 2) — shaos
2024-10-31 23:34:40
> если бы создатели сетевых протоколов всецело доверяли друг другу, то интернет бы давно умер…
если бы все протоколы были одинаковые, они были бы не нужны, достаточно было бы одного
ps. в чём понятие "получил кривые данные - падай" является доверием?? как раз доверием является "ну у нас тут мусор, но мы попытаемся его как-то разобрать, вдруг там эха". нет, бандл должен быть валидным, иначе это не бандл. всё. все вопросы к ноду, выдающему невалидные данные, ты не обязан их пропускать
[#]
Re: Разбор idec №2
shaos(spnet, 2) — ahamai
2024-11-01 00:05:45
> http://ii.blcat.ru/lim/100/list.txt
А это не изнасилование запроса /list.txt? ;)
[#]
Re: Разбор idec №2
ahamai(blackcat, 2) — shaos
2024-11-01 00:19:52
это простая смена эндпоинта:
где было прописано
http://ii.blcat.ru/u/, будет написано
http://ii.blcat.ru/lim/100/u/
какая разница где эндпоинт задан? он всё равно записан в конфиге, и туда можно написать как первую строку, так и вторую. с запросом ровно ничего не делается, он ровно такой же. /list.txt, только эндпоинт другой
[#]
Re: Разбор idec №2
ahamai(blackcat, 2) — ahamai
2024-11-01 00:29:45
и работает он точно так же, и выдаёт то, что ожидается. он просто не знает, что живёт в виртуальном окружении, где всё по 100, и все эхи держат только 100 последних сообщений.
[#]
Re: Разбор idec №2
Andrew Lobanov(tavern,1) — ahamai
2024-11-01 03:43:16
>> А здесь не согласен. Здесь прав товарищ AL, который говорит, что поведение остаётся прежним, нужно только подкорректировать логику парсера. Ну, типа, старые /u/e никуда не деваются, нужно только посмотреть, есть ли двоеточие в последнем элементе и привет.
ahamai> это полностью ломает единость формата. /u/e должна быть везде, и должна реализовываться в 3 строках. у неё не должно быть расхождений, не надо в /u/e добавлять парсеры, /u/e должна быть единой и быть везде. все остальные расширения - отдельно.
В рамках idec она везде. То, что ты не соблюдаешь стандарт - исключительно твоя проблема.
[#]
Re: Разбор idec №2
Andrew Lobanov(tavern,1) — ahamai
2024-11-01 03:43:16
ahamai> вот /lim/ совместима с любыми существующими клиентами, просто меняешь url в конфиге и всё.
Праада она не решает задач слайсов. И делает адаптивный фетчинг удобным. Зато в отдельном неймспейсе ага.
[#]
Re: Разбор idec №2
Andrew Lobanov(tavern,1) — ahamai
2024-11-01 03:43:16
ahamai> Я вообще не про это. Я про то, что не надо было трогать протокол, который для трогания совсем не предназначался. В чём проблема была вместо проверки x/feautures всяких просто использовать новый, а при отказе - фэлбекаться? Ну самый же очевидный дизайн. Зачем там, где всё было предельно просто, зачем-то совершенно ненужно это усложнять?
Будь последовательным. Твой ii никто не трогает. Просто на его основе сделали нечто другое. Всё строго по твоим заветам из 2014-го. А то сперва ты говоришь одно, потом приходишь и вдруг оказывается, что то, что ты говорил, не имеет значения. Почему тогда то, что ты говоришь сейчас, вдруг должно иметь значение? Завтра ты опять переобуешься и снова будешь делать вид, что ты не говорил того, что говоришь сегодня.
[#]
Re: Разбор idec №2
Andrew Lobanov(tavern,1) — shaos
2024-11-01 03:43:17
>> тут нет никаких "что-то ещё", либо эха либо msgid.
shaos> … либо мусор
shaos> Если нет проверки на то, что тебе не подсунули мусор, то это неработоспособное решение - как POC для запуска в песочнице для ограниченного круга лиц - годится, а для реальных применений в массах - нет…
Очень правильные слова.
ЗЫЖ А где посмотреть на ноду на шелле. А то Рома бьёт себя пяткой в грудь, а ноду на шелле не видать.
[#]
Re: Разбор idec №2
Andrew Lobanov(tavern,1) — ahamai
2024-11-01 03:43:17
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 взяли и изнасиловали.
Ты сделал слишком много ошибок в словосочетании "довели до ума мёртворождённое недоразумение".
[#]
Re: Разбор idec №2
revoltech(spnet, 4) — ahamai
2024-11-01 04:37:41
ahamai> 1.
ahamai> > ВЕСЬ ЗАПРОС СПИСОК ЭХ
ahamai> > ПОЛУЧИЛИ СПИСКИ
ahamai> > ЕСЛИ ЕСТЬ ЛИМИТ, УСТАНОВИЛИ
ahamai> > становится
ahamai> > ПОЛУЧИЛИ СПИСОК ЭХ
ahamai> > ПРОВЕРИЛИ ПОСЛЕДНЮЮ
ahamai> > ЕСЛИ ЭТО СРЕЗ, ТО РАСПАРСИЛИ СРЕЗ
ahamai> > СОХРАНИЛИ ЛИМИТ
ahamai> > УДАЛИЛИ ПОСЛЕДНЮЮ ЭХУ
ahamai> > ПОЛУЧИЛИ СПИСКИ
ahamai> > УСТАНОВИЛИ ЛИМИТ, ЕСЛИ ЕСТЬ
Немного не так. Точнее, совсем не так. То, что ты написал — это манипуляция. «ЕСЛИ ЕСТЬ ЛИМИТ, УСТАНОВИЛИ» тоже не из одного пункта состоит, его тоже надо где-то взять и распарсить. Это раз. Два — «распарсили срез» — это одна операция. Правильнее было бы слегка иначе:
1. Получили список эх (сохранили путь, разделив его по /).
2. Взяли последнюю.
3. Если там есть двоеточие, сохранили всё до него в смещение и всё после него в лимит.
4. Удалили из списка ВСЕ невалидные имена эх (u и e тоже таковыми являются, не только слайс).
5. Выгребли списки из базы по уже установленному лимиту.
Пять шагов. Корректных.
[#]
Re: Разбор idec №2
revoltech(spnet, 4) — Andrew Lobanov
2024-11-01 04:50:23
AL> ЗЫЖ А где посмотреть на ноду на шелле.
Могу сделать хоть на busybox sh (+ busybox nc + busybox sed, возможно), но зачем? Это будет лютый тормоз. Как и связка busybox awk + busybox nc.
Если брать продвинутый шелл вроде bash или oksh, всё можно сделать непосредственно в нём, кроме самой отдачи по TCP. Я, блин, гофер-клиента на чистом баше не так давно делал (Bopher-NG), вопрос только, что это решает.
AL> А то Рома бьёт себя пяткой в грудь
Это от неосиляторства инструментов, не более. Я вот довольно быстро согласился и с 40 айдишниками вместо 380, и с контекстным парсингом /u/e вместо ключ/значение, поскольку принципиально это мало что меняет (алгоритмически тут можно всё тотально упростить, но для этого надо отказаться от обратной совместимости, иначе смысла немного). Те же вещи, на которых настаивает Рома, предложены даже не с позиции оптимизации, а с позиции «лишь бы существующий кривой код не чинить». Противно.
[#]
Re: Разбор idec №2
ahamai(blackcat, 2) — revoltech
2024-11-01 05:02:23
Можно вопрос. На каких вещах я настаиваю. Хоть на одной. Хоть на одной единственной,? Я ВООБЩЕ НИЧЕГО НЕ ПРЕДЛАГАЮ. НИЧЕГО. НИЧЕГО. Неужели это так трудно заметить? Я только разбираю кривой дизайн idec 10 летней давности. Всё. То есть это абсолютно всё. Как можно увидеть то, чего нет вообще, мне непонятно.
[#]
Re: Разбор idec №2
revoltech(spnet, 4) — ahamai
2024-11-01 05:07:20
ahamai> Можно вопрос. На каких вещах я настаиваю. Хоть на одной. Хоть на одной единственной,?
На изменении формата срезов, например. Как минимум на выносе оных из /u/e.
В моём варианте реализации /u/e (из 5 пунктов) нода, которая не умеет срезы, просто их проигнорирует как невалидное имя эхи, и отдаст все сообщения из запрошенных эх. Это так сложно?
[#]
Re: Разбор idec №2
revoltech(spnet, 4) — ahamai
2024-11-01 05:14:01
ahamai> У меня тогда две. Там три строки понятного прозрачного кода.
Ну скинь эти три строки тогда. Почему-то уверен, что всего необходимого там не будет.
[#]
Re: Разбор idec №2
revoltech(spnet, 4) — ahamai
2024-11-01 06:02:59
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> Но зато сейчас ты знаешь историю в ретроспективе, подумай об этом :) Ну или может кто ещё зайдёт и подумает.
Не понимаю, чем это знание мне поможет в плане грядущей реализации своей ноды. Вот если вообще свой протокол буду пилить, то, естественно, учту ваш опыт.
[#]
Re: Разбор idec №2
ahamai(blackcat, 2) — revoltech
2024-11-01 05:56:11
> Ну скинь эти три строки тогда. Почему-то уверен, что всего необходимого там не будет.
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 и новые одинаково простые, он вообще не с той стороны смотрит. Но с другой стороны так никто и не посмотрел. Ладно. Кто как хочет, тот так и делает, жаль только обсуждение сразу ушло в совсем другую сторону. Но зато сейчас ты знаешь историю в ретроспективе, подумай об этом :) Ну или может кто ещё зайдёт и подумает.
[#]
Re: Разбор idec №2
Andrew Lobanov(tavern,1) — revoltech
2024-11-01 06:24:30
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-режиме и вообще не обязан использовать слайсы при фетчинге. Но не в голове у Ромы.
Короче, я забодался и Рома идёт лесом со своим странным нытьём. Ходить с ним кругами смысла нет, полезной нагрузки в его сообщениях нет, наезды и истерики в его сообщениях есть. Ну и нафейхоа? Пока добавил в цезий кривой и косой, но механизм твитов. Доработаю и выдам на суд общественности.
[#]
Re: Разбор idec №2
shaos(spnet, 2) — revoltech
2024-11-01 06:19:54
Вот чего я родил - всем сестра'м по серьга'м как говорится :)
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 и далее делать неохота ибо оно криво будет работать т.к. порядок может быть чуть разный на разных нодах...
[#]
Re: Разбор idec №2
revoltech(spnet, 4) — ahamai
2024-11-01 06:31:19
ahamai> я не помню, есть echo_flt в том коде, но это вообще неважно.
Важно. Поскольку это уже не три строчки.
ahamai> лишнего оно не запросит а на неккоректное просто упадёт.
А надо, чтобы не падало, а игнорировало такие имена.
ahamai> оформление полиси, соглашений, стандартов и прочего - это вообще не технология.
Ну дык. Без чёткого ТЗ результат всегда ХЗ.
ahamai> Я не добавил фразу "как эту задачу решают программист и непрограммист"
Непрограммисты (хотя ХЗ, что ты в это слово вкладываешь) обычно в такие вещи просто не лезут.
ahamai> я, например. не программист
Я тоже. По профессии я вообще девопс, а по образованию криптограф. Но вот почему-то приходится программистам нод очевидные вещи втолковывать.
[#]
Re: Разбор idec №2
ahamai(blackcat, 2) — revoltech
2024-11-01 06:10:30
> Даже не вчитываясь в on вместо in... А где здесь проверка на то, что тебе валидные имена эх подсунули? Хотя бы на наличие точки и длину от 3 до 120 символов?
я не помню, есть echo_flt в том коде, но это вообще неважно. главное, чтобы код был проще и понятнее. про валидирование и прочее это не ко мне точно, лишнего оно не запросит а на неккоректное просто упадёт. это для меня стандарт - простота превыше, поэтому ii и самодостаточна и при этом база для расширений.
> В общем, как раз то, о чём я и говорил.
Нет. это то, о чём я говорил. Последние несколько дней.
> Не понимаю, чем это знание мне поможет в плане грядущей реализации своей ноды.
оформление полиси, соглашений, стандартов и прочего - это вообще не технология. это политика. сначала политика определяет стандарты, потом стандарты технологию. так было с ii. дважды.
Блин. я специально старался писать не ответы, а новые темы, чтобы не было обсуждение деталей, а всё опять сходится к обсуждению деталей. :)
[#]
Re: Разбор idec №2
revoltech(spnet, 4) — shaos
2024-11-01 06:40:05
shaos> Вот чего я родил
«...А глянешь — мамочка моя! Эт чё? О чём? А набуя?» ©
Не, прочесть-то можно (хотя да, этот код напомнил, почему я пых терпеть не могу), но вот это как раз тот уровень сложности, от которого я стараюсь держаться подальше. Могу в отдельном сабже сделать разбор сего шындевра. Но у меня в ноде такого не будет точно.
shaos> а вот от msgid и далее делать неохота ибо оно криво будет работать т.к. порядок может быть чуть разный на разных нодах...
Такого, кстати, быть не должно.
[#]
Re: Разбор idec №2
doesnm(ping,55) — revoltech
2024-11-01 06:56:04
revoltech> Если брать продвинутый шелл вроде bash или oksh, всё можно сделать непосредственно в нём, кроме самой отдачи по TCP. Я, блин, гофер-клиента на чистом баше не так давно делал (Bopher-NG), вопрос только, что это решает.
Отдачу сделать по CGI (читерство), а вместо nc взять /dev/tcp (фича баша)
[#]
Re: Разбор idec №2
shaos(spnet, 2) — revoltech
2024-11-01 06:54:14
> это как раз тот уровень сложности, от которого я стараюсь держаться подальше.
Это сложность по твоему? Это наоборот лёгкость и непринуждённость :)
> Такого, кстати, быть не должно.
Да запросто - например я вашу беседу у себя на ноде вижу задом наперёд - сначала твои ответы, потом сообщения на которые ты отвечаешь, а где-то наверное есть правильный порядок...
[#]
Re: Разбор idec №2
doesnm(ping,55) — shaos
2024-11-01 07:03:08
>> Такого, кстати, быть не должно.
shaos> Да запросто - например я вашу беседу у себя на ноде вижу задом наперёд - сначала твои ответы, потом сообщения на которые ты отвечаешь, а где-то наверное есть правильный порядок...
Кстати у меня тоже самое. Я думал это прикол ping
[#]
Re: Разбор idec №2
revoltech(spnet, 4) — doesnm
2024-11-01 07:13:50
doesnm> Отдачу сделать по CGI (читерство), а вместо nc взять /dev/tcp (фича баша)
Да что ж везде одни теоретики... /dev/tcp только для клиентских соединений работает. Сервер сугубо на нём не сделаешь.
[#]
Re: Разбор idec №2
doesnm(ping,55) — revoltech
2024-11-01 07:25:19
doesnm>> Отдачу сделать по CGI (читерство), а вместо nc взять /dev/tcp (фича баша)
revoltech> Да что ж везде одни теоретики... /dev/tcp только для клиентских соединений работает. Сервер сугубо на нём не сделаешь.
Я же сказал что сервер по CGI
[#]
Re: Разбор idec №2
shaos(spnet, 2) — doesnm
2024-11-01 07:19:03
Возможно revoltech берёт сообщения Ромы прямо с blcat.ru и отвечает на них через меня, а я опрашиваю blcat.ru уже после, соответствено у меня ответы появляются раньше вопросов и затем это распространяется везде, кто берёт idec.talks с меня...