Сообщения в Полуневдимые эхи

Re: Полуневдимые эхи

Ответ на сообщение
hugeping> У меня нет веб сервера. Насчёт 12 сообщений, интересный вопрос. Это проверено? Я посмотрю, может быть это можно настроить в go библиотеке.
А, значит, с tgi перепутал. Пардон. Изначально тестил на обоих.
revoltech to hugeping (2024-10-25 09:46:39) [ссылка]

Re: Полуневдимые эхи

Ответ на сообщение
hugeping> Каких метаданных и почему куча соединений?
Даже если отбросить всю низкоуровневую тряхомудию с установкой TLS-соединения и проверкой сертификатов при HTTPS, каждый HTTP-запрос — это статусы, заголовки Accept, Content-Type, Content-Encoding и т.д. Тут, как ни крути, оверхед будет существенным при большом количестве мелких запросов. Поэтому тело запроса укрупнять смысл имеет в любом случае.

P.S. Да, ещё раз пардон, перепроверил — то у tgi только 12 сообщений за раз можно выгрести. У остальных 389, у тебя вообще лимит 10000 вроде хавает без проблем. Правда, spline-online не тестил, он и так еле живой сейчас.
revoltech to hugeping (2024-10-25 09:54:56) [ссылка]

Re: Полуневдимые эхи

Ответ на сообщение
revoltech> P.S. Да, ещё раз пардон, перепроверил — то у tgi только 12 сообщений за раз можно выгрести. У остальных 389, у тебя вообще лимит 10000 вроде хавает без проблем. Правда, spline-online не тестил, он и так еле живой сейчас.
Кстати, это соответствует "рекомендованному" буферу в 8к. Как раз ~380 id-шников. 12 сообщений это, конечно, маловато даже по меркам "обычного" веба.
hugeping to revoltech (2024-10-25 10:10:28) [ссылка]

Re: Полуневдимые эхи

Ответ на сообщение
Это понятно, но меня http полностью устраивает по ресурсоёмкости, распространённости везде и для всего, веб-фреймворков для него.

Ну и есть всякие плюшки типа минимальной гарантии доставки (content-len, или если что-то пошло не так, брякнулись с ошибкой и клиент понял что ошибка). Плюс опциональное gzip сжатие, существующее с лохматых годов. Правда, сейчас py3 фетчер не поддерживает gzip сжатие, py2 и ii-txt на py2 поддерживают. Сейчас глянул, у меня на сервере не включён gzip для text/plain, включил.

Это хорошо и замечательно, если будут другие транспорты. Но подразумевается, что протокол настолько простой то эти транспорты пишет тот, кто этим интересуется. Для меня простота - это возможность в несколько строк написать фетчер хоть на python, хоть на busybox, поэтому я буду поддерживать реализацию только через http. Но всегда интересно посмотреть на сторонние проекты.
ahamai to revoltech (2024-10-25 10:18:26) [ссылка]

Re: Полуневдимые эхи

Ответ на сообщение
увеличил буферы в nginx. скормил url на 89 кбайт - сожрало
ahamai to hugeping (2024-10-25 10:26:40) [ссылка]

Re: Полуневдимые эхи

Ответ на сообщение
ahamai> Ну и есть всякие плюшки типа минимальной гарантии доставки
А TCP для чего вообще создавался, если не для минимальной гарантии доставки? Зачем дублировать то же самое на уровень выше, но с обязательными метаданными?
ahamai> Для меня простота - это возможность в несколько строк написать фетчер хоть на python, хоть на busybox, поэтому я буду поддерживать реализацию только через http. Но всегда интересно посмотреть на сторонние проекты.
Мысль понял, никого не заставляю, но nc и awk имеются и в busybox (как, впрочем, и декодер base64).
revoltech to ahamai (2024-10-25 10:49:04) [ссылка]

Re: Полуневдимые эхи

Ответ на сообщение
ahamai> увеличил буферы в nginx. скормил url на 89 кбайт - сожрало
Так и оставил? Я могу быть уверенным, что выгребу 4238 сообщений за один запрос?
revoltech to ahamai (2024-10-25 10:51:32) [ссылка]

Re: Полуневдимые эхи

Ответ на сообщение
>> Для того, чтобы её не было, нужно писать дополнительный код, который по идее вообще вредный, так как удобную фишку убирает….
shaos> Ну например можно выкинуть «вообще вредный» код файлэх, который сейчас чуть ли не половину всего кода ii-php занимает :)
Можно. Но вред файлэх в чём? Вред твоей идеи понятен -- ты хочешь ограничивать своих пользователей в фичах и свободе общения.
+++ Лично я вижу в этом перст судьбы – шли по лесу и встретили программиста.
Andrew Lobanov to shaos (2024-10-25 10:58:36) [ссылка]

Re: Полуневдимые эхи

Ответ на сообщение
shaos> Надо будет фичу выпилить ;)
shaos> Объясню - по мне так должна быть возможность программно вытянуть весь контент узла любому кто не есть админ узла (причём через веб можно возможности и поурезать т.к. вебом не только люди пользуются), а со скрытыми эхами такой возможности нет.
Никуда не девается эта возможность. Скрытые эхи работают точно так же, как и те, что в list.txt.
shaos> Ну и чисто административный момент - даже если сисоп временно потерял физический доступ к узлу (уехал в отпуск) у него должна оставаться возможность видеть что там происходит пользуясь открытыми апи (напрямую либо через ботов)…
Навернуть расширение для себя было бы лучше, чем ломать удобные фичи.
+++ Лично я вижу в этом перст судьбы – шли по лесу и встретили программиста.
Andrew Lobanov to shaos (2024-10-25 10:58:55) [ссылка]

Re: Полуневдимые эхи

Ответ на сообщение
shaos>> Объясню - по мне так должна быть возможность программно вытянуть весь контент узла любому кто не есть админ узла (причём через веб можно возможности и поурезать т.к. вебом не только люди пользуются), а со скрытыми эхами такой возможности нет.
revoltech> Так, может, лучше тогда автоматизировать их добавление в list.txt, то есть сделать их НЕ скрытыми, вместо урезания полезной фичи?
Вот. Товарищ дело говорит!
+++ Лично я вижу в этом перст судьбы – шли по лесу и встретили программиста.
Andrew Lobanov to revoltech (2024-10-25 10:59:09) [ссылка]

Re: Полуневдимые эхи

Ответ на сообщение
shaos> При наличии групп эх наверное можно таки дать возможность пользователям (с высокой кармой?) создавать новые публичные эхи в группе unsorted - эдакий crowd sourcing получится, но по умолчанию такие эхи должны будут быть скрыты от веба (хоть и будут перечислены в list.txt)..,
Божечки! Уже и карма. Куда катецо федо!
+++ Лично я вижу в этом перст судьбы – шли по лесу и встретили программиста.
Andrew Lobanov to shaos (2024-10-25 10:59:15) [ссылка]

Re: Полуневдимые эхи

Ответ на сообщение
shaos> Ну это издевательство над здравым смыслом когда одной рукой вы разрешаете декларировать поддерживаемые фичи через features, а другой запрещаете эти фичи расширять…
Я ничего никому не запрещаю и не разрешаю. Просто считаю отламывание фундаментальных фич вредительством.
+++ Лично я вижу в этом перст судьбы – шли по лесу и встретили программиста.
Andrew Lobanov to shaos (2024-10-25 10:59:26) [ссылка]

Re: Полуневдимые эхи

Ответ на сообщение
shaos>> Это да :)
revoltech> Так всё-таки есть стандартный и поддерживаемый вариант, чтобы полный перефетч эхи делался не кучей мелких запросов по 12 айдишников из-за ограничений хттпшного гета на сервере, а чем-то более вменяемым? Или нет? В доках ничего, кроме GET /u/m, по этому поводу не нарыл.
Потому что только GET и есть.
+++ Лично я вижу в этом перст судьбы – шли по лесу и встретили программиста.
Andrew Lobanov to revoltech (2024-10-25 10:59:33) [ссылка]

Re: Полуневдимые эхи

Ответ на сообщение
iiii> Я не понимаю, как это работает, я не знаю как запросить последние n сообщений и я не понимаю, зачем мне запрашивать кусок эхи не до конца, а посредине. Количество сообщений я считаю ненадёжным источником, можно удалить 1 и жобавить 1 и эха вроде не изменится. , в отличие от хэша. Я вообще при делании срезов не понимаю, что входит а что не входит. Поэтому у меня на станции нет постраничного вывода :)
/u/e/idec.talks/-100:100
заберёт последние 100 сообщений.
iiii> А lim совместим со всем, хоть с ii txt 0.1, меняется только строка в конфиге.
При этом будет работать и /lim/200/u/m и /lim/200/u/point?
+++ Лично я вижу в этом перст судьбы – шли по лесу и встретили программиста.
Andrew Lobanov to iiii (2024-10-25 10:59:39) [ссылка]

Re: Полуневдимые эхи

Ответ на сообщение
я не понимаю, зачем. если что-то где-то сглючит, качать придётся всё заново. поэтому и сделали разбивку на мелкие секции, скачал/записал, скачал/записал. но попробуй, я понятия не имею.
ahamai to revoltech (2024-10-25 11:12:55) [ссылка]

Re: Полуневдимые эхи

Ответ на сообщение
hugeping>> А слайсы решают проблему больших индексов.
revoltech> Слайсы на сервере позволяют пропустить сообщения, только если действительно не гонять их каждые пять минут. А это действительно увеличит трафик и без того.
Только если узел, внезапно, пишет в середину индекса, а не только в конец.
revoltech> Мой юзкейс — зашёл утром, запустил tiifetch.tcl или нажал на кнопочку Fetch all echos в tiix, клиент докачает изменения всех эх за ночь и в течение дня дофетчиваю только новое содержимое конкретно интересующих эх, вручную жмякая на Fetch this echo при необходимости. За это время в них может собраться куда больше 100 сообщений, и в случае слайсинга ещё на серверной части до клиента они уже не дойдут никогда.
Удивительно. 9 лет у всех всё доходит, а у тебя нет. Может, надо что-то в фетчере поменять?
revoltech> Поэтому придерживаться базового протокола мне пока кажется более разумным, только вот с выгребанием по /u/m надо что-то решать. 12 айдишников на запрос — слишком мало, а многопоточность всё равно не решает проблему с кучей TCP-соединений и HTTP-метаданных.
У тебя соединения платные или что?
+++ Лично я вижу в этом перст судьбы – шли по лесу и встретили программиста.
Andrew Lobanov to revoltech (2024-10-25 11:20:45) [ссылка]

Re: Полуневдимые эхи

Ответ на сообщение
shaos> Кстати вопрос про POST в /u/m периодически поднимался, например вот тут ii://w6o5S9CleUqqm4Lgc8O9 (декабрь 2021) что так ни к чему и не привело - вот полное обсуждение:
Потому что это не решает никаких реальных проблем на самом деле. Можно, и было бы даже красиво, отказаться от HTTP, гонять всё через сокеты прямо и вот это вот всё. Отказаться от мелких пакетов и гонять сразу многомегабайтные бандлы. Добавить аватарки, карму, модераторство и бэкдоры для товарища майора. Только зачем?
+++ Лично я вижу в этом перст судьбы – шли по лесу и встретили программиста.
Andrew Lobanov to shaos (2024-10-25 11:20:45) [ссылка]

Re: Полуневдимые эхи

Ответ на сообщение
>> если IDEC уже имеет все средства как часть стандарта, то зачем для него городить кастомные гейты?..
ahamai> Без гейта ты нормально не отобразишь ничего ни на zx spectrum ни на msdos, ни на atari st. Сначала научи их utf8 :)
Тоже мне бином Ньютона, utf8 оттранслировать.
ahamai> Хочется хоть одно реальное применение слайсов, кроме "забрать последние сообщения"
Например, пагинация индекса в условиях малого объёма оперативной памяти.
+++ Лично я вижу в этом перст судьбы – шли по лесу и встретили программиста.
Andrew Lobanov to ahamai (2024-10-25 11:20:45) [ссылка]

