файл конфигурации (создание программ с собственным файлом конфигурации)

Модератор: Модераторы разделов

grub
Сообщения: 128
ОС: Slackware 12.0

файл конфигурации

Сообщение grub »

Практически все программы в Линукс и других Юниксах имеют два способа задания параметров: в командной строке с помощью различных опций и в специальном файле конфигурации. С первым способом все предельно ясно, используюя функцию getopt (и др) можно легко обработать параметры заданные пользователем при запуске программы. А вот второй метод...

В этом собственон и состоит вопрос "Кто как организует работу с файлом конфигурации? Существуютли какие-то стандартные методы-библиотеки организации таких файлов? Есть ли в линуксе что-то наподобие виндовыхъ ini файлов (в смысле функций работы с ними, записи ключей и их считывания)?"
Спасибо сказали:
ToniX
Сообщения: 11

Re: файл конфигурации

Сообщение ToniX »

IMHO, самое распространенное и стандартное решение - XML. Существуют много различных парсеров, причем в большинстве дистрибутивов и систем они есть и установлены (например, гномовский libxml2). Формат достаточно продвинут, можно легко работать со сложными древовидными конфигурациями. Да и для ручной правки он вполне удобен. К тому же, XML полезен не только для subj, но во многих других случаях, поэтому овладеть этой технологией будет отнюдь не вредно.
Спасибо сказали:
Аватара пользователя
Мак Сим
Сообщения: 231
ОС: Ubuntu 9.04

Re: файл конфигурации

Сообщение Мак Сим »

(ToniX @ May 30 2006, в 15:33) писал(а):IMHO, самое распространенное и стандартное решение - XML.


Это в линуксе то xml распространен??? Зайдите в etc. Только нектрые програмы его спользуют.
2:5020/8086.465
Мой открытый PGP-ключ тут
Dell Inspiron 2200 - Debian(testing)
Спасибо сказали:
Аватара пользователя
Asgard
Сообщения: 215
Статус: North Valfader

Re: файл конфигурации

Сообщение Asgard »

какого-то стандарта на конфиги a la posix не существует.
xml идёт лесом, т.к. обычно нужны конфиги представляющие собой набор не группированных опций.
библиотеки тоже нафиг не нужны, т.к. простейший конфиг - это
option_name[delimiter]value
так что парсится всё это тремя строчками в цикле.
sator arepo tenet opera rotas ;)
------------------------------------------------------------
LJ
Спасибо сказали:
Аватара пользователя
boombick
Сообщения: 516
Статус: Anonymous
ОС: ArchLinux 0.8 Voodoo

Re: файл конфигурации

Сообщение boombick »

Asgard писал(а):
30.05.2006 15:53
xml идёт лесом, т.к. обычно нужны конфиги представляющие собой набор не группированных опций.

Ну не знаю... Я бы сказал, что обычно конфиги предоставляют собой набор негруппированных опций... А сгруппировать их было бы очень даже неплохо :)
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: файл конфигурации

Сообщение KiWi »

Не буду оригинален:
В ПОИСК!
Спасибо сказали:
Аватара пользователя
Zeus
Сообщения: 694

Re: файл конфигурации

Сообщение Zeus »

Юзаю XML.
Не нашёл подходящего парсера - написал за пару дней свой.
Может и сырой, но парсит в DOM и сливает DOM в файл.
Со временем отладится, наберёт функциональность.
Спасибо сказали:
ToniX
Сообщения: 11

Re: файл конфигурации

Сообщение ToniX »

Asgard писал(а):
30.05.2006 15:53
какого-то стандарта на конфиги a la posix не существует.
xml идёт лесом, т.к. обычно нужны конфиги представляющие собой набор не группированных опций.
библиотеки тоже нафиг не нужны, т.к. простейший конфиг - это
option_name[delimiter]value
так что парсится всё это тремя строчками в цикле.


В простейшем случае - конечно да. Но для мало-мальски крупного проекта (или имеющего хоть небольшой шанс стать таковым) обычно это неудачное решение. Уже для хранения настроек GUI желательно иметь иерархическую структуру. Да и редактировать крупные конфигурационные файлы куда удобнее, когда они хорошо организованы и структурированы, а не навалены одной кучей. Тем более, существует множество XML редакторов, позволяющих очень удобно работать с документами. И вопрос не только в удобстве. Зачем заново изобретать велосипед, отлаживать и сопровождать его, когда есть готовые решения? Потратить время, силы и проиграть в функциональности... Лучше это время потратить на изучение XML, окупиться с лихвой.
Спасибо сказали:
Аватара пользователя
sergius
Сообщения: 782

Re: файл конфигурации

Сообщение sergius »

Я всегда пытаюсь избежать xml. ^_^
Спасибо сказали:
v04bvs
Сообщения: 636
ОС: Debian GNU/Linux

Re: файл конфигурации

Сообщение v04bvs »

Кстати многие программы, требующие сложных настроек, реализуют их в качестве скриптов на несложных интерпретируемых языках. Примеры - fvwm, ion, vim, emacs, и др. Поэтому мне кажется - для несложных программ несложный файл конфига, для сложных - вышеописанный подход. Хотя XML наверное тоже неплох, но к сожалению "руками" редактировать более-менее сложный XML очень неудобно.
Спасибо сказали:
ToniX
Сообщения: 11

Re: файл конфигурации

Сообщение ToniX »

v04bvs писал(а):
30.05.2006 19:20
Кстати многие программы, требующие сложных настроек, реализуют их в качестве скриптов на несложных интерпретируемых языках. Примеры - fvwm, ion, vim, emacs, и др. Поэтому мне кажется - для несложных программ несложный файл конфига, для сложных - вышеописанный подход. Хотя XML наверное тоже неплох, но к сожалению "руками" редактировать более-менее сложный XML очень неудобно.


XML - не панацея. Если конфигурационный файл должен содержать "активное" содержимое, типа циклов, ветвлений и т. п. , то, конечно, придется организовывать интерпретатор. Но такие задачи довольно специфичны (для текстовых редакторов, например) и относительно редки. Под сложностью конфигурационного файла я понимаю в первую очередь объем данных, в нем содержащейся, а также взаимосвязи между данными. И XML в данном случае очень неплох. Что касается сложности редактирования - то тут дело привычки. Хорошо структурированный и отформатированный документ легко понимать и редактировать. Плюс к этому существуют редакторы XML документов, позволяющие более комфортно редактировать файлы.
Спасибо сказали:
Аватара пользователя
Ardzhan
Сообщения: 57
ОС: Debian + WinXP на виртуалке

Re: файл конфигурации

Сообщение Ardzhan »

Я в своей программе использовал libconfuse (http://www.nongnu.org/confuse/), жалоб и нареканий не было, все очень удобно и гибко.
Спасибо сказали:
sdk
Бывший модератор
Сообщения: 210

Re: файл конфигурации

Сообщение sdk »

Все зависит от задач. Смотря что нужно писать/читать из конф. файла. И насколько часто.
Если простой - типа "имя=значение", то очень просто написать ручками.
К тому же, если программа пишется с использованием некой библиотеки (например, Qt, KDE), то сама библиотека может уже поддерживать работу с конфигурационными файлами.
Серьезность - это способ сделать простые вещи сложными.
Если много знать - устанут глаза. Если много спать - то нет.
Нас никому не сбить с пути - нам пофигу куда идти.
:-)
Спасибо сказали: