Часть 3

Если компьютерная программа удобна и эффективна, она непременно будет изменена.

Из компьютерных афоризмов

Flash и эргономика

В конце октября 2000 г. произошло событие, вызвавшее просто невероятный резонанс в среде веб-разработчиков и довольно сильно повлиявшее на развитие Flash. Известный специалист в области эргономики Якоб Нильсен (Jakob Nielsen) опубликовал небольшую статью «Flash: 99% Bad» («Flash неприемлем на 99%»). В ней он в пух и прах разгромил технологию Flash и тех, кто ее применяет. Основная идея статьи заключалась в том, что в погоне за эффектами создатели Flash-сайтов забывают обо всем остальном. Заставка на полмегабайта, фоновая мелодия из трех аккордов, прыгающие кнопки и два предложения текста, написанного с ошибками, — вот что представлял собой тогда (а зачастую и сейчас) типичный Flash-сайт. Но не одно лишь игнорирование основ эргономики «флэшерами» вызвало праведный гнев Нильсена. Существенные недостатки имелись в самой технологии, не позволяя в принципе создать Flash-сайт, который бы ни в чем не уступал своему HTML-аналогу. К наиболее важным из них он отнес приводимые ниже проблемы.

Отсутствие поддержки кнопок навигации браузера. Действительно, Flash-сайт — это просто SWF-фильм, встроенный в качестве объекта в HTML-страницу. Его страницы — это или кадры, или подгружаемые по мере необходимости фильмы. Но рядовой пользователь не имеет об этом ни малейшего представления! Для него Flash-сайт ничем не отличается от обычного. Поэтому, если посетитель захочет перейти на уже просмотренную им страницу, он нажмет кнопку браузера Back (Назад). При этом он просто «вылетит», так как Flash-сайт, будучи цельным SWF-фильмом, полностью размещается на одной HTML-странице.

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

Во Flash не было поддержки стандартных элементов интерфейса операционных систем оконного типа — полос прокруток, полей ввода, ползунков и т.д. При необходимости разработчик сам создавал для его проекта элементы интерфейса. При этом возникали две существенные проблемы. Во-первых, из-за сложности изготовления элементы интерфейса Flash-сайтов почти всегда были очень слабыми, нередко давали сбои. Во-вторых, создаваемые «флэшерами» элементы интерфейса по особенностям использования часто не совпадали с традиционными. Вместо того чтобы изучать содержимое сайта, пользователю приходилось тратить много времени на выяснение правил работы с ним.

Сложность при интернационализации и локализации сайта. Для перевода содержимого сайта на другой язык необходимо было привлекать Flash-разработчика, так как для этого соответствующий SWF-фильм требовалось модифицировать.

Сложность при обновлении текстового содержимого сайта (с технической точки зрения проблема аналогична предыдущей).

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

Пример поиска во Flash-фильмах при помощи Google

Cайты, создаваемые с использованием Flash, не соответствовали принципам доступности. Так, в них невозможно было ни изменить размер элементов сайта, гарнитуру, цвет или начертание отображающего текст шрифта, ни перемещаться по управляющим элементам посредством клавиши Tab. Главное же — содержимое Flash-сайта было недоступно для средств чтения с экрана.

На данный момент все приведенные недостатки в целом исправлены.

Еще весной 2003 г. крупнейшая поисковая машина Google стала поддерживать поиск в текстовых полях SWF-файлов. Снабдить этой возможностью и другие, в том числе и небольшие поисковые системы очень легко. Во-первых, формат SWF открыт уже много лет, поэтому разработать программу, которая будет извлекать текст из Flash-фильмов, абсолютно несложно (подобные системы от независимых разработчиков существуют довольно давно — к примеру, Atomz или PicoSearch). Во-вторых, еще в конце 2002 г. Macromedia сделала доступным Flash Search Engine SDK — бесплатное приложение, которое может выделять из SWF-файлов текст и ссылки в HTML-формате. Достаточно интегрировать это приложение в код поисковой машины, чтобы она стала поддерживать поиск во Flash-сайтах.

Вид некоторых компонентов интерфейса Flash MX 2004

Во Flash MX и Flash MX 2004 уже не существует проблемы элементов интерфейса благодаря тому, что вместе с программой поставляется богатая коллекция соответствующих компонентов. Имеются компоненты для всех стандартных элементов: полосы прокрутки (scroll pane), окна (window), поля ввода (TextInput) и т.п. Компоненты интерфейса были разработаны очень опытными кодерами из Macromedia, поэтому по возможностям они ничуть не уступают элементам интерфейса той же Windows.

В ответ на жесткую критику компания Macromedia сделала немало для повышения степени соответствия Flash-технологии принципам доступности. Теперь ActionScript поможет легко создать элемент интерфейса, который позволит пользователю изменить размер шрифта или используемую гарнитуру. Во Flash MX появилась полноценная поддержка табуляции (Tab). Также теперь Flash-проекты можно сделать доступными для программ чтения с экрана.

Программы экранного чтения (Screen Readers) для людей с недостатками зрения служат основным инструментом, обеспечивающим восприятие электронных публикаций вообще и страниц Интернета в частности. Принцип работы подобной программы заключается в том, что при перемещении слева направо она зачитывает с помощью генератора речи весь текст, отображаемый в данный момент. Кроме того, она сообщает, какие управляющие элементы (кнопки, ссылки, меню и т.д.) имеются на странице. Комментирует программа экранного чтения и любое действие пользователя.

В результате еще одной модернизации Flash-технологии появилась возможность построения Flash-сайта так, чтобы обеспечить навигацию по нему посредством кнопок браузера: Back (назад) и Forward (вперед). Для адресации «страниц» Flash-сайта используются специальные метки кадров. Во Flash MX проблема навигации по Flash-сайтам с применением одной лишь клавиатуры была преодолена введением возможности Tab-обхода элементов SWF-фильма.

Сделать сайт легким для локализации (т.е. адаптации под конкретный язык) и интернационализации (т.е. вычленения частей проекта для последующей локализации) теперь очень просто благодаря тому, что Flash-плеер может загружать текст из внешних файлов, а также поддерживает Unicode и XML. Вынеся все текстовое содержимое во внешний XML-документ, можно заменить его на текст на другом языке. Несложно сделать сайт и многоязычным, храня на сервере текстовое содержимое на нескольких языках и подгружая тот файл, который соответствует языку операционной системы пользователя (определив его с помощью ActionScript).

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

Как видите, за прошедшие с выхода статьи Якоба Нильсена четыре с половиной года Flash намного прибавил в части эргономики. Однако все еще рано говорить, что все проблемы решены. Среди перечисленных Нильсеном недостатков некоторые до сих пор актуальны.

  • Flash-плеер и браузеры плохо интегрированы. В частности, это выражается в том, что невозможно осуществить поиск на странице Flash-сайта, используя соответствующую команду браузера. Конечно, ActionScript позволяет ввести на страницу собственный инструмент поиска. Однако для простого пользователя нет разницы между обычным и Flash-сайтом, поэтому он может не понять, почему не работает команда "Искать на странице" браузера.
  • Не работает подсветка пройденных ссылок, что осложняет навигацию. Проблема до сих пор может быть решена лишь частично. Мы можем подсвечивать лишь те ссылки, которые посещались с данного Flash-сайта. (Для этого на диск при нажатии ссылки нужно заносить соответствующую информацию, а затем обращаться к ней при отображении ссылок.) Но узнать, что ресурс был просмотрен в рамках сеанса, нельзя ни нажатием ссылки на другом сайте, ни путем набора URL-адреса в адресной строке.
  • Flash-плеер (по сравнению с браузером) значительно ограничивает пользователя. Так, невозможно отключить загрузку отображений и другой медиаинформации, нельзя блокировать исполнение скриптов.

Flash и безопасность

Компания Macromedia заметное внимание уделяет вопросам безопасности технологии Flash. И это абсолютно оправданно. В Сети полно разного рода хакеров, хулиганов и просто жаждущих славы подростков, которые не преминут воспользоваться любой «дырой», чтобы получить доступ к приватной информации, атаковать сайт или просто что-то слегка подпортить на машине пользователя. Популярность Flash во многом обусловлена тем, что за всю историю существования этой технологии не было ни одного случая, чтобы она использовалась для какой-либо вредоносной атаки. Дело в том, что работа Flash-клипов проходит в жестких рамках модели sandbox (англ. «песочница»), когда все потенциально небезопасные операции явно лимитированы и пользователь (в определенных ситуациях) может либо разрешать, либо запрещать некоторые действия программы. По похожей схеме работают Java-аплеты. Реализацию sandbox-концепции можно наблюдать на примерах виртуальных машин, эмулирующих (программно) какую-либо среду исполнения.

