New user registration is currently disabled due to spam abuse / Регистрация новых пользователей в настоящее время приостановлена из-за злоупотреблений спаммерами

Двоение в списке словарей

Обо всём по программе

Двоение в списке словарей

Postby ramix » Sat Nov 16, 2013 11:21 am

Поскольку у меня один DSL-словарь начал двоиться (дважды показываться) в списке словарей ("Найдено в словарях:"), я решил посмотреть, откуда берется второе название.

Заглянул в файл config (кстати, нельзя ли ему присвоить какое-нибудь расширение, типа .ini, чтобы можно было ассоциировать с программой для просмотра в ОС?). Обнаружил там этот словарь в одиночке, но под старым именем. И еще обнаружил в списке ряд удаленных словарей с несуществующими уже id - соответствующими им файлами в папке index (типа 59fffbc519f05e5db1a43bc1efdddcb9). Закрыл на всякий случай оболочку, открыл, но старое название никуда не делось. Пересканировал файлы, пересортировал по языкам, еще раз закрыл оболочку и открыл. Старое имя поменялось на новое, исчезли из списка удаленные словари, но остались две одинаковые строчки с одним и тем же словарем. Пришлось удалить вторую строчку вручную.

Но вот хотелось бы узнать, откуда берутся эти вторые названия и есть ли способ избавиться от них, не залезая в config?

И еще интересно, откуда берется следующая разница: Goldendict рапортует при запуске, что словарей 1020, но при этом файлов в папке index - 1007, а словарей в списке config - 1019 (до удаления было 1022 при остальных тех же показателях)? Кстати, взял наугад несколько id из config, но для части из них не нашел соответствующих им файлов в папке index.
ramix
 
Posts: 27
Joined: Fri Mar 09, 2012 12:16 pm

Re: Двоение в списке словарей

Postby Abs62 » Sat Nov 16, 2013 12:46 pm

ramix wrote:Но вот хотелось бы узнать, откуда берутся эти вторые названия и есть ли способ избавиться от них, не залезая в config?

Вот и мне интересно. ;)
Вроде как я такие фокусы в своё время лечил. Воспроизвести можете?
ramix wrote:И еще интересно, откуда берется следующая разница: Goldendict рапортует при запуске, что словарей 1020, но при этом файлов в папке index - 1007, а словарей в списке config - 1019 (до удаления было 1022 при остальных тех же показателях)? Кстати, взял наугад несколько id из config, но для части из них не нашел соответствующих им файлов в папке index.

Не у каждого словаря есть индекс. Например, индексов нет у википедий, веб-словарей, морфологий, программ, речевых синтезаторов и т.д.
"словарей в списке config - 1019" - в каком месте? Там может быть много списков. Показываемое при запуске число должно соответствовать сумме элементов списков "dictionaryOrder" и "inactiveDictionaries".
Abs62
 
Posts: 631
Joined: Mon Jun 14, 2010 11:51 am

Re: Двоение в списке словарей

Postby ramix » Sat Nov 16, 2013 1:23 pm

Abs62 wrote:
ramix wrote:Но вот хотелось бы узнать, откуда берутся эти вторые названия и есть ли способ избавиться от них, не залезая в config?

Вот и мне интересно. ;)
Вроде как я такие фокусы в своё время лечил. Воспроизвести можете?


Раньше это часто проявлялось, после вашего фиксинга практически исчезло. Вот сегодня, присмотревшись, столкнулся. Возможно, причина в моих манипуляциях со словарями. Воспроизвести не смогу, так как не знаю, в какой момент задвоило. Думаю, если в ближайшее время еще раз не проявится, то это редкий случай, не связанный с обычным функционированием программы.

Abs62 wrote:
ramix wrote:И еще интересно, откуда берется следующая разница: Goldendict рапортует при запуске, что словарей 1020, но при этом файлов в папке index - 1007, а словарей в списке config - 1019 (до удаления было 1022 при остальных тех же показателях)? Кстати, взял наугад несколько id из config, но для части из них не нашел соответствующих им файлов в папке index.

Не у каждого словаря есть индекс. Например, индексов нет у википедий, веб-словарей, морфологий, программ, речевых синтезаторов и т.д.
"словарей в списке config - 1019" - в каком месте? Там может быть много списков. Показываемое при запуске число должно соответствовать сумме элементов списков "dictionaryOrder" и "inactiveDictionaries".

1019 - это как раз в config, между <dictionaryOrder id="0" name=""> и <mutedDictionaries/>, дальше названия идут только в <group id="79" name="Test"> и т.д. Отключенных (mutedDictionary) и неактивных (inactiveDictionaries) в общем списке у меня нет, да я их в общем списке (группе) и никогда не отключаю, так как потом отключенный словарь визуально и не найдешь, только через config. Количество проверял по номеру строки названия последнего словаря в Akelpad, предварительно вырезав список из config.
При запуске показывает 1020 - значит, где-то один словарь затерялся?
ramix
 
