.
January 30, 2008

ACID3 готов!

Автор: Павел Ловцевич
Категории: Clientside
Метки: , , , , , , ,
3 Комментария(ев)

Сегодня известный разработчик синтетического теста браузеров на соответствие вебстанадртам ACID, а ныне работник Google, Иан Хиксон сообщил об официальном релизе ACID3. Кроме того, все версии тестов и новости проекта теперь доступны по адресу acidtests.org.

Мы уже рассказывали ранее о нововведениях в ACID3, но не лишним будет повторить, что в отличие от ACID1, проверка которого была сосредоточена на блочной модели, и ACID2, который проверял широкое разнообразие HTML и особенностей CSS, ACID3 осуществляет проверку 100 вероятно уязвимых мест в HTTP, HTML, CSS, ECMAScript, SVG и XML, а также проверяет работу с DOM’ом (без которого сложно представить себе современно веб-приложение).

  • DOM2 Core
  • DOM2 Events
  • DOM2 HTML
  • DOM2 Range
  • DOM2 Style (getComputedStyle, …)
  • DOM2 Traversal (NodeIterator, TreeWalker)
  • DOM2 Views (defaultView)
  • ECMAScript
  • HTML4 (&lgt;object&rgt;, &lgt;iframe&rgt;, …)
  • HTTP (Content-Type, 404, …)
  • Media Queries
  • Selectors (:lang, :nth-child(), combinators, dynamic changes, …)
  • SVG
  • XML
  • XHTML 1.0
  • CSS2 (@font-face)
  • CSS2.1 (’inline-block’, €?pre-wrap’, parsing…)
  • CSS3 Color (rgba(), hsla(), …)
  • CSS3 UI (’cursor’)
  • data: URIs
  • и прочее

Иан Хиксон является также одним из первых авторов спецификации HTML5, также известной как спецификация Web Apps 1.0, и ряда других разработок, как то хранение данных на стороне клиента (client‐side storage) и улучшенные формы (enhanced forms).

Иан написал 64 из 100 тестов, остальные 36 были разработаны совместными усилиями производителей браузеров и независимых веб-разработчиков. Работа над новым Acid3 началась практически в то время, когда разработчики IE8 сообщили о том, что их браузер успешно прошел Acid2. Правда, эта новость в сети была воспринята весьма критично, так как выяснилось, что для этого на стороне сервера пришлось подправить заголовки HTTP.

Обращаем ваше внимание, что для корректного тестирования вашего браузера, вы должны использовать настройки браузера по умолчанию. Изменяя масштабирование страницы, минимальный размер шрифта, применяя “fit-to-width”, или делая другие изменения можно изменить результаты прохождения теста.

Ссылки по теме:

  1. Официальный сайт тестов ACID
  2. Acid3 Browser Test
  3. Acid3 browser test completed, available now
  4. Acid3: Putting Browser Makers on Notice, Again
January 12, 2008

Встречайте - ACID3

Автор: Павел Ловцевич
Категории: Clientside
Метки: , , , , ,
12 Комментария(ев)

Вчера известный вебразработчик автор теста ACID, для проверки браузеров на соответствие вебстандартам, Иан Хиксон, выложил предварительную новую версию в сеть для всеобщего ознакомления, которая доступна здесь. Автор теста сообщает, что разработка уже практически завершена.

Традиционно тест проверял парсинг HTML и CSS, причем часто не прямым тестированием свойства, а обходным путем, изучая результаты его работы в браузерах. Например, для того чтобы пройти «ужасный» padding/margin тест, браузерам, кроме корректной поддержки CSS, нужно иметь правильную боксовую модель (“box model”).

