The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Выпуск системного менеджера systemd 253"
Отправлено Аноним, 20-Фев-23 02:23 
Реестр - это объектное хранилище конфигурации и состояний, а конфигурационный файл - это обычный документ. Это два разных подхода к конфигурации, которые не являются взаимоисключающими.

Простое приложение с конфигурацией в форме документа (INI или произвольный conf) один раз считывает свою конфигурацию целиком, парсит документ, поэтому почти все форматы конфигурационных файлов имеют регулярные грамматики и генерирует объекты / структуры в памяти на основании конфигурации. Простота здесь в том, что конфигурационный файл редактируется системным администратором, а сама программа в него не лезет на запись. Ей просто нужны входные данные, чтобы начать работу.

Сложным будет приложение, которое:
1. Само умеет менять свою конфигурацию
Процесс сериализации и десериализации объектов в регулярные языки обычно работает плохо для сложных структур, поэтому принято использовать объектные хранилища вроде каталогов и реестров. Если уж очень сильно нужно записать в файл, то для таких случаев используется XML, но XML-документ мало пригоден для редактирования человеком через текстовый редактор. Этот формат существует для обмена объектами между приложениями, а не для людей.
2. Должно предоставить API для удаленного конфигурирования
Текстовый документ с регулярным конфигом - это пожалуй самый технологически убогий и медленный способ хранить объекты, если вам нужно, чтобы была поддержка атомарности и транзакционности. Три приложения пытаются одновременно изменить конфигурацию четвертого через API. Эта типовая задача на "шинде", но на Linux люди целые сервера БД вынуждены ставить, либо писать суперкостыльные вспомогательные демоны по работе с текстовыми документами.
3. Должно синхронизировать состояние своей текущей конфигурации между несколькими узлами кластера.
Если приложение изменило конфигурацию (п.1) или это сделало другое приложение (п.2) или даже сам пользователь это сделал снаружи, то в случае кластеризации может потребоваться не просто автоматически перенести изменения на другие узлы, а применить новую конфигурацию синхронно. В этом случае вам придется построить "реестр" на основе ваших документов, чем, кстати, среди прочего, и занимается corosync.

Использование документов для конфигурации в Linux - это одно из наследий некоторых UNIX-подобных ОС, просто повелось так делать. Реальных аргументов всё хранить в документах нет, да это и не делается. Стоит поставить что-то более сложное (GNOME, например), так сразу выяснится, что у него есть реестр. Причем dconf (реестр в GNOME) больше привязан к gobject-introspection (конфигурации разделяемых объяктов GTK и GNOME) и их интерфейсам в D-Bus, а не к приложениям как таковым... просто вы Linux-то наверное не знаете, поэтому дальше /etc и не видели ничего.

Вот вам несколько "срывов покровов":
1. Реестры нужны и активно используются во всех ОС, в том числе в Linux
2. Если шина данных не работает с реестром (COM объявляет там классы), то такая шина всё равно никуда не уйдёт от объектно-ориентированной конфигурации и просто будет хранить всё в XML или его убогих вариациях (JSON и YAML), что гораздо хуже для конфигурирования (привет D-Bus).
3. Microsoft не придумывал реестр, он, как и многие вещи в те годы, лицензировал его IBM.
4. Объектным файловым системам вроде Ceph тоже нужны реестры. Они там хранят метаданные, названия файлов, структуры каталогов.
Вообще применений реестров множество, просто в Linux решили изобретать по новому формату реестра на каждый чих.

Реестры Windows не сильно сложно устроен. Он представляют собой каталоги объектов, которые берутся из нескольких бинарных хранилищ. Кроме того к ним добавляются волатильные параметры. Всё это монтируется внутрь виртуальной файловой системы и доступно для редактирования средствами работы с ФС, специальными функциями API и есть графические утилиты, но они покрывают не все ключи.

> мониторилка от асус сохраняла десять(!) раз в секунду температуру цпу и скорость вращения вентелятора. Ну прям просто НЕОБХОДИМО сохранить в этой помойке, вместе с настройками аля /etc

https://learn.microsoft.com/en-us/windows-hardware/drivers/d...
То что вы не знаете или в упор не понимаете, так это то, что реестр это не только /etc, это еще и /proc и
/sys. Те самые изменяемые ключи, где драйверы и модули ядра хранят временные состояния. То есть когда драйвер ядра Linux кладет текущие параметры в /proc, вас это не смущает, а когда Windows так делает, так сразу истерика капсом.

> может быть прямо в program files, в ini файлах

Если бы у Linux было что-то похожее на Windows Installer, то помойка была бы такая же или еще хлеще. То что приложение с разрешения пользователя может накидать файлов куда попало - не проблема ОС, а проблемы разработчиков приложений. Кстати попытки сделать очередной аналог инсталлера (flatpak, snap договориться же не могут) предпринимаются вполне активно, посмотрим какая помойка будет в результате.

> в одной из юзерских директорий...

А что такого плохого предоставлять символические ссылки (reparse points в случае NTFS) для сохранения обратной совместимости со старыми версиями? Вон Linux переместил /bin в /usr/bin и сделал ссылку и что? Что-то криминальное случилось? А что касается Local, LocalLow и Roaming, так это вообще каталоги которые используются при синхронизации профилей пользователей или организации перемещаемых профилей. Local - данные приложений, которые привязаны к конкретной рабочей станции, LocalLow - это то же самое, что и Local, только туда пишут приложения, запущенные с пониженными привилегиями (ближайший аналог в Linux - chroot), а Roaming - каталог, который нужно синхронизировать между разными рабочими местами, он содержит пользовательские опции в смысле "предпочтения" (preferences). В Linux как раз не такого разделения. Там всё свалено в общую кучу в /var и что-то еще кладут в /home/username.

> Смогешь с первого раза ответить...

Я, лично, смогу, но я за это дорого беру. Windows вообще-то сильно сложнее чем Linux и BSD, потому что на ней автоматизируются сложные задачи по крупным корпоративным развертываниям рабочих станций и сложных кластеров монолитных MDM-приложений.

Вот тебе мой совет: если у тебя не получается что-то сделать в Windows, попробуй обратиться к системному администратору.

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру