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


Присутствуют сообщения из эхоконференции RU.FTN.DEVELOP с датами от 12 Jul 13 20:52:30 до 02 May 24 18:32:18, всего сообщений: 2457
Ответить на сообщение К списку сообщений Предыдущее сообщение Следующее сообщение
= Сообщение: 2183 из 2457 =================================== 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)

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