[#]
Срез
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, но всё это было медленно и печально.