LINUX.ORG.RU

yoctoXML - маленький и быстрый XML парсер

 , , , ,


0

0

Вышла первая версия простой библиотеки для работы с XML -- yoctoXML (yXML). Это очень компактная и простая библиотека, открытая по лицензии "modified BSD" (GPL-совместима). yXML всех возможностей XML не поддерживает, однако достаточна для хранения и обработки конфигурационных данных, к примеру. Очень проста в использовании. Написана на Си и занимает менее 300 строк (комментарии есть, разобраться и модифицировать легко).

>>> Подробности



Проверено: Shaman007 ()
Ответ на: комментарий от Deleted

Настраивал dovecot в первый раз. Открыл dovecot-example.conf и, читая комментарии к опциям, спокойно настроил. Заработало с 5 раза. Так, как хочу, заработало с 7 :) Когда свершился переход на ветку 1.2.х, некоторвые опции поменялись. Формат - не изменился. Так что мимо насчёт "читаем правим". Читать надо Сhangelog'и

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

И сколько таких программы разных ты правишь? Если 1 или 2, то это ничего страшного, а вот если счёт пойдёт на десятки и у всех свои форматы, то это не особенно радует :}

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

На венде не работает эффективная policy-based маршрутизация, эффективная stateful фильтрация трафика и эффективное проксирование чего бы то ни было. А также exchange - тормозной неповоротливый уродец. И вообще сетевые сирвисы винды совершенно негибкие в настройке

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

Как показывает практика, формат в основном один - param=value, иногда с мелкими, но приятными дополнениями (например, многострочный value у postfix)

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

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

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

Так ведь там есть для всего этого энтерпрайз приложения, они всё умеют и с поддержкой. *тут можно ещё про нищебродство написать, для пущего эффекта* :}

exchange мне, к моему счастью, никогда в руки не попадал…

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

А чтобы меня не считали xml-оненавистником, замечу, что в RSS XML очень даже кстати

То есть основная мысль - XML хорош для данных прикладных программ (и то не везде). Но никак не в настройках.

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

ISA не умеет того, что умеет netfilter. Мой любимый вопрос вендоадминам - а где у вас tarpit?

Exchange и близко в подмётки не годится связке любого линуксового MTA и MAA. Не зря у микрософта в качестве прокси к эксченджу стоит тот же postfix. Ищущим groupware рекомендую обратить внимание на horde

Кто там за маршрутизацию у них, не помню уже... Kerio что-то там? А policy-based с 200 таблицами есть?

И так далее. И все эти плюшки стоят ровно 0 рублей 0 копеек (если ещё и цену сравнивать). Так что очень неудачный пример с твоей стороны, но в оффтопик ты меня свалил :)

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

Эээ… тут было бы много слов, если бы у меня было больше познаний в этих вопросах оффтопика :}

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

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

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

Так в этом-то и была вся соль - понять, в чём критическая необходимость использования XML в конфигах

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

Авторов надо спрашивать. Лично мне бывает нужно некостыльную древовидность и отсутствие написания нового парсера, например.

А все эти выкрики в треде в духе «А зачем нужна древовидность?» и миллион способов развернуть дерево… ну пусть пишут свои парсеры с шахматами и поэтессами :}

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

>Ну хоть ты, ярый сторонник всякого шлака, ну приведи уже пример проги, которой жизненно необходим XML для хранения НАСТРОЕК (не формы, не компоновки интерфейса, а настроек).

Извини - что такое настройки определеяет разработчик. Если какой-то быдлокодер кроме как в делфи формочки кидать ничего не умеет - это его дело, а если грамотный разработчик в настройки запихнет всю прогу - то ему честь и хвала. Data Driven подход - рулит. Меньше кода - больше конфигурации -> гибче проги.

>А потом объясни, за каким органиом XML понадобился HAL'у


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

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


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

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

>Повторяю свой вопрос: зачем в конфигах xml?

Введи вот сюда чуть чуть параметров и многострочного текста:

>Файл

Открыть
Сохранить
Сохранить как
Текст
XML
Печать
Закрыть


