Веб-дизайн
Шрифт:
К сожалению, виртуальная машина у каждого из броузеров своя, и, несмотря на декларируемую совместимость между ними, апплет, который работает на одной из этих машин, иногда может отказаться работать на другой. Кроме того, как и любая многоуровневая система, Java–апплеты в сравнении с обычными программами сильно проигрывают в быстродействии. Наконец, необходимость «настоящего» программирования для изготовления апплетов обуславливает трудоемкость этого процесса. С другой стороны, наличие готовой виртуальной машины почти на каждом компьютере и, опять–таки, богатые возможности полнофункционального языка программирования открывают перед этой технологией определенные перспективы. Так, уже упоминавшаяся технология Macromedia Flash (стр. 58) позволяет сохранять Flash — «мультики» в виде Java–апплетов, для
Одно время Java–апплетам пытались составить конкуренцию так называемые «компоненты ActiveX» — технология фирмы Microsoft, ограниченная только броузером Internet Explorer и только платформой Windows. Это наделавшее поначалу много шума, но быстро забытое нововведение интересно отсутствием какой бы то ни было «прокладки» между программным модулем (по сути, обычным исполняемым файлом в формате Windows) и операционной системой. Для решения проблемы безопасности была разработана система «электронных подписей» с регистрацией законопослушных авторов ActiveX-апплетов у спонсируемых Microsoft «цифровых нотариусов». Неудивительно, что эта громоздкая система оказалась нежизнеспособной. В настоящее время изредка используются лишь ActiveX-объекты самой фирмы Microsoft, поставляемые вместе с ее броузерами.
В Windows–версии броузера Internet Explorer (начиная с версии 4) технология ActiveX является не одним из усовершенствований, а буквально фундаментом всей программы. При запуске броузера управление получает контейнер, сразу же вызывающий ActiveX-модуль, в котором, собственно, и заключены все функции броузера. Любой программист может, таким образом, без труда встроить в свою программу самый настоящий броузер, написав всего лишь небольшую функцию для вызова этого модуля и обмена данными с ним. Отдельные функциональные блоки броузера — виртуальная машина Java, интерпретатор HTML и даже сам блок взаимодействия с органами управления ActiveX — реализованы в виде ActiveX-модулей.
ДИНАМИЧЕСКИЕ СТРАНИЦЫ
Все рассмотренные выше технологии программирования, расширяющие возможности веб–страниц, предполагают пересылку на компьютер пользователя и последующий запуск на нем некоторого программного модуля, так или иначе связанного с «несущим» HTML-документом. Интересно, однако, рассмотреть здесь же серверные технологии программирования, предназначенные не для спецэффектов на экране пользователя, а для автоматической генерации посылаемых ему страниц (которые, в свою очередь, уже могут содержать программные вставки «уровня клиента»).
По некоторым оценкам, больше половины всех страниц в современном Интернете генерируются и обновляются динамически — на основе информации из баз данных, в ответ на действия пользователя или в зависимости от каких–то внешних обстоятельств (например, текущей даты или курса доллара). Простейшая технология такого рода, поддерживаемая почти всеми веб–серверами, называется SSI (Server Side Include, «Вставки на уровне сервера»). Возможности ее ограничены вставкой внутрь одного HTML-файла содержимого другого, автоматической установкой даты, подсчетом числа загрузок страницы и т. п. Из более сложных технологий создания динамических сайтов особенно популярны две: CGI и ASP.
Стандарт CGI (Common Gateway Interface, «Общий интерфейс шлюзов»), поддерживаемый большинством программ–серверов, не накладывает каких–либо ограничений на используемый язык программирования, а лишь перечисляет правила, которые должна выполнять программа, генерирующая веб–страницу, чтобы сервер мог запускать ее в ответ на запрос документа с определенным URL. Однако поскольку большинство таких программ пишутся на специализированном языке Perl, термины «CGI» и «Perl» часто употребляются как синонимы. Стандарт CGI достаточно прост и, в частности, ничего не говорит о взаимодействии с какими бы то ни было базами данных, оставляя этот аспект целиком на совести самой CGI-программы и того языка, на котором она написана. Язык Perl не является собственностью какой–либо фирмы,
Альтернатива CGI, появившаяся в последнее время, — язык ASP (Active Server Pages, «Активные страницы на сервере») фирмы Microsoft (вполне естественно, что поддержка ASP существует пока только в веб–сервере IIS этой же фирмы). asp–код хранится не в отдельных объектах, а встраивается прямо в HTML «активной» страницы, но в отличие от JavaScript никогда не выходит за пределы веб–сервера. Инструкции языка ASP позволяют генерировать фрагменты HTML-кода, выбирать один из вариантов кода в зависимости от каких–то условий, циклически повторять куски HTML с изменениями и т. п. ASP-файл может состоять целиком из ASP-инструкций, а может и быть чистым HTML без единой ASP-вставки; так или иначе, сервер отсылает броузеру только «сухой остаток» HTML после выполнения всех команд ASP. С практической точки зрения главным достоинством ASP являются развитые средства доступа к базам данных, многие из которых, как и веб–сервер Microsoft, работают на платформе Windows NT.
Основы дизайна
Я не очень–то погрешу против истины, сказав, что вся эта книга была написана ради единственной главы — той, которую вы начинаете читать. Уверенное владение современными технологиями веб–дизайнеру необходимо, однако в основе его мастерства лежат все–таки куда более фундаментальные и медленнее устаревающие знания.
От читателей моих статей по веб–дизайну, публикуемых по адресу www.webreference.com/dlab/, я получаю немало писем с одобрением их скорее теоретической, чем практической направленности (особенно выделяющейся на фоне бесчисленных сайтов с «How To» и «Top Ten Dont's», на разные лады повторяющих небольшой набор разрозненных практических советов). Многие читатели спрашивают, где начинающий веб–дизайнер — иногда поневоле, иногда по зову сердца окунувшийся в эту область творчества, но никогда не учившийся в художественном училище и даже не очень хорошо представляющий, чему там учат, — мог бы найти достаточно полный и в то же время по возможности популярный курс основ дизайна.
Хорошие книги по теории дизайна, конечно, есть. Но вместо того, чтобы опираться на авторитет классиков, я решил сам написать небольшое введение в предмет.
Поводов для такого решения несколько. Во–первых, тема моей книги — именно веб–дизайн, а не дизайн вообще. И хотя на теоретических основах это различие сказывается в последнюю очередь, некоторую интернетовскую специфи- ку полезно ввести уже на самом базовом уровне. Очевидно, хороших с дизайнерской точки зрения книг, написанных на этом новом материале, еще совсем немного, если они есть вообще (во всяком случае, на русском языке). Поэтому было бы глупо не попробовать свои силы в этой только что открывшейся области — тем более что, во–вторых, упомянутые выше статьи дали мне хороший задел для начала работы. Хотя эту главу, конечно, нельзя назвать автопереводом с английского, все же довольно многое в ней построено на материале моих статей.
Наконец, есть еще одна причина, без которой я бы не рискнул взяться за столь ответственное дело, как написание учебника дизайна. Причина эта заключается в свойствах дизайна как науки (разумеется, я вынужден здесь подходить к дизайну именно с этой точки зрения, поскольку «учебник искусства» — не очень–то осмысленное сочетание слов).
Подыскивая аналог теории дизайна среди наук традиционных, нельзя не заметить, что она стоит гораздо ближе к таким гуманитарным дисциплинам, как философия или филология, а не к точным наукам вроде математики. Как и в дизайне, в философии есть свои общепризнанные факты, принципы и подходы, истинность которых никто не подвергает сомнению. Однако ценность нового философского сочинения определяется все же свойствами скорее субъективными: новизной идей, убедительностью аргументации, иногда даже достоинствами литературного стиля. Философскую систему невозможно опровергнуть в принципе — она живет по своим собственным законам, и Витгенштейн не «опровергает» Платона, хотя и противоречит ему на каждом шагу.