LINUX.ORG.RU
ФорумTalks

[Advice thread] Файлы конфигурации


0

1

Какой формат файлов конфигурации Вам кажутся наиболее удобными? Приведите примеры.

Каким образом лучше отразить дерево зависимостей в файле конфигурации?

Какие готовые решения можете порекомендовать для программы на C, с учётом того, что используется пока только POSIX?

Навеяно темой http://www.linux.org.ru/forum/development/6453702. Меня всем устраивает xml+XQuery+XMLSchema, но поставило в тупик:

у тебя нет выбора, кроме xerces-c. схему больше никто из опенсорсных не поддерживает.

Поэтому обощил вопрос.

★★★★

Последнее исправление: DarkAmateur (всего исправлений: 1)

xmlные файлы конфигурации, которые предполагается править руками, вкорячивают только лентяи и имбецилы.

baverman ★★★
()

xml конфиги а-ля tomcat - это то самое, чего бы я хотел видеть поменьше.

zgen ★★★★★
()

Афтар, при закрытии тупо сериализуй в файл всё состояние программы любым удобным методом =) А настройки править из гуя той же программы. Главным становится не формат конфига, а гуй, поэтому безразлично, каким методом производится сериализация-десериализация, главна щобы одинаково.

//а любители править текстовые конфиги - ССЗБ, пусть выкручиваются как хотят. Впрочем, они умеют выкручиваться.

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

>Афтар, при закрытии тупо сериализуй в файл всё состояние программы любым удобным методом =) А настройки править из гуя той же программы.

Уже представил себе правку конфига httpd через ssh -Y...

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

За конфиги в хмл я бы убивал.

А я бы яйца отрывал за использование в конфигах велосипедов вместо стандартного XML.

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

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

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

Единственные расово верные конфиги вида параметр=значение. А все эти ваши XML для человека не предназначены.

Конфиги вообще не предназначены для сферического человека в вакууме. Они только для квалифицированных технических специалистов.

А т.к. с их машинной обработкой много геморроя

При использовании нормальных инструментов, никакого геммороя с редактированием xml-я нет (поверьте человеку, работающему с j2ee уже много лет и написавшему этих конфигов over9k).

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

Почему не хочу редактирования вручную? Если человек может разобраться что к чему то зачем ему создавать дополнительный гемморой с разбором бинарников?

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

Конфиги вообще не предназначены для сферического человека в вакууме. Они только для квалифицированных технических специалистов.

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

При использовании нормальных инструментов, никакого геммороя с редактированием xml-я нет

Это жуткие тормоза.

Почему не хочу редактирования вручную?

Потому что XML и редактирование вручную - несовместимые понятия.

// Кстати был как-то не очень давно довольно длинный срач по поводу конфигов в XML. Вроде бы там даже самые неадекваты согласились, что XML придумал больной на голову человек.

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

>При использовании нормальных инструментов, никакого геммороя с редактированием xml-я нет (поверьте инопланетянину, работающему с j2ee уже много лет и написавшему этих конфигов over9k).

fixed

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

Вот и я о том же: JSON - наилучший формат для конфигурационных файлов, которые предназначены для ручной правки. Если ручная правка не нужна, лучше всего бинарный формат.

Eddy_Em ☆☆☆☆☆
()

Немного ясности: необходмо для ручной правки, для построения иерархических структур, предполагается написание почти с нуля.

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

>Ага, а компьютеры вообще не предназначены для домохозяек. С ними должны работать только квалифицированные специалисты. Но домохозяйки почему-то об этом не знают.

Не передергивай. Домохозяйки должны ткнуть пару галочек в настройках (а в идеале вообще одну кнопку - «сделай мне зашибись») и пользоваться программой. А не копаться по конфигам. А если уж лезешь в конфиги - будь добер разбираться в том куда лезешь.

Это жуткие тормоза.


Что жуткие тормоза? Я же тебя не прошу эклипс запускать ради правки пары значений в файле. С этим запросто справляется встроенный редактор mc или vim.

Потому что XML и редактирование вручную - несовместимые понятия.


И как только их люди редактируют-то?

Кстати был как-то не очень давно довольно длинный срач по поводу конфигов в XML. Вроде бы там даже самые неадекваты согласились, что XML придумал больной на голову человек.


Может он и больной на голову. Но XML - это стандарт. Со всеми вытекающими последствиями, типа подсветок синтаксиса в любом редакторе, а в продвинутых еще и всякие folding, validation, autocomplete etc.

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

Может и инопланетянин. Поэтому, в отличии от всяких людишек, не стараюсь изобретать велосипеды там где это не нужно и набивать шишки на ровном месте.

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

Наверняка инопланетянин: человеку JSON понятен. В отличие от xml (в котором, к тому же, чрезмерная избыточность)

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

Наверняка инопланетянин: человеку JSON понятен. В отличие от xml (в котором, к тому же, чрезмерная избыточность)

Лично мне понятно все. И xml и s-expr и json. Просто использовать стоит xml, как наиболее удобный и с точки зрения пользовательской так и с машинной обработки.

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

Можно немного модифицированный JSON - как в конфигах апача.

Велосипедостроитель detected. Сначала чуть-чуть модифицированный, потом еще чуть-чуть, а потом и еще чуть-чуть. В итоге получим ни с чем не совместимое нестандартное уебище.

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

> Можно немного модифицированный JSON - как в конфигах апача.

Конфиги апача больше на xml похожи. Немного модифицированный JSON это bind'овские конфиги.

atrus ★★★★★
()

>xml

не пригоден для ручного редактирования.

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

ты лжёшь

На вкус и цвет фломастеры разные. Мне вот XML удобнее всего редактировать.

Nagwal ★★★★
()

Кстати, если бы ТС повнимательнее поискал, то набрел бы на уйму тем и срачей XML-vs-JSON: раз; два ну и более старые.

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

>Может он и больной на голову. Но XML - это стандарт. Со всеми вытекающими последствиями, типа подсветок синтаксиса в любом редакторе, а в продвинутых еще и всякие folding, validation, autocomplete etc.

Вы так говорите, будто XML - это единственный стандарт.

AptGet ★★★
()

Тред-детектор неосиляторов xml.

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

> Конфиг на тыщу страниц

За такой конфиг надо убить тех жабабыдлокодеров, которые его сделали.

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

По собственному опыту скажу, что это _превосходнейшая_ либа для работы с конфигами в иерархической форме. Я даже пытался сделать патч в нее для более удобной загрузки-чтения структур (а не скалярных данных, как в оригинале), однако, он несколько не стыковался с главной линией философии libconfig.

Будет нужно - могу отослать код для загрузки-чтения структур с классной валидацией ошибок.

Короче, я советую libconfig.

bk_ ★★
()

Какой формат файлов конфигурации Вам кажутся наиболее удобными? Приведите примеры.

.properties

# show messages at the INFO and above levels.
handlers= java.util.logging.ConsoleHandler
# default file output is in user's home directory.
java.util.logging.FileHandler.pattern = %h/java%u.log
java.util.logging.FileHandler.limit = 50000
java.util.logging.FileHandler.count = 1
java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter

# Limit the message that are printed on the console to INFO and above.
java.util.logging.ConsoleHandler.level = INFO
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

Каким образом лучше отразить дерево зависимостей в файле конфигурации?

Они сами-собой отражаются.

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

Смотри здесь https://github.com/zdo/zexam

Это мой недописанный проект. Смотри в src/core/ , например, zquestion.c

Там функции config2_*

Там, кажется, я уже приделал работу с GList вместо самопальных списков.

Лицензия - GPL3.

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