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-24 06:07 am (UTC)
From: [identity profile] silly_sad.livejournal.com
альтернатива чему ?
тексту ? буквам ?

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

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

Date: 2007-10-24 06:17 am (UTC)
From: [identity profile] os80.livejournal.com
Альтернатива использованию XML в случаях, когда данные иерархически вложены на 4-5 уровней.
Новый парсер я делать не буду. Я возьму TXMLDocument (Delphi) и он сам распарсится. А потом я уже пройду по узлам и преобразую их так, как надо, это на порядок проще и надёжнее, чем писать свой парсер.
>не надо было городить такого страшного монстра, да ещё с таким уродским стилем записи как тэги.
Наверное. Но альтернатива-то какова?

Date: 2007-10-24 06:55 am (UTC)
From: [identity profile] besm6.livejournal.com
А потом я уже пройду по узлам и преобразую их так, как надо,

Вот это и есть кастомный парсер.

Date: 2007-10-24 07:18 am (UTC)
From: [identity profile] os80.livejournal.com
Это "высокоуровневый" парсер. Который пишется на раз. Семантику, извиняюсь, никуда не уберёшь (есть, правда, идея продумать стандартную процедуру сохранения объекта в XML и потом везде использовать).
Главное - что я XML могу потом смотреть XMLNotePadom. И другой человек, который знает стандарт XML, поймёт и сможет отредактировать файл без подготовки. Короче, стандарты рулят.

Date: 2007-10-24 07:36 am (UTC)
From: [identity profile] os80.livejournal.com
От "модели модели" мне нужно только 2 вещи:
1. Сохранить данные/настройки между запусками программы.
2. ИНОГДА залезть туда и поправить стандартными средствами (напр., XMLNotePad).

Date: 2007-10-24 08:28 am (UTC)
From: [identity profile] besm6.livejournal.com
Подобными свойствами обладает не только XML. Скажем, человек, который знает стандарт SQL, с легкостью прочтет конфиг, сохраненный в sqlite. Нет, не XMLNotePad'ом. Другим столь же "слегка специализированным" инструментом. Который, скажем, на моей N800 есть, в отличие от. Я уж молчу про вышеупомянутый ini. У него есть другие недостатки, да, но в этом месте он XML'ю сто очков вперед даст.

А "семантику никуда не уберешь" и "стандартная процедура сохранения объекта в XML" - почти противоречащие друг другу вещи. Стандартный способ сохранения объекта в XML, способный сохранить туда любой объект, приведет к XML, который невозможно будет отредактировать XMLNotePad'ом. Ну, то есть в теории-то возможно, но на практике в нем невозможно будет разобраться вручную.

Date: 2007-10-24 08:30 am (UTC)
From: [identity profile] besm6.livejournal.com
Да, Вы, кстати, обратили внимание, что в задаче из поста XMLNotePad не годится в принципе? Потому как не работает на этой платформе?

Date: 2007-10-24 09:21 am (UTC)
From: [identity profile] os80.livejournal.com
Даже под WINE? И аналога ну совсем нет?
А я, вообще-то, о порке программистов за XML. О том, что перед поркой надо бы назвать альтернативу.

Date: 2007-10-24 11:48 am (UTC)
From: [identity profile] besm6.livejournal.com
Насчет "под WINE" и аналога - не знаю. У него, кстати, лицензия какая, у этого нетопада? Безусловно, есть редакторы, позволяющие нормально работать с XML. emacs, например.

А про порку - альтернативу я назвал. Разрешите приступить к порке?

Date: 2007-10-24 12:17 pm (UTC)
From: [identity profile] os80.livejournal.com
>emacs, например.
А почему он не аналог, если позволяет нормально работать?

>альтернативу я назвал. Разрешите приступить к порке?
Попробуйте. Но эту альтернативу я назвал ещё раньше Вас - и признал в данном случае неподходящей.

Date: 2007-10-24 01:24 pm (UTC)
From: [identity profile] besm6.livejournal.com
А почему он не аналог, если позволяет нормально работать?

Потому что пристойного текстового редактора Микрософт еще не освоил.

Но эту альтернативу я назвал ещё раньше Вас - и признал в данном случае неподходящей.

Я назвал две.

