Здравствуйте, Cyberax, Вы писали:
C>Простите, моя работа — это не ходить и настраивать Linux'ы. Моя работы — C>писать программы, так что без работы я не останусь.
Вот именно. Ваша работа это писать программы. А вот моя работа — это эксплуатация этих самых программ. Не только и не столько линуксов и юниксов, но и их в том числе. И вот что мне видно из моего окопа.
Есть два класса ситуаций с хранением конфигов:
1) когда мне пофигу в каком формате хранится конфиг, пример: мой сотовый телефон — я настраиваю его через меню и меня совершенно не заботит, какая неонка у него внутре;
2) когда текстовый конфиг в отдельном файле предпочтительнее;
Ситуация, когда я бы предпочел конструкцию с бинарным, а уж тем более монолитным конфигом, противоречит всему моему опыту.
Текстовый конфиг хорош тем, что он, как ни тавтологично это звучит, текстовый. Это значит, что с конфигом можно поступать как с тестом. В нем можно grep'ать, его можно diff'ать, его можно положить в source management system, его легко генерить с помощью, скажем, перла. Сама по себе текстовость дает конфигу массу полезных свойств. Автоматически, просто в силу его текстовости, так сказать, в подарок, и без дополнительных усилий со стороны вендора.
Что касается файловой системы и конфигов, то хранение отдельных конфигов в отдельных файлах, это, натурально, blessing. Пусть нам надо передвинуть приложение "брамбрулятор(tm)" с тазика на тазик. В большинстве случаев надо просто скопировать конфиг /etc/brambulator.conf и все. С "базой данных настроек" будут глупые прыжки и ужимки. Пусть у нас есть high availability: два тазика, на которых крутятся одинаковые брамбруляторы и failover между ними. Естественно, нам надо, чтобы конфиги были идентичными. Обеспечить идентичность файлов /etc/brаmbrulator.conf на двух машинах куда проще, чем (*OMFG*) ветвей реестра.
Нет, конечно, эти все вопросы так или иначе решаются. И я, черт бы их всех побрал, умею их решать — мне за это деньги платят. Большие. Но, чесслово, моя жизнь была бы куда проще, если б конфиги были отдельными текстовыми файлами.
Дальше. Есть такое слово "ремонтопригодность". Слышали когда-нибудь? Важное свойство, между прочим. Вкратце, "ремонтопригодный" значит "если сломалось, можно залезть внутрь и починить", а "неремонтопригодный" означает "если сломалось, то пиши пропало, неси на помойку, чтобы не загромождать жизненное пространство". Так вот, конфиг, который я не могу починить vi'ем (а то и ed'ом), ремонтопригодным не считается и для реальной жизни не пригоден.
Я все понимаю. Красивый API, строгая "инкапсуляция", "ортогональность" и "абстракции" — это все очень хорошо. Но с чего взяли, что нас, ваших пользователей, это е^Hволнует? Нет у нас такой задачи про "инкасуляцию конфигурации". Нету, понимаете? Это Вы сами себе проблему придумали и ее теперь ее решаете. Пожалуйста, уж Вам это доставляет удовольствие. Только ее не за наш счет, ок? Все эти реестры, gconf'ы и прочая дребедень, совершенно непригодная к эксплуатации, — это продукт программистского отрыва от реальности.
Вот такой у меня для Вас наш сисадминский feedback.