LINUX.ORG.RU
ФорумTalks

Реестр! Ы!


0

1

Шучу, не обязательно реестр...

Навеяно срачем не по теме в теме: http://www.linux.org.ru/forum/talks/5707291
«Пост гнева относительно /etc/бла-бла-бла.conf»

Почему когда речь заходит о конфигах и реестре, то oldschool'ные (а может и не oldschool'ные, а просто тролли) *nix'оиды посылают лечиться приверженцев реестра и других БД-образных конфигохранилищь?

То, что в винде реестр представляет собой неудобоваримое нечто еще не означает что нельзя сделать хорошо.
Обычно выдвигается аргумент типа «Текстовый конфиг можно править текстовым редактором».
А что бинарный нельзя? Можно сделать редактор который будет выглядеть как текстовый, будет маленьким и удобным, его без проблем можно будет использовать на том самом удаленном сервере, о котором так часто пишут oldschool'ные тролли.
Можно сделать текстовый интерфейс на уровне файловой системы (Например через FUSE или как часть ядра. Oldschool'ные тролли «Ааа... жуть... Реестр в ядре... Иди на семерочку!»). Пользователь сможет править конфиг как текст, программы будут работать через библиотеку, храниться может это все очень по-разному. Более того, можно будет сделать текстовый интерфейс с разным сиснтаксисом.

Какие я вижу плюсы:
- Равноправие текстового (или еще какого там)и графического конфигураторов. Если в этом, так называемом реестре, сделать схемы, то строить GUI можно будет быстро и просто, гораздо проще чем писать парсер конфига.
Хочешь GUI, а хочешь grep, sed и т.п.
- Легко связать со справкой даже для текстового интерфейса (см. пред пункт)
- Единый формат. Одни программы легко меняют конфиги других.

★★★★★

Вот конкретный маленький пример простого конфига из 23 строк. Приведите хотя-бы примерную оптимальную структуру БД.

понятия не имею. Чесна. По мне так все эти конфиги - зло, и они должны генериться автоматически на основе текущего состояния программы. Можно в какую-нибудь no-sql бд, если так уж тебя пугают таблички. А что и как в этой бд будет храниться - пусть бд сама и решает. Мое дело в нее объекты сохранить и получить назад когда потребуется.

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

>они должны генериться автоматически на основе текущего состояния программы

Тогда что станет с конфигами, если программа упадёт?)

Yareg ★★★
()
Ответ на: комментарий от stevejobs

>понятия не имею. Чесна. По мне так все эти конфиги - зло, и они должны генериться автоматически на основе текущего состояния программы. Можно в какую-нибудь no-sql бд, если так уж тебя пугают таблички. А что и как в этой бд будет храниться - пусть бд сама и решает. Мое дело в нее объекты сохранить и получить назад когда потребуется.
Вооот, мы уже на верном пути. И чем сохранение объектов в no-sql базу отличается от сериализации объектов в формате YAML на диск?

Tark ★★
()
Ответ на: комментарий от Yareg

Тогда что станет с конфигами, если программа упадёт?)

если в момент падения прога писала что-то в конфиг, то транзакция отменяется, и конфиг возвращается назад на момент до начала транзакции. Если не писала - не происходит ничего, прога перезапускается и читает что там в конфиге понаписано.

stevejobs ★★★★☆
()
Ответ на: комментарий от Tark

И чем сохранение объектов в no-sql базу отличается от сериализации объектов в формате YAML на диск?

ничем. Кроме того что любители текстовых конфигов взвоют, что им сериализованный yaml неудобно править текстовым редактором.

stevejobs ★★★★☆
()
Ответ на: комментарий от Yareg

>Тогда что станет с конфигами, если программа упадёт?)

Конфиги в линуксе нужны оттого, что программы падают. Так и запишем.

RedPossum ★★★★★
()
Ответ на: комментарий от stevejobs

Ты просто так написал, как будто бы никакой операции сохранения и нет. Как в ФантомОС)

Yareg ★★★
()
Ответ на: комментарий от stevejobs