Что же нового несет в себе ACID3? В первую очередь он главным образом основывается на технологиях ECMAScript и DOM. Разберем, что же именно тестируется, особенно в отношении ECMAScript:

  • Элизия массивов – вещи подобно [,,] должны иметь нулевую длину, а для масива [0,,1] она должна быть равна 3.
  • Методы массива – проверяется возможность добавления нескольких элементов в массив (.unshift(0, 1, 2)) и объединение его с undefined (.join(undefined).)
  • Преобразования чисел - проверяется работа таких методов как .toFixed(), .toExponential() и .toPrecision(), в первую очередь, с дробными и отрицательными чилами.
  • Операции со строками – метод substr() должен уметь работать с отрицательными аргументами (.substr(-7, 3)), доступ к символам строки должен осуществляться по их позиции (”my string”[0]). (это часть спецификации ECMAScript4)
  • Работа с датами – удостовериться, что некоторые методы возвращают NaN (например, d.setMiliseconds() без аргументов), а также что происходит обязательное смещение +1900 лет.
  • Unicode символы в названиях переменных – их использование должно вызывать оÑ?ибку. Например,
    eval("test.i\\u002b= 1;");
  • Регулярные выражения - /[]/ должно соответствовать пустому массиву, а /[])]/ вызывать ошибку. Должны поддерживаться обратные ссылки (backreference) на несуществующие образы и отрицательные lookahed’ы - /(?!test)(test).exec(”test test”).
  • Перечисления (Enumeration) – нужно убедиться, что свойства объекта правильно перечисляются, что доступны свойства с определенными именами (toString, hasOwnProperty, etc)
  • Конструкторы – у пользователя должна быть возможность определять собственные конструктоы в свойстве .constructor, свойство .constructor не должно быть в перечислении, а свойство .prototype.constructor должно быть удаляемым.
  • Функции – возможность вызывать функцию по имени из самой себя, прямое изменение ее имени должно быть запрещено(только используя массивы функций). (function test(){ … })(); - «test» не должен быть виден в родительской области.
  • Ошибки – переменные в блоке catch(){} должны в первую очередь работать с аргументами catch(), а затем уже с родительскими. Например
    
    var e = "my name";
    try
    {
    ...//некий код
    }
    catch(e)
    {
    alert(e);
    }

    не должно выводить “my name”.

  • Операции присваивания - s = a.length = “123″; - a.length должно возвращать 123, а не 3
  • Кодировки - encodeURI() и encodeURIComponent() должны корректно работать с нулевыми байтами.

В общем и целом, это был широкий, однако достаточно поверхностный обзор суровых, но обязательных к исполнению требований спецификации ECMAScript. Открыв свой любимый браузер, вы просто обречены найти как минимум одно из этих требований невыполненным.

Подробности автор теста обещает представить уже в ближайшие дни.

И напоследок, предварительные результаты тестирования НЕЗАКОНЧЕННОГО Acid 3 над НЕЗАКОНЧЕННЫМИ? версиями наиболее популярных браузеров, которые предоставил автор. Мы проверили, все сходится! =)

Вот эталон, который должен показать браузер.

ACID3 Reference


Firefox 2.x

ACID3 Firefox 2.x


Firefox 3.0b2

ACID3 Firefox 3.0b2


Safari 3

ACID3 Safari 3


WebKit Nightly

ACID3 WebKit Nightly


Opera 9.5b1

ACID3 Opera 9.5b1


Internet Explorer 7

ACID3 Internet Explorer 7


Ссылки по теме:

  1. Предварительное зеркало теста.
  2. Запись автора Джона Резига в личном блоге.
December 15, 2007

О вопросе стандартизации спецификаций W3C

Автор: Павел Ловцевич
Категории: Браузеры, Разное
Метки: , , , , , , ,
29 Комментария(ев)

Сегодня я снова хотел бы поднять тему вебстандартов, но в несколько ином ключе. Я считаю, что всем приверженцем канонов W3C пора перейти от обороны к наступлению.

Кто-то спросит, о чем это он? Он собирается что-то запретить? Нет, не хочу чтобы, что-либо было запрещено, я хочу, чтобы появились обязательства разработчиков программного обеспечения для Веба перед потребителями.

Итак, всем нам известен Консорциум Всемирной Паутины (W3C), организация, разрабатывающая и внедряющая технологические стандарты для сети интернет, которые на сегодняшний день, к сожалению, имеют статус рекомендаций. Именно вследствие этого статуса разработчик лидирующего продукта на рынке браузеров продукта относится к его разработке “спустя рукава”. Не последнюю роль в текущем положении вещей сыграл факт победы в свое время Internet Explorer над Netscape Navigator, которые позволил компании Microsoft фактически монополизировать рынок. И я ее за это не виню. Это рыночные отношения и компания смогла выиграть у своего прямого конкурента, за что ей мой респект.

