Странные люди используют XML
Oct. 23rd, 2007 10:37 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Читаю сейчас конфигурационный файл утилиты rutilt (конфигуришки для WiFi карточек rt73 под Linux).
И вижу там примерно следующее
Не совсем понимаю, зачем ради такого XML городить. Я бы написал так
В данный вариант добавлена информация о том, доступен ли в данной сети SSID для сканирования, которой в оригинале не было. А мне для zero-click solution её надо - должна же программама догадатсья, стоит ли пробовать сконнектиться с этой сетью если скан не показывает её ssid. Ну и приоритеты сетей - в каком порядке пробовать коннектиться
Вообще, я неоднократно сталкивался с ситуацией, когда люди, пытающиеся разработать какую-то DTD совершенно не умеют пользоваться выразительным богатством XML. Наиболее частая проблема - та же, что у автора rutilt - пихают всю информацию в содержимое элементов, не задумываясь о том, что бывают ещё и атрибуты. Попадалось и обратное - что человек в упор не понимал концепции PCDATA и боялся писать текст между тэгами. Всё пихал в атрибуты.
Я, конечно, не буду утверждать что я такой весь из себя большой спец по XML. Я схем-то за свою жизнь сдизайнил не более десятка (правда, были среди них весьма развесистые).
Ну а за использование перечислимых числовых значений в текстовом конфиге, особенно когда в интерфейсе пользователя всё равно исполььзуются для этих сущностей строковые названия, программиста надо пороть.
И вижу там примерно следующее
<Profile Name="Wagners_home"> <SSID>Wagners_home</SSID> <Mode>2</Mode> <Channel>1</Channel> <Encryption> <Type>1</Type> <Key>много шестнацатиричных цифр</Key> <Key></Key> <Key></Key> <Key></Key> <AuthenticationType>0</AuthenticationType> <DefaultKey>0</DefaultKey> </Encryption> <IPSettings> <How>1</How> </IPSettings> </Profile> d<Profile Name="Cryptocom"> <SSID>спрятано</SSID> <Mode>2</Mode> <Channel>11</Channel> <Encryption> <Type>3</Type> <Key>много шестнадцатиричных цифр</Key> <Key></Key> <Key></Key> <Key></Key> <AuthenticationType>2</AuthenticationType> <DefaultKey>0</DefaultKey> </Encryption> <IPSettings> <How>1</How> </IPSettings> </Profile>
Не совсем понимаю, зачем ради такого XML городить. Я бы написал так
<Profile priority="0" Name="Wagners_home"> <SSID visibility="visible">Wagners_home</SSID> <card-settings mode="managed" channel="1" /> <Encryption type="wep" authentication-type="open"> <key number="0" default="yes" encoding="hex">много шестнадцатиричнх цифр</key> </Encryption> <IPSettings type="dhcp" /> </Profile> <Profile priority="1" Name="Cryptocom"> <SSID visibility="hidden">спрятано</SSID> <card-settings mode="manged" channel="11"/> <Encryption type="TKIP" authentication-type="WPAPSK"> <key number="0" default="yes" encoding="ascii">много букв</key> </Encryption> <IPSettings type="dhcp" /> </Profile>
В данный вариант добавлена информация о том, доступен ли в данной сети SSID для сканирования, которой в оригинале не было. А мне для zero-click solution её надо - должна же программама догадатсья, стоит ли пробовать сконнектиться с этой сетью если скан не показывает её ssid. Ну и приоритеты сетей - в каком порядке пробовать коннектиться
Вообще, я неоднократно сталкивался с ситуацией, когда люди, пытающиеся разработать какую-то DTD совершенно не умеют пользоваться выразительным богатством XML. Наиболее частая проблема - та же, что у автора rutilt - пихают всю информацию в содержимое элементов, не задумываясь о том, что бывают ещё и атрибуты. Попадалось и обратное - что человек в упор не понимал концепции PCDATA и боялся писать текст между тэгами. Всё пихал в атрибуты.
Я, конечно, не буду утверждать что я такой весь из себя большой спец по XML. Я схем-то за свою жизнь сдизайнил не более десятка (правда, были среди них весьма развесистые).
Ну а за использование перечислимых числовых значений в текстовом конфиге, особенно когда в интерфейсе пользователя всё равно исполььзуются для этих сущностей строковые названия, программиста надо пороть.
no subject
Date: 2007-10-24 12:41 pm (UTC)Валидатор позволяет только валидировать.
Date: 2007-10-26 10:07 pm (UTC)Вот я и говорю. Единый парсер он смысла никакого не имеет. Тем более, если это парсер такого нечитаемого ужаса. Лучше уж windows ini. Но там ПАРСЕР СЛОЖНЫЙ. (и тем не менее, проще, чем XML...) Нечто вроде /etc/passwd -- другое дело. Если нужен простой конфиг почему бы и не.
Только вот если в конфиге 5 ручек для настройки и для него заводится XML -- это абсолютный ахтунг. Для этого переменных окружения достаточно (кому нужен конфиг -- в файлик запишут и sh-ом считают).
Re: Валидатор позволяет только валидировать.
Date: 2007-10-28 11:19 am (UTC)Смысл в том, чтобы не создавать свой валидатор, а ограничиться созданием схемы (что полезно и для формализации формата).
Нет, я согласен, что для простых конфигураций, которые не предполагается модифицировать машинным способом, XML это перебор, и есть парсеры ini-форматов (с маленькими различиями в деталях, хе-хе). Но терять время на написание очередного парсера конфигурации, я надеюсь, мне больше никогда не придется.