....и поймешь что изобрел что-то очень близкое к XML.Потом зщадайся вопросов - ну и нафига этот велосипед?

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

>Если создатель программы - идиот и не смог спроектировать нормальное, удобное меню сразу, то его поделием пользоваться не стоит. ИМХО, конечно.

Ты под словами "спроектировать меню" подразумеваешь написать его на С-подобном языке который для этого подходит еще меньше? Вот те кто до сих пор так делают - действительно идиоты.

>Да, реализация хромает.


Дело не в реализации, а в сложности.

r ★★★★★
()

> yoctoXML - маленький и быстрый XML парсер

А чем им minixml не понравился?

Кстати, это чудо умеет пробегать по тегам с национальным алфавитом? В свое время только minixml это умел, правда только в кодировке UTF-16.

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

> Вот кусок с главным меню:

Ну и ? Где простота где экибана? Не вижу подавляющего преймущества перед XML. Можно так. Можно на XML. Сложность одного класса. Есть желание - изобретай такой формат пиши парсер. Нет желания - берешь любую либу парсящую на XML делаешь то же самое.

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

>Не надо плодить сотни велосипедов.

Ага...

> Есть YAML, param=value и, на крайний случай, libconfig


и тут же перечислил кучу велосипедов:)

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

>Каким образом xml тут экономит время мне неясно.

Он один из тех которыми бери и пользуйся.

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

>В ответ на пример с меню тебе привели компромиссный вариант, менее ресурсоёмкий и легко читаемый и корректируемый человеком.

Человек который не может прочитать тэжную разметку и одновременно вот это

m4_ifelse(m4_WIDTH,2560,`
SLS2x1
*FvwmPagerGeometry +1225-1
IconBox 1360 -64 -1 -1
# Uncomment this if you prefer the toolbar on the left monitor
#*CFHTStuffGeometry +1225+1
*FvwmPagerLabel 0 Pager Pager
')

называет "менее ресурсоёмкий и легко читаемый" надо выдавать белый билет вне очереди.

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

> Ты под словами "спроектировать меню" подразумеваешь

То, что меню находится в теле программы и не является конфигурируемым. А уж на чём оно там написано - дело десятое.

> Дело не в реализации, а в сложности.

Чем оно сложнее xml?

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

> Не вижу подавляющего преймущества перед XML

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

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

> Есть желание - изобретай такой формат пиши парсер

Всё уже написано до нас (с)

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

> называет "менее ресурсоёмкий и легко читаемый"

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

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

> и тут же перечислил кучу велосипедов:)

Ты будешь смеяться, но xml это ещё один, сто первый, велосипед ;)

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

>Мы всё ещё говорим о конфигурации GUI не так ли?

А что - трудно представить параметры для конфигурации GUI?

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

>То, что меню находится в теле программы и не является конфигурируемым.

И в чем же польза этого гениального решения? Давай запихни менб в тело программы fvwm. И что будет?

>Чем оно сложнее xml?


Чем оно легче XML?

Если ук тебя настройка в голове "все что угодно лишь бы не XML" - это твое дело. Это таракан.

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

> надо выдавать белый билет вне очереди

Человека, который заставляет вместо пары строк param=value городить вот это:

<?xml version="1.0" encoding="UTF-8"?> <!-- -*- SGML -*- -->

<!-- Some examples how to use hal fdi files for system preferences You can either uncomment the examples here or put them in a seperate .fdi file. --> <deviceinfo version="0.2"> <!-- The following shows how to hint gnome-volume-manager and other programs that honor the storage.automount_enabled_hint to not mount non-removable media. --> <!-- <device> <match key="storage.hotpluggable" bool="false"> <match key="storage.removable" bool="false"> <merge key="storage.automount_enabled_hint" type="bool">false</merge> </match> </match> </device> --> </deviceinfo>

нужно и вовсе расстреливать.

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

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

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

> Если ук тебя настройка в голове "все что угодно лишь бы не XML"

Верно, с небольшим дополнением " в конфигах".

Есть множество мест, где xml уместен и оправдан.

> Это таракан.

Причём, один из любимых. И всякий раз, как я редактирую конфиг hal он немножко подрастает.

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

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

Никто у него ничего не отбирал. Конфиг fvwm не проще любого XML.

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


Это не единственный плюс. Есть туча субспек типа x:inclue, x:pointer, возможность написать <age xs:type="xs:integer">29</age>, куча либ и стандартов биндингов и сериализации.

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

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

Зачем? Ты почему то уверен что XML должен из кожи вон лезть чтобы доказать что-то там а иначе "мы возьмем либконфиг". Не должен. Зачем мне любой другой особенно если он будет всего лишь подмножеством? В чем польза?

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

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

XML - текстовый конфиг. vi с ним справляется прекрасно.

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

> Это не единственный плюс.

Это единственный плюс для конфигурационных файлов.

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

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

> Зачем?

Изначально стояло утверждение о том, что xml позволит сэкономить время на написании парсера. Я говорю, что это утверждение ложно, поскольку парсер(ы) уже написаны.

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

>Пардон, погорячился и форматирование поехало. Впрочем, убеждён что для r не составит сложности прочитать эту несложную тэжную разметку.

Напиши на "тексте".

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

> vi с ним справляется прекрасно.

Месье робот? Или ты можешь набрать кучу тегов без единой ошибки?

На мой взгляд этот шанс серьёзно вырастает при переходе от нескольких строчек вида param=value к ним же, но в виде xml.

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

>Задача валидации конфига является нетривиальной и, в общем случае, нерешаемой. xml тут не поможет, только создаст иллюзию защищённости.

И зачем только схему изобрели....

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

1. Я говорил не про эту реализацию, а про реализацию с индентом. Она действительно соответствует написанному

2. Эх, вот когда деревья были размером с компьютеры, бородатые дядьки настраивали sendmail... А потом был m4, и было это совсем хорошо... Ну что, r, испугался уже? :) И как они тогда без XML-то обходились, глупые :)

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

>Я говорю, что это утверждение ложно, поскольку парсер(ы) уже написаны.

Эти парсеры совпадают по возможностям с XML? Какой парсер мне из

<user name="r" password="типа hash"/>

создаст объект вида: User { name:String = "r", password:String="типа hash" } в одну строчку?

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

>Месье робот? Или ты можешь набрать кучу тегов без единой ошибки?

Ты себе этот вопрос задлай можешь ли ты без единой ошибки набирать отакое:

#
',m4_ifelse(m4_env(SSO_PAGER),`0',`
DeskTopSize 1x1
*FvwmPagerColumns 1',`
DeskTopSize 1x'm4_env(SSO_PAGER)))
# The stuff on the pager will be 1/25 the full size.
DeskTopScale 24


Это твой любимы fvwmrc.

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

>Эх, вот когда деревья были размером с компьютеры, бородатые дядьки настраивали sendmail... А потом был m4, и было это совсем хорошо... Ну что, r, испугался уже? :) И как они тогда без XML-то обходились, глупые :)

Они изобрели XML. А ты думал откуда он взялся?

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

>Ага. Встроенный в голову парсер не справился? ;)

Справился. Я говорю напиши неXMLный аналог. Только хорошо присмотрись к уровню абстракции который они сделали.

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

>Ты удивишься, но вовсе не для конфигурационных файлов ;)

Для валидации XML документов.

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

>Это не болезнь а партабельность и совместимость технологии.

Ога-ога, давай послушаем сказочку на ночь о том, как совместимы XML-форматы разных версий стандарта.

>Это не болезнь а партабельность и совместимость технологии.

Таки это болезнь. Она называется "я ниасилил взять лёгкую и удобную библиотеку для конфигов". Ну вот хотя бы 5% разработчиков пишут XSD к своим конфигам? А если нет, то зачем они используют XML?

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

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

>Мы всё ещё говорим о конфигурационных файлах? Да, совпадают.

Серьезно? валидация по схеме? Аналог x:include? Десериализация в объекты целевого языка?

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