07.04.2011, 00:00
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
Сообщение от B~Vladi
|
Вообще смешно получается. Сейчас все кому не лень пишут и говорят о HTML5. Мода на XHTML, к сожалению, проходит. Архитектура моей платформы построена полностью на идеологии XHTML. Опоздал?
|
к счастью. Давно прошла. Cкорее не угадал. Хотя с другой стороны какая разница, если хорошо провел время, м? Кроме того, разве это так важно, что модно? А вдруг твой фреймворк опередил время и станет популярным через пару сотен лет?
|
|
07.04.2011, 00:04
|
|
Модератор Всея Форума
|
|
Регистрация: 14.05.2009
Сообщений: 4,021
|
|
Сообщение от x-yuri
|
А вдруг твой фреймворк опередил время и станет популярным через пару сотен лет?
|
Нет, намного раньше
По крайней мере я всё для этого сделаю.
Сообщение от x-yuri
|
к счастью.
|
А вот это давай обсудим
Что мешает в XHTML?
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф
|
|
07.04.2011, 05:04
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
для начала немного ссылок
Postel's law
The history of draconian error handling in XML
XHTML—What’s the Point? (Draft, incomplete)
Sending XHTML as text/html Considered Harmful
Everything you know about XHTML is wrong
мешает, конечно, его строгость. Она может быть полезна для разработки, но не нужна на production'е (зачем не отображать документ, если его можно отобразить? Малейшие ошибки приводят к полному отказу) Она повышает требования к людям и инструментам разработки и следовательно тормозит развитие. Пользователь может поломать сайт вставив невалидный контент. Ну или пускай не пользователь, пусть модератор/контент-менеджер/администратор (нужное подчеркнуть). XHTML - это скорее вопрос религии, чем практической необходимости. Либо кому-то просто наболело. И, собственно тот, кто это все придумал, признает, что это было по-крайней мере спорно:
Цитата:
|
But we agree on my fundamental point: XML’s error handling has always been controversial, and lots of smart people disagreed with it from the beginning for lots of good reasons.
|
http://diveintomark.org/archives/200...6/draconianism
и как мы все убедились, это было слишком категорично, по-крайней мере в таких масштабах. Нипалучилось
итого, я практически не вижу плюсов, зато вижу один большой минус
справедливости ради приведу ссылку с альтернативным мнением, правда 2004 года выпуска
|
|
07.04.2011, 10:40
|
Профессор
|
|
Регистрация: 20.03.2008
Сообщений: 1,183
|
|
интересно, а если бы программы при ошибках не генерировали исключения, а продолжали работу со следующей после сбойной инструкции? или если бы субд при неверном запросе пыталась хоть что-то прочитать хоть из какой-нибудь таблицы?
почему-то пятисотые ошибки при неверных данных или неправильной их обработке никого не смущают, а вот ошибки парсинга хмл - приводят к негодованию. и плевать, что незакрытый тег может покарёжить всю вёрстку и ты будешь долго его отлавливать, плевать на многочисленные xss уязвимости из-за которых пользователи теряют свои деньги, аккаунты и доброе имя.
__________________
.ня
|
|
07.04.2011, 10:53
|
|
Модератор Всея Форума
|
|
Регистрация: 14.05.2009
Сообщений: 4,021
|
|
Сообщение от x-yuri
|
Малейшие ошибки приводят к полному отказу
|
Это да.
Вообще, я говорил не о формате, а о DTD. Т.е. если мы используем документ в формате XHTML (расширение xhtml, content-type: application/xml+xhtml), то это уже указание на формат, а не какое-то там DTD, поэтому и парсится соответственно.
DTD XHTML прижился и используется. Формат XHTML не используется. Потому что ишак клал на него.
Давайте далее, говоря о XHTML, подразумевать соответствие документа с DTD XHTML в формате HTML.
x-yuri, ограничения, о которых ты говорил, накладываются форматом. А что мешает соответствовать DTD?
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф
Последний раз редактировалось B~Vladi, 07.04.2011 в 16:47.
|
|
07.04.2011, 11:35
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
Сообщение от tenshi
|
интересно, а если бы программы при ошибках не генерировали исключения, а продолжали работу со следующей после сбойной инструкции? или если бы субд при неверном запросе пыталась хоть что-то прочитать хоть из какой-нибудь таблицы?
|
tenshi, почитай ссылки, там все есть:
Цитата:
|
Programming languages that barf on a syntax error do so because a partial executable image is a useless thing. A partial document is *not* a useless thing. One of the cool things about XML as a document format is that some of the content can be recovered even in the face of error. Compare this to our binary document friends where a blown byte can render the entire content inaccessible.
|
Сообщение от tenshi
|
плевать на многочисленные xss уязвимости из-за которых пользователи теряют свои деньги, аккаунты и доброе имя.
|
это уже поинтереснее. Но 1) это проблема решаемая, 2) почему из-за тех, для кого это важно должны страдать все? 3) для тех, для кого это важно - это не проблема, у них есть опытные специалисты и достаточно денег, 4) вместо xss получаем проблему с чисткой контента, создаваемого пользователями
Сообщение от B~Vladi
|
x-yuri, ограничения, о которых ты говорил, накладываются форматом. А что мешает соответствовать DTD?
|
dtd ничего не мешает соответствовать. Вопрос в том, что это даст. Что там в этом dtd такого есть? Я наверное не особо в курсе. На модули разбили? Четче описали правила? Да и вообще, расскажи что ты видишь положительного в XHTML
|
|
07.04.2011, 12:27
|
|
Модератор Всея Форума
|
|
Регистрация: 14.05.2009
Сообщений: 4,021
|
|
Сообщение от x-yuri
|
На модули разбили?
|
Именно. Не для кого не секрет, что модульность упрощает разработку и поддержку продукта. Если она есть, то должна быть во всем. На клиенте модульность должна начинаться именно с данных. Ведь на данные накладывается функционал, а раз данные поделены - автоматом делится и функционал на логические сущности.
На самом деле, программируя интерфейс, вы все уже давно работаете с модулями. Всё что вы пишите по сути своей расширяет уже что-то готовое, встроенное, либо это самостоятельный модуль.
Приведу примеры. Вы все писали расширения к модулям XHTML:
placeholders, валидация, ajax загрузка файлов - это примеры расширений модуля Forms, описанного в спецификации XHTML. Действительно, в валидаторе вам нужны только теги из этого модуля (т.е. форма и её элементы).
Сортировка - расширение модуля Tables.
Дерево - расширение модуля List.
В HTML нельзя создать собственный модуль на уровне данных. Формат этого не предусматривает. Конечно, логику написать можно и всё будет работать, но данные (теги), которые он использует, будут принадлежать другим модулям (стандартным). Отсюда все болезни: верстак изменил html-код - упали скрипты (знакомая ситуация?). Фикс такого бага в большинстве случаев сводится к правке селектора или ещё какой-нибудь мелочи, но сам факт фикса присутствует!
XHTML дает такую возможность посредством пространств имен. Модальное окно - пример самостоятельного модуля. Основные узлы (заголовок, контент и т.д.) должны принадлежать ему (иметь собственное пространство имен). SVG - самостоятельный модуль. Работает только в XHTML, потому что в HTML его просто невозможно вставить (см. предыдущий абзац).
По сути - кастомный модуль почти ничем не отличается от того же SVG. Отличие одно - SVG написан на другом языке программирования и встроен в браузер, а кастомный на javascript.
Я смотрю на веб-приложение с этой позиции. Предлагаю взглянуть и вам
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф
Последний раз редактировалось B~Vladi, 07.04.2011 в 12:33.
|
|
07.04.2011, 15:18
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
Сообщение от B~Vladi
|
SVG - самостоятельный модуль. Работает только в XHTML, потому что в HTML его просто невозможно вставить
|
Цитата:
|
In addition, the HTML5 specification enables embedding SVG in HTML, where before it was only supported with XHTML.
|
http://www.alistapart.com/articles/u...rounds-part-i/
как на практике дело обстоит - не знаю
т.е. ты предлагаешь создавать свои модули (в терминологии XHTML, на равне с его собственными), писать для них свой dtd? Это скорее для каких-то достаточно больших проектов. Как-то слишком сложно и непонятно, что это дает. Я не понимаю как модули могут предотвратить необходимость изменения скриптов при изменении разметки. Привязываться только к своим тегам? С тем же успехом можно добавлять к классам префикс, получаем некоторое подобие пространства имен. Но если ты изменишь разметку своих тегов, из своего модуля скрипты все равно упадут. Кстати, БЭМ, по идее, близок к твоей задумке, только без XHTML-модулей. А почему, собственно, для этого нужны XHTML-модули? С ними разве что красивее получится, но ничего не мешает это реализовать без них
|
|
07.04.2011, 16:00
|
|
Модератор Всея Форума
|
|
Регистрация: 14.05.2009
Сообщений: 4,021
|
|
Сообщение от x-yuri
|
In addition, the HTML5 specification enables embedding SVG in HTML, where before it was only supported with XHTML.
|
Ну я про это и говорю. В HTML5 тоже есть пространства имен, как и в XHTML, что позволяет вставлять SVG.
Сообщение от x-yuri
|
писать для них свой dtd?
|
DTD можно и не писать. Тем более что все кладут на валидатор W3C. А если писать, то уж лучше XML-схему. Вообще, при таком раскладе валидация становится средством тестирования страниц. Другие тесты можно даже и не писать. Таким образом твой вопрос должен был звучать так: "Писать для них свои тесты?".
Сообщение от x-yuri
|
как модули могут предотвратить необходимость изменения скриптов при изменении разметки
|
Собственно:
Сообщение от x-yuri
|
Привязываться только к своим тегам
|
... и атрибутам.
Постараюсь объяснить что же это нам даст.
Что нужно верстаку? Править html-код. Что конкретно в коде ему нужно править? По пунктам:
1. Добавлять/удалять узлы.
2. Править атрибуты.
3. Править стили (как CSS, так и классы).
4. Изменять структуру дерева.
Это что касается поддержки и развития. Когда html только создается - проблем нет.
Действия первых трех пунктов не приведут к падению скриптов. Для этого верстало должен помнить всего лишь одно правило: не изменять сущности из пространств имен. Это касается имен тегов, имен атрибутов и их значений. В принципе, ему это и не надо.
Посмотрим на код:
<div ns:parent="name">
<p>Paragraph</p>
<ns:item class="item-1">text</ns:item>
<ns:item class="item-2">text</ns:item>
<div class="nbsp"> </div>
</div>
Верстак может без проблем поменять имя корневого тега, так как оно не относится к пространству имен. Атрибут ns: parent его вообще не должен интересовать. Точно так же он может менять атрибуты class не задумываясь о том, к чему принадлежат эти классы. Можно добавить любые теги или убрать те, которые не принадлежат к пространству имен. Другими словами: он видит с чем ему можно работать, а с чем нет. Так мы полностью отделили верстальщика от JS-ника.
Что касается четвертого пункта. Структура данных - по природе своей древовидная и от этого никуда не деться. Мы должны учитывать это. Если структура изменяется, изменяется и логическое значение узлов. Так же и тут: если вынести ns:item за ns: parent, то он уже не будет ребёнком parent-а. Но скрипт и не упадет от этого. Он просто не обработает его.
БЭМ вообще придуман для CSS (хотя и файловую структуру это коснулось тоже). Стиль наименования классов + логическое разделение, я бы сказал. К XHTML отношения вообще не имеет.
Сообщение от x-yuri
|
ничего не мешает это реализовать без них
|
Собственно, чем сейчас все и занимаются. Архитектура сегодняшнего веб-приложения:
данные - куча говна
логика - стая мух, облепивших говно со всех сторон
представление - где-то между говном и мухами
А потом задумываемся - почему серверных разработчиков ставят на уровень выше клиентских? И правильно делают.
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф
Последний раз редактировалось B~Vladi, 07.04.2011 в 16:05.
|
|
08.04.2011, 06:43
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
Сообщение от B~Vladi
|
SVG - самостоятельный модуль. Работает только в XHTML, потому что в HTML его просто невозможно вставить
|
Сообщение от B~Vladi
|
Ну я про это и говорю. В HTML5 тоже есть пространства имен, как и в XHTML, что позволяет вставлять SVG.
|
хм, я тебя по-другому понял. Но возникает другой вопрос: если пространства имен поддерживаются html5, то чего тебе не хватает? Тебе не нравится, что все про них забыли?
Сообщение от B~Vladi
|
DTD можно и не писать. Тем более что все кладут на валидатор W3C. А если писать, то уж лучше XML-схему.
|
да, это и имел в виду
Сообщение от B~Vladi
|
Вообще, при таком раскладе валидация становится средством тестирования страниц. Другие тесты можно даже и не писать. Таким образом твой вопрос должен был звучать так: "Писать для них свои тесты?".
|
а какие другие тесты и почему их можно не писать? Ведь ты только структуру с помощью xml-схемы проверишь
Сообщение от B~Vladi
|
Постараюсь объяснить что же это нам даст.
|
ну вот альтернативная реализация твоего примера
<div ns-parent="name">
<p>Paragraph</p>
<div class="ns-item item-1">text</div>
<div class="ns-item item-2">text</div>
<div class="nbsp"> </div>
</div>
в чем разница?
Сообщение от B~Vladi
|
БЭМ вообще придуман для CSS (хотя и файловую структуру это коснулось тоже). Стиль наименования классов + логическое разделение, я бы сказал. К XHTML отношения вообще не имеет.
|
я имел в виду, что это тоже более серьезный подход, тоже для больших проектов. Изначально, насколько я понимаю, основная цель была - возможность без проблем перемещать блоки (т.е. тоже вроде бы как чтобы ничего не поломать). А сейчас вон и название поменялось. И что там сейчас толком не знаю
Сообщение от B~Vladi
|
Собственно, чем сейчас все и занимаются. Архитектура сегодняшнего веб-приложения:
данные - куча говна
логика - стая мух, облепивших говно со всех сторон
представление - где-то между говном и мухами
|
да не, просто большинство сайтов делаются методом подключения jquery-плагинов или написанием своего jquery-кода, а так как jquery не призывает к усилиям по организации кода, то получается код из серии "как думаю, так и пишу". Но для небольших сайтов это нормально в общем-то, там усложнять и не надо. Вторая проблема - готовые компоненты, которые либо допиливаются до неузнаваемости, либо настолько универсальны, что теряешься в настройках. Ну и третья, то что подключается куча плагинов, а то и библиотек, и это считается круто
Сообщение от B~Vladi
|
А потом задумываемся - почему серверных разработчиков ставят на уровень выше клиентских? И правильно делают.
|
хм, разве? Ну возможно, если учесть, что более менее сложные клиентские приложения появились не так давно, по сравнению с серверными
|
|
|
|