Re: Полуневдимые эхи

Ответ на сообщение
shaos>> Кстати вопрос про POST в /u/m периодически поднимался, например вот тут ii://w6o5S9CleUqqm4Lgc8O9 (декабрь 2021) что так ни к чему и не привело - вот полное обсуждение
revoltech> И там AL написал, что POST /u/m не решает ни одной проблемы. Как же не решает, если решает? Вот вам проблема: куча лишних соединений и метаданных, т.к. владельцы станций ограничивают длину GET-запросов, либо сознательно, либо оставляя дефолт на веб-сервере. С POST запрос будет всегда одним в идеале.
Это ты уже писал. Не писал только почему это вдруг проблема.
+++ Лично я вижу в этом перст судьбы – шли по лесу и встретили программиста.
Andrew Lobanov to revoltech (2024-10-25 11:20:46) [ссылка]

Re: Полуневдимые эхи

Ответ на сообщение
ahamai>> Сегментирование запросов было введено специально.
revoltech> Чтобы создать новым поинтам затруднения с первым выкачиванием эх (а-ля блокчейн монеро)?
Новый поинт нажал кнопку "скачать" и скачал. Какие у него могут быть проблемы с первым выкачиванием эх? Или это у старлинка платное открытие нового соединения?
+++ Лично я вижу в этом перст судьбы – шли по лесу и встретили программиста.
Andrew Lobanov to revoltech (2024-10-25 11:20:53) [ссылка]

Re: Полуневдимые эхи

Ответ на сообщение
> При этом будет работать и /lim/200/u/m и /lim/200/u/point?
да, естественно, просто url сдвигается. lim, в отличие от хэшей, я использовал реально в конфигах клиентов. хотя щас у меня две ветки, 0.6 на фандейшне (активная) и 0.7 на пикнике (недоделанная), и я не перенёс эту фичу с 0.7 в 0.6, надо будет не забыть
ahamai to Andrew Lobanov (2024-10-25 11:37:07) [ссылка]

Re: Полуневдимые эхи

Ответ на сообщение
> Вот. Товарищ дело говорит!
те или иные варианты discover, типа автодобавления, вроде были всегда, у меня вроде и серверы и клиенты с такой фичей были.

но тогда, если останется автосоздание эх другими, в интерфейсе будет бардак. можно просто принять какой-нибудь протокол типа /x/discover, который будет делать элементарное os.listdir('e'), у меня сейчас так gemini-сайт работает.

с другой стороны это надо только для архиваторов, ибо у нас у каждой станции свой набор эх, и это замечательно. :)
ahamai to Andrew Lobanov (2024-10-25 11:40:29) [ссылка]

Re: Полуневдимые эхи

Ответ на сообщение
AL> Удивительно. 9 лет у всех всё доходит, а у тебя нет. Может, надо что-то в фетчере поменять?
Наверное, мы о разных вещах говорим.

1. Фетчер по server-side слайсу качает 100 последних сообщений вечером.
2. За ночь в эхе появляется 103 сообщения.
3. Фетчер по server-side слайсу качает 100 последних сообщений утром.

Вопрос знатокам: увидит ли клиент те несчастные три сообщения?
AL> У тебя соединения платные или что?
У меня идеология не тратить вычислительные ресурсы там, где их можно не тратить. Пермакомпьютинг так называемый.
revoltech to Andrew Lobanov (2024-10-25 11:46:14) [ссылка]

Re: Полуневдимые эхи

