LINUX.ORG.RU

Без шума и пыли вышла очередная версия кроссплатформенной библиотеки libconfig 1.1.2


0

0

Почему-то на ЛОР мало упоминаний о данной библиотеке. Но я лично использовал ее в нескольких кроссплатформенных проектах и считаю, что она очень проста, удобна в использовании и достойна внимания сообщества ЛОРа :)

Libconfig - простая библиотека для обработки структурированных файлов конфигурации. Этот формат является более компактным и более удобным, чем XML (ознакомится с ним можно на сайте проекта).

Библиотека содержит заголовки для обоих C и C++ языков программирования. Ее можно использовать на POSIX-совместимых UNIX системах (GNU / Linux, Mac OS X, Solaris, FreeBSD) и Windows (2000, XP и выше).

Лицензия: LGPL

>>> Сайт проекта

Ответ на: комментарий от Farcaller

>Когда надо - удобно править в vim.

Это только когда ты досконально знаешь, что там может быть.

А когда ты софтину поставил и нужно пару параметров подправить (которые еще нужно найти), а конфигурялка в todo?

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

>Как у libconfig, например, с русским языком? Беглое изучение документации ничего не нашло.

Это как?

Будем писать "Правда/ложь"? Или чего?

И по кой в конфигах перекрестные ссылки?

Мы же о конфигах говорим, не о документах?

jackill ★★★★★
()

XML хренов тем что одинаково неудобен как для машины так и для человека. Юзается, потому как писк моды: это скоро пройдет...

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

> Будем писать "Правда/ложь"? Или чего? Мы же о конфигах говорим, не о документах?

А если example="Заголовок" ? ;)

DOKA
()
Ответ на: комментарий от jackill

>> Как у libconfig, например, с русским языком? Беглое изучение документации ничего не нашло.

> Это как? Будем писать "Правда/ложь"? Или чего?

user.realname="Иванов Пётр Сидорович"

> И по кой в конфигах перекрестные ссылки? Мы же о конфигах говорим, не о документах?

confdir=/etc

mainconfig=$confdir/main.conf

Друх, не отвечай мне больше. Или, для разнообразия, включи моск. Впечатление от твоих постов гнетущее, чесслово.

execve
()
Ответ на: комментарий от anonymous

> О, Великий Гуру конфигов! Расскажите, нам, отсталым, чем же так плох XML-based конфиг?

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

key value

или

key = value

В xml это бы выглядело, как

<key>vlaue</key>

или

<key value="value" />

что засоряет экран и добавляет дискомфорта. Если говорить о хранении в xml древовидной конфигурации, которая будет правится извне, а текстовый файл будет аварийным способом внесения изменений, когда конфигуратор не способен прочитать повреждённый файл, то это хорошо. Но для непосредственного использования в конфигурировании xml менее преспособлен, чем конфиги apache или bind.

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

> Будем писать "Правда/ложь"? Или чего?

Он имел ввиду: "что если в конфиге строку сохранить надо?".

atrus ★★★★★
()

Классно, как раз начинаю осваивать!

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

> ...вендореестр...
Ты конфиги хранишь в реестре? О_о

UVV ★★★★★
()

Интересно, а по ссылке один я сходил?
Ведь на сайте то версия 1.1.1, а не 1.1.2!

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

Вот умникам:

С каких пор дефакто кроме как в поделиях быдлопрогеров? Пусть суют только туда куда надо и почему плодить еще более радикальные поделия если уже есть годами вылизаный libxml2? Лучше которого пока ничего не придумали. Криво сунутый XML намного хуже чем его вообще небудет.

anonymous
()

И охота вам ссвой XML пихать в каждую дыру... На сайте libconfig прямо на заглавной странице написано, что они ее предлагают юзать там, где есть ограничения на количество памяти. Всякие наладонники и ембеддеды. Ибо всего 25 кило вся библиотека.

petrosha ★★★★★
()

Да ладно вам! Тут повода для флэйма нет!

И xml и libconfig созданы, каждый под свою задачу.

Я года 3 назад писал прогу по автоматическому кодированию музыки all>ogg, нормализации и раскидывании по нужным каталогам. Там весь конфиг - 10 строк (пути, параметры получаемого фйла...). В этой ситуации использование xml неоправдано libconfig тут наиболее оправданое решение. Получаем конфиг для ручного редактирования без лишних символов и отсутствия такого слона, как xml.

Если к примеру надо делать сэйв или описание карты к игрухе, то xml тут и удобнее и оправданее. Редактировать, автор этого конфига, его сможет не напрягаясь при этом получая максимум удобных для него возможностей.

ИМХО каждому свое место!

anonymous
()
Ответ на: комментарий от ananas

> у этой либы есть какие-то принципиальные отличия от confuse (http://www.nongnu.org/confuse/)?
А confuse кроссплатформенная?
Я просто сейчас смотрю и это и то, и не вижу, чтобы confuse была кроссплатформенной!

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

> А confuse кроссплатформенная?

не знаю. меня больше волнует удобство использования, а не кроссплатформенность

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

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

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

> А почему не в <color rgb="#A07040"/>?

А зачем в этой строчке дополнительные значки '<' и '/>' ?

Они что - помогают чтению?

А может - разбору?

anonymous
()
Ответ на: комментарий от Eugeny_Balakhonov

> Вопросы пожалуйте к разработчикам проги, которая так извращается над
> своим конфигом.

Уважаемые разработчики tomcat - я так затрахан вашими конфигами. Далее
Уважаемые разработчики ant - я так затрахан вашими конфигами. Далее
Уважаемые разработчики gnome - если в конфигах предыдущих разработчиков я разобрался скурив мешок конопли, то с вашими dump garbage storage я разобраться не могу даже после двухдневного висения вверх ногами. Я не пойму какие тяжелые наркотеги вы употребляете. Подскажите своего дилера чтобы я мог понять закаким хреном у вас везде такой кривой XML?

Ну и наконец: Уважаемые разработчики Microsoft Office в вашем последнем поделище разбирайтесь сами.

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

> user.realname="Иванов Пётр Сидорович"

Конечно все работает! Иначе бы я ее не использовал

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

> Конечно все работает! Иначе бы я ее не использовал

Здорово! А как именно работает? В какой кодировке должен быть этот "Иванов Пётр Сидорович"?

execve
()
Ответ на: комментарий от TeknoMatik

> Зачем изобретать новый велосипед, когда старый добрый XML подходит практически для любых задач!

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

Под каждую задачу имеет смысл городить свой формат конфигов, который будет оптимален. Например, отлично оформлены конфиги lighttpd. Для простых случаев можно юзать классические ini. Нужно готовое и переносимое - JSON. Для вычисления выражений на ходу - Lua. Скриптовики могут просто юзать свой язык сразу и для конфигов.

yk4ever
()
Ответ на: комментарий от execve

> Здорово! А как именно работает? В какой кодировке должен быть этот "Иванов Пётр Сидорович"?

В какой кодировке напишешь "Иванов Пётр Сидорович" в той и будет.

Я, например, определился что у меня конфиг будет в кодировке cp1251 поскольку программа в основном работает под виндовс. И при загрузки текста из конфига делаю cp1251->utf8

Mrak ★★★
() автор топика

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

anonymous
()
Ответ на: комментарий от yk4ever

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

Особенно заметна долгая работа по словам "трудно парсить".. а уж "слишком сложен" он может быть разве что для питекантропа.

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

хорошо, приведи пример кода для реализации на xml такого случая:

wxConfig config( _("MyApp") ); config.SetPath( _("/NewGroup") ); config.Write( _("NewValue"), _("1") );

...

wxConfig config( _("MyApp") ); config.SetPath( _("/NewGroup") ); wxString t_strValue = config.Read( _("NewValue") );

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

lester ★★★★
()

В велосипедном полку прибыло. Да здраствует велосипедостроизм! Даешь юзерам кучу lib* делающих одно и тоже в зависимостях, чтобы ОЗУ трещало по швам, а юзеры утонули в SO-Hell.

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

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

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

> Я, например, определился что у меня конфиг будет в кодировке cp1251 поскольку программа в основном работает под виндовс. И при загрузки текста из конфига делаю cp1251->utf8

Вооот.

А если у пользователя неWindows стоит .KOI8-R или .UTF-8 (или какой-нить .ISO8859-5), то и редактировать конфиг он по умолчанию попытается в той же кодировке (потому что для типичного редактора такой конфиг - это обычный plain text с неизвестной кодировкой). И сломает всё.

Т.е. нужно писать инструкцию "конфиг редактировать в CP1251!!!", при загрузке проверять что всё сконвертировалось, и надеяться что ничего не сломается.

execve
()
Ответ на: комментарий от Mrak

Ну хорошо, а что с валидацией?

Я хочу, например, чтобы в группу group1 входили переменная var1, массив a2 и групп groupZ, а на всё остальное загрузчик конфига ругался бы. Вдруг пользователь ошибся - написал параметр из groupXXX в мою group1 - хочется не молчать, а предупредить его об ошибке.

Это как-то автоматически решается? Изучение доки опять-таки ничего не нашло.

И как пользователь вообще узнаёт, какие в конфиге есть группы и что в этих группах можно писать?

execve
()
Ответ на: комментарий от anonymous

>Хмм.. а мне понравилось. Если потребуется что-либо более сложное чем ini, то обязательно попробую сию либу. Ибо хмель - блевотина. С таким же успехом можно использовать двоичный конфиг.. :Е

Хм.. а если .conf-файл будет весить 2-а мега у тя прога будет тормозить страшно пока там отыщутся нужные значения..

dragon_djanic ★★
()

     version = "1.0";
     
     application:
     {
       window:
       {
         title = "My Application";
         size = { w = 640; h = 480; };
         pos = { x = 350; y = 250; };
       };

Превед, велосипед!

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

> Прошу прошения, но XML - стандарт де факто, а это поделие на что претендует? Бессмысленный проект, имхо.

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

Gharik
()
Ответ на: комментарий от SergeDaniloff

> > Also, XML - это язык _разметки_

> И что такое по твоему разметка гипер текста?

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

Gharik
()
Ответ на: комментарий от execve

> Но как задумаешься о кодировках, искейпинге, валидации, поддержке чего-нить типа перекрёстных ссылок и прочих давным-давно решённых в рамках XML проблемах, так сразу становится грустно.

Угу, так и запишем - UTF8 ниасилил, перекрёстные ссылки в файлах конфигурации - это вообще жесть! С ресурсами приложения случаем не путаем? ;)

> Как у libconfig, например, с русским языком? Беглое изучение документации ничего не нашло.

Эээ? Ну я даже говорить ничего не буду, вроде и без того всё понятно :) Автор, объясните, нафиг в файле __________________конфигурации__________________ русская езыга? =)

Gharik
()
Ответ на: комментарий от lester

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

По моей логике для такой базовой операции как чтение/запись конфига должно быть единое стандартизированное решение, набор функций, желательно в libc. Так же как с getopt(). У винды, кстати, функция для разбора ini-файлов встроена в стандартное API, GetPrivateProfileString(), а здесь наблюдается клепание множества велосипедов, которые не хуже и не лучше друг друга, а только засирают систему своими либами.

anonymous
()
Ответ на: комментарий от execve

> Вооот.
> А если у пользователя неWindows стоит .KOI8-R или .UTF-8 (или какой-нить .ISO8859-5), то и редактировать конфиг он по умолчанию попытается в той же кодировке (потому что для типичного редактора такой конфиг - это обычный plain text с неизвестной кодировкой). И сломает всё.
> Т.е. нужно писать инструкцию "конфиг редактировать в CP1251!!!", при загрузке проверять что всё сконвертировалось, и надеяться что ничего не сломается.

Общий вывод - проще расстрелять ретроградов, в 21 веке пытающихся всё делать в каких-то "кодировках", чем доказывать всем подряд крутизну libconfig.

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

> Автор, объясните, нафиг в файле __________________конфигурации__________________ русская езыга? =)

Ты случайно не клон jaчегототам?

execve
()
Ответ на: комментарий от miroku108

> XML - это отстой де факто.

Аргументов, как всегда не дождёмся?

> А здесь мы имеем вполне приятный синтакисис конфиг-файлов, удобный для ручной правки.

Угу. Особенно умиляют кавычки и точки с запятой. Автор курил много дури. Похоже, что вы - тоже.

> XML - это язык _разметки_ и для конфигов его используют только дебилы

Правильно, а разметки для чего? Как раз подходит разметка для конфигов. В GNOME/KDE/fd.o сидят умные люди, а не деградирующие code monkey. ;)

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

> Особенно заметна долгая работа по словам "трудно парсить".. а уж "слишком сложен" он может быть разве что для питекантропа.

Юноша, а вы, например, с SOAP много работали? WSDL там, проверка схемы, ЧЕТЫРЕ различных метода оформления передаваемых параметров (это как минимум). А что случится с XML-парсером, если в начале документа будет что-то отличное от <?xml?

Область применения языков разметки - это текстовые документы с разметкой. ВСЁ. Из всех остальных мест их надо гнать ссаными тряпками. Как сериализаторы - они нихрена не годяццо.

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