= Сообщение: 2183 из 2735 =================================== RU.FTN.DEVELOP = От : Nil A 2:5015/46 24 Aug 23 16:40:48 Кому : Alexey Fayans 24 Aug 23 16:40:48 Тема : BaseMsgNum в JAM FGHI : area://RU.FTN.DEVELOP?msgid=2:5015/46+64e7602b На : area://RU.FTN.DEVELOP?msgid=2:5030/1997@fidonet+64e6e0d4 = Кодировка сообщения определена как: CP866 ================================== ============================================================================== * Originally in ru.fidonet.today * Crossposted in ru.ftn.develop Hello, Alexey!
Thursday August 24 2023 07:47, from Alexey Fayans -> Nil A:
NA>> Притензия в том, что создаётся новый файл с базой, в котором NA>> нумерация $BaseMsgNum начнётся заново, а это значит всякие NA>> ништяки, типа SmapiNNTPd поломаются, потому что не смогут сразу NA>> прыгнуть на нужный номер, потому что базовый номер съехал. AF> Это проблемы кривого софта типа SmapiNNTPd, а не пуржилки.
Пример, надо тебе написать софт, который сразу может прыгать на 10ое сообщение из JAM базы. После пуржинья, предположим, это сообщение стало 5ым. Линеный поиск сообщения по всей базе не предлагать O(n).
AF> Упаковать JAM базу без сброса BaseMsgNum, наверное, возможно, но это AF> крайне тупо.
Решение в том, что я хочу прыгнуть не на 10ое сообщение порядковое в базе, а именно 10ое. После пуржинья, например, BaseMsgNum выставился в 5, значит, чтобы добраться до 10го сообщения, мне надо прыгнуть сразу на 5ое порядковое. Это O(1) сложность.
Правда, тут ещё есть нюанс - удалённые сообщения (дырки) приходится оставлять. Само тело сообщения можно не хранить, но индекс нужен с дырками. Получается, что пуржить удалённые письма можно только сначала.
Кстати, примерно также работает Usenet. Он тебе говорит от кого сообщения у него в базе есть и до кокого, и сколько их всего, и разница может не быть равна сколько всего, потому что дырки.
AF> Вообще, BaseMsgNum - это рудимент, нормальный софт его не трогает.
В спеке он есть. Нормальный софт всегда высчитывает номер сообщения прибавляя BaseMsgNum. Если появились новопейсатели, которым хочется на каком-нибудь модном языке типа Go за два вечера там что-то набрасать, то для себя им, пусть они не трогают этот рудимент.
Best Regards, Nil --- GoldED+/LNX 1.1.5 * Origin: Linux 2.6.32-042stab145.3 (2:5015/46)