Цитата:
Не нашли применение. Цитата:
Допустим, ты написал модуль. Его оттестили. Далее инициализация указывается в разметке на нескольких страницах. Если разметить не правильно (порядок элементов, обязательные атрибуты, значения атрибутов), понятно что скрип не сработает. Валидатор об этом скажет быстрее, чем ошибка найдется. В данном случае структура полностью отражает функционал, поэтому можно проверять её. Цитата:
Я просто даю объектную среду. А как ты там с ней будешь работать - дело второе. Цитата:
Цитата:
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, время: 13:13. |