Главная страница


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)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: парсер конфигов   Oleg Polyanski   07 Jan 2002 09:14:33 
 Re: парсер конфигов   Eugene B. Berdnikov   07 Jan 2002 20:03:32 
Архивное /ru.linux/16549fc382ec3.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional