.
Январь 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
Январь 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. Запись автора Джона Резига в личном блоге.
Декабрь 15, 2007

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

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

Сегодня я снова хотел бы поднять тему вебстандартов, но в несколько ином ключе. Я считаю, что всем приверженцем канонов 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
Ноябрь 1, 2007

Уроки верстки

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

Опыт. Какое же всетаки это бесценное сокровище, его нельзя купить, одолжить, его можно только получить самостоятельно. Учиться, учиться и учиться, как говорил небезызвестный дедуÑ?ка всех октябрят. Однако опыт приходит быстрее и усваивается лучше, если человек наряду с получением академических знаний, практикуется, практикуется и практикуется.

В свое время мне очень помогли блоги вебразработчиков и форумы, на которых они делились своими практическими знаниями по интересующей меня теме верстки гипертекстовых документов. Это очень помогло мне в быстром освоении правильного подхода к верстке. До моего озарения я 5 лет придерживался старой “табличной” школы верстки, слыхом не слыхивал о принципах вебстандартов, поэтому мне было крайне тяжело переучиваться, когда я столкнулся с необходимостью кардинального роста качества моей работы.
Сегодня накопленный опыт просто давит на черепную коробку изнутри и мне хочется им поделиться в свою очередь с новым поколением. И, дабы как-то упорядочить публикацию моих материалов по верстке, я решил сделать что-то вроде электронной книги. Мне кажется, так легче будет и мне подавать материал и вам его воспринимать. Может быть этот труд даже вырастет когда-нибудь в печатное издание, как знать…

В общем на текущий момент я решил публиковать материалы примерно в следующем порядке:

  1. Литература и электронные материалы.
  2. Инструментарий: редакторы.
  3. Инструментарий: браузеры и плагины.
  4. Инструментарий: утилиты и вебсервисы.
  5. Введение в верстку гипертекстовых документов.
  6. Вебстандарты: теория разделения содержимого и представления.
  7. Выбираем технологии: HTML, XHTML, CSS.
  8. Введение в селекторы.
  9. Специфичность селекторов.
  10. Базовый файл стилей и рекомендации “хороÑ?его” CSS.
  11. Блочная модель CSS.
  12. Типичная разметка.
  13. Работа с текстом и шрифтами.
  14. Понятие багов и методы борьбы с ними.
  15. Фильтрация стилей.
  16. Работа с графикой.
  17. Практикум и эксперименты.

Пока я вижу это так, возможно будут коррективы по ходу написания и публикации. Этот мой маленький проект я назову пока, например, CSS Book. В месяц я планирую писать 3-4 поста, которые буду публиковаться в ленте блога. Также я создал отдельную страничку CSS Book, на которой будет собираться оглавление возможно будущей книги =).

Май 23, 2007

XHTML. Простота и порядок, доступные каждому

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

Во времена “младенчества” сети Интернет, ему многое прощалось: отсутствие качественного оформления документа, отсутствие эргономики интерфейсов, некорректность по ряду причин программного кода языков и многое другое. Было это потому, что сам Интернет был неким ноу-хау, если хотите, и распространялся по принципу “как есть”. Это была эпоха Веб 1.0, как его позже назовут. Сегодня же мы с вами являемся современниками Веба, который с легкой руки Тима О’Рейли получил название Веб 2.0, что означает выход на новый качественный уровень, когда в вебразработку приходят профессионалы, которые не рисуют мышкой, заботятся об удобстве использования своего продукта, отвечают за корректность каждой строчки кода и за его безопасность. Работы этих специалистов говорят сами за себя. Это люди, которые понимают и принимают весь груз ответственности за то, каким Веб станет после них.

Сегодня язык Веба – это, возможно, самый популярный язык разметки документов – HTML. Это именно тот машинный язык, который позволяет донести до пользователя посредством браузера информацию, однако является ли он единственно доступным для вебразработчика?

HTML является потомком языка разметки чисто теоретического, академического, если хотите, SGML. В свое время именно он был выбран в качестве основы нового языка гипертекстовых документов для сети Интернет. В своей первой редакции HTML четко следовал философии SGML, т.е. чисто логическому форматированию данных. Из чуть более 40 тэгов в версии 1.2 он включал в себя всего 3, которые можно было причислить к стилистическим. Необходимо отметить, что это было вполне оправдано даже с чисто практической точки зрения, т.к. в те времена господствовали текстовые браузеры, а первым и единственным графическим стал NCSA Mosaic. Однако, после продажи Mosaic компании Microsoft, на рынок вышли новые продукты, поддерживающие графический контент, как от самого гиганта из Редмонда, так и от сторонних производителей. И естественным желанием для разработчика стало применение графических элементов, для оформления своего документа. Однако в первое время отсутствие какого-либо языка стилистического оформления, а затем, с появлением оного (CSS), его слабая поддержка, породили множество оформительских тэгов в самом HTML. Причем как стараниями самого w3c, организации, занимающейся разработкой рекомендаций и стандартов в сети Интернет, так и разработчиков браузеров.

Последней утвержденной и опубликованной версией HTML стала HTML 4.01 от 24.12.1999, которая в своей версии Strict сделала первый шаг к порядку в коде, отменив множество стилистических тэгов и их атрибутов, предложив вместо них воспользоваться соответствующими возможностями специально созданного для этого языка CSS. На момент публикования последней спецификации HTML уже прочно стоял на ногах мощный, фактический неограниченный язык XML. И, судя по всему, заглядывая в светлое и идеальное будущее, в w3c решили, что именно XML и станет кросплатформенным стандартом обмена данными, который откроет возможность совместного использования с другими языками XML и позволит привести в порядок сам HTML, ликвидировав его устаревшие элементы и расширив функциональность. Первым шагом к этому стало создание промежуточного языка – XHTML. Итак, 12 мая 1998 года параллельно с работой над соверÑ?енствованием HTML была опубликована первая редакция XHTML.

Что же он из себя представляет? XHTML это гипертекстовый язык разметки документов, являющийся подмножеством XML и соответствующий спецификации SGML, т.е. фактически это HTML, переформулированный в синтаксисе XML. Язык был избавлен от, все еще остававшихся в HTML, оформительских средств. Фактически все вернулось на круги своя. Целью языка разметки XHTML стало описание структуры документов, а на CSS была возложена роль, полностью взять на себя представление внеÑ?него вида гипертекстовых документов.

Сегодня об XHTML можно говорить, как о становящимся, наконец, на ноги семействе языков разметки гипертекста. XHTML это шаг к эволюционному развитию Ð?нтернет и переходу к чистому XML, при сохранении обратной совместимости документов для устаревÑ?их типов пользовательских агентов. Текущей опубликованной версией является XHTML 1.1 от 16 февраля 2007 года.

XHTML является преемником HTML и обладает рядом закономерных преимуществ перед ним. Так почему же стоит его применять на практике?

  1. XHTML является текущим опубликованным стандартом разметки гипертекста, заменившим HTML и рекомендованным к повсеместному использованию.
  2. XHTML является более последовательным и строгим языком, чем HTML, применение его снижает вероятность возникновения ошибок в коде, повышая, таким образом, общее качество гипертекстового документа и уровень вебразработок в целом.
  3. XHTML, за счет строгого синтаксиса, разбирается парсером пользовательского агента проще и быстрее, в отличие от HTML, что позволяет осуществить его обработку на устройствах с малыми вычислительными ресурсами.
  4. XHTML является подмножеством языка XML, который позволяет уже сейчас значительно расширить возможности работы с документами посредством применения таких технологий, как XSLT, SVG, MathML, RSS, VoiceXML, Web3D, RDF/XML, XMP, XUL, SOAP, Ajax и Jabber/XMPP). В будущем же он позволит использовать все новые, возможно, пока еще неизобретенные или неутвержденные XML-технологии.
  5. XHTML позволяет правильно и полноценно использовать приложения (например, скрипты и апплеты), относящиеся к Document Object Model.
  6. XHTML открывают путь в мир метаданных, что, можно утверждать с большой долей вероятности, позволят в будущем поисковым маÑ?инам более корректно и точно обрабатывать данные в XHTML документах (читай страницах сайта). Сейчас это уже стало реальностью в виде микроформатов.

Важно отметить, что XHTML корректно обрабатывается старыми браузерами, что уменьшает препятствия к его применению на практике.

XHTML это правильный способ публикации гипертекстовых документов в сети, это то, к чему приÑ?ли разработчики вебстандартов, основываясь на опыте последних 15 лет существования сети Интернет. И самая главная причина применения текущих стандартов на практике состоит в том, что ваш документ гарантированно будет доступен и через 10 и через 20 лет, благодаря строгому следованию стандарту.

Вместо заключения. Следует отметить, что сегодня параллельно ведутся работы над следующей версией языков гипертекстовой разметки документов (X)HTML5 и XHTML2, однако это тема большой отдельной статьи, так что про перспективы каждого мы поговорим в следующий раз.

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

  1. Что такое XHTML? http://www.itstan.ru/content/view/2661/2344/
  2. Золотой век http://www.itstan.ru/content/view/2654/2337/
  3. http://ru.wikipedia.org/wiki/Xhtml
  4. Настоящий XHTML или пока не стоит? http://cssing.org.ua/2005/02/25/xhtml-worth-or-not/
  5. Оценка XHTML http://www.webmasterpro.com.ua/news333.html
  6. Преимущества XHTML http://www.itstan.ru/content/view/2665/2349/
  7. Ответы на часто задаваемые вопросы по XHTML и HTML http://www.w3.org/2006/06/xhtml-faq-ru.html