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

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

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

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

Не осилили отступы? Такие перлы может выдавать только человек, который и двух раз с XML не поработал... ;)

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

> Пока обозреешь километровую цепочку тегов (тоже немаленьких), уже забудешь, что править хотел.

Это в notepad.exe? Нормальные редакторы с фолдингом не видели даже на картинках? :)

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

> XML хренов тем что одинаково неудобен как для машины так и для человека.

А чем для машины неудобно? Или вы про Микрошу говорите? По поводу удобства для человека - и давно народ повально начал читать сырые XML? Это разработчику нужно и то - крайне редко.

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

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

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

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

Слушайте, молодой человек, весь прогрессивный мир уже согласился, что SOAP --- язва на теле Земли, которую еще пихают всюду. И не потому, что он основан на XML, а потому что это типичный over-engineered стандарт.

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

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

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

вам говорят: XML плохо читаем/редактируем _человеком_, а вы отвечаете: это и не нужно. не нужно забивать гвозди головой.

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

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

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

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

Чем больше ругает человек XML, тем некомпетентнее он в этой области.

Так и представляю: DnD для маргинальных разработчиков: садятся в кружок и данжон-мастер придумывает трудности с разгребанием XML. Это уже за гранью добра и зла... ;)

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

> прошу код с xml в студию


Пример из http://developer.kde.org/documentation/tutorials/kconfigxt/kconfigxt.html

#include <ExampleSettings.h> 
... 
void ExampleClass::readConfig() { 
        m_server  = ExampleSettings::serverName(); 
        m_port    = ExampleSettings::port(); 
} 
void ExampleClass:saveSettings() { 
        ExampleSettings::setServerName( m_server ); 
        ExampleSettings::setPort( m_port ); 
        ExampleSettings::writeConfig(); 
}

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

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

wx-ники еще давным давно хотели все засунуть в пространство имен wx и убрать эти угребищные wxBlabla. неужели еще не переделали???!!! ужас!

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

эти угребищные wx здорово помогают при автродополнении :), да и на глаз сразу видно, что wx-е, а что твое

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

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

Например, имена и пути, которые могут содержать нелатинские символы.

Мсье из поколения чупа-чупс? Как говорят на одном так любимом этим поколением ресурсе насчёт "езыга" - "жжошь". ;)

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

>Например, имена и пути, которые могут содержать нелатинские символы.

Ничто не мешает значением одного из ключей указать кодировку

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

> Например, имена и пути, которые могут содержать нелатинские символы.

А причём здесь какие-то символы? Мсье не путает "шрифт" и "юникодовые данные в файле? ;)

> Мсье из поколения чупа-чупс? Как говорят на одном так любимом этим поколением ресурсе насчёт "езыга" - "жжошь". ;)

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

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

>эти угребищные wx здорово помогают при автродополнении :), да и на глаз сразу видно, что wx-е, а что твое

ну так wx::Blabla тоже на глаз отличается от my_own::Blabla. питоньщики вроде специально "ремапинг" имен делают чтобы убрать эти wx пришлепки и вынести все в пространство имен (модуль) wx. дело вкуса конечно, однако код со всеми этими wx создает впечатление вынлядит неряшливости...

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

по-моему wxBlabla бестрее написать и красивее смотрится чем wxWidgets::Blabla, одна из причин того что я ушел с fltk была в том что они во второй версии сделвли namespace, а учитывая что названия у них самые простые, которые часто и сам можешь употребять, то приходилось везде расставлять те самые ::

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

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

полностью соглашусь, что xml-сонфиги (размером хотябы в 1 страницу) очень плохо читаемы, однако для каждой проги свой конфиг - это каша и куча мала. вместо xml-а с дтд и xml-схемой для конфигов мне кажется вполне подходит lua. синтаксис значительно проще и понятнее чем дтд и xml-схемы, функциональность неизмеримо больше, размер парсера (~25K) более чем на порядок меньше, скорость разбора (валидации и выполнения) значительно выше.

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

>по-моему wxBlabla бестрее написать и красивее смотрится чем wxWidgets::Blabla

вы очевидно имели ввиду wx::Blabla. если напрягает :: всегда есть using 'namespace wx;' и просто Blabla. или вы отвергаете целесообразность namespace-ов как таковых? тогда я вас боюсь.

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

для меня важнее сходу разобраться в чужом коде:

t_ulPort - временная переменная, тип unsigned long a_pWindow - аргумент функции, указатель wxSocketBase - ага, класс из wx, раньше с ним не работал, но зная, что он wx-й сейчас быстро посмотрим про него в справочнике, а так стоял бы где-то в начале using namespace, я бы думал, что это и как с ним работать

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

> Правильно, а разметки для чего? Как раз подходит разметка для конфигов

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

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

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

last_login = "Иванов"

Вопросы? ;-)

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

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

lester ★★★★
()

Making humans edit XML is sadistic!

Тем отморозкам, что ратуют за повсеместный XML следует непременно отрезать пальцы ржавыми ножницами.

Впрочем, обсуждаемое поделие не вдохновляет тоже. Пользуйтесь YAML/JSON - это лучшее.

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

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

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

> для конфигов мне кажется вполне подходит lua

Вообще-то странно, уже третья страница, а никто до сих пор не вспомнил, о Lisp...

:-)

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

>Если к примеру надо делать сэйв

..то можно использовать маршалинг и не мучать моск. ;)

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

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

$xml = new SimpleXMLElement($xmlstr);
echo $xml->movie->plot;

Это - PHP. Если иные языки, то не сложнее. В KConfigXT я приводил в этом треде, прочие прекрасно справляются с XPath.

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

> вам говорят: XML плохо читаем/редактируем _человеком_,