Итак, ограничения, присущие Flash-плееру, состоят в следующем.

  • Разработчик имеет крайне лимитированный доступ к машине пользователя. Те сведения о ее конфигурации, которые могут быть получены, носят чрезвычайно общий характер. Используя ActionScript, нельзя создать новый файл, изменить существующий и тем более удалить его. Невозможно запустить приложение, обратиться к страницам памяти или операционной системе. Flash-плеер располагается в своего рода виртуальной "песочнице", выйти за пределы которой он не может.
  • Данные на локальной машине могут быть сохранены лишь в особых папках в форме файлов специального битового SOL-формата, представляющих собой аналог cookies-файлов браузера.
  • Если к фильму с домена A подгружается фильм с домена B, то по умолчанию первый не сможет считать значения переменных второго или вызвать его функцию. Аналогично невозможно установить обмен данными между параллельно проигрываемыми на данной машине фильмами, если они были получены с разных доменов.
  • JavaScript может обратиться к фильму, только если он был получен с того же домена, что и HTML-страница.
  • Для передачи приватных данных можно использовать протокол HTTPS, зашифровав их посредством встроенной в браузеры службы SSL.
  • Фильм с домена A по умолчанию не сможет получить данные с домена B или отправить вызов расположенному на нем скрипту.
  • Фильм, полученный по протоколу HTTP, не сможет обратиться к фильму, подгруженному по протоколу HTTPS, равно как и получить данные с соответствующего домена.
  • Используя связь с источником данных по протоколу TCP/IP, нельзя по умолчанию установить соединение с сервером, расположенным не на том же домене, с которого был получен фильм. Также невозможно организовать TCP-соединение с портом, чей номер ниже 1024 (что гарантирует невозможность атаки на стандартные порты).
  • Невозможно получить доступ к камере или микрофону без разрешения пользователя.
Согласно проповедуемой во Flash концепции безопасности, веб-камера и микрофон могут получить доступ лишь с разрешения пользователя

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

Перечисленные выше ограничения гарантируют полную безопасность технологии Flash.

Что же дальше?

Выход новой версии Flash ожидается совсем скоро — осенью 2005 г. В середине июля Macromedia разместила на своем сайте для тестирования бета-версию Flash-плеера восьмой версии. Перечислим важнейшие из новых возможностей Flash-плеера (о среде разработки Flash информации пока мало — известно лишь, что она будет ориентирована на дизайнеров, в отличие от последних трех версий, создававшихся в первую очередь в интересах программистов). Итак, вот что получит Flash-сообщество:

  • Модификации в интерпретаторе байт-кода ActionScript обеспечат существенное повышение производительности.
  • Flash-фильмы требуют порой значительных ресурсов компьютера главным образом потому, что векторная графика при переходе от кадра к кадру требует перерисовки. Частота же кадров может быть весьма высокой, позволяющей создать плавную анимацию. Теперь клипы будут перерисовываться лишь в том случае, если в них при переходе на новый кадр происходят какие-то изменения. Иначе они будут храниться в памяти просто как растровые изображения.
  • Появится возможность создавать (в том числе и программно) растровые графические эффекты: размытие, тени или клонирование.
  • Будут усовершенствованы средства работы со шрифтами, что поможет преодолеть древний недостаток Flash - нечеткость текста с мелким шрифтом.
  • Будет улучшен видеокодек, в частности, появится поддержка альфа-канала.

Flash — это просто инструмент в ваших руках. Что вы сумеете с его помощью сделать, зависит только от вас. Помните: машины не могут творить — они способны лишь очень быстро считать, да и то не всегда. Не ленитесь думать, фантазировать, а главное — учиться. Наберитесь решимости и попробуйте освоить замечательную программу Flash от Macromedia. И, мы уверены, вы никогда не пожалеете о потраченном на это времени. Итак, вперед!

Об авторах

Юрий Стрельченко (dot@omen.ru, yuri.strelchenko@gmail.com) — автор сотен статей, аналитических обзоров и заметок в компьютерных изданиях России и Белоруссии. Специализируется в области истории компьютерных наук. Постоянный автор статей для журнала «Мир ПК» и ведущий ряда постоянных разделов CD-приложения «Мир ПК-диск».

Дмитрий Гурский (diis_ignotis@tut.by) — программист и автор компьютерных изданий. Широкую известность в русскоязычном Flash-сообществе ему принес бестселлер «ActionScript 2.0: программирование во Flash MX 2004». Является также автором книг «Flash MX 2004 и ActionScript 2.0: обучение на примерах», «Вычисления в Mathcad» и «Mathcad для студентов и школьников». Постоянный автор CD-приложения «Мир ПК-диск».


Окончание. Начало см. в №7—8/05


Полный вариант статьи см. на «Мир ПК-диске». В нем подробно освещаются вопросы эргономики и безопасности, приводится обзор популярной литературы по Flash.