Журнал LinuxFormat - перейти на главную

LXF70:BBC

Материал из Linuxformat
Перейти к: навигация, поиск

Содержание


Время отдыха в сети

Пока мы удивлялись инновациям в настольных приложениях, web-разработчики делали гигантские шаги в улучшении взаимодействия с пользователем, доставки информации и быстродействия. Амиас Чэннер (Amias Channer) рассматривает наиболее активных проекта: прорыв мета-языка XML, обещающего пользователям более быстрый и качественный доступ к информации, впечатляющие перспективы для хакеров из Google, но прежде всего — новый сервис BBC, чья открытость вознаграждена появлением заставляющих задуматься применений для его RSS-содержимого.

BBC: Новое слово в распространении контента

Мы любим web-программирование — сидение допоздна, кофе и просмотр Buffy в ожидании ускользающей Музы… затем возбуждение внезапно посетившей идеи и лихорадочное кодирование в ночи до тех пор, пока мысль не станет осязаемой. Но утром вы всего лишь получаете еще один способ для показа ваших воскресных фотографий в Сети. Если бы только существовал источник настоящего, надежного контента — что-то по-настоящему важное и достойное ваших программистских способностей.

Что же, теперь такой источник существует. BBC открывает свой контент для бесплатного, некоммерческого использования на своем новом сайте: http://backstage.bbc.co.uk для всех заинтересованных лиц. На момент написания этой статьи доступны только RSS-источники и несколько API для доступа к содержимому. Однако, в ближайшее время ожидается гораздо больше. Проект задуман для привлечения сообщества web-разработчиков к огромному объему информации, собранному BBC, а также для обеспечения качественного бета-тестирования их RSS-сервиса.

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

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


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

Официальный запуск сайта http://backstage.bbc.co.uk произошел 23 июля на конференции Open Tech 2005 (Хаммерсмит, Лондон), организованной UK Unix и Open Systems User Group — это огромный вклад BBC в сообщество разработчиков Open Source. В сетевых дневниках и среди компьютерной публики ходят слухи, что BBC откроет доступ к своей огромной библиотеке телевизионных сериалов. Вы только представьте себе подобное!

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

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

Во время запуска сервиса также ожидается появление некоторых результатов недавних экспериментов BBC с сетевым вещанием. В общем-то, вся программа Open tech посвящена технологиям, к которым может приобщиться любой, будь это привычное открытое программное обеспечение, или нестандартное применение электронных устройств, например Xbox.

Лучшая работа

Лидер проекта Backstage Бен Меткалф (Ben Metcalfe) потратил месяцы, работая над ним в новом подразделении BBC. Как он говорит, иногда, чтобы получить доступ к контенту, требовался «дар убеждения». «Когда речь идет о праве распространять контент на web-сайтах других людей, вы и в самом деле просите довольно много от владельцев информации, поскольку физический контроль за ее представлением и контекстом будет утерян. Однако, такой подход, очевидно, предоставляет и множество преимуществ, например, расширение области охвата и инновации»,-сказал г-н Меткалф.


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

Чтобы получить больше информации о BBC Backstage, вы можете подписаться на список рассылки, который стремительно становится высококачественным источником информации о RSS для британских проектов. Кроме того, этот список позволяет почувствовать, что же происходит в современном мире web-программирования. Дункан Меткалф (Duncan Metcalfe), недавний студент, приславший несколько прототипов, использующих RSS-источник, говорит, что вдохновлен идеями и поддержкой проекта. «Это мое первое участие в каком-либо качестве в сети разработчиков. С этими людьми, в их окружении по настоящему приятно работать и я чувствую себя более комфортно, когда думаю о том, как технология может улучшиться в будущем».

Некоторые из наших самых любимых прототипов приведены в списке пяти лучших во врезке внизу. «Мы были очень впечатлены качеством поступивших работ»,-говорит Меткалф. «и нам определенно нужно подумать о том, как внедрить некоторые из этих идей в bbc.co.uk. люди, предоставившие прототипы, сохраняют право интеллектуальной собственности, поэтому мы будем работать над идеями вместе с ними».

Цель RSS

British Broadcasting Corporation (BBC) — уникальная компания в плане трансляции своих передач, из-за своего устава и некоммерческого статуса. Эти фактора делают компанию очень близкой по духу к интернету. BBC всегда использовала Open Source там, где это возможно и даже поддерживает несколько собственных проектов с открытыми исходниками.

У компании сильная репутация в интернете, поэтому обязательства, которые она берет на себя в проекте Backstage убеждают, что его контент будет также хорошо восприниматься сообществом, как и остальные сервисы. Предполагается, что проект продолжит успех онлайновой службы новостей, в частности ожидается, что к концу года 10 % трафика news.bbc.co.uk будет передаваться по RSS.

АЯКС, перемены несущий

Используемая в Google maps, Gmail и местами в Flickr (программе для публикации фотографий), технология с именем Ajax привлекает все большее внимание, особенно последние несколько месяцев. Сначала мы не совсем понимали, что это такое на самом деле, хотя и были совершенно уверены, что это не средство для мытья посуды и не голландская футбольная команда. Мы также знали, что сайты, где используется ЭТО, весьма круты и думали, что так можно сказать и в отношении Ajax. Теперь мы знаем о нем немного больше, и, откровенно говоря, мы впечатлены.

Термин Ajax был придуман web-разработчиком с большим стажем Джесси Джеймсом Гарреттом (Jessy James Garrett), чье фото украшает эту страницу. «Когда я обсуждал этот подход с клиентами, мне нужен был более короткий термин, чем Asynchronous + JavaScript + CSS + DOM + XMLHttpRequest»,-написал он на сайте компании web-консультантов Adaptive Path, которая использовала данный подход в нескольких проектах, но не является ее непосредственным изобретателем.

На самом деле, Ajax совсем не новая и даже не оригинальная технология. Это просто новый, более искусный способ использования старых возможностей. В частности, Ajax использует зрелые технологии, базирующиеся на открытых стандартах (HTML, CSS, JavaScript/eCMAScript и XML), так что вам потребуются лишь минимальные дополнительные знания. Кроме того, вам не понадобятся никакие новые модули к браузеру. Что действительно ново, так это идеи, стоящие за Ajax. К ним придется привыкнуть — но сам процесс обещает быть весьма интересным, а результаты — действительно впечатляющими.

Это действительно полезно!

Обычные web-приложения имеют привычную клиент-серверную структуру, с запросами пользователей (или «вызовами HTTP»), отправляемыми на сервер и почти всегда вызывающими полную перезагрузку страницы. Обычно вся логика сосредоточена на сервере, а в браузере отображаются простые страницы, хотя многие люди пытались найти пути, позволяющие web-страницам манипулировать своей информацией или же получать больше данных без видимой перезагрузки. Кэширование и умелое расположение страниц могут сделать переход «клиентсервер-клиент» более плавным, но задержка или перерыв в работе с пользователем от этого не исчезнет.

Ajax привносит третий уровень потока структурированных данных. Как правило, речь идет об XML, хотя может использоваться и JavaScript Object Notation. Вы можете подумать, что добавление нового уровня только больше замедлит процесс, но в действительности некоторые вещи ускорятся. Этот отдельный уровень позволяет применять логику обработки данных перед тем, как они вернутся на сервер, или даже заставить Ajax выполнять некоторые простые задачи самостоятельно. Это весьма полезно для проверки данных, но Ajax раскрывается во всей своей красе, когда вам нужно быстрое взаимодействие с пользователем.

Поборники паттернов проектирования узнают в такой модели архитектуру MVC (model-view-controller). Паттерны проектирования выделяют типы программных структур, которые присутствуют почти в каждой программе, и позволяют использовать их как проверенные практики без необходимости изобретать колесо всякий раз, когда вы собираетесь куда-то ехать. Основная проблема с web-архитектурами заключается в том, что они имеют тенденцию быть весьма гетерогенными, так что какие-либо проверенные методы бывает трудно выделить и воспроизвести в других сценариях.

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

