17.04.2011, 14:31
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
Сообщение от tenshi
|
что такое "защита от хсс"?
|
хм, и где подвох? Защита от внедрения на сайт кода злоумышленником. В контексте нашей беседы это, например, htmlpurifier
Сообщение от tenshi
|
>> вопрос лишь в том, решать ли её или же стыдливо прятать голову в песок, притворяясь буд-то её на самом деле нет.
> это решение одной проблемы и появление другой
чтд
|
боюсь причинно-следственная связь осталась за кадром
Сообщение от tenshi
|
если бы правила парсинга хтмл не были так сложны в сети меньше бы было дырявых сайтов.
|
и сеть бы развивалась другими темпами
|
|
17.04.2011, 15:27
|
Профессор
|
|
Регистрация: 20.03.2008
Сообщений: 1,183
|
|
отлично, а теперь попробуй с помощью htmlpurifer сделать невалидный хмл
мне как-то пох с какой скоростью развивается сеть. в ней и так полно дерьма. куда уж больше?
__________________
.ня
Последний раз редактировалось tenshi, 17.04.2011 в 15:30.
|
|
17.04.2011, 19:21
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
Сообщение от tenshi
|
мне как-то пох с какой скоростью развивается сеть. в ней и так полно дерьма. куда уж больше?
|
чтд
Сообщение от tenshi
|
отлично, а теперь попробуй с помощью htmlpurifer сделать невалидный хмл
|
не понял, при чем тут xml и _не_валидный?
|
|
18.04.2011, 02:09
|
Профессор
|
|
Регистрация: 20.03.2008
Сообщений: 1,183
|
|
при том, что на выходе он генерирует ххтмл фрагмент
__________________
.ня
|
|
18.04.2011, 11:59
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
Сообщение от tenshi
|
3. и эти специалисты не ноют, что битый хмл не будет показан пользователю. потому что знают, что у них он никогда битым не будет. а те, кто ноет - неявно подписываются тем самым под своей профессиональной непригодностью.
|
Сообщение от x-yuri
|
на чем основана эта уверенность?
|
Сообщение от tenshi
|
что такое "защита от хсс"?
|
это типа такой окольный способ ответа на мой вопрос?
Сообщение от tenshi
|
ошибки парсинга хмл выявляются очень быстро при первичном тестировании. а при правильно выбранных инструментах исключаются вовсе.
|
а что это за правильно выбранные инструменты и что ты вообще можешь посоветовать в плане xhtml?
|
|
18.04.2011, 12:13
|
|
Модератор Всея Форума
|
|
Регистрация: 14.05.2009
Сообщений: 4,021
|
|
Сообщение от x-yuri
|
советую выложить свой проект на github
|
Пока рано, а так да.
Сообщение от x-yuri
|
Но возможно что это все превратиться в нечто другое, не то, что ты хотел (чья-то реализация станет популярнее).
|
Главное, что бы идеология и архитектура сохранилась, а какая будет реализация - не важно.
Сообщение от x-yuri
|
на чем основана эта уверенность?
|
Ну так то он всё правильно говорит. Не умеешь работать с форматом - не берись.
Ну вот
Ещё кое-что надумал, пока пытался заснуть вчера... Асинхронность. Например (из прошлого html-кода):
this.parent.item.Style({
display: 'none'
}, function(dataObject, property){
// Представление изменилось
});
или:
this.parent.item.Event({
click: false
}, function(dataObject, property){
// Обработчик установлен
});
Так как всё происходит после выполнения кода, в недрах контроллера (платформы), сразу обработать результат не получится. Например, часто бывает нужно узнать размеры элемента сразу после изменения данных. Архитектура (которая у меня в голове и в черновиках) это позволяет сделать. Как вам такой код?!
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф
|
|
18.04.2011, 12:29
|
Профессор
|
|
Регистрация: 20.03.2008
Сообщений: 1,183
|
|
на тот вопрос я не отвечал, так как не вижу смысла
любые инструменты, которые работают с документом не как со строкой, а как с деревом.
события надо не только вешать, но и убирать, поэтому лучше что-то типа такого:
var clickSpy= Spy( elem, 'click', function(){} ).listen() // создали и запустили прослушку
...
clickSpy.forget() // забили на прослушку
...
clickSpy.scream() // кричим другим агентам
__________________
.ня
|
|
18.04.2011, 12:36
|
|
Модератор Всея Форума
|
|
Регистрация: 14.05.2009
Сообщений: 4,021
|
|
Сообщение от tenshi
|
события надо не только вешать, но и убирать
|
delete this.parent.item.Event().click;
Сообщение от tenshi
|
clickSpy.scream() // кричим другим агентам
|
Это что такое? Модуль не может напрямую влиять на другие модули. Это чуть ли не основная цель всей архитектуры. Полная независимость.
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф
|
|
19.04.2011, 00:40
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
Сообщение от B~Vladi
|
Ещё кое-что надумал, пока пытался заснуть вчера... Асинхронность. Например (из прошлого html-кода):
|
ну асинхронность она определенно усложняет. Просто пока ее немного, это не мешает. А потом начинаешь изобретать цепочки вызовов, т.е. прячешь эту асинхронность. На github'е видел не одну библиотеку, в которой это есть. Например, можно так реализовать, через рекурсию, для небольших цепочек, на mootools:
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();
|
|
19.04.2011, 17:38
|
|
Модератор Всея Форума
|
|
Регистрация: 14.05.2009
Сообщений: 4,021
|
|
Не не не, Девид Блейн.
Вот, например, есть объект, описывающий тег:
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);
Отсюда видно, что представление изменится только после выполнения обработчиков модулей. Что бы можно было учесть эту ситуацию - я и предложил это решение. Цепочки тут не нужны.
Сообщение от x-yuri
|
ну асинхронность она определенно усложняет.
|
Согласен. Это выглядит как асинхронность на уровне кода, но по сути это событие.
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф
Последний раз редактировалось B~Vladi, 19.04.2011 в 17:41.
|
|
|
|