|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Oleg Polyanski 2:5020/400 07 Jan 2002 09:14:33 To : Alex Korchmar Subject : Re: парсер конфигов -------------------------------------------------------------------------------- Alex Korchmar <Alex.Korchmar@p65.f423.n5020.z2.fidonet.org> writes: >>> OP> Конфигурационный файл должен быть XML-документом, >>> Чем обосновывается такое мнение? > > OP> Оно обосновывается на здравомыслии и практическом опыте. Кроме того, > покажите "практический опыт" Показываю: смотри на меня. Всё равно не понравится. > OP> у XML есть много полезных свойств, как-то: 1) возможность поддерживать > OP> иерархическую структуру конфигурационного файла неограниченной > у меня на машине, по-моему, нет ни одного конфигурационного файла с > иерархической структурой. Впрочем, если напрячься, можно придать таковую > httpd.conf. Hо я бы предпочел оторвать руки тем, кто сделал ему такую > запутанную семантику. Аминь. > OP> вложенности или разветвлённости, что становится актуальным в > OP> практически любой полезной программе, сложнее программы "Hello world"; > совсем нет. Обычно вполне достаточно двух или трехуровневой структуры, причем > один уровень частенько лучше вообще вынести в файловую систему. По мне - нет, если ты не о программах "Hello world". Я всегда конфигурационный файл отображаю в дерево внутри программы, в дерево свойств (properties) - это удобно и внутри программы (нет нужды прудить пруд глобальными переменными) и при синхронизации - есть набор атомарных операций, которые замораживают дерево в файле или восстанавливают дерево из файла. > OP> 2) чрезвычайно широкая распространённость XML как формата, большой > OP> выбор реализаций, на любой цвет и вкус; bindings есть для любого языка > выбор большой - только вот отсутствует a) компактная b) переносимая c) > работающая. Hо можно выбирать любую из трех. libexpat.so занимает у меня в Solaris/SPARC 175751 байт на диске, это, конечно же, а) офигительно некомпактно, да; b) разумеется, GNU autoconfigure улучшению переносимости нифига не помогает; c) да и не работает expat в Мозилле, конечно же; всё, что есть на экране - масляная кетаминовая дрёма. И выбора библиотек совсем нет, две с половиной тысячи пунктов в разделе XML на Google directories - это, конечно, пустое место. > OP> программирования; 3) возможность загрузить XML-конфиг в свой любимый > OP> гуй и увидеть его на экране в виде дерева, поредактировать его руками - > а _зачем_ его видеть в виде дерева? Хорошо, не смотри. > OP> 4) собственно, неужели этого мало? Hет, конечно, лучше всего для > собственно, это не имеет ни малейшего отношения к конфигам. > > OP> чтения конфигурационного файла использовать интерпретатор Lisp или > чем лучше? (правильный ответ -ничем) Тем, что из лиспово-схемных списков очень просто строить сложные структуры данных и гораздо легче их обрабатывать, чем в Сишных или плюсовых программах. Hе всякому ifconfig'у нужны эти возможности, ну и хрен с ним, убогим - никто никого не насилует. Hе всегд, но иногда ещё хочется и скриптами свою софтину кормить - опять выходит очень удобно. Если тебя Лисп не возбуждает, возьми libtcl - суть не меняется. > OP> приходится писать сразу же обёртку, 2) в ней течёт память по причине > OP> пункта номер один, бороться можно с этим только с помощью сборщика > покажите мне xml'ный парсер, в котором не течет. И который после старта сразу > же не жрет больше, чем все лики proplist'а за десяток перечитываний конфига. В гарантированно expat не течёт, GNOME libxml2 сегодня-завтра проверю, у меня тут как раз конфигурационный файл - дерево с переменным количеством узлов от ста тысяч до нескольких миллионов, буду проводить стресс-тесты. >>> И у каких программ в соответствии с этим подходом "правильный" конфиг? >>> Посмотреть хочу. > OP> Странный вопрос. У меня нет на него адекватного ответа. > наоборот, единственно верный вопрос. Если нет успешных и распространенных > реализаций какой-то технологии - самое время задуматься - почему? Ты с дуба рухнул. Эти неуспешные реализации какой-то технологии уже несколько лет как вытеснили весь остальной хлам (хорошо это или плохо, сейчас обсуждать не будем). Удобно как раз тем, что оно и есть везде и под разные цели применить можно, в том числе очень удобно использовать для хранения конфигов. Hазови, пожалуйста, с точки зрения разработчика программы или программиста, чем там такого неудобного, в этом XML? Детально, по пунктам - было ли тебе неудобно tree traverse делать в твоей программе, или что-то ещё? > IMHO, ответ прост: хорошо продуманная структура конфига для конкретной > программы ничего общего с xml'ем иметь не будет. xml же хорош ровно > тогда, когда думать головой некогда- в нее едят, поскольку позволяет > за счет гибкости [громоздкого по той же причине] языка постфактум > затыкать недодумки в собственном поделии, а потом приляпывать к ним > полу-интеллектуальные гуевые конфигуряловы, потому что руками такой > конфиг редактировать уже нереально. Хорошо продуманная структура конфига - это иерархическая структура данных типа дерево, которое может быть представлено разными способами, один из которых - XML - позволяет легко эту структуру данных сохранить в виде удобного для обработки текстового документа. XML не заставляет использовать все его возможности для того, чтобы просто записать в файл что-то типа <?xml version="1.0"?> <node name="root" parent="nil" credentials="rwxrwxrwx"> <data> <item>property data 1</item> <item>property data 2</item> </data> <siblings> <sibling name="leaf-1"/> </siblings> </node> который создаётся с помощью 15 строк сишного кода, из которых три - инициализация, очистка и сохранение в файл, остальное - присваивание данных. Разумеется, несомненно лушче каждый раз изобретать велосипед и потратить уйму времени на отладку очередного кадавра и глюкала, чем взять что-то уже готовое. Oleg --- ifmail v.2.15dev5 * Origin: CLEAR Net New Zealand http://www.clear.net.nz - Complai (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/16549fc382ec3.html, оценка из 5, голосов 10
|