Модель MVC — один из наиболее известных паттернов, используемых в программировании. Он применяется почти во всех операционных системах с графическим интерфейсом. Его главное преимущество состоит в том, что он позволяет разделить разработку интерфейса и прикладных компонентов, необходимых для его функционирования, тогда как в традиционной web-парадигме эти две части тесно связаны друг с другом.

XML коктейль

Если вы занимались web-разработкой в течение некоторого времени, то можете подумать, что все это очень напоминает DHTML, и это на самом деле так. Но есть и кое-что весьма специфичное — это XML! Традиционный DHtML ограничен манипуляциями с данными, доступными через интерфейс объектной модели документа (DOM — Document Object Model), тогда как Ajax-приложения могут запросить нужные сведения напрямую от сервера. Этот трюк обычно делается с помощью новой JavaScript-функции XMLHTTPRequest(), которая только недавно была реализована в основных web-браузерах. С ее помощью страница может запросить любые данные из любого места в интернете, используя протокол HTTP. Предоставляемые ею возможности огромны: вы можете загрузить последний список записей в сетевом дневнике, заголовки новостей, анонсы, сообщения журнала сервера или, если у вас совсем туго с фантазией, курсы валют.

Также довольно легко можно сгенерировать поток XML из базы данных и использовать его в Ajax.

Но на этом веселье не кончается. Поскольку XML-данные структурированы, они легко могут быть помещены на страницу, откуда их вызвали, при помощи некоторых манипуляций с CSS и DOM. Все это произойдет в фоновом режиме с помощью механизма событий JavaScript, и в этом случае можно даже использовать язык XSLT (eXtensible Stylesheet Language Transformation) для преобразования XML в HTML прямо в браузере.

В традиционном web-приложении для этого потребуется перезагрузить некоторую, иногда преднамеренно скрытую (брр…), страницу. В любом случае, этот подход приведет к тому, что браузер будет чем-то занят и не будет отвечать на действия пользователя. Добавьте к этому создание и отрисовку PNG и вы поймете почему слово web-сайт уже не выражает того, что имеет место быть. Слово «приложение» подходит куда, поскольку отражает все то взаимодействие, что происходит за браузером.

Будущее web

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

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

Другое преимущество Ajax — четкое разделение уровней данных, интерфейса и логики. Это означает, что сторонние разработчики могут полностью подменять любые уровни без необходимости выяснять остальные подробности. Если вы использовали классы JavaScript при первоначальном написании сценариев, то их можно улучшить с помощью создания подклассов и переопределения методов. Например, Google Maps уже запустил несколько модифицированных версий, в каждой из которых используется один «движок», поставляющий географические данные различным интерфейсам.

Перед тем, как разрешить сторонним программистам доступ к вашим данным, было бы разумно проработать правила использования и создать что-то вроде программы поддержки разработчиков (Wiki или список рассылки).

Так в чем подвох?

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

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

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

Только сейчас, когда применяемые в Ajax технологии вполне созрели, он перестал быть чем-то интересным, но не имеющим места в реальной жизни и начал использоваться во многих впечатляющих сайтах. Google Maps, Google Suggest доказали его возможности и помогли получить признание среди web-разработчиков.

Существуют, однако, два других фактора, которые отличают Ajax от других подобных технологий. Во-первых, в Ajax, в отличие от Flash, вы всегда можете увидеть исходный код, что приводит к появлению быстро растущего сообщества разработчиков, изучающих чужие решения. Во-вторых, поскольку эта технология основывается на стандартах, которые не принадлежат какому-то одному производителю (как, например, в случае с Java), это делает невозможным внезапную смену подходов, равносильную смерти технологии. уже сейчас существует несколько инструментов, позволяющих создавать основанные на Ajax web-приложения с возможностью объединения парадигмы Ajax с надежной серверной технологией (в данный момент одна из наиболее популярных — Ruby on Rails). Эти инструменты могут сильно помочь при переходе на Ajax, но вряд ли будут очень полезны, если добавляются в уже существующий сайт.

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

GOOGLE MAPS — рай для хакера

Если вы ищите реальный пример, демонстрирующий, что хорошего можно сделать при помощи Ajax, рекомендуем взглянуть на проект Google Maps. Если вы еще не были там, срочно отправляйтесь по адресу http://maps.google.com

