vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner
Читаю сейчас конфигурационный файл утилиты rutilt (конфигуришки для WiFi карточек rt73 под Linux).
И вижу там примерно следующее
<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. Я схем-то за свою жизнь сдизайнил не более десятка (правда, были среди них весьма развесистые).

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

Date: 2007-10-23 08:35 pm (UTC)
From: [identity profile] buldozr.livejournal.com
Если люди не понимают концептуальной разницы между атрибутом (простым значением под уникальным среди атрибутов того же элемента именем) и дочерним элементом (вложенным узлом в дереве, который не мешает иметь сколько угодно одноименных элементов с тем же родителем и может в свою очередь содержать дочерние узлы), их нужно лишать права разрабатывать XML-приложения либо отправлять на принудительное перевоспитание.

Что-то я начинаю звучать как какой-нибудь mauhuur...

Date: 2007-10-23 08:46 pm (UTC)
From: [identity profile] duke-igthorn.livejournal.com
Да это все высокоуровневая семантика, которую можно на уровне схемы запихать и в элементы тоже. Синтаксически можно вполне без атрибутов. Хотя и не очень удобно.

Привет маухууру;)

Date: 2007-10-23 10:12 pm (UTC)
From: [identity profile] buldozr.livejournal.com
В том-то и дело, что не надо вообще трогать схему. Валидацию можно делать по большим праздникам, если очень хочется (с поправкой на компьютерную шкалу времени), а с атрибутами нужно работать без кошмарного оверхеда валидаторов. Уникальность атрибутов нужно обеспечивать все время, на уровне well-formedness.

Date: 2007-10-23 10:21 pm (UTC)
From: [identity profile] duke-igthorn.livejournal.com
Да, уникальность атрибута проверить сильно дешевле - это факт. Но это все детали реализации. Если же оставаться на уровне семантики - нет ничего в атрибутах, чего нельзя было б выразить элементами - и наоборот. Вроде, были варианты стандарта xml без атрибутов. Но не прошли. Возможно, как раз из соображений эффективной реализации.

Date: 2007-10-24 05:47 am (UTC)
From: [identity profile] buldozr.livejournal.com
Но это все детали реализации.

Так может говорить какой-нибудь адепт Lisp, живущий в башне из слоновой кости ;)

Date: 2007-10-24 07:13 am (UTC)
From: [identity profile] duke-igthorn.livejournal.com
Я жаваписец. У нас тоже своя башня ;)

Date: 2007-10-24 12:26 pm (UTC)
From: [identity profile] buldozr.livejournal.com
Однако ж и в вашей башне реализации java.util.Map никто на java.util.List не делает :)

Date: 2007-10-24 12:28 pm (UTC)
From: [identity profile] duke-igthorn.livejournal.com
Только потому что неудобно;)

Date: 2007-10-24 05:50 am (UTC)
From: [identity profile] buldozr.livejournal.com
нет ничего в атрибутах, чего нельзя было б выразить элементами - и наоборот.

Современной computer science неизвестно чего-либо, чего нельзя было б выразить в виде машины Тьюринга. :-D

Date: 2007-10-24 07:14 am (UTC)
From: [identity profile] duke-igthorn.livejournal.com
Ну да, если по гамбургскому счету...;)

Date: 2007-10-24 10:17 am (UTC)
From: [identity profile] city-rat.livejournal.com
Назначение схем не сводятся только к валидации. Как только мы поднимаемся от уровня "надо похранить вот этот конфиг" к уровню "надо обеспечить взаимодействие N систем разных разработчиков" - то возникает задача обмена информацией о семантике, и схема становится частью формализованной документации интерфейса.

Date: 2007-10-23 09:19 pm (UTC)
ext_605364: geg MOPO4 (Default)
From: [identity profile] gegmopo4.livejournal.com
А что делать со сложными значениями под уникальным именем? Что делать, если в процессе расширения простое значение стало сложным или уникальность пропала? Что делать, когда одни параметры под уникальным именем простые, а другие, того же ряда, сложные?

Date: 2007-10-23 10:24 pm (UTC)
From: [identity profile] buldozr.livejournal.com
Переводить в элементы и уповать на божества хаоса ;)

В модели документа, гораздо надежнее разыменовать атрибут, чем отыскать среди детей элемент с нужным именем и надеяться, что он там один такой (а при записи уникальность надо обеспечить). Это разные виды доступа в структурах данных: ассоциативный и позиционный. Неужели непонятно, почему во всех вменяемых языках программирования либо библиотеках к ним обязательно есть что-нибудь, похожее на последовательность и что-нибудь, похожее на словарь?

Date: 2007-10-23 10:35 pm (UTC)
ext_605364: geg MOPO4 (Default)
From: [identity profile] gegmopo4.livejournal.com
И всё это говорит о том, что XML недостаточно хорош для этих целей. Плохо ложится на стандартные структуры (последовательность и словарь). Сказывается тяжёлое *ML-прошлое. Вот в упомянутом [livejournal.com profile] slobin-ым YAML-е это учли, но там подозреваю своих тараканов хватает (не считая главного недостатка — малораспространённости).

Date: 2007-10-23 10:44 pm (UTC)
From: [identity profile] buldozr.livejournal.com
Если вы о том, что таки нельзя органично представить словарь сложных значений, тут да.
Но где-то, видимо, нужно было провести черту и сказать KISS. Там и без того есть достаточно барокко: пережитки SGML всякие, взять хотя бы DTD.

Date: 2007-10-23 10:50 pm (UTC)
ext_605364: geg MOPO4 (Default)
From: [identity profile] gegmopo4.livejournal.com
С этого я и начал. XML слишком сложен и избыточен с одной стороны и (в том числе из-за этого) плохо подходит для отображения структур данных.

Date: 2007-10-24 05:41 am (UTC)
From: [identity profile] os80.livejournal.com
А я всегда считал, что в дочерних тегах пишут либо то, что имеет сложную структуру, либо то, что должно в принципе показываться на экране. А атрибуты - для всяких настроек.

Date: 2007-10-24 08:28 am (UTC)
From: [identity profile] tzirechnoy.livejournal.com
Перевоспитание оставьте Макаренке, а вот лишать всех подряд права разрабатывать XML-приложэния -- это правильная идея.

Profile

vitus_wagner: My photo 2005 (Default)
vitus_wagner

August 2025

S M T W T F S
     1 2
3456789
10111213141516
17181920212223
24252627282930
31      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 3rd, 2025 08:07 pm
Powered by Dreamwidth Studios