Где лучше хранить настройки плагина

Автор Борис_С, 25 августа 2024, 18:15

0 Пользователи и 1 гость просматривают эту тему.

Борис_С

Всем доброго дня.
Подскажите, пожалуйста, где лучше хранить настройки плагина, и есть ли в ЛО механизм сохранения настроек для плагина?
Спасибо.

economist

Если настроек мало - то в коде, реестре, TXT или ini-файле.
Если настройки древовидные, их много и важно понимать их глазами - то JSON/YAML.
Если настройки табличные и их тьмы (тысячи) - база данных.

Храните как удобно, исходя из того как вы их задаете.
 
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

mikekaganski

Нет, конечно не в коде и TXT/JSON/YAML. Естественно, есть корректный (с т.з. методологии создания плагинов) метод - хранить их в registrymodification.xcu, путём определения конфигурационных данных в плагине. См. https://wiki.documentfoundation.org/Documentation/DevGuide/Extensions (поиск Configuration data).

Но естественно, можно и изобретать велосипед; в каких-то случаях это даже рационально.
С уважением,
Михаил Каганский

McAaron

Цитата: mikekaganski от 25 августа 2024, 21:55Нет, конечно не в коде и TXT/JSON/YAML. Естественно, есть корректный (с т.з. методологии создания плагинов) метод - хранить их в registrymodification.xcu, путём определения конфигурационных данных в плагине. См. https://wiki.documentfoundation.org/Documentation/DevGuide/Extensions (поиск Configuration data).

Но естественно, можно и изобретать велосипед; в каких-то случаях это даже рационально.
Технология registry ущербна. Каждое приложение должно хранить свои настройки в читаемом формате в отдельном файле или каталоге. Это прежде всего безопасно (если приложение при изменении настроек повредит свой личный файл настроек или произойдет сбой при записи, чужие настройки не пострадают). А также и более производительно (открыть и прочитать/записать небольшой файл на порядок быстрее, чем всякий раз открывать огромный registry в режиме O_EXCL и работать с ним).
Формат файла настроек следует выбирать таким, чтобы:
1) он был человеко-читаемым;
2) его можно было редактировать любым текстовым редактором;
3) при работе с ним с пом. библиотек и фреймворков не менялся порядок строк. Это позволяет отслеживать изменения с пом. git;
4) чтобы для структуризации не использовались отступы (аля питон).

mikekaganski

#4
Цитата: McAaron от 26 августа 2024, 12:58...
Очередная порция не относящегося к делу текста.

1. "Технология registry ущербна" и "Каждое приложение должно хранить свои настройки в читаемом формате в отдельном файле или каталоге" - дальнейший текст "поясняет" эту мысль в меру непонимания автора.

2. "Это прежде всего безопасно (если приложение при изменении настроек повредит свой личный файл настроек или произойдет сбой при записи, чужие настройки не пострадают)" - может быть верным только в том случае, если запись осуществляется "приложением" (в контексте обсуждения под "приложением" понимается плагин, который сам ничего никуда не пишет, а сообщает LibreOffice, что он изменил какие-то параметры, которые LibreOffice самостоятельно пишет куда нужно и когда нужно).

3. "А также и более производительно (открыть и прочитать/записать небольшой файл на порядок быстрее, чем всякий раз открывать огромный registry в режиме O_EXCL и работать с ним)" - могло бы быть верным только в том случае, если эти настройки действительно каждый раз читались заново. На самом деле все настройки кешируются; чтение registrymodifications не дольше чтения любого самого маленького файла, потому что он не слишком большой, но самое главное - он всё равно читается, так что есть в нём дополнительная информация или нет (пока она не мегабайты), не сказывается на производительности никак, в отличие от дополнительного чтения даже самого маленького отдельного файла.

Реальные причины использовать отдельные файлы конфигурации (со своими проблемами, типа необходимости собственноручно придумывать велосипед вроде административно настраиваемых неизменяемых пользователем параметров) другие; самая главная (при небольших размерах конфигурационных данных) - желание позволить пользователю уничтожить registryconfiguration, не затрагивая настройки плагина (но при этом не очень понятно насколько это вообще актуально - всё равно при сбросе профиля большинство снесёт всю папку). Удобство для автора плагина тоже важно. Вот это стоит принимать во внимание. А вовсе не идею, что всё, что не создано самостоятельно, либо небезопасно, либо непроизводительно, либо и то и другое (ну как же, все кроме McAaron - идиоты).
С уважением,
Михаил Каганский

McAaron

Цитата: mikekaganski от 26 августа 2024, 14:02
Цитата: McAaron от 26 августа 2024, 12:58...
Очередная порция не относящегося к делу текста.
Так удалите его, делов то. Может я ничего не понимаю в xml и реестрах, поскольку лет 25 с виндовсами имею дело только для того, чтобы убедиться, что написанный код под виндами будет себя вести также, как и под никсами, а выхлоп либроофиса с TexMaths расширением будет аутентично поднят в мсофисе. Кстати, начинаяя с 2022 достаточно чисто поднимается -- майки таки трудятся:-)