Re: Сообщения не в том порядке
Ответ на сообщение
hugeping> Как это возможно?Вероятно, кто то отдает по фетчу не в том порядке..
hugeping to hugeping (2024-11-03 21:51:07)
[ссылка]
hugeping> Как это возможно?Вероятно, кто то отдает по фетчу не в том порядке..
btimofeev> А почему они выводятся в обратном порядке? Я помню, давно, в клиенте для андроида часто такое было, и там специально делали, что бы они выводились в порядке "времени написания".Ну, я так понимаю выводятся в порядке в каком приняла её станция. Иначе возникают приколы, типа через 12 часов пришло сообщение и оно сразу затерялось -- его никто не увидит. Моя станция показывает так, как приняла. Станция shaos видимо тоже.
> Ограничения по языку гораздо суровее отсекают аудиторию, чем ты можешь себе представить.Я понимаю, но моя сеть не про это.
> Что даёт фидошность? Широкие массы вот это понимают: есть проблема — есть исходящая из неё задача — есть решение. Здесь же какая задача для решения какой проблемы решается? Вот и донеси это до людей, если знаешь ответ на этот вопрос.фидо даёт душевность :) а идею я уже говорил в ii 0.1, построение малых сообществ и связь между ними
> Поэтому вы обсуждаете, как обустроить вебморды, вместо того, чтобы заняться более няшными core-клиентами, укрепляющими распределённость сети. Яснопонятно.каждая станция это по сути своё малое сообщество, с какой-никакой тематикой. веб делать проще, да и пойнтам такое понятнее. но нужна и другая инфраструктура...
ahamai> и мне неинтересно болтать по английски.Ограничения по языку гораздо суровее отсекают аудиторию, чем ты можешь себе представить. В мире любителей легковесных протоколов на фоне жирновеба и так исчезающе мало. А здесь вообще промилле от процента.
ahamai> мне интересно по-фидошному :)Что даёт фидошность? Широкие массы вот это понимают: есть проблема — есть исходящая из неё задача — есть решение. Здесь же какая задача для решения какой проблемы решается? Вот и донеси это до людей, если знаешь ответ на этот вопрос.
ahamai> раньше хоть малое сообщество было, сейчас вообще сверхмалоеНу с таким подходом неудивительно.
ahamai> да, разумеется. клиентов сейчас нет.Так это следствие мною указанного неосиляторства.
ahamai> нет инфраструктуры для заинтересовывания пользователейПоэтому вы обсуждаете, как обустроить вебморды, вместо того, чтобы заняться более няшными core-клиентами, укрепляющими распределённость сети. Яснопонятно.
ahamai> причём здесь обработчик. я про нагрузку на сервер, когда с него опрашивают сразу все эхи разом.Ну приведённый мной обработчик реагирует на запрос всех эх разом ровно так же, как и на запрос одной: формирует составной SQL-запрос с учётом срезов (если есть) и запрашивает инфу в базе. Откуда здесь дополнительная нагрузка на сам сервер возьмётся? Просто вложенных селектов будет больше, да. Но это уже проблема базы, хотя скулайт такие вещи обрабатывает крайне шустро. Не те объёмы, чтобы париться.
> Ну дык инглиш, мазафака, ду ю спик ит? У меня, например, конента сколько угодно, но на более широкую аудиторию в основном за пределами чебурнетов.фидо было популярно только на русском языке. на остальных скорее мертво, чем живо
> А что, с этим есть какие-то проблемы? Ну, окромя того, что 95% населения даже тикль не хотят осиливать.да, разумеется. клиентов сейчас нет. раньше все что-то делали, у меня был txt и http клиент, кто то делал клиент на dialog, был клиент на py-tk, на qt5, на android. MRD на java me пытался клиент набросать :) А сейчас только вечно живой цезий ну и твой клиент появился. Всё.
> Вот и с чего бы такой обработчик долго задумывался, если он все эхи (после валидации) в один проход запрашивает?причём здесь обработчик. я про нагрузку на сервер, когда с него опрашивают сразу все эхи разом. по одной, оно как-то спокойнее было.
> Да, он самый, как и на клиентеКстати SQLite расслабляет - лучше сразу на MySQL/MariaDB ориентироваться. Например в SQLite ключом можно чо угодно сделать (насколько я помню) и порядок записей всегда хронологический, а в MySQL если ты не сделал ORDER BY оно выльется как попало в зависимости от того как оно там внутри само заполнило дырки...
shaos> Ну тут у тебя SQLite по ходу? Это читерство ;)Да, он самый, как и на клиенте. Меня групконкат спасал ещё на мускуле в бытность вебдевом (период моей жизни, в который я не хочу даже в воспоминаниях возвращаться), выручит и теперь. Очень мощная вещь. И из того же периода я вспомнил трюк с долбаными юнионами, кстати.
shaos> Настоящие пацаны БД на текстовых файлах держат ;)Да кто против-то, только не жалуйтесь на тормоза при запросе кучи эх со слайсами.
Echoareas ──────────────────────── idec.talks...........518 ██████████████████████████████████████████████████▒▒▒▒▒▒▒▒▒▒ bot.slashdot.........127 ██████████████████████████████████████████████████▒▒ lor.gold..............89 ██████████████████████████████████████████████████▒ lor.opennet...........39 ███████████████████████████████████████ bot.habr.rss..........29 █████████████████████████████ linux.14..............15 ███████████████ spnet.stats............7 ███████ blcat.local............6 ██████ idec.test..............4 ████ std.game...............3 ███ std.rein...............3 ███ im.24..................3 ███ iii.nizya..............2 ██ bot.antropogenezru.rss.2 ██ std.hugeping.micro.....2 ██ english.talks..........1 █ crypto.talks...........1 █ ii.stat................1 █ spnet.uplink...........1 █ ──────────────────────── Total 853
ahamai> когда с крупного узла запрашиваешь разом все эхи, он сильно задумываетсяРаз Шаос тут свой монстрокод кидал, могу и я свой кинуть (правда, это ещё не окончательный вариант, а в репе этого файла пока вообще нет и ещё долго не будет) чисто по обработке /u/e со стандартным слайсингом:
e {
set erange [lrange $pathparts 3 end]
if {[llength $erange] > 0} {
set limit 0
set offset 0
set lastel [lindex $erange end]
if {[string match *?:?* $lastel]} { # slice detected
set sparts [split $lastel :]
set offset [expr {int([lindex $sparts 0])}]
set limit [expr {int([lindex $sparts 1])}]
set erange [lrange $erange 0 end-1]
}
# validate the rest of the echo list
set erange [lmap ename $erange {expr {
[validecho $ename] ? $ename : [continue]
}}]
if {[llength $erange] > 0} { # recheck length after validation
repdata $sock $ishttp [indexechos $dbfile $erange 1 $offset $limit]
} else {
reperror $sock $ishttp "invalid request"
}
} else {
reperror $sock $ishttp "invalid request"
}
}
Но это не самое интересное. Самое интересное — процедурка indexechos:
# echo indexer for /e and /u/e
proc indexechos {dbfile echolist includenames offset limit} {
set rdata {}
set oquery {ORDER BY `id`}
if {$limit > 0} { # trigger limiting logic only with positive limit value
if {$offset >= 0} { # normal limiting flow
append oquery " ASC LIMIT $offset,$limit"
} else {
set reallimit [expr {-$offset}]
set realoffset [expr {$reallimit - $limit}]
if {$realoffset >= 0} {
append oquery " DESC LIMIT $realoffset,$reallimit"
} else { # invalid limit, falling back to full query
append oquery " ASC"
}
}
}
set query {SELECT CONCAT(`echoname`, ':', GROUP_CONCAT(`msgid`,'|' ORDER BY `id`)) AS `rowcat` FROM (}
foreach echo $echolist {
append query "SELECT * FROM (SELECT `id`, `msgid`, `echoname` FROM `msg` WHERE `echoname` = '$echo' $oquery) UNION ALL "
}
append query {SELECT NULL,NULL,NULL) GROUP BY `echoname` ORDER BY `echoname` ASC;}
sqlite3 db $dbfile -readonly true
db eval $query echorow {
if {$echorow(rowcat) ne ""} {
set eparts [split $echorow(rowcat) :]
set ename [lindex $eparts 0]
if {$ename ne ""} {
if {$includenames > 0} {
append rdata $ename \n
}
append rdata [join [split [lindex $eparts 1] "|"] \n] \n
}
}
}
db close
return $rdata
}
Вот и с чего бы такой обработчик долго задумывался, если он все эхи (после валидации) в один проход запрашивает?ahamai> без контента сеть мертва.Ну дык инглиш, мазафака, ду ю спик ит? У меня, например, конента сколько угодно, но на более широкую аудиторию в основном за пределами чебурнетов. Внезапно даже мой гофер какую-то обратную связь даёт: со мной на днях связался какой-то пакистанец, нагугливший по совершенно неожиданному поисковому запросу веб-зеркало моего гоферного блога. И в итоге я от него получил материал (пару дампов), необходимый для успешного завершения одного из моих исследований. Сам в шоке до сих пор. Но я к тому, что через ii/IDEC в его нынешнем состоянии он бы на меня не вышел никогда даже с веб-зеркалами. Он только английский, урду и арабский знает.
ahamai> а о чём мы, три с половиной сисопа ещё можем поговорить, и с кем ещё?Ну вот я с лора пришёл, можно ещё каких-то интересных личностей с 4PDA позвать, но опять же, глобальнее надо мылить, глобальнее (это мем, а не опечатка, если что).
ahamai> проблемы привлечения к написанию нового софта (как я называл это в 2014, любительское программирование)А что, с этим есть какие-то проблемы? Ну, окромя того, что 95% населения даже тикль не хотят осиливать.
revoltech> ну а дальше, думаю, разберёшься.А, ну да, ещё auth.txt для постинга нужен. Формат тот же: на каждой строке урла станции и пароль через пробел.
tuple> А покажи демку, пожалуйста, как с ним работать в каком-нибудь asciinema. Для наглядности, чтобы не лезть в мануалы. :)Вот поэтому я и не хотел давать ссылку раньше времени. Но без мануалов с любым из моего софта (тем более написанного в первую очередь для себя) вообще делать нечего.
shaos> Последний пункт написал doesnmДа, не заметил с телефона. :)
hugeping> Новые сообщения в реверсе: https://club.hugeping.ru/echo/all/Текущая навигация ii-go.
ahamai> честно говоря, я этого не нашёл в интерфейсе.Я думаю ты и не искал. :)
> В ii-go тоже есть разные режимы показа. И реверс со всеми сообщениями. И вид эхи. И вид с топиками. И форум. И даже блог. Причём не все даже выведены в шаблоны. Но они частично бесполезны в режиме когда контент создаётся в виде "одного потока". Правда, мои собственные эхи я хотя бы контролирую.честно говоря, я этого не нашёл в интерфейсе.
>> Архивные записи удобнее читать в формате форума, свежие - подряд
ahamai> да. поэтому для своих ретроспектив я доделываю к своей ноде разные возможности чтения тем. во-первых. у меня всегда был реверс, чтобы смотреть и от нового к старому и от старого к новому, во-вторых, думаю что сделать с цепочками тем (в elp были тэги, но прямо сейчас в ii их так не введёшь. хотя, кстати, почему не введёшь, поле тэгов которое и испольовалось в elp, как раз к этому и предназначено. наверное, надо идеи из elp взять)В ii-go тоже есть разные режимы показа. И реверс со всеми сообщениями. И вид эхи. И вид с топиками. И форум. И даже блог. Причём не все даже выведены в шаблоны. Но они частично бесполезны в режиме когда контент создаётся в виде "одного потока". Правда, мои собственные эхи я хотя бы контролирую.
Ладно, это всё так...
> Архивные записи удобнее читать в формате форума, свежие - подрядда. поэтому для своих ретроспектив я доделываю к своей ноде разные возможности чтения тем. во-первых. у меня всегда был реверс, чтобы смотреть и от нового к старому и от старого к новому, во-вторых, думаю что сделать с цепочками тем (в elp были тэги, но прямо сейчас в ii их так не введёшь. хотя, кстати, почему не введёшь, поле тэгов которое и испольовалось в elp, как раз к этому и предназначено. наверное, надо идеи из elp взять)
> Но читать форум просто невозможно, именно потому, что тема топика никак не соответствует содержимому...бинго. читать любой форум где 3.5 человека скучающе заходят раз в год, невозможно. и они друг друга просто не увидят. потому что как здесь, всё ушло от обсуждения ноды к деталям и проблемам, которые это порождает, закусив попутные темы