Каждый, кто хоть раз видел систему Keyhole.com, использующую снимки со спутников, трехмерную географию и карты, непременно испытает чувство дежавю: Google недавно приобрел Keyhole и именно ее разработки лежат в основе Google Maps. Программисты компании взяли чистое Windows-приложение и перенесли его в web, попутно сделав более универсальным, доступным и бесплатным.

Тем не менее, по-настоящему мудрым оказался следующий шаг. Для получения данных и отрисовки карт было решено использовать Ajax. В результате получилась поистине потрясающая система, отображающая на спутниковых картах географические объекты, координаты которых сохранены в формате XML. Это обеспечивает комфорт и удобство «родного» системного приложения. Глядя на экран, трудно поверить, что им одновременно управляют две различных системы.

Два метода

Ну и как же оно работает? удивительно, но Ajax используется только для запроса данных — загрузка карт происходит через стандартные фреймы IFRAME, так что вы попрежнему можете пользоваться кнопками Back и Forward в вашем браузере — каждое обновление фрейма оставляет запись в истории посещенных страниц. Это объясняет, почему показ карт работает в любом браузере, а отображение данных на них — только в достаточно новых (хотя сторонники Internet Explorer могут использовать версию 3 и выше).


Обработка карт впечатляет, но настоящая магия кроется в позиционировании на них точек и соединительных линий.

Пользовательский запрос отправляется на сервер традиционным способом. В ответной странице содержится скрытый фрейм, содержащий большое количество данных в формате XML. В процессе загрузки этот XML передается в XMLHTTPRequest() при помощи вызова функции с родительской страницы. Это несколько странно — ведь Ajax мог быть использован для достижения того же самого эффекта напрямую. Мы не знаем, почему так было сделано, хотя можем предположить, что разработчики Google не хотели выдать реальное местоположение XML-сервера и разместили перед ним кэширующий прокси. С учетом развития технологий HTTP-кэширования они могли предпочест традиционный HTTP-запрос использованию сырого XML без какого-либо кэширования на уровне протокола.

После получения данных, они передаются функции _load() родительского окна, затем происходит XSLt-трансформация, превращающая XML в локальную информационную панель. Эта перезагрузка обеспечивает создание красивых указателей, речевых пузырей и маршрутных линий на карте слева. Благодаря Ajax, данные могут происходить откуда угодно, но будут иметь смысл только в случае, если в них содержатся географические координаты.

Сломай меня, если можешь!

Теперь, когда мы знаем, как все устроено, давайте попробуем повеселиться. Чтобы создать новую карту, требуется не так уж много (подробности см. на сайте Google Maps), поскольку неформальному описанию API уже посвящены кое-какие Wiki и списки рассылки. Однако, если вы не хотите переписывать свой web-сайт каждый день, следует подождать публикации официальной версии Google Maps API.

Самым нетерпеливым рекомендуем начать с посещения http://www.mygmaps.com и генерации карты с помощью web-интерфейса. Он позволит вам создать достаточно примитивный файл данных, разместит его и, таким образом, даст понять, к чему можно стремиться. затем используйте код из http://stuff.rancidbacon.com/google-mapsembed-how-to , чтобы встроить карту в свою страницу. Для этого достаточно вызвать функцию-обертку и передать ей тег DIV, в котором вы хотите разместить данный объект. Первые попытки были очень ненадежными — Google Maps по-прежнему находится в стадии «бета», так что интерфейсы могут быть изменены без уведомления. Однако, они прекрасно демонстрируют потенциал хакеров и, к настоящему моменту, уже достаточно стабильны.

Согласно авторам сетевых дневников, Google разрабатывает API для внедрения карт в другие сайты, но еще не завершил эту работу. Google продолжает традицию изготовления чересчур хороших сайтов и с каждым разом становится все лучше и лучше, несмотря на то, что у него не так уж много денежных стимулов для этого — все причастные уже богаты (или должны быть богаты), как Крез. С выпуском коммерческого API для Google Maps они удвоят свое состояние. лучше для них — лучше для нас.

Персональные инструменты
купить
подписаться
Яндекс.Метрика