Что мы имеем сегодня вследствие имевшей место победы IE над NN? Если в конце 90х годов в Веб приходили в большинстве своем люди, имеющие все-таки не последнее отношение к ИТ, которые могли делать осознанный выбор программного обеспечения, то сегодня в веб не попал только ленивый. Для этого даже уже совсем необязательно иметь компьютер. Поэтому не редко при общении с заказчиком на вопрос, каким браузером пользуется Ваша компания, можно увидеть глаза “по пять компеек” с просьбой не ругаться матом. =) Для современного пользователя школьника Васи или секретаря Наташи в некой компании, само понятие интернет неразрывно связано с Internet Explorer, даже, если они не знают этого названия. А этот самый Internet Explorer , в большинстве случаев IE6, безнадежно устарел и страшен в своем понимании рекомендаций W3C. Даже выход IE7не исправил ситуацию должным образом.

Я ничего не имею против позиции компании Microsoft в отношении поставки браузера IE в комплекте с операционной системой, но я крайне негативно отношусь к его качеству.

Буквально на днях норвежская компании Opera, разработчик одноименного конкурента Internet Explorer открыто выступила против голубого гиганта монополиста из Редмонда, выпустив пресс-релиз, в котором сообщает о подаче в Европейскую комиссию жалобы на корпорацию Microsoft. Разработчики Opera хотят заставить Microsoft прекратить использовать свое доминирующее положение на рынке десктопных ПК для навязывания Internet Explorer и заставить следовать веб-стандартам.

Суть требований компании Opera сводится к двум основным пунктам:

  • Microsoft должна прекратить поставлять операционную систему в связке Internet Explorer и/или включить в поставку предустановленные версии браузеров альтернативных разработчиков. Это, по мнению Opera, предоставит пользователям реальный выбор.
  • При разработке браузера Microsoft должна следовать действующим индустриальным стандартам. Сложилась неприятная ситуация, когда создатели сайтов руководствуются не существующими стандартами, а тем, как их сайт будет смотреться в браузерах, имеющих большую рыночную долю, остальные браузеры игнорируются.

Я придерживаюсь мнения, что заставить Microsoft убрать IE из поставки с операционной системой Windows, как это было в случае с Media Player, будет беспрецедентно сложно, т.к. компоненты IE проникли глубоко в ОС и используются многими ее приложениями. Ситуация же, когда в комплекте с Windows будут поставляться альтернативные браузеры кажется мне утопией.

А вот второй пункт требований норвежских разработчиков кажется мне вполне выполнимой задачей при одном условии. Спецификации W3C должны получить статус международного индустриального стандарта. В этом случае, ни один из разработчиков веббраузеров, а не только компании Microsoft, не вправе будут выпускать на рынок продукт, нарушающий принятые стандарты.

Вебразработчиком, в частности clientside-разработчикам, это позволит облегченно вздохнуть и уделять больше времени не на подгонку качественного кода под некачественные браузеры, а на совершенствование своего кода. Выиграют все и пользователи и разработчики.

Наибольшую головную боль для clientside-разработчиков приносят следующие основные некорректно реализованные спецификации W3C:

  • XHTML
  • CSS
  • DOM

Кроме того, HTML давно стал стандартом и при том, что его реализация во всех актуальных браузерах не вызывает нареканий, поэтому его тоже следует включить в этот список.
Итак, мое предложение сводится к публикации петиции с просьбой наделения некоторым спецификациям W3C статуса индустриального стандарта.

Итак.

  1. HTML 4.01 Текущий статус – рекомендация W3C от 24 декабря 1999 года.
  2. XHTML 1.0 Текущий статус – рекомендация W3C от 26 января 2000 года.
  3. CSS2.1 Текущий статус – кандидат на рекомендацию от 19 июля 2007 года. Здесь следует отметить, что компания по сбору подписей в поддержку петиции займет минимум полгода-год, к тому моменту наиболее вероятно эта спецификация получит статус рекомендации.
  4. DOM Level 3 Core Текущий статус – рекомендация W3C от 7 апреля 2004 года.

При положительном исходе такой кампании, разработчики браузеров вынуждены будут совершенствовать свой продукт до достижения им высокого уровня, чтобы иметь возможность получить сертификат соответствия и выпустить свой продукт на рынок.

На текущий момент отсутствуют программы сертификации приложений на соответствие разработанным стандартам, однако, я думаю, если кампания будет иметь успех, то будет решена и эта проблема.

После подробного обсуждения проблемы и полученных выводов, я и моя компания примем решение о необходимости написания петиции и создания сайта для ее поддержки.

Ссылки по теме:

  1. Windows без IE — невозможное возможно?
  2. Opera подала антимонопольную жалобу против Microsoft
  3. Opera vs IE: отвечает Microsoft
  4. Urges Microsoft to give consumers a genuine choice of standards—compliant Web browsers