Здравствуйте, c-smile, Вы писали:
AVK>>Не совсем такое же. Я предлагаю вобще никаких ограничений на сам язык не накладывать в стандарте. Ну или сделать отдельный стандарт.
CS>Сложно. Ибо байткод зело языко-ориентирован.
На платформе CLR есть и эйфель, и F#, и классические С# и C++. Для целей написания скриптов более чем.
... << RSDN@Home 1.2.0 alpha rev. 675 on Windows Vista 6.0.6000.0>>
Здравствуйте, c-smile, Вы писали:
CS>Это кто-то другой неадекватен.
Гы-гы.
CS> Я лично пользую IE6 ибо это объективно лучший движок.
Ты? И что? А я пользуюсь IE7 на додной машине и IE6 на другой. IE7 в использовании удобнее. С точке зрения скорости работы мне они оба фиолетовы. Я разницы не замечаю.
CS>Вот таблица упорядоченная по времени на рендеринг CSS.
Да плевать подавляющему большинству народа на какие-то там цифорки. Ты совершенно не адекватен.
IE7 будет на подавляющем большинстве компьютеров просто потом что он идет во всех апдэйтах и ставится с новыми версиями ОС.
Так что это буквально дело времени.
Если в IE7 есть ошибка, и она будет напрягать хоть немного заметную долю аудитории, то глюк вычистят и выпустят патч. Тольк и всего. Так что я вообще не понимаю твоих "обличительных речей".
Еще раз повтор, ты совершенно неадекватно воспринимаешь реальность.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
VladD2 wrote: > Если в IE7 есть ошибка, и она будет напрягать хоть немного заметную долю > аудитории, то глюк вычистят и выпустят патч. Тольк и всего. Так что я > вообще не понимаю твоих "обличительных речей".
У меня стоит IE7, я им пользуюсь для тестирования. Это такая $#%^$*#$# —
тормозит и глючит даже на простых страницах. Даже IE6 был лучше.
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, c-smile, Вы писали:
AVK>>>Не совсем такое же. Я предлагаю вобще никаких ограничений на сам язык не накладывать в стандарте. Ну или сделать отдельный стандарт.
CS>>Сложно. Ибо байткод зело языко-ориентирован.
AVK>На платформе CLR есть и эйфель, и F#, и классические С# и C++. Для целей написания скриптов более чем.
CLR байткод не подходит для эффективной имплементации скриптовых языков. Операции с typeless типами например достаточно накладны.
Да и вообще... bytecode скриптового языка компактнее по количеству комманд и с другой стороны более ёмок что-ли.
Например у меня команда BC_OUTPUT делает вывод аккумулятора в stdout (нужно для PHP alike processing).
Можно было бы её разложить на три BC_GREF/stdout, BC_LIT/println, BC_CALL но это в три раза медленнее.
И такая специфика есть у каждого языка.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, c-smile, Вы писали:
CS>>Это кто-то другой неадекватен.
VD>Гы-гы.
CS>> Я лично пользую IE6 ибо это объективно лучший движок.
VD>Ты? И что? А я пользуюсь IE7 на додной машине и IE6 на другой. IE7 в использовании удобнее. С точке зрения скорости работы мне они оба фиолетовы. Я разницы не замечаю.
Где-то я это слышал уже... "а зато душа у нея красивая"...
CS>>Вот таблица упорядоченная по времени на рендеринг CSS.
VD>Да плевать подавляющему большинству народа на какие-то там цифорки. Ты совершенно не адекватен.
Это у тебя мантра такая "Ты совершенно не адекватен"?
VD>IE7 будет на подавляющем большинстве компьютеров просто потом что он идет во всех апдэйтах и ставится с новыми версиями ОС.
Ты логи сайта давно смотрел? Особенно статистику по броузерам?
VD>Так что это буквально дело времени.
VD>Если в IE7 есть ошибка, и она будет напрягать хоть немного заметную долю аудитории, то глюк вычистят и выпустят патч. Тольк и всего. Так что я вообще не понимаю твоих "обличительных речей".
VD>Еще раз повтор, ты совершенно неадекватно воспринимаешь реальность.
Влад, я не пойму, тебе потрындеть просто хочется или как? О чем вся эта лирика?
Тормоза броузера просекаются на первом же stress test. Если кто-то не исполнил этот элементарный
стресс тест перед выпуском то это значит что никому не нужно было или все согласились "ну и фиг с ним".
О чем я и говорил собственно.
Здравствуйте, c-smile, Вы писали:
CS>CLR байткод не подходит для эффективной имплементации скриптовых языков.
Я думаю, "неэффективный" JScript.NET сделает по производительности оригинальный JScript как котенка. Если есть иные данные — велкам.
CS>Да и вообще... bytecode скриптового языка компактнее по количеству комманд и с другой стороны более ёмок что-ли.
Я сейчас не хочу обсуждать гипотетическую виртуальную машину скриптового языка vs CLR. Речь о другом. CLR был приведен исключительно в качестве иллюстрации того, что даже строго типизированная VM оказывается способна выполнять очень широкий спектр языков. В случае интерпретируемой VM этого достичь будет только проще.
... << RSDN@Home 1.2.0 alpha rev. 675 on Windows Vista 6.0.6000.0>>
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, c-smile, Вы писали:
CS>>CLR байткод не подходит для эффективной имплементации скриптовых языков.
AVK>Я думаю, "неэффективный" JScript.NET сделает по производительности оригинальный JScript как котенка. Если есть иные данные — велкам.
Может да, а может нет.
Если код сугубо typeless то выигрыша в том что это в .NET мало.
typless value как я понимаю в CLR будет выглядеть как ссылка на объект а все возможные
типы/знначения это boxed конструкции. Ожидать особой эффективности от такого решения сложно.
Это и расход памяти и работа для GC на пустом месте ну и скорость работы с виртуальным функциями.
Я могу ошибаться по поводу эффективного способа представления discriminated union (a.k.a. variant) в .net
поэтому буду признателен если кто подскажет верный путь.
CS>>Да и вообще... bytecode скриптового языка компактнее по количеству комманд и с другой стороны более ёмок что-ли.
AVK>Я сейчас не хочу обсуждать гипотетическую виртуальную машину скриптового языка vs CLR. Речь о другом. CLR был приведен исключительно в качестве иллюстрации того, что даже строго типизированная VM оказывается способна выполнять очень широкий спектр языков. В случае интерпретируемой VM этого достичь будет только проще.
Да наверное можно было бы за основу взять WMLScript спецификацию и сделать на её основе нечто.
Если все бы согласились с предлагаемой архитектурой VM которая жестко вшита в bytecode.
Здравствуйте, AndrewVK, Вы писали: AVK>IE8 сейчас уже разрабатывается. Я в свое время накатал им довольно объемистую телегу насчет того, что я там увидеть желаю.
У нее случайно публичного статуса нет, чтобы мы проголосовали?
Я бы кстати с удовольствием пообсуждал с народом (типа c-smile) вопросы существующих браузеров, чтобы сформировать свое мнение.
У меня лично есть некоторый набор пожеланий, но он довольно-таки размазанный и нечеткий. Потому как существенных изменений ожидать не приходится; а с несущественными мы и сами научились бороться. Даже неумение IE работать с альфаканалом в PNG и то было заборото.
1.2.0 alpha rev. 655
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, c-smile, Вы писали:
A>>Мы видим, что стало с IE после уничтожения соперников. Тебе хочется повторения? Я за конкуренцию. CS>А что с ним собственно стало?
Здравствуйте, c-smile, Вы писали:
A>>Мы видим, что стало с IE после уничтожения соперников. Тебе хочется повторения? Я за конкуренцию. CS>Проблема в том что броузеро-строители озабочены нонче сугубо исполнению стандарта. CS>Задача же создания действительно удобной модели как оказалось ортогональна деятельности CS>создателей W3C DOM.
Сейчас уже поздно отказываться от существующей модели, поэтому спорить бессмысленно. Да, многим не нравится, но это всё, что у нас есть.
CS>IE своей монополией в свое время ввел DHTML что есть основа всего того чего мы имеем.
+
CS>Сейчас же любое отклонение вызывает битье по пальцам. CS>Я бы понял если бы механизм разработки сиандартов был более динамичным что-ли тогда можно было бы CS>ожидать какого-нибудь прогресса. А так...
Что ты понимаешь под более динамичным механизмом разработки стандартов?
CS>Вон WHATWG выдумала XBL и усиленно толкает — зачем оно такое?
Вон Microsoft придумала HTC — аналогичный вопрос. И мне казалость, что XBL придумали в Mozilla, а уж WHATWG получила его от них. Кстати, за него взялить и в W3C, уже есть working draft sXBL aka XBL 2.0.
CS>Т.е. имеем HTML + CSS + JavaScript и этого оказывается мало для того чтобы CS>свзать класс элементов с обработчиками событий в скрипте — нужно все-таки XML воткнуть туда в виде CS>еще одного языка. Типа чтобы web developers не скучали.
Ну а как ещё новые поведение и свойства добавлять элементам?
Здравствуйте, Sinclair, Вы писали:
S>Я бы кстати с удовольствием пообсуждал с народом (типа c-smile) вопросы существующих браузеров, чтобы сформировать свое мнение. S>У меня лично есть некоторый набор пожеланий, но он довольно-таки размазанный и нечеткий.
Здравствуйте, c-smile, Вы писали:
CS>CLR байткод не подходит для эффективной имплементации скриптовых языков. Операции с typeless типами например достаточно накладны.
Здравствуйте, anonymous, Вы писали:
A>Так опубликуй этот набор.
Ну вот например, многие ли знают об атрибутах accept и size для <input type=file>? А они между прочим стандартизованы еще десять лет назад в HTML 3.2. Я был бы не против поддержки этой возможности.
Я также очень бы хотел иметь возможность регистрировать Web Publishing Providers, Image Print Providers и Music Providers в пост-XP системах без правки реестра. Примерно так, как регистрируются Search Provider в IE 7.0. Без этого возможность выглядит совершенно дурацкой: для того, чтобы зарегистировать чисто онлайновый сервис на клиентской машине, пользователь вынужден запускать исполняемый код и оказывать ему офигенное доверие.
1.2.0 alpha rev. 655
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
A>Ну а как ещё новые поведение и свойства добавлять элементам?
Например, вот так:
// http://jquery.com/
// работаем со всеми элементами а на странице
$("a")
.click(
function(){alert('Hello, World'); return false;}
)
.attr("class", "myclass")
Здравствуйте, Sinclair, Вы писали:
S>У нее случайно публичного статуса нет, чтобы мы проголосовали?
Нет. А тебе что, этот survey не приходил?
А вобще, Ложечкин обещал познакомить с русскими товарищами из IE team, так что у тебя будет возможность рассказать о своих пожеланиях лично.
S>Я бы кстати с удовольствием пообсуждал с народом (типа c-smile) вопросы существующих браузеров, чтобы сформировать свое мнение.
Типа c-smile бессмысленно, бо там речь шла не о фичах движка, а о пользовательских фичах.
S>Даже неумение IE работать с альфаканалом в PNG и то было заборото.
Здравствуйте, c-smile, Вы писали:
CS>Может да, а может нет.
Ну то есть ты сам не знаешь, но споришь. Похвально.
CS>Если код сугубо typeless то выигрыша в том что это в .NET мало.
А проигрыша?
CS>типы/знначения это boxed конструкции. Ожидать особой эффективности от такого решения сложно.
Ожидать эффективности от интерпретаторов тоже сложно.
CS>Это и расход памяти и работа для GC на пустом месте ну и скорость работы с виртуальным функциями.
Смешно. Учитывая, как сейчас тормозит JScript на примитивнейших алгоритмах, рассуждать о тормозах вирутальных функций ...
CS>Я могу ошибаться по поводу эффективного способа представления discriminated union (a.k.a. variant) в .net
Есть там FieldOffsetAttribute. Только это все фигня по сравнению с тормозами интерпретаторов. И еще раз тебе напоминаю — CLR приведен в качестве иллюстрации, а не в качестве готового решения.
CS>Если все бы согласились с предлагаемой архитектурой VM которая жестко вшита в bytecode.
Ну с JavaScript же согласились, а это куда более жесткое оганичение.
Здравствуйте, Cyberax, Вы писали:
C>У меня стоит IE7, я им пользуюсь для тестирования. Это такая $#%^$*#$# — C>тормозит и глючит даже на простых страницах. Даже IE6 был лучше.
А у меня стоит IE7, и никакого ухудшения по сравнению с IE6 я не заметил.
Атрибут это не свойство (хотя в MS так не думают). Да и свойсво click ты не добавил, а изменил его значение.
А как тебе такое? Правда это не HTML, а XUL. (Извиняюсь, за большой кусок кода, посто это один рально работающий binding.)
<binding id="my-button"extends="chrome://global/content/bindings/toolbarbutton.xml#toolbarbutton-image">
<implementation implements="nsIObserver">
<constructor><![CDATA[
// Initialize data source.var name = Components
.classes['@mozilla.org/network/io-service;1']
.getService(Components.interfaces.nsIIOService)
.getProtocolHandler("file")
.QueryInterface(Components.interfaces.nsIFileProtocolHandler)
.getURLSpecFromFile(this.dataFile);
this.dataSource = this.rdfService.GetDataSourceBlocking(name);
// Initialize current search engine.
setTimeout(function(aThis) { aThis.searchEngine = aThis.searchBar.currentEngine; }, 0, this);
// Add "browser-search-engine-modified" notification observer.
Components
.classes["@mozilla.org/observer-service;1"]
.getService(Components.interfaces.nsIObserverService)
.addObserver(this, "browser-search-engine-modified", false);
]]></constructor>
<field name="rdfService" readonly="true">Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService)</field>
<field name="rdfContainerUtils" readonly="true">Components.classes["@mozilla.org/rdf/container-utils;1"].getService(Components.interfaces.nsIRDFContainerUtils)</field>
<field name="dataSource">null</field>
<property name="dataFile">
<getter><![CDATA[
var file = Components
.classes["@mozilla.org/file/directory_service;1"]
.getService(Components.interfaces.nsIProperties)
.get("ProfD", Components.interfaces.nsIFile);
file.append("site-search.rdf");
if (!file.exists()) {
var data = "<?xml version=\"1.0\"?>\n" +
"<RDF:RDF xmlns:SS=\"http://dionys.pp.ru/SS-rdf#\"\n" +
" xmlns:NC=\"http://home.netscape.com/NC-rdf#\"\n" +
" xmlns:RDF=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n" +
" <!-- Empty -->\n" +
"</RDF:RDF>\n";
var stream = Components
.classes["@mozilla.org/network/file-output-stream;1"]
.createInstance(Components.interfaces.nsIFileOutputStream);
try
{
file.create(file.NORMAL_FILE_TYPE, 0666);
stream.init(file, 2, 0x200, 0);
stream.write(data, data.length);
stream.close();
}
catch (exception)
{
return null;
}
}
return file;
]]></getter>
</property>
<field name="searchBar" readonly="true">document.getElementById("searchbar")</field>
<field name="searchRule">null</field>
<property name="searchEngine"
onget="return this.searchBar.currentEngine;">
<setter><![CDATA[
this.disabled = true;
this.searchRule = null;
var engines = this.rdfContainerUtils
.MakeSeq(this.dataSource, this.rdfService.GetResource("urn:root:engines"))
.GetElements();
while (engines.hasMoreElements())
{
var resource = engines.getNext();
var name = this.dataSource.GetTarget(resource, this.rdfService.GetResource("http://dionys.pp.ru/SS-rdf#name"), true);
if (name)
{
name = name.QueryInterface(Components.interfaces.nsIRDFLiteral)
if (name.Value == val.wrappedJSObject.name)
{
this.disabled = false;
var rule = { query : null, params : [] };
var query = this.dataSource.GetTarget(resource, this.rdfService.GetResource("http://dionys.pp.ru/SS-rdf#query"), true);
var params = this.dataSource.GetTargets(resource, this.rdfService.GetResource("http://dionys.pp.ru/SS-rdf#param"), true);
if (query instanceof Components.interfaces.nsIRDFLiteral)
rule.query = query.Value;
while (params.hasMoreElements())
{
var param = params.getNext();
var name = this.dataSource.GetTarget(param, this.rdfService.GetResource("http://dionys.pp.ru/SS-rdf#name"), true);
var value = this.dataSource.GetTarget(param, this.rdfService.GetResource("http://dionys.pp.ru/SS-rdf#value"), true);
if (name instanceof Components.interfaces.nsIRDFLiteral && value instanceof Components.interfaces.nsIRDFLiteral)
rule.params.push({ name : name.Value, value : value.Value });
}
this.searchRule = rule;
break;
}
}
}
return val;
]]></setter>
</property>
<method name="observe">
<parameter name="aEngine"/>
<parameter name="aTopic"/>
<parameter name="aVerb"/>
<body><![CDATA[
if (aTopic == "browser-search-engine-modified" && aVerb == "engine-current")
this.searchEngine = aEngine;
]]></body>
</method>
<method name="handleSearchCommand">
<parameter name="aEvent"/>
<body><![CDATA[
var textbox = this.searchBar.textbox;
var value = textbox.value;
if (this.searchBar.getAttribute("empty") == "true")
value = "";
if (value)
textbox._formHistSvc.addEntry(textbox.getAttribute("autocompletesearchparam"), value);
var tab = (aEvent.button == 1) || (aEvent.altKey ^ textbox._prefBranch.getBoolPref("browser.search.openintab"));
if (value && this.searchRule)
{
var browser = getBrowser();
// On "about:blank" location.host raises exception.try
{
var host = browser.selectedBrowser.contentWindow.location.host;
if (host)
{
var regexp = /\{site\}/ig;
if (this.searchRule.query)
value += " " + this.searchRule.query.replace(regexp, host);
var submission = this.searchEngine.getSubmission(value, null);
var uri = null;
var data = null;
if (submission)
{
uri = submission.uri.spec;
data = submission.postData;
}
if (uri)
for (var i = 0; i < this.searchRule.params.length; i++)
uri += "&" + this.searchRule.params[i].name + "=" + this.searchRule.params[i].value.replace(regexp, host);
if (tab)
{
content.focus();
browser.loadOneTab(uri, null, null, data, false, false);
if (gURLBar)
gURLBar.value = uri;
}
else
loadURI(uri, null, data, false);
content.focus();
}
}
catch (exception) { }
}
else
this.searchBar.doSearch(value, tab);
]]></body>
</method>
</implementation>
<handlers>
<handler event="click"><![CDATA[
if (event.button == 1)
this.handleSearchCommand(event);
event.stopPropagation();
]]></handler>
<handler event="command"><![CDATA[
this.handleSearchCommand(event);
event.stopPropagation();
]]></handler>
</handlers>
</binding>
Теперь у нашей кнопки (здесь опитывается кнопка панели инструментов), есть свой конструктор, свои поля (в том числе и read only) и свои методы. А кроме того она ещё и реализует интерфейс nsIObserver, т. е. способна работать обсервером.