На главную страницу ЗАО Софткей
 Главная   Новости   Статьи   Пресс-релизы   Рассылки 
 
Черная пятница: грандиозная распродажа программ со скидками до 50%!

Yahoo! Pipes: наше дело – труба. Часть 1

08.08.2011 / Интернет / Игорь Савчук

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

И, как уже было сказано в преддверии к этой статье, этим главным инструментом в нашем сегодняшнем обзоре заявлен интернет-сервис Yahoo! Pipes. Поскольку эта интернет-штучка (как следует из её названия - плотно связанная с трубами) в Рунете пока не столь популярна, как в англоязычном Интернете, сегодня мы потратим значительную часть нашего времени, чтобы обстоятельно разобраться с немалыми возможностями этого сервиса. Впрочем, хватит слов на короткое вступление, переходим к Yahoo! Pipes.


Назначение Yahoo! Pipes

Yahoo! Pipes - это известное интерактивное веб-приложение компании Yahoo!, относящееся к веб-инструментам для создании столь популярных в эпоху Web 2.0 мэшапов (mashup) и предоставляющее собой графический пользовательский интерфейс для создания мэшап-приложений прямо в своем браузере из уже готовых, составных операторов путем наращивания функциональности, подобно конструктору, объединяющему и модифицирующему стандартные веб-объекты: ленты новостей, веб-страницы, XML-списки и выдачи и другие сущности современного сетевого пространства.

Этот сервис позволяет пользователям получать потоки информации из самых разных источников и собственноручно создавать на их базе уже новую информацию, делая это элегантно через разнообразные правила по фильтрации и преобразованию полученного контента (например, используя фильтры для выборки в этом потоке информации по ключевым словам).

Типичный пример, на который ссылается сама Yahoo!, - это пайп New York Times thru Flickr, который забирает внешнюю RSS-ленту популярной газеты New York Times и на основании ключевых слов каждой её заметки, автоматически выделяемых самим сервисом, самостоятельно ищет и добавляет соответствующие этим ключевым словам фотографии, которые находит и забирает с фотослужбы Flickr. В итоге мы получаем готовую новостную rss-ленту, обогащенную графической информацией, привязанной по смыслу к транслируемому тексту.


Устройство типичного пайпа

Итак, давайте подведем первый итог того, что мы узнали из определения этого сервиса, и попробуем сформулировать его общий алгоритм работы. Пусть из-за общности этого описания он будет казаться пока несколько абстрактным, но зато он позволит взглянуть на процесс конструирования пайпа (своего рода программы на базе технологии Yahoo! Pipes) более отстраненно и упрощенно.

1. Будучи настроенной, служба Yahoo! Pipes получает на вход одну обычную rss-ленту (или сразу несколько лент). Забегая вперед, сервис принимает и более продвинутые форматы, подходящие скорее для веб-программирования, такие, например, как XML и JSON.

2. После успешного определения внешних источников информации подходит черед определить логику их обработки, которая будет происходить внутри самой Yahoo! Pipes и которую вам предстоит полностью настроить в соответствии с вашими потребностями. Для чего Yahoo! Pipes предоставляет в ваше распоряжение довольно обширный арсенал из уже готовых инструментов, что называется "на все случаи жизни", которыми вы сможете визуально моделировать, складывая их подчас в довольно причудливые конструкции из ниточек-трубопроводов, прямо на странице вашего аккаунта в Yahoo! Pipes. Здесь всё-таки нужно обязательно отметить, что у Yahoo! действительно получилось создать очень понятный и интуитивный интерфейс, с которым, в процессе постижения премудростей конструирования пайпов, сможет справиться даже не искушенный в веб-программировании человек.

3. Вся логика обработки построена на концепции последовательных трубопроводов, когда контент, вливаясь через изначально определенные нами внешние источники (ленты rss, например), последовательно проходя через расставляемые в процессе нашего моделирования пайпа элементы этой системы, каким-то образом изменяется, фильтруется, обрабатывается и т. д. на каждом логическом участке этого пути. Мы сейчас не будем сразу погружаться в детали - о том наборе операторов и их функциях, которые, собственно, и предоставляет нам Yahoo! для этого, о них мы поговорим далее - сейчас главное понять саму суть конвейера обработки в Yahoo! Pipes в общих чертах, чтобы далее мы могли уже уверенно переходить от общего к частному.