Ответ на сообщение
revoltech> 1. Фетчер по server-side слайсу качает 100 последних сообщений вечером.
revoltech> 2. За ночь в эхе появляется 103 сообщения.
revoltech> 3. Фетчер по server-side слайсу качает 100 последних сообщений утром.
revoltech> Вопрос знатокам: увидит ли клиент те несчастные три сообщения?
Я тебе советовал посмотреть как написан фетчер в ii-go. У тебя есть своё понимание, но оно не соответствует тому, как работает адаптивный фетч. Сил объяснять у меня нет. Скажу только, что забор индексов идёт "бинарно" (по одному id) начиная с 1 (2, 4, 8, 16, ...) пока не обнаружим те сообщения, которых у нас нет и тогда мы их все забираем. Ну или если мы дошли до какого-то лимита-ограничения, тогда переходим к старой схеме - забрать все.
hugeping to revoltech (2024-10-25 11:55:11) [ссылка]

Re: Полуневдимые эхи

Ответ на сообщение
AL> Только если узел, внезапно, пишет в середину индекса, а не только в конец.
В общем, я понял, какой алгоритм до меня пытаются донести:

1. Делаем GET /x/features, чтобы проверить на предмет x/c и u/e. Если они имеются, то выполняем следующие пункты, если нет, скачиваем все айдишники через GET /u/e/имя.эхи и слайсим только на клиенте.
2. Делаем GET /x/c/имя.эхи, чтобы сравнить количество сообщений с локальным. Пишем разницу между полученным и локальным в diff.
3. Потом делаем GET /u/e/имя.эхи/-diff:diff и получаем список новых айдишников.

Так, что ли?
revoltech to Andrew Lobanov (2024-10-25 12:13:54) [ссылка]

Re: Полуневдимые эхи

Ответ на сообщение
Капец там запросов, оверхед.

x/features вообще должна кешироваться, сервер не меняет серверное по каждый день, чтобы это постоянно запрашивать

2 и 3 вообще должны быть одним запросом, типа дай мне сообщения, начинающиеся с такого-то.
ahamai to revoltech (2024-10-25 12:28:21) [ссылка]

Re: Полуневдимые эхи

Ответ на сообщение
AL>> Только если узел, внезапно, пишет в середину индекса, а не только в конец.
revoltech> В общем, я понял, какой алгоритм до меня пытаются донести:
Алгоритм ii-go:

1) если есть поддержка слайсов то используем её. иначе - полный синк
2) n = 1
3) берем /u/e/эха/-n:1
4) это сообщение есть в базе? да - не нужен синк (goto 7)
5) n = n * 2
6) идём на 3
7) забираем сообщения от -n:n

Возможны гонки, например когда сообщение успеет добавиться (в конец) пока мы забираем текущее. Но на следующем fetch мы должны будем это заметить.
hugeping to revoltech (2024-10-25 12:53:31) [ссылка]

Re: Полуневдимые эхи

Ответ на сообщение
Зачем столько запросов? Это и лишняя нагрузка на сервер, и лишний трафик (хедеры, все дела). Почему не делать шаги типа 1, 16, ещё чёнить, всё, то есть более частые юзкейсы. или даже сразу начинать с 16. запрос вообще вещь дорогая, и их лучше минимизировать
ahamai to hugeping (2024-10-25 12:59:28) [ссылка]

Re: Полуневдимые эхи

Ответ на сообщение
hugeping> 2) n = 1
Да, только вот этот шаг настраивается. То-есть там не 1 в реальности, а параметр limit. У меня это что то-вроде 15.
hugeping to hugeping (2024-10-25 13:00:55) [ссылка]

Re: Полуневдимые эхи

Ответ на сообщение
hugeping> Алгоритм ii-go:
hugeping>
hugeping> 1) если есть поддержка слайсов то используем её. иначе - полный синк
hugeping> 2) n = 1
hugeping> 3) берем /u/e/эха/-n:1
hugeping> 4) это сообщение есть в базе? да - не нужен синк (goto 7)
hugeping> 5) n = n * 2
hugeping> 6) идём на 3
hugeping> 7) забираем сообщения от -n:n
А зачем так сложно? Если нода умеет слайсы, то она, по идее, умеет и /x/c, который неубываемый. Тогда мы, сравнивая с количеством уже скачанных локально сообщений, знаем, сколько надо ещё запросить.
revoltech to hugeping (2024-10-25 13:26:43) [ссылка]