>ничем. Кроме того что любители текстовых конфигов взвоют, что им сериализованный yaml неудобно править текстовым редактором.
Сериализованный yaml легко правится текстовым редактором. Конфиги в той же симфонии или в рельсах в нем идут.

Tark ★★
()
Ответ на: комментарий от Tark

>И чем сохранение объектов в no-sql базу отличается от сериализации объектов в формате YAML на диск?

Чем это будет принципиально отличаться от нынешних конфигов?

RedPossum ★★★★★
()
Ответ на: комментарий от RedPossum

>Чем это будет принципиально отличаться от нынешних конфигов?
Ничем, это в сущности они и есть.

Tark ★★
()
Ответ на: комментарий от Tark

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

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

если все программы будут хранить конфиги в ямле

Осталось уговорить всех программистов. Займись этим.

ugoday ★★★★★
()
Ответ на: комментарий от stevejobs

> если все программы будут хранить конфиги в ямле, причем этот конфиг можно будет однозначно получить независимым от дистрибутива и ОС способом - я согласен)

При портировании между дистрибутивами и ОС есть гораздо более серьёзные проблемы, учесть несколько путей конфига - мелочь.

melkor217 ★★★★★
()
Ответ на: комментарий от melkor217

портирование не нужно

если программа может все ресурсы получить с помощью универсальных дистро-независисых запросов, то для нее все дистрибутивы одинаковы

выборку таких параметров можно, кстате, также встроить в тот самый «реестр». в ветку HKEY_CURRENT_CONFIG/Distro/Generic oh shi~!!!

или что, есть какие-то вещи, которые так принципиально нельзя получить?

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

> если программа может все ресурсы получить с помощью универсальных дистро-независисых запросов, то для нее все дистрибутивы одинаковы

Способ получения у тебя сливается со способом хранения. Посмотри мой пост чуть выше.

melkor217 ★★★★★
()
Ответ на: комментарий от melkor217

> Способ получения у тебя сливается со способом хранения.

Потому что им занимается одна и та же система
Например, есть настройка 'org.myapp.window.size".
Можно спросить registry_get('org.myapp.window.size"), и точно такой же командой можно записать его registry_set('org.myapp.window.size", value). А какая уж будет реализация этого действия - на совести реализации драйвера реестра для каждого конкретного дистрибутива.

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

> если все программы будут хранить конфиги в ямле, причем этот конфиг можно будет однозначно получить независимым от дистрибутива и ОС способом - я согласен)

Вайн пытался сделать большой реестр, как в Windows, но сделать его чисто текстовым. Выглядит как разумный компромисс. Первые лет 15 объёмы были невелики, работало приемлемо. Сейчас реестр разросся, читать его каждый раз стало долго, поэтому от текстового реестра решили отказаться.

И это будет с любым централизованным хранилищем конфигураций в достаточно сложной системе.

question4 ★★★★★
()
Ответ на: комментарий от RedPossum

> Конфиги в линуксе нужны оттого, что программы падают. Так и запишем.

В общем, да. Система текстовых конфигов децентрализованнее и избыточнее сжатого бинарного реестра. Поэтому надёжнее и легче восстанавливать.

question4 ★★★★★
()
Ответ на: комментарий от stevejobs

> понятия не имею. Чесна. По мне так все эти конфиги - зло, и они должны генериться автоматически на основе текущего состояния программы.

Как? Взять все глобальные переменные и записать их в базу данных? Глобальные переменные тоже считаются злом. Да и может быть недостаточно сохранить только их. Сохранять и все локальные тоже? Поздравляю, реестр уже разбух до сотен мегабайт от одного браузера :)

Конфиги необходимо вдумчиво проектировать. И по сравнению с этим нет большой разницы, пропускать их через движок БД, или парсер-генератор ini или XML.

question4 ★★★★★
()
Ответ на: комментарий от question4

сейчас винты идут терабатными размерами. с сотнями мегабайт ты переборщил, а вот десятки мегабайт для крупных приложений - вполне можно пережить. btw, Adobe Creative Suite после установки весит гигов 13...

stevejobs ★★★★☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.