Всё отлично читается и редактируется. Проверено на себе и я не разработчик. Может, я меня мозгов чуть больше, чем у питекантропа, и нет фанатизма? ;)

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

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

Друх, это уже не конфиг.. ;)

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

> Если уважаемый Skull прочитал бы тему с самого начала, то он бы увидел, что выше уже высказывалось, что в KDE используются обычные ini-шники.

Хреново вы KDE знаете - там не только ini. Интерфейс настраивается файлами .rc (см. ~/.kde/share/apps/). А это - XML. В KDE 4 идёт KConfigXT. Это тоже XML. Ознакомьтесь, пожалуйста, с историе вопроса, дабы не попадать впросак.

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

> смешно :) покажи код, который рельно достает и ложит в конфиг значения

На указанной странице как раз всё и прописано. Обычная практика LOR - никогда не ходить по ссылкам? ;)

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

> Ничто не мешает значением одного из ключей указать кодировку

К велосипеду приделываем треугольные колёса? ;)

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

> А причём здесь какие-то символы? Мсье не путает "шрифт" и "юникодовые данные в файле? ;)

А кто сказал, что будет Юникод везде? Вы?

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

Это и есть поколение чупа-чупс. На пару с некоторыми убунтовцами. ;)

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

сходил - или я не разобрался, или там предлагается вручную xml файл создавать, это для ежиков что-ли? Тем более опять же это прослойка, реальное чтение/запись скрыты, а код генерится автоматически, как быт ь тем кто не пользуется kde? писать тот же код руками? могу поспорить в нем черт ногу сломит.

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

> xml предназначен для разметки текста, а не конфигов.

XML предназначен для структурирования текстовых данных. В том числе и для конфигурации. Вы всё ещё думаете, что XML - для разметки. Тогда санитары уже выехали... ;)

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

>Вообще-то странно, уже третья страница, а никто до сих пор не вспомнил, о Lisp...

Правильно, даешь Тьюринг-полные конфиги!

Это для тех, кому ХМЛь кажется слишком простым, ведь определение валидности Тьюринг-полного конфигурационного файла -- это, по сути, задача о самоприменимости алгоритма, а она неразрешима.

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

> Для конфигов, которые должны редактироваться человеком

А какие конфиги должны редактироваться человеком? И какими средствами?

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

> А в кедах используются обычные ini-конфиги.

формата microsoft ini? o_O

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

> как быть тем кто не пользуется kde?

Использовать свои средства.

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

Просто в KDE заботятся о людях. Наружу даётся удобный API. И нечего придумывать велосипеды.

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

> Использовать свои средства какие? может такие и есть, но после expat я к xml возвращатся не хочу, а писать свое просто нет времени

> Просто в KDE заботятся о людях. Наружу даётся удобный API. И нечего придумывать велосипеды теперь мне надо людям, которые используют мою программу, говорить что им надо ставить себе linux + KDE чтобы она работала?

lester ★★★★
()

Всем, кто утверждает, что XML - суть зло для хранения данных настроек, плохо читается человеком и т.д:

http://ru.wikipedia.org/wiki/XML

Второе предложение:
"XML предназначен для хранения структурированных данных (взамен существующих файлов баз данных), для обмена информацией между программами..."

Файлы конфигурации не подходят в категорию "структурированных данных"?
Ваши настройки (и/или данные) никогда не понадобятся другим приложениям?

http://en.wikipedia.org/wiki/XML

Второй абзац:
"...is designed to be relatively human-legible."

За что боролись - на то и напоролись что-ли?
В W3C идиоты, конечно, сидят?

Вопрос от меня:
А что в других методах предлагается для валидации и трансформации?

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

> А что в других методах предлагается для валидации и трансформации? 

В лиспе для этого сам язык - беспрецендентно мощный, красивый стройный.

По поводу читабильности. Сравним. 

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE trd01 SYSTEM "trd01.dtd">
<trd01>
  <id>10234</id>
  <trade_type>equity</trade_type>
  <trade_date>2005-02-21T18:57:39</trade_date>
  <instrument>IBM</instrument>
  <value>10000</value>
  <trade_ccy>usd</trade_ccy>
  <settlement_info>
    <settle_date>2005-02-21T18:57:39</settle_date>
    <settle_ccy>usd</settle_ccy>
  </settlement_info>
</trd01>

И:

(trd01
  (id 10234)
  (trade_type "equity")
  (trade_date "2005-02-21T18:57:39")
  (instrument "IBM")
  (value 10000)
  (trade_ccy "usd")
  (settle_info
    (settle_date "2005-02-24T18:57:39")
    (settle_ccy "usd"))))


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

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

>Либцы такия, глибцы под гнусным соусом сякия ... Одним прогам подавай такие либцы, другим такие глибцы, и все они хреново совместимы между собой, но приэтом стремятся соответствовать всяким там позиксам

технический олпанский?

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

> взамен существующих файлов баз данных

ві себе представляете скорость работі с такой БД?

> А что в других методах предлагается для валидации и трансформации

какая разница какой метод, везде можно єто реализовать, если надо

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

Фанатизм - это когда даже программу размером 40к вы связываете с н-метровой libxml2 для сохранения 2 параметров

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

> А что в других методах предлагается для валидации и трансформации?

Валидатор корректности формата - это парсер. Валидатор значений - в коде.

Трансформация - в коде. На нормальных языках это гораздо удобнее, чем всякие там XSLT.

В w3c сидят идиоты, да. Поскольку XML - очень оверкилльный формат. В нём ОЧЕНЬ много лишнего. Он плохо читается - пары тегов рябят в глазах, стандартизации по отступам нет. Кроме того, он неоднозначен. Как писать: <key>value</key>? или <key value="value" />?

Нафиг, нафиг. Совершенно незачем из пушки по воробьям лупить.

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