Добро пожаловать, Гость. Пожалуйста авторизуйтесь здесь.
FGHIGate на GaNJa NeTWoRK ST@Ti0N - Просмотр сообщения в эхоконференции RU.FTN.DEVELOP
Введите FGHI ссылку:


Присутствуют сообщения из эхоконференции RU.FTN.DEVELOP с датами от 12 Jul 13 20:52:30 до 18 Oct 24 22:48:06, всего сообщений: 2735
Ответить на сообщение К списку сообщений Предыдущее сообщение Следующее сообщение
= Сообщение: 2184 из 2735 =================================== RU.FTN.DEVELOP =
От   : Nil A                            2:5015/46          25 Aug 23 07:25:10
Кому : Alexey Fayans                                       25 Aug 23 07:25:10
Тема : BaseMsgNum в JAM
FGHI : area://RU.FTN.DEVELOP?msgid=2:5015/46+64e83412
На   : area://RU.FTN.DEVELOP?msgid=2:5030/1997@fidonet+64e7a66e
= Кодировка сообщения определена как: CP866 ==================================
Ответ: area://RU.FTN.DEVELOP?msgid=2:5030/1997@fidonet+64e855ec
==============================================================================
* Originally in ru.fidonet.today
* Crossposted in ru.ftn.develop
Hello, Alexey!

Thursday August 24 2023 21:26, from Alexey Fayans -> Nil A:

AF>>> Это проблемы кривого софта типа SmapiNNTPd, а не пуржилки.
NA>> Пример, надо тебе написать софт, который сразу может прыгать на
NA>> 10ое сообщение из JAM базы. После пуржинья, предположим, это
NA>> сообщение стало 5ым. Линеный поиск сообщения по всей базе не
NA>> предлагать O(n).

AF> Такой софт должен импортировать сообщения в свою базу, предназначенную
AF> для таких специфичных действий.

А вот и нет. Мне, лично, не симпатизируют все те разрабы, что засовывают сообщения в SQL, например. Засунули, свои какие-то там дела порешали, и всё, больше ни с кем не совместимо - пример тому JNode.

А тут, мы берём, чиста по спекам, и всё работает, и со всеми совместимы.
Только не все спеки читают, и пуржиют, как им в голову взбредёт.

AF> Либо строить какой-то свой индекс,

Ага, типа как ластрид файлик, который опциональный, но про него хоть знают все, и его обновляют (иногда).
Так то я и full-text search индекс могу положить рядом, чтобы поиск работал сразу, но это всё НЕСОВМЕСТИМО.

AF> Нельзя расчитывать на то, что у сообщения в базе (Jam, Squish) есть
AF> какой-то перманентный абсолютный номер.

Дану? В Сквише есть этот самый UMSGID (Unique  Message  Identifier).
В Джаме есть номер сообщения в заголовках, но за константное время туда можно также добраться через BaseMsgNum прям.

Например, хаски под низом использует smapi библиотеку, и там постоянные вызовы MsgMsgnToUid и MsgUidToMsgn, не знаешь зачем?

AF> В теории, можно написать пуржилку, которая будет сохранять номера
AF> писем, оставляя дырки в индексе, но такая пуржилка никому, кроме
AF> держателей странного софта, не нужна, поэтому вряд ли кто-то будет это
AF> делать.

А знаешь сколько у разных утилит есть опций? Например, rsync, скопировать слева на право, казалось бы, а man rsync ты зачитаешься. Я про то, что кто как хочет, так и пуржит, только дайте опции людям. Людям, с потребностями разными. А которые без потребностей, тем и дефолт софйдёт какой-нибудь.

NA>> После пуржинья, например, BaseMsgNum выставился в 5
AF> После пуржинга он должен выставиться в 1 и больше никогда не меняться
AF> вообще.

Ну окей, в мире котором ты живёшь, там BaseMsgNum==1 всегда. Есть вариант, когда он не 1?
Если ты начинаешь новую базу, то он 1, если продолжаешь старую, то уже не 1.

Пойдём от обратного. Если BaseMsgNum есть, и учавствует в арифметике номеров сообщений, значит оно кому-то надо. Иначе бы такое поле не делали.

NA>> В спеке он есть. Нормальный софт всегда высчитывает номер
NA>> сообщения прибавляя BaseMsgNum.

AF> Всё верно, потому что если какой-то древний софт зачем-то меняет
AF> BaseMsgNum, то любой другой софт должен это учитывать. Но при пуржинге
AF> (а точнее при упаковке) оставлять BaseMsgNum отличным от 1 - как
AF> минимум странно.

Как минимум ты не понимешь юзкейс, почему BaseMsgNum может быть не 1.

AF> В спеке указан только один юзкейс для этого - удалить первые N
AF> сообщений в базе, точнее, сделать их "недоступными". Это явно было
AF> придумано до того, как сделали soft delete. Сейчас в этом смысла нет.

Верно. Правильная работа функций MsgMsgnToUid и MsgUidToMsgn возможно только тогда, когда там будут дырки, если сообщения стёрли. Удалять получается только слева, далее приходится осталять дырки.

Про smapi, кстати. Там MsgMsgnToUid/MsgUidToMsgn притащили из Сквиша (Squish MSGAPI, если уж название раскрывать польностью), но когда универсальный API натянули и на Jam (аля-виртуальные функции в C, или как в Джаве говорят - интерфейсы), то эти функции работают не корректно тоже,  ещё и зачем-то весь индекс в память вычитывают, ДОСа на них нету.

Best Regards, Nil
--- GoldED+/LNX 1.1.5
* Origin: Linux 2.6.32-042stab145.3 (2:5015/46)

К главной странице гейта
Powered by NoSFeRaTU`s FGHIGate
Открытие страницы: 0.125835 секунды