Date: 2007-10-24 01:40 pm (UTC)
From: [identity profile] os80.livejournal.com
SQLite, ini... третье-то где?
И ini альтернатива только для случая из самого поста и ему подобных. А пороть собираются за любой XML - извольте альтернативу для любого случая.

(no subject)

From: [identity profile] besm6.livejournal.com - Date: 2007-10-24 02:06 pm (UTC) - Expand

(no subject)

From: [identity profile] os80.livejournal.com - Date: 2007-10-24 02:10 pm (UTC) - Expand

(no subject)

From: [identity profile] besm6.livejournal.com - Date: 2007-10-24 03:39 pm (UTC) - Expand

(no subject)

From: [identity profile] os80.livejournal.com - Date: 2007-10-25 04:44 am (UTC) - Expand

Date: 2007-10-24 07:27 am (UTC)
From: [identity profile] os80.livejournal.com
>никогда не получалось так, чтобы XML DOM удавалось использовать НЕПОСРЕДСТВЕННО в качестве внутренней рабочей структуры данных программы
Прикол в том, что у меня частично так и есть. Читаю вывод чужой проги и храню его в XMLNod'ах. Достаточно удобно.
>Ну, например, можно лисповскую нотацию взять.
Да, но чем она принципиально отличается от XML? По-моему, только распространённостью.
>Да ещё read macros туда навешать, чтобы юзера скобочками не пугать.
Не понял... Я не знаю, что значит read macros, но, видимо, вместо того, чтобы изучить за 10 минут хоть сколько-то распространённый синтаксис Лиспа он должен будет те же 10 минут изучать синтаксис моего макроса? Нет, такой хоккей лисп нам не нужен :-)

Date: 2007-10-24 07:43 am (UTC)
From: [identity profile] os80.livejournal.com
>А раз так - всё равно будет кастомный парсер. Ну будет на входе у него не текст, а DOM. Какая нафиг разница.
Нафиг разница в количестве строк кода и возможности открыть более-менее стандартными средствами. Стандарты рулят.

Date: 2007-10-24 08:06 am (UTC)
ext_605364: geg MOPO4 (Default)
From: [identity profile] gegmopo4.livejournal.com
А вот для fb2meta очень неплохо бы использовать XML DOM именно непосредственно. Чтобы без потери информации и без ограничений.

Date: 2007-10-24 08:49 am (UTC)
From: [identity profile] tzirechnoy.livejournal.com
Не надо на лисповскую нотацыю "вешать макросы" -- надо взять эстэтически подходящий стиль написания S-expressions.

Date: 2007-10-25 12:00 am (UTC)
From: (Anonymous)
SXML, например? http://okmij.org/ftp/Scheme/SXML.html

WBR, Zubok


Date: 2007-10-25 06:50 am (UTC)
From: [identity profile] tzirechnoy.livejournal.com
SXML -- это перевод XML в S-expressions. Лисповского стиля. Вещь абсолютно бессмысленная если нет XML -- а я здесь о том, как от него избавиться.
Я -- как раз о том, что кому не нравятся лисповские скобочки -- можэт взять любой другой стиль s-expressions.

Date: 2007-10-25 12:14 am (UTC)
From: (Anonymous)
>Ну, например, можно лисповскую нотацию взять. Тоже парсер придуман аж полвека назад. Да ещё read macros туда навешать, чтобы юзера скобочками не пугать.

Да не, Виктор. Тогда придется для чтения этого фала уже саму реализацию Common Lisp применять, чтобы read macro пережевать.. Никто на такое не пойдет. Я пишу на Common Lisp и, разумеется, конфигурационные файлы делаю на нем же. Другого и быть не может. Но как только выходим за границы Common Lisp (Си, например), то лисповская нотация s-выражений становится просто голым синтаксическим деревом, для которого придется парсер писать или что-то вроде guile или librep присобачивать (некоторые так и делают). Возможно, это дерево кому-то будет попроще руками править, а кому-то и сложнее (особенно без применения того же emacs, например). Нельзя сказать, что это будет принципиально лучше XML. Можно будет сказать, что равномощно, чуть более понятнее для чтения и правки. См. тот же SXML (ссылка выше).

WBR, Zubok

Date: 2007-10-24 08:49 am (UTC)
From: [identity profile] tzirechnoy.livejournal.com
Ой, что-то жывот прихватило, добежать бы...

Хух. Виктор, можно с утра пораньшэ без ужасов?

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