Posts: 27
Joined: Fri Mar 09, 2012 12:16 pm

Re: Двоение в списке словарей

Postby Abs62 » Sat Nov 16, 2013 7:25 pm

ramix wrote:1019 - это как раз в config, между <dictionaryOrder id="0" name=""> и <mutedDictionaries/>, дальше названия идут только в <group id="79" name="Test"> и т.д. Отключенных (mutedDictionary) и неактивных (inactiveDictionaries) в общем списке у меня нет, да я их в общем списке (группе) и никогда не отключаю, так как потом отключенный словарь визуально и не найдешь, только через config. Количество проверял по номеру строки названия последнего словаря в Akelpad, предварительно вырезав список из config.

При запуске показывает 1020 - значит, где-то один словарь затерялся?

Похоже на то. На такое пока что никто ещё не жаловался. ;)
Запустите эту версию с ключом "--log-to-file" и посмотрите, не будет ли чего подозрительного в логе.
Abs62
 
Posts: 631
Joined: Mon Jun 14, 2010 11:51 am

Re: Двоение в списке словарей

Postby ramix » Sat Nov 16, 2013 8:42 pm

Abs62 wrote:...Похоже на то. На такое пока что никто ещё не жаловался. ;)

Народ у нас терпеливый и дареному коню в зубы не жалуются. :)
А про Плюшкина они только в школе читали.

Abs62 wrote:
ramix wrote:...
При запуске показывает 1020 - значит, где-то один словарь затерялся?

Запустите эту версию с ключом "--log-to-file" и посмотрите, не будет ли чего подозрительного в логе.


Было три строки в логе. Две из них касались нижеследующего пункта 1):

Debug: Xdxf: Building the index for dictionary: ... .xdxf

Warning: Xdxf dictionary reading failed: ... .xdxf, error: The file is not an XDXF file: ... .xdxf

1) Судя по всему, разницу в количестве вызывал этот файл то ли с неправильным расширением, то ли с неправильным форматированием. Он, видимо, учитывался в рапорте в строке состояния, а в конфиг не шел.
Поскольку он ценности не представлял, я его удалил и количество словарей по бухгалтерии стало совпадать - баланс сошелся.

2) Но при этом Goldendict упорно твердил:

Warning: Duplicate dictionary ID found: ID=59fffbc519f05e5db1a43bc1efdddcb9, name="...", path="..."

Чего он прицепился к этой папке, названию словаря и ID - непонятно, так как на самом деле уже давно не было двойного названия в config, а двойного dictionary ID я что-то не встречал. Такое впечатление, что ошибку заклинило. (Голдендикт случаем ничего не пишет в реестр?)
На всякий случай я переименовал папку со словарем, перезапустил оболочку, он пересканировал и лог очистился.

3) Но тут новый вопрос возник - после того, как лог стал чистым, количество словарей опять перестало совпадать, только уже в обратную сторону - при запуске показывает количество на один словарь меньше, чем в конфиге.
ramix
 
Posts: 27
Joined: Fri Mar 09, 2012 12:16 pm

Re: Двоение в списке словарей

Postby Abs62 » Sat Nov 16, 2013 9:21 pm

ramix wrote:1) Судя по всему, разницу в количестве вызывал этот файл то ли с неправильным расширением, то ли с неправильным форматированием. Он, видимо, учитывался в рапорте в строке состояния, а в конфиг не шел.

Нет. При сбое в индексировании словарь в списки не попадает и нигде не учитывается.
ramix wrote:2) Но при этом Goldendict упорно твердил:

Warning: Duplicate dictionary ID found: ID=59fffbc519f05e5db1a43bc1efdddcb9, name="...", path="..."

Чего он прицепился к этой папке, названию словаря и ID - непонятно, так как на самом деле уже давно не было двойного названия в config, а двойного dictionary ID я что-то не встречал. Такое впечатление, что ошибку заклинило. (Голдендикт случаем ничего не пишет в реестр?)
На всякий случай я переименовал папку со словарем, перезапустил оболочку, он пересканировал и лог очистился.

Примерно это я и подозревал. Тут дело не в конфиге и не в реестре, куда GD ничего не пишет. ID словаря - это хэш MD5 полных (или относительных для портабельной версии) путей к его файлам. Видимо, у двух словарей действительно совпали ID, потому один из них ни в какую группу попасть не мог. Отсюда и разночтения, потому как рапорт при запуске выдаётся по полному списку.

ramix wrote:3) Но тут новый вопрос возник - после того, как лог стал чистым, количество словарей опять перестало совпадать, только уже в обратную сторону - при запуске показывает количество на один словарь меньше, чем в конфиге.

Это уже другой разговор. ;)
Наверно, в конфиге застрял всё-таки какой-то старый словарь. Это не так критично, как совпадение ID. Если столкнусь с таким, попробую покопаться.
Abs62
 
Posts: 631
Joined: Mon Jun 14, 2010 11:51 am


Return to Общий

Who is online

Users browsing this forum: No registered users and 27 guests