4. Информация, пройдя цепочку преобразований внутри пайпа (а эта цепочка может быть как очень короткой, так и очень длинной, в зависимости от сложности поставленной задачи), в итоге всегда в своей заключительной стадии приходит к финальному оператору - Pipe Output. Этот оператор ответственен за вывод конечного результата всех обработок вовне, поэтому все пайпы обязательно должны закрываться этим конечным оператором.

5. После отладки работы пайпа (а среда Yahoo! Pipes предоставляет простое, но эффективное средство отладки - окно отладки) мы сохраняем и публикуем пайп - то есть получаем на выход полноценный rss-фид, транслирующий результаты наших модификаций во внешний мир и на который можно подписаться точно так же, как и на любую другую rss-ленту новостей. Повторно уточним, что как входным, так и исходящим потоком необязательно обязана быть именно обычная rss/atom-лента, это могут быть и более сложные сущности - XML или JSON, при этом входящий поток не всегда обязан совпадать с исходящим потоком по формату, т. к. среди операторов пайпов есть и конверторы, позволяющие выполнять преобразования одного формата в другой на лету согласно требуемым критериям.


Пример первый: ненасильственная кириллизация американского президента

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

Сформулируем нашу первую задачу. У нас есть некий англоязычный фид с ресурса интересного молодого человека, и мы очень хотим подписаться на него, но в силу хронического незнания английского языка мы бы хотели читать его на русском языке. С Yahoo! Pipes такие мелочи решаются очень просто, поэтому давайте перейдем непосредственно к иллюстрации этого факта.

Итак, аккаунт Барака Обамы в "Твитере" нам известен, значит, адрес его фида будет таким. Это исходные данные для решения первой задачи, а теперь переходим непосредственно к её решению.

Регистрируемся в Yahoo! Pipes (у всех служб Yahoo! - единый пароль/логин на все службы, подобно тому, как это сделано у Google) и переходим на страницу pipes.yahoo.com/pipes, где щелкаем на кнопку слева Create Pipe и приступаем к конструированию своей первой трубы... пайпа.

Перед нами исходное полотно пока пустого пайпа, причем слева мы видим названия групп с набором инструментов и модулей. Перемещение всех элементов элементарно: путем обычного drag&drop, т. е. ленивым перетягиванием мышкой. Каждый раз мы выбираем нужный нам инструмент и перетягиваем его на рабочее полотно в середине экрана. Каждый нормальный пайп начинается с указания внешних источников поступающей информации, собственно, того контента, с которым мы собрались что-то делать посредством пайпа. В нашем случае - это микроблог президента Америки. Поэтому в группе Sources хватаем инструмент Fetch Feed и уверенно тянем его мышкой на рабочее поле, после чего в его поле URL вбиваем адрес нашего американского визави, указанный чуть выше.

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

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

Сначала открываем группу операторов Operators, где выбираем инструмент создания цикла прохода по пунктам потока, т. е. Loop, вытягиваем его на середину экрана. Этот элемент, как можно видеть, выполнен в виде контейнера (в нем написано - Drop module from toolbox here), т. е. чтобы его применить, нужно вложить в него некое действие, которое, собственно, в этом цикле-проходе и будет исполняться. В нашем случае нам требуется перевод - это и будет то действие, которое следует сочетать с этим циклическим составным оператором. Поэтому открываем группу String, откуда вытягиваем на свет божий инструмент под названием Translate - и снова перетягиваем его на наш рабочее поле, но на этот раз уже бережно опускаем его непосредственно поверх предыдущего модуля - Loop.

После того как модуль Loop был успешно заряжен функциональностью Translate, пора настроить нашу переводческую машину в нужный нам режим. Для этого наперво выбираем в выпадающем списке элемента Translate нужное нам направление перевода: English to Russian. Далее задаемся вопросом: что именно мы будет переводить в этом фиде? Давайте пока ограничимся заголовком исходного фида (указывается в поле элемента Loop: For each), и транслировать его мы будем опять же в заголовок нашего исходящего "русского" фида (нужно выбрать в поле assign results из выпадающего списка пункт item.title). Если вдруг вы интуитивно не понимаете смысл выбираемых полей, то можно в дополнение, хотя бы очень поверхностно, ознакомиться со спецификацией RSS.

