Цитата:
Не нашли применение. Цитата:
Допустим, ты написал модуль. Его оттестили. Далее инициализация указывается в разметке на нескольких страницах. Если разметить не правильно (порядок элементов, обязательные атрибуты, значения атрибутов), понятно что скрип не сработает. Валидатор об этом скажет быстрее, чем ошибка найдется. В данном случае структура полностью отражает функционал, поэтому можно проверять её. Цитата:
Я просто даю объектную среду. А как ты там с ней будешь работать - дело второе. Цитата:
Цитата:
1. Тут мы вклиниваемся в мир CSS. Наглядно использование атрибута не по назначению. Меня блевать тянет от такой разметки и кода. В итоге это приводит только к постоянным багам/фиксам лучи поноса в сторону jQuery 2. Нестандартный атрибут. Ну это вообще каша получается. Зачем тогда в стили выносить остальное? Вчера я правил один интересный баг. Скрипт писался давно. Его код устанавливал свойство hidden для DOM-узла ссылки. Это задумывалось просто как флаг. В итоге, в html5 вводят тег hidden и ссылки исчезают. Мораль - не засирай чужое пространство, когда есть свое. 3. Реализация на классах вообще не катит. Нет уже такой гибкости. Ведь в значение атрибута занести кучу всякой инфы. Ещё это не катит, потому что нельзя будет использовать всю мощь XML-схем. 4. В догонку: http://www.w3.org/TR/2004/WD-xhtml-m...dule_namespace Цитата:
Может потом ещё что вспомню. |
Цитата:
Цитата:
Цитата:
Цитата:
<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> Цитата:
т.е. в общем-то все это можно легко сделать без пространств имен (их можно сэмулировать), за исключением валидации |
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Хочу обратить внимание, что я ничего не придумываю, а пользуюсь уже готовыми инструментами. Всё в рамках стандартов. |
Ты мне лучше расскажи, что не нравится в пространствах имен?
Хоть что-нибудь то скажите, что вы вообще думаете о такой архитектуре? |
Цитата:
|
Цитата:
Мне кажется наоборот. Вот структура платформы: V(HTML, CSS, DOM) - C(Platform) - M(Module 1, Module , Module 3...) Общение между платформой и модулями происходит на объектном уровне. Т.е. быстро. Это ведь не работа с DOM. После того, как модули сделали все необходимые изменения, контроллер направляет их в представление. Представление пачкой применяет все инструкции уже непосредственно в HTML, CSS и DOM. Понятное дело, что будут реализованы все возможные оптимизации на этом этапе. Получается, что все действия модулей нагружать не будут. |
Покажите мне код )
нужны примеры. а там будет видно как это все красиво и быстро. |
Цитата:
Скорость программы обеспечивает алгоритм. Если алгоритм неправильный - страдает реализация. Чем профессионал отличается от начинающего кодера? Опытный программист способен выбрать правильный алгоритм (ну или направление) ещё до начала написания кода. Он и без кода может дать предварительные оценки. Так что включи мозг. Ты же сказал, что скорей всего будет медленно. Вот и объясни, на основании чего такие подозрения. |
тому что xml нужно парсить. преобразовывать ваши модули во чтота, что понимает браузер. это все будет DOM манипуляции, а то как работает ишак с DOM методами все знают.
|
Это уже давно не XML :)
Сейчас речь идет о XHTML. |
что XML, что XHTML один черт другого не слаще.
вы пытаетесь сделать вот это - http://ru.amplesdk.com/ |
То, что они используют пространства имен, не значит что это то же самое. Я всё придумал сам. Это вообще не то.
|
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
|
Интересная старая тема. И каково состояние на данный момент? Есть ли готовые варианты реализации?
|
Есть реализация.
Как я уже говорил, сейчас идет работа над объектной моделью. Если кто не правильно понял - я не пытаюсь создать свой DOM. Мне реально нужна и важна ваша помощь. jQuery - спасательный круг для дибилов, нехуй тратить на него свое время. Если вы хотите начать создавать веб-ПРИЛОЖЕНИЯ - прошу принять участие. x-yuri, спасибо за потраченное время и критику. |
B~Vladi,
Меня давно интересует возможность внедрения в xhtml фрагментов с различными пространствами имён и их обработка динамически подгружаемым кодом. Так же интересен сахар для XPath выборок. Хоть пока и не знаю где это можно применить, но всёравно интересно. Если это то что я думаю, то отпишись в личку. |
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.
--- ну как же? полезность - весч сильно относительная. возьмём простое приложение, которое делает два запроса к бд, первый за сессией, второй за контентом. первый запрос содержит синтаксическую ошибку и падает. но позвольте! можно же выполнить второй запрос и вывести пользователю! давайте сделаем его и выведем пользователю хоть что-то! и наоборот. какой-то умник написал <script> в результате чего хрен вы получите вместо контента, а ещё десяток всплывающих окошек в нагрузку, и регистрироваться на сервисе вам придётся заново, и извиняться перед друзьями, что завалил их спамом, а ещё не сможешь зайти на свой любимый сайт javascript.ru потому что внезапно стал участником ддос-атаки на него. мягкость правил приводит к наплевательскому их исполнению. а страдают в итоге пользователи. === это уже поинтереснее. Но 1) это проблема решаемая, 2) почему из-за тех, для кого это важно должны страдать все? 3) для тех, для кого это важно - это не проблема, у них есть опытные специалисты и достаточно денег, 4) вместо xss получаем проблему с чисткой контента, создаваемого пользователями --- 1. лучше не допускать проблем, чем решать их после того, как они вылились в массовые беспорядки 2. страдать должен только тот разработчик. который допустил вывод неэкранированных данных и больше никто. ошибки парсинга хмл выявляются очень быстро при первичном тестировании. а при правильно выбранных инструментах исключаются вовсе. на моей памяти небыло ни одного случая связанного с невалидностью отдаваемого хмл. только один раз один умник вставил disable-output-escaping="yes" и благополучно получил уязвимость которая прошла через все этапы тестирования прямиком в лапы злостных кулхацкеров. 3. и эти специалисты не ноют, что битый хмл не будет показан пользователю. потому что знают, что у них он никогда битым не будет. а те, кто ноет - неявно подписываются тем самым под своей профессиональной непригодностью. 4. эту проблему мы получаем независимо от формата передачи. вопрос лишь в том, решать ли её или же стыдливо прятать голову в песок, притворяясь буд-то её на самом деле нет. === Кстати, БЭМ, по идее, близок к твоей задумке, только без XHTML-модулей. --- основное преимущество лего - это возможность привязать сразу несколько компонент к одному тэгу, но одновременно это и его недостаток, так как наложение разных стилей и поведения на один элемент с высокой долей вероятности приводит к конфликтам. в результате всё-равно появляется куча вложенных дивов, дифференциирующих зоны ответственности компонент. а вот в моей реализации через пространства имён - у каждой компоненты свой тэг, параметры которому задаются аттрибутами. инициализация виджетов происходит по мере загрузки страницы, при удалении из документа - вызывается деструктор. а знаете как в лего передаются параметры? а вот так: onclick="return {name:'i\-metrika',counter:149814}" мне даже страшно представить как они это формируют с помощью xsl шаблонов о0" === Вообще, я говорил не о формате, а о DTD. Т.е. если мы используем документ в формате XHTML (расширение xhtml, content-type: application/xml+xhtml), то это уже указание на формат, а не какое-то там DTD, поэтому и парсится соответственно. DTD XHTML прижился и исптользуется. Формат XHTML не используется. Потому что ишак клал на него. Давайте далее, говоря о XHTML, подразумевать соответствие документа с DTD XHTML в формате HTML. --- миме-тип никаким образом формат менять не может. формат - это прежде всего структура данных. если я jpeg картинку переименую в readme.txt - от этого она не перестанет быть картинкой. не смотря на то, что некоторые просмотрщики картинок не смогут с ним работать. дизайн xhtml специально задумывался таким, чтобы его можно было распарсить как html так и xml парсером. разные методы прасинга разумеется приводят к формированию разных моделей документа. формат - один. парсеров - два. чтобы включить xml парсер достаточно указать тип application/xml - это понимает даже ие. и тут к вашим услугам и возможность объявлять собственные сущности, и валидировать документ налету, и применять xsl трансформации. другое дело, что ие он не понимает xhtml элементы в полученном xml, но для него можно сделать фолбэк в виде простенькой xsl трансформации, которая заставит его воспользоваться html парсером к результату полученному после валидации, подстановки сущностей и xsl трансформации. === т.е. раз мы протестировали модуль и валидатор проверил разметку, это значит что больше тестировать нету смысла? --- есть разные тесты. есть тесты самого модуля, а есть тесты корректности его использования. валидация вполне может справиться со вторым видом тестов. другое дело, что дтд конкретно не хватает для этого мощности. я склоняюсь к тому, что сам модуль должен следить за валидностью используемых им структур данных, так как ограничения могут быть самыми причудливыми. |
Цитата:
а вообще, B~Vladi, советую выложить свой проект на github, если ты хочешь чтобы он быстрее развивался. В частности, ты узнаешь, например, что другие думают об этом. Но возможно что это все превратиться в нечто другое, не то, что ты хотел (чья-то реализация станет популярнее). Но это тоже не плохо, это может указывать на какие-то твои ошибки Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
в двух словах, ты слишком завышаешь требования к разработчикам вне зависимости от задачи. И если бы в сети не было столько мусора, как сейчас, она бы так не развилась. К тому же, простые смертные - это проверка решения на применимость, это мешает распространению излишне умных идей |
что такое "защита от хсс"?
>> вопрос лишь в том, решать ли её или же стыдливо прятать голову в песок, притворяясь буд-то её на самом деле нет. > это решение одной проблемы и появление другой чтд у них большинство сервисов на хсл-е если бы правила парсинга хтмл не были так сложны в сети меньше бы было дырявых сайтов. |
Цитата:
Цитата:
Цитата:
|
отлично, а теперь попробуй с помощью htmlpurifer сделать невалидный хмл
мне как-то пох с какой скоростью развивается сеть. в ней и так полно дерьма. куда уж больше? |
Цитата:
Цитата:
|
при том, что на выходе он генерирует ххтмл фрагмент
|
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
Цитата:
Ну вот :( Ещё кое-что надумал, пока пытался заснуть вчера... Асинхронность. Например (из прошлого html-кода): this.parent.item.Style({ display: 'none' }, function(dataObject, property){ // Представление изменилось }); или: this.parent.item.Event({ click: false }, function(dataObject, property){ // Обработчик установлен }); Так как всё происходит после выполнения кода, в недрах контроллера (платформы), сразу обработать результат не получится. Например, часто бывает нужно узнать размеры элемента сразу после изменения данных. Архитектура (которая у меня в голове и в черновиках) это позволяет сделать. Как вам такой код?! |
на тот вопрос я не отвечал, так как не вижу смысла
любые инструменты, которые работают с документом не как со строкой, а как с деревом. события надо не только вешать, но и убирать, поэтому лучше что-то типа такого: var clickSpy= Spy( elem, 'click', function(){} ).listen() // создали и запустили прослушку ... clickSpy.forget() // забили на прослушку ... clickSpy.scream() // кричим другим агентам |
Цитата:
delete this.parent.item.Event().click; Цитата:
|
Цитата:
var AsyncChain = new Class({ Implements: [Events, Options], _chain: [], _state: {}, initialize: function( options ){ this.setOptions( options ); }, add: function( f ){ this._chain.push( f ); return this; }, run: function(){ run.of(this)(0); return this; function run( i ){ var f = this._chain[i]; if( ! f ) return; f.of(this)( run.of(this).pass(i+1) ); } }, clear: function(){ this._chain = []; return this; }, set: function( options ){ $extend( this._state, options ); return this; } }); пример использования: var chain = new AsyncChain(); chain.setOptions({ 'onFailure': onFailure.of(this).pass(chain), 'onCancel': onCancel.of(this).pass(chain) }) .set( options ) .add( this._disableLink ) .add( this._setPhotoUrl ) .add( this._setPhotoDownloadUrl ) .add( this._showThrobber ) .add( photosession.getThumbnailPath ) .add( photosession.setPhotoUploadUrl ) .add( photosession.loadPhoto ) .add( photosession.loadCropResize ) .add( this._hideThrobber ) .add( this._showDialog ) .add( photosession.cropResize ) .add( photosession.setThumbnailFormField ) .add( this._loadThumbnail ) .add( this._showThumbnail ) .add( this._closeDialog ) .add( this._enableLink ) .run(); |
Не не не, Девид Блейн.
Вот, например, есть объект, описывающий тег: var data = { value: 'text', display: false } Код модуля: function module(data){ // Изменяем данные data.text = 'new text'; data.display = true; } Как это всё выглядит с наружи: var data = getData(); // получаем объект data // Ситуация - обрабатываем событие. Для этого передаем объект data всем модулям, которым он принадлежит var modulesLength = modules.length; while(modulesLength--){ modules[modulesLength](data); // Модули сделали всё, что им необходимо } // Обновляем представление в соответствии с объектом data. update(data); Отсюда видно, что представление изменится только после выполнения обработчиков модулей. Что бы можно было учесть эту ситуацию - я и предложил это решение. Цепочки тут не нужны. Цитата:
|
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 01:58. |