[#]
Срез
ahamai(blackcat, 2) — All
2024-10-30 06:56:08
А какой вообще формат срезов: /u/m/эха/срез/эха/срез или как?
[#]
Re: Срез
revoltech(spnet, 4) — ahamai
2024-10-30 08:05:47
ahamai> А какой вообще формат срезов: /u/m/эха/срез/эха/срез или как?
Кстати, да, присоединяюсь к вопросу. Как в одном запросе слайсить сразу несколько эх с разными смещениями и лимитами? Например, мы запрашиваем содержимое трёх эх и выяснили, что из первой надо забрать только 3 последних сообщения, из второй — 10, а из третей — 50. И что, здесь три отдельных запроса городить придётся?
[#]
Re: Срез
revoltech(spnet, 4) — hugeping
2024-10-30 08:07:07
hugeping> ahamai> А какой вообще формат срезов: /u/m/эха/срез/эха/срез или как?
hugeping>
hugeping> Например: https://club.hugeping.ru/u/e/idec.talks/-1:1
Вопрос в том, что делать, когда в запросе НЕСКОЛЬКО эх. Можно ли указать диапазоны отдельно для каждой?
[#]
Re: Срез
hugeping(ping,1) — revoltech
2024-10-30 08:15:38
hugeping>> ahamai> А какой вообще формат срезов: /u/m/эха/срез/эха/срез или как?
hugeping>>
hugeping>> Например: https://club.hugeping.ru/u/e/idec.talks/-1:1
revoltech> Вопрос в том, что делать, когда в запросе НЕСКОЛЬКО эх. Можно ли указать диапазоны отдельно для каждой?
Не делал никогда так, но в стандарте написано что нет.
/u/e/area.one/area.two/0:10 запрашивает первые десять сообщений в индексе, а /u/e/area.one/area.two/-10:10 запрашивает последние десять сообщений в индексе.
[#]
Re: Срез
ahamai(blackcat, 2) — hugeping
2024-10-30 08:39:27
Тогда я вообще не понял, чо это экономит, когда вместо одного запроса у нас отделный на эху. А запрос вещь дорогая, нагрузки на сервер, хедеры, все дела. Смысл, чтобы всё делать одним запросом.
2Shaos, хочу с тебя дёргать только последних 100 хедеров, как у тебя нода устроена?
[#]
Re: Срез
Andrew Lobanov(tavern,1) — revoltech
2024-10-30 09:28:24
ahamai>> А какой вообще формат срезов: /u/m/эха/срез/эха/срез или как?
revoltech> Кстати, да, присоединяюсь к вопросу. Как в одном запросе слайсить сразу несколько эх с разными смещениями и лимитами? Например, мы запрашиваем содержимое трёх эх и выяснили, что из первой надо забрать только 3 последних сообщения, из второй — 10, а из третей — 50. И что, здесь три отдельных запроса городить придётся?
Бери один по максимальному смещению.
[#]
Re: Срез
Andrew Lobanov(tavern,1) — revoltech
2024-10-30 09:28:24
hugeping>> ahamai> А какой вообще формат срезов: /u/m/эха/срез/эха/срез или как?
hugeping>>
hugeping>> Например: https://club.hugeping.ru/u/e/idec.talks/-1:1
revoltech> Вопрос в том, что делать, когда в запросе НЕСКОЛЬКО эх. Можно ли указать диапазоны отдельно для каждой?
Нельзя, так как незачем.
[#]
Re: Срез
ahamai(blackcat, 2) — Andrew Lobanov
2024-10-30 10:00:10
Ничё не понял. Если щас задать несколько эх и дать срез, он со всех по n сообщений запросит или только с последнего
[#]
Re: Срез
ahamai(blackcat, 2) — ahamai
2024-10-30 10:00:44
Вечером на shaos потестю. Если первое, то мне подходит
[#]
Re: Срез
ahamai(blackcat, 2) — hugeping
2024-10-30 10:50:03
Тогда не понял, почему стандарт такой, если в каждой эхе разное количество новых сообщений. :) Ладно, поняли-разобрались. Стандарт читал но как-то не задумывался об этом, задумался только сегодня в тронвае :)
2shaos - фетчеры обновил
[#]
Re: Срез
ahamai(blackcat, 2) — hugeping
2024-10-30 10:53:56
у меня sf работает так: запрос вида /u/e/эха1/эха2/эха3?sf=хэш1/хэш2/хэш3, и она ищет указанные хэши в эхах, если находит, начинает выдачу эх с них. сначала не вклчая сами хэшN, но несколько дней назад я сделал, чтобы включали, на всякий случай, 21 байта не жалко, зато можно убедиться, какой именно хэш
[#]
Re: Срез
shaos(spnet, 2) — ahamai
2024-10-30 12:09:19
> 2Shaos, хочу с тебя дёргать только последних 100 хедеров, как у тебя нода устроена?
-100:100
У меня стандартный IDEC
Был :)
[#]
Re: Срез
iiii(ping,48) — shaos
2024-10-30 12:38:39
да, я так и поставил, вроде всё работает как и задумано
[#]
Re: Срез
Andrew Lobanov(tavern,1) — ahamai
2024-10-30 13:32:39
ahamai> Ничё не понял. Если щас задать несколько эх и дать срез, он со всех по n сообщений запросит или только с последнего
Со всех, если я правильно понял типавопрос.
[#]
Re: Срез
Andrew Lobanov(tavern,1) — ahamai
2024-10-30 13:32:45
ahamai> Тогда не понял, почему стандарт такой, если в каждой эхе разное количество новых сообщений. :) Ладно, поняли-разобрались. Стандарт читал но как-то не задумывался об этом, задумался только сегодня в тронвае :)
Потому что не надо байто**ить. Сильно помогает в подавляющем числе случаев.
ahamai> 2shaos - фетчеры обновил
[#]
Re: Срез
Andrew Lobanov(tavern,1) — ahamai
2024-10-30 13:32:46
ahamai> у меня sf работает так: запрос вида /u/e/эха1/эха2/эха3?sf=хэш1/хэш2/хэш3, и она ищет указанные хэши в эхах, если находит, начинает выдачу эх с них. сначала не вклчая сами хэшN, но несколько дней назад я сделал, чтобы включали, на всякий случай, 21 байта не жалко, зато можно убедиться, какой именно хэш
А если хеш в блеклисте или вообще удалён? Ну и сложно это в реализации и не особо незачем.
[#]
Re: Срез
ahamai(blackcat, 2) — Andrew Lobanov
2024-10-30 18:42:57
Хэш в блеклисте это вообще ничего не меняет, нужны же "сообщения от", если в файле эхи сообщение есть, то от него и пойдёт. Если хэша нет, то отдастся вся эха. По сравнению с текущим случаем, преимуществ два - хэш гораздо более надёжный источник, чем количество сообщений, и не сработает только в одном случае: если конкретная нода инъектировала в эху сообщения сверху - но на это нужно иметь настолько серьёзные основания, что это повод говорить об этом в сисопской эхе. Ну и второе - точно отдадутся только самые новые сообщения, одним запросом (я думал, реализация срезов вообще не так работает, в текущем виде она вообще какая-то непонятная, почему на все эхи один лимит, если сообщений в базе мало)
реализация и sf и lim у меня это всего несколько строчек.
было
def echoareas(names):
out = ''
for ea in names:
out += ea + '\n' + get_echoarea(ea,True)
return out
стало
def echoareas(names, sf, lim=0):
out = ''
if sf: sf = set(sf.split('/'))
for ea in names:
dllist = get_echoarea_f(ea)
if sf:
newhash = [x for x in dllist if x in sf]
if newhash:
dllist = dllist[dllist.index(newhash[0]):]
if lim: dllist = dllist[-lim:]
dllist = '\n'.join(dllist)
if dllist: dllist += '\n'
out += ea + '\n' + dllist
return out
не использовалось это никогда потому что я не вижу смысла экономить и так копеечный трафик. но на такой случай реализация в моей станции была
[#]
Re: Срез
ahamai(blackcat, 2) — ahamai
2024-10-30 18:49:16
- если сообщений в базе мало
+ если новых сообщений в эхах разное количество, непонятно почему просто не запрашивать с каждой нужное (ну, или, с гарантией +1, +5 сообщений, это небольшой оверхед, по сравнению со случаем когда опращиваются одним запросом эхи с 1 и 110 сообщениями)
111
Вообще, связка h и sf реально сокращает количество запросов и реально экономит трафик. Если это кому-то важно.
[#]
Re: Срез
ahamai(blackcat, 2) — Andrew Lobanov
2024-10-30 19:32:33
Понятия не имею, что это слово означает, но вопросы имеются - раньше я вообще никогда не задумывался, как работают слайсы.
Во-первых, формат. /u/e/ чётко определён, там перечисляются эхи. Почему не использовать что-то типа ?s=-100:100 или любой другой способ? Если в фетчер ii 0.3 просунуть такой формат url и запросить что-то с ii 0.3, фетчер упадёт, не растоссив пакет, потому что будет считать -100:100 хэшем сообщения. Зачем плодить неоднозначность просто на ровном месте, там, где есть куча способов её избежать?
Ладно, раз уж решили изнасиловать формат /u/e, почему не использовать /u/e/эха/срез/эха/срез. Это же для экономии трафика всё затевалось? А какая экономия, если у тебя может быть куча эх, и ради одной роботной, где всегда куча сообщений, тянется куча ненужных? А если поодиночке - то это лишние запросы, на медленном и нестабильном интернете каждый запрос это всегда больно, и он может даже не состояться (поэтому links решал там, где opera не могла ни одного сайта открыть). Формат /u/e был придуман ровно для того, что дёргать /e на каждую эху было медленно и неэффективно. Изначально были только /e и /m, но всё это было медленно и печально.
[#]
Re: Срез
Andrew Lobanov(tavern,1) — ahamai
2024-10-31 05:21:38
ahamai> Хэш в блеклисте это вообще ничего не меняет, нужны же "сообщения от", если в файле эхи сообщение есть, то от него и пойдёт. Если хэша нет, то отдастся вся эха. По сравнению с текущим случаем, преимуществ два - хэш гораздо более надёжный источник, чем количество сообщений, и не сработает только в одном случае: если конкретная нода инъектировала в эху сообщения сверху - но на это нужно иметь настолько серьёзные основания, что это повод говорить об этом в сисопской эхе.
Какие-то количества сообщений придумал. Нет их уже, считай. Легаси, который в скором времени выставим на мороз.
> Ну и второе - точно отдадутся только самые новые сообщения, одним запросом (я думал, реализация срезов вообще не так работает, в текущем виде она вообще какая-то непонятная, почему на все эхи один лимит, если сообщений в базе мало)
Как количество сообщений влияет на работу срезов? Out of range невозможен.
ahamai> не использовалось это никогда потому что я не вижу смысла экономить и так копеечный трафик. но на такой случай реализация в моей станции была
Если не видишь смысла экономить трафик, то тогда непонятно что тебе не нравится в том, что срез один на запрос, а не для каждой эхи отдельно. Я думал, ты байтики экономишь и не хочешь получать в индексе сообщения, которые у тебя уже есть в базе.
[#]
Re: Срез
Andrew Lobanov(tavern,1) — ahamai
2024-10-31 05:21:39
ahamai> Понятия не имею, что это слово означает, но вопросы имеются - раньше я вообще никогда не задумывался, как работают слайсы.
ahamai> Во-первых, формат. /u/e/ чётко определён, там перечисляются эхи.
Читай документацию внимательнее. Там не только эхи перечисляются.
ahamai> Почему не использовать что-то типа ?s=-100:100 или любой другой способ?
Мы и используем один из любых других способов.
ahamai> Если в фетчер ii 0.3 просунуть такой формат url и запросить что-то с ii 0.3, фетчер упадёт, не растоссив пакет, потому что будет считать -100:100 хэшем сообщения.
Почему у тебя фетчер считает имя эхи хэшем сообщения? Это явно что-то не так в ii 0.3. Зачем с аплинком на ii использовать то, что ii не умеет?
ahamai> Зачем плодить неоднозначность просто на ровном месте, там, где есть куча способов её избежать?
Никакой неоднозначности нет. Не может быть двоеточия в имени эхи. Если софт такое допускает, значит софт надо исправлять.
ahamai> Ладно, раз уж решили изнасиловать формат /u/e, почему не использовать /u/e/эха/срез/эха/срез.
Зачем?
ahamai> Это же для экономии трафика всё затевалось? А какая экономия, если у тебя может быть куча эх, и ради одной роботной, где всегда куча сообщений, тянется куча ненужных?
1. Ты тоже в максималисты подался? Затем, что лишних несколько сотен байт на фоне нескольких сотен килобайт это экономия трафика.
2. Ненужные сообщения не тянутся. Только новые. u/e, если ты забыл, даёт только индекс, но не сообщения.
ahamai> А если поодиночке - то это лишние запросы, на медленном и нестабильном интернете каждый запрос это всегда больно, и он может даже не состояться
И этот человек защищал кучу маленьких бандлов вместо всего в одном запросе.
ahamai> Формат /u/e был придуман ровно для того, что дёргать /e на каждую эху было медленно и неэффективно.
Однопоточный фетчер на срезах на перле, который тянет индекс по одной эхе и использует бандлы по 40 сообщений, утягивает клуб за 3 минуты. На медленном канале.
Он же, но с парой десятков сообщений новых сообщений работает 3-5 секунд.
Без новых сообщений он отрабатывает за 3-4 секунды.
ВНИМАНИЕ! Вопрос: куда ты так спешишь, что у тебя каждая секунда на счету?
[#]
Re: Срез
Andrew Lobanov(tavern,1) — ahamai
2024-10-31 05:21:39
ahamai> - если сообщений в базе мало
ahamai> + если новых сообщений в эхах разное количество, непонятно почему просто не запрашивать с каждой нужное (ну, или, с гарантией +1, +5 сообщений, это небольшой оверхед, по сравнению со случаем когда опращиваются одним запросом эхи с 1 и 110 сообщениями)
ahamai> 111
ahamai> Вообще, связка h и sf реально сокращает количество запросов и реально экономит трафик. Если это кому-то важно.
Оверхед меньше килобайта в подавляющем большинстве случаев. Это даже на 9600 бод можно не считать оверхедом. При этом ты предлагаешь более сложный и неработающий в части случаев вариант.