Теперь выполняем традиционное действие, когда механизм из операторов настроен и готов: соединяем все рабочие элементы трубопроводами, причем, естественно, важно это сделать в нужно порядке. В нашем случае элементов пока у нас пока мало, поэтому протягиваем трубу из первого элемента Fetch Feed (из кружка в нижней его части) в верхнюю, принимающую часть нашего обрабатывающего элемента Loop. После этого точно так же вытягиваем трубу из нижней исходящей части Loop и замыкаем её в финальный элемент Pipe Output, который располагается всегда внизу экрана. Теперь можно щелкнуть на заголовке элемента Pipe Output, чтобы привести весь механизм в движение, после чего Pipe Output вспыхивает приятным оранжевым цветом, а в окне отладки начинает светиться анимированная иконка службы Yahoo! Pipes. В итоге должна получиться конструкция, похожая на то, что изображено на моем скриншоте внизу.
Первый пример пайпа: TestPipe1-RusObama


Подведем краткий итог первого эксперимента

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

Теперь для публикации этого фида нужно сохранить его, для чего сначала заходим в раздел Properties (кнопка справа вверху страницы) и указываем там название этого пайпа, после чего нажимаем кнопку Save, чтобы сохранить его (физически всё хранится на сервере Yahoo!, где все ранее сохраненные пайпы всегда будут доступны вам через ваш аккаунт). Весь описанный выше и сохраненный нами только что механизм из труб и логических блоков обработки информации и называется в общем случае как пайп, т. е. онлайн-программа конвейерной обработки информации.

Теперь, если мы зайдем в раздел My Pipes, там мы можем всегда выбрать любой сохраненный нами ранее пайп, причем, выделяя его, можно увидеть и всплывающий пункт Publish, выбирая который, мы публикуем пайп, делая его публично доступным для любого и каждого. Последняя возможность как бы ненавязчиво подчеркивает, что Yahoo! Pipes - сервис отчасти коллективный, кстати, полюбоваться на самые популярные в мире пайпы можно вот здесь.

Таким образом, любой может зайти в этот пайп и просмотреть его устройство по его публичному адресу (или даже позаимствовать его код для своего пайпа через Clone). Кроме того, как видно, сверху от окна прокрутки содержимого пайпа для нас доступен и выбор источников для разных форматов его трансляции, например вот RSS-трансляция этого пайпа.

Теперь, подписавшись на этот полученный нами rss, вы сможете читать самого Барака Обаму, довольно сносно изъясняющегося на непривычном для него русском языке. При этом, повторяюсь, физически оригинальная rss каждый раз будет проходить через дебри Yahoo!, где каждый раз будет автоматически приводиться по нами установленным правилам к тому виду, который нужен лично нам, после чего мы будем забирать готовую rss через результирующую выдачу нашего пайпа. Раз настроив и отладив нужный нам пайп, мы можем пользоваться им сколько угодно. Он всегда к нашим услугам и безостановочно работает где-то на серверах далекого и прекрасного Yahoo! 24 часа и 7 дней в неделю, продолжая безостановочно транслировать нам теперь уже нашу обработку исходного фида.

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

Усовершенствованный первый пример пайпа: TestPipe1-RusObama[full]
Получить доступ к его коду можно по этому адресу.

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


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

Автор статьи: Игорь Савчук


Рубрики статей
Все статьи
Аналитика
Программы
Игры
Интернет
Авторские права
Интервью
События в мире ПО
Рассылки
Новости мира ПО
Статьи: Мир ПО
Статьи: Программы
Статьи: Игры
Архив выпусков
  «   Ноябрь 2017   »  
Пн Вт Ср Чт Пт Сб Вс
  12345
6789101112
13141516171819
20212223242526
27282930   
Поиск в архиве

Логин / пароль:
запомнить




Наши партнеры:

 САПР и графика



Написать редактору  | RSSЭкспорт новостей и обзоров


Rambler's
Top100 Rambler's Top100

Разработка компании «Битрикс»
Разработано
«Битрикс»


Copyright © 2001-2017 ЗАО «Софткей»