суббота, 26 сентября 2009 г.

Создание базового RSS робота, читающего Digg



Creating a basic RSS robot that reads from Digg

В этом руководстве мы увидим, как создать, оладить, опубликовать и использовать очень простого RSS робота с помощью openkapow. Робот будет создавать RSS канал, который содержит только начало постов с Digg. Это руководство описывает процесс в деталях, и большая её часть относится к REST роботам, а также в некоторой степени  и  к Clipping роботам.

Предполагается, что вы уже скачали среду разработки роботов - RoboMaker и зарегистрированы как пользователь на openkapow.com. Все картинки в пособии можно посмотреть на странице в полный размер, просто нажмите на интересующую картинку, и она будет открыта в новом окне. Робот описанный в данном пособии находится здесь

Часть 1 - Создание RSS робота

Начните с открытия RoboMaker, если вы используете Windows вы найдете RoboMaker в меню "Пуск-Программы- Kapow Mashup Server 6.3 Openkapow Edition SR1". Запустите мастер выберите опцию "Создать канал ..." и нажмите кнопку ОК.



В мастере Новых Роботов,  вам нужно ввести URL в RSS робота, в этом случае мы собираемся построить канал от Digg, поэтому мы вводим "www.digg.com" и нажмите кнопку "Далее".









Следующий шаг состоит в том, чтобы давать роботу название и описание. По умолчанию имя будет "RSS feed from" и название URL (в данном случае "RSS feed from www.digg.com"), хорошая идея изменить это на нечто более описательное и ввести хорошее описание. Эта информация будет отображаться на openkapow.com после того, как робот будет опубликован. 




Когда Вы закончите ввод информации о роботе нажмите "Далее".

Последний вопрос в мастере, "хотим ли мы чтобы робот взял какие-нибудь входные значения?". Поскольку мы просто хотим, чтобы RSS  канал содержал описание поста с Digg нам не нужны какие-либо входных значений. Существуют и другие учебные пособия о том, как использовать входные значения для поиска Digg и создания RSS канала основанного на результатах поиска, так что если вы заинтересованы в этом вы сможете в скором времени прочесть их в этом блогеВ настоящее время мы выбираем "Нет" и нажмите кнопку "Готово".



Мы уже создали основы RSS робота, который содержит два этапа - "Load Page" и "Return Item" - это вы можете увидеть в верхней части RoboMaker.

 


Шаг "Load Page", делает только, то что подразумевает название - загружает страницы, точно так  как если бы  Вы использовали браузер. Шаг Return Item возвращает данные от робота и помещает его в RSS канал. Робот начинается с первого активного шага, который подсвечен зеленым цветом. В правой части экрана параметры настройки для текущего шага, а именно "Load Page", и вы можете увидеть, URL "www.digg.com", который будет загружен на этом шаге.







Если нажать на шаг "Return Item", все шаги перед ним будут выполнены, в данном случае это лишь шаг "Load page". Это означает, что страница www.digg.com будет загружен в представление браузера RoboMakers. RoboMaker выполняет действия в ходе разработки, в том же порядке, в котором робот будет выполнять шаги  работая на openkapow.com. Эта функция очень полезна, вы всегда будете видеть состояние робота по тому или иному шагу.

В правой стороне RoboMaker cейчас показаны настройки для шага "Return Item" вместо шага "Load Page", поскольку он сейчас является активным. Ниже настройки для шага "Return Item" вы видите используемые объекты ввода и вывода этого робота. Входные объекты - входные параметры, которые принимает робот, и объекты вывода - данные возвращаемые роботом. Поскольку это один RSS робот - автоматически создается одинрезультирующий объект - "RSS Item" , и поскольку мы не определяли какие-либо выходных объектов в мастере, входных объектов у нас в роботе нет. "RSS Item" результирующий объект - то, что вернет робот после выполнения, так что нам нужно сейчас определить, какие данные должен вернуть робот.

Часть 2 - Определение данных, возвращаемых роботом

Мы просто хотим, чтобы этот робот вернул начало заголовка Digg поста и адрес того же поста. Все, что мы хотим сделать, это получить, данные с этой страницы, чтобы шаг "Load Page" загрузил и положил их в объект RSSItem, тогда шагом "Return Item" произойдет возвращение данных роботом. Для этого убедитесь, что шаг Return Item активен (страница  www.digg.com загружена). Затем нажмите на заголовок поста в представлении браузера RoboMaker.

Заметим, что заголовок поста выделяется в 4 различных местах:

  • в представлении браузера;
  • в исходном коде HTML;
  • в HTML пути;
  • в DOM (не волнуйтесь, если вы не знаете, что все это значит, вам не нужно знать это, если вы не собираетесь делать нечего сложнее этого робота). 

Мы выделили тег "a"  заголовка поста и теперь мы хотим получить URL и текст из этого тега и положить его в выходной объект RSSItem. Начнем с получением текста. Просто щелкните правой кнопкой мыши в окне браузера на заголовке и выберите "Extract title".

Случилось несколько вещей. Новый этап под названием "Extract Title" был вставлен между "Load page" и "Return item".

Если вы посмотрите в нижний правый угол RoboMaker на выходной объект RSSItem вы увидите, что значение атрибут "title" заполнено заголовком верхнего поста Digg. Попробуйте нажать на шаг "Extract Title", и вы увидите, что атрибут "Title" объекта "RSSItem" не имеет значения. Затем щелкните на шаг "Return Item" еще раз и посмотрите, атрибут "Title" вновь заполнен. Это - другой пример того, как RoboMaker выполняет каждый шаг в роботе во время разработки, таким образом Вы можете всегда видеть какие значение имеют переменные, на определенном шаге в Вашего робота.

Давайте взглянем на созданный шаг "Extract Title".Нажмите на шаг Extract Title, чтобы вы могли видеть в конфигурацию шага в правой части RoboMaker. Конфигурация шага состоит из 4 вкладок, давайте сделаем краткий обзор по каждой вкладке. Для получения более подробной пожалуйста, обращайтесь кпомощи и документации по RoboMaker.Первая вкладка "Основные" на вкладке содержится название и комментарий об этом шаге. Это идеальное место для документирования шага, краткое описание и полезное имя. Содержание комментария отображается пиктограммой документа на шаге и всплывающей подсказкой при перемещении мыши на шаг.

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





Вкладка 3, "Action" определяет действия этого шага. В данном случае шаг будет извлекать данные из тегов, определенных в Tag Finders и устанавливать извлеченые данные в атрибут RSSItem.title. Так же, как для вкладки Tag Finders нет вообще никакой потребности вручную редактировать эту информацию, создаваемые параметры самодостаточно в большинстве случаев.

Наконец, дошли до вкладки "Error Handling", в ней мы можем установить, как ошибки, должны быть обработаны, если они произошли. Этот шаг будет обсуждаться и в других учебниках, а в этом учебнике мы просто исходим из того, что мир прекрасен, и что все работает как и задумано. Для всех шагов вкладки "Basic", "Tag Finders" and "Error Handling" одинаковы по структуре, только вкладка "Action" различается от шага к шагу.

Мы извлекли заголовок верхнего поста Digg, но мы также хотим получить URL этого поста. Это происходит почти так же, как мы это делали при извлечении названия, щелкните правой кнопкой мыши на заголовок в представлении браузера и вместо того, чтобы выбрать "Extract Title" мы выбираем "Extract URL".



Будет создан новый шаг под названием "Extract URL" , и   атрибут "URL" объекта вывода RSSItem теперь содержит URL верхнего поста Digg. Наш робот, в настоящее время имеет 4 шага. Это - очень простой!! робот, и мы можем быть уверены, что он работает, но в целях безопасности мы хотим проверить это, таким образом время для отладчика RoboMaker

Часть 3 - Отладка робота

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

Открылся RoboDebugger в новом окне, и в верхней части окна мы видим действия нашего RSS робота. Здесь мы можем запускать робота и видеть то, что он возвращает, если бы мы использовали входные параметры, мы могли бы также проводить тестирование с различными входными значениями. Мы можем выполнить робота целиком или же мы можем делать это пошагово. На каждом шаге мы можем видеть, значения каждого атрибута объекта. Мы также можем устанавливать точки останова, чтобы отладчик останавливается на конкретном шаге. Начнем, нажав на синюю иконку запуска - робот будет выполнен.

Этот простой тест показывают нам то, что выходные данные робота будут возвращаться, как мы и подозревали все работает отлично.Давайте установим точку останова на шаг "Extract URL" и посмотрим, как и что работает. Щелкните правой кнопкой мыши на шаге "Extract URL" и выберите "Toogle Breakpoint".



Шаг "Extrac URL" теперь содержит синий квадрат, указывающий, что он имеет точку останова. Давайте запустим робота, на этот раз он остановится на шаге "Extrac URL".

Когда отладчик остановился проверьте вкладку "State", вы можете увидеть, состояние робота, на момент его остановки. Здесь мы видим, что робот извлек RSSItem.title, но пока еще не извлечен RSSItem.url. Точки останова показаны как в RoboDebugger и RoboMaker, но используются они только в отладчике.





В RoboDebugger есть удобная кнопка "GoTo", которая вернет нас к главному окну RoboMaker с роботом на том же шаге(и в том же состоянии), что и в отладчике. Это очень полезно, если у Вас большой робот и вы обнаружили ошибку при тестировании в RoboDebugger, очень легко определить, что это за ошибка, и где ее исправить. Теперь робот отлажен, время опубликовать его в openkapow.com что бы мы могли его использовать.

Часть 4 - Сохранение, публикация и запуск робота

Мы имеем довольно классного робота, но нахождение его на локальном компьютере бессмысленно. Так давайте же опубликуем его на openkapow.com, чтобы мы могли использовать RSS канал в нашем RSS Reader. Первое, что нужно сделать, это сохранить робота локально. Это не является необходимым условием для опубликования робота на openkapow.com, но это всегда хорошая идея. Нажмете "Save" в меню "File" и сохраните файл робота на вашем жестком диске.

Следующее, что нужно - это  опубликовать робота. Это означает, робот будет загружен на openkapow.com и его можно запускать оттуда, используя простой URL, открыв его в браузере или вызвав в программу (например, в вашем PHP, JSP, ASP и Ruby On Rails коде). После того, как робот, загружен в openkapow.com он будет доступен всем для использования и скачиванияДля того, чтобы опубликовать робота вы должны быть зарегистрированы в качестве пользователя на openkapow.com и вы должны ввести в RoboMaker ваши имя пользователя и пароль openkapow. Вы, наверное, сделал это, когда установили RoboMaker, если нет, просто перейдите в меню "File" - "Edit Username and Password". Когда имя пользователя и пароль указаны правильно нажмите кнопку со значком маленького робота, чтобы открыть диалоговое окно публикации.

Название и описание робота уже заполнены, на основе того, что вы ввели при первом создании робота. Вы можете редактировать эту информацию, если хотите. Каждый робот должен быть классифицированы как принадлежащие категории, в этом случае мы берем "Обучение и примеры" (если вы делаете аналогичного робота самостоятельно он должен быть опубликован в разделе "Новости", поскольку Digg является сайтом новостей). Каждый робот может также иметь метки, связанные с ним. При поиске по openkapow.com легче найти робота, добавьте теги, которые как вы считаете, лучше всего описывают вашего робота. Поскольку мы публикуем RSS робота можно также выбрать, как часто будет происходить его запуск. RSS роботы выполняются на сервере  openkapow.com с заданной частотой, а результат кэшируется на сервере. Это делает ваш RSS канал более быстрым при вызове его из вашей RSS читалки или браузера. Оставим значение по умолчанию, робот будет выполнятся один раз в час.

После того, как мы добавили теги жмем кнопку опубликовать. RoboMaker соединяется с openkapow.com(иногда может возникать ошибка, поэтому данный процесс не всегда проходит гладко с первого раза) и добавляет вашего робота. После этого вы получите обратно URL по которому робот, теперь доступен для использования. Добавить URL в Ваш RSS Reader (Netvives, My Yahoo и т.д.).

При открытии, URL в обычном браузере мы увидим что RSS канал возвращает XML. Используя URL в вашем RSS Reader, вы будете видеть верхний пост Digg, и он будет обновляться каждый час.

Если вы хотите найти адрес уже опубликованного робота вы можете обнаружить его, в "Robot Configuration" в меню "File" RoboMaker. Там вы также можете изменить RSS версию, которую будет использовать канал. Робот теперь также доступен на openkapow.com для каждого, вы можете скачать и использовать робота со страницы роботов.

Заключение

Мы несколькими кликами мыши создали RSS канал, содержащий верхний пост с Digg. Мы еще не написали ни строчки кода, даже не изменили ни одной из автоматически генерируемых конфигураций. Это хороший пример, показывающий как легко разработать робота, и быстро увидеть результаты своей работы. Конечно, было бы гораздо лучше, если бы мы смогли вернуть все посты с Digg, а не только первый, и это именно то, что мы будем делать в следующей статье.


пятница, 18 сентября 2009 г.

Openkapow - Создание роботов.

Сегодня начну рассказывать про одну замечательную технологию, которую по каким то причинам обошел стороной "РУНЕТ". Есть только одно упоминание в статье 18 инструментов в арсенал mashup-мейкера. Обзор платформ.


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

Грубо говоря openkapow позволяет создавать "роботов" - некую "прослойку" между стулом и монитором, :) которая вместо Вас будет ходить по интернету, нажимать различные кнопки, загружать страницы, собирать НУЖНУЮ информацию и предоставлять ее Вам в необходимом виде. Ярким примером использования данной технологии может служить Infostart RSS лента. Технология по задачам напоминает Yahoo Pipes, однако кардинально отличается в реализации и философии использования ("битва" двух платформ будет описана позже).

Cоздать собственного робота очень легко. Для создания роботов нужно скачать среду разработки RoboMaker и установить её локально на вашем компьютере. Используя "point-and-click" вы можете создавать своих роботов, без необходимости писать какие-либо программы. После создания робота вы можете опубликовать на openkapow.com используя RoboMaker. Затем вы можете запускать своих роботов с openkapow серверов, и делиться ими с остальными членами сообщества. Каждый опубликованный робот получает уникальный URL, который можно использовать для вызова робота из Yahoo! Pipes, вашего RSS Reader, сайта, программы или mashup.

Что такое openkapow робот?

Робот в openkapow это небольшая программа, которая автоматизирует, путешествие человека по всемирной паутине.Вы хотите пойти и почитать новости, авторизироваться на сайте и проверить личные сообщения? Вы можете автоматизировать это в течение нескольких минут, а затем использовать роботов в Ваших RSS Reader или собственных программах.

RoboMaker

RoboMaker -это визуальная среда разработки роботов. В RoboMaker слито воедино настройки и выполнение шагов. Это делается с помощью "point-and-click" интерфейса, который включает в себя представление браузера, что позволяет разработчику увидеть страницу как будто они представлена в нормальном браузере, таком как Internet Explorer или Firefox. RoboMaker - это клиентская программа, которую загружается и запускается разработчиками на локальной машине. Когда робот завершен он может быть опубликован в openkapow.com используя интерфейс RoboMaker.

Что удивительного в RoboMaker?

RoboMaker дает вам возможность делать все, что нужно:
  • Полный контроль над процессами потоков, в том числе условий и циклов.Обработка без проблем IF-сценарий, OR-сценарий & and-сценарий.
  • Гибкая обработка ошибок. Используйте встроенный в отладчик для тестирования Ваших роботов.
  • HTTP, HTTPs, cookies, logins, headers, Javascript и т.д. все обрабатываться и полностью под вашим контролем.
  • Доступ к веб-страницам с помощью представления браузера,DOM представление, исходного представление HTML или использование html-тэгов.
  • Робот выполняется пока вы его разрабатываете! Это дает вам полный контроль над текущем состоянием робота.

Различные типы роботов

Есть 3 различных типов openkapow роботов, которые вы можете создавать:

RSS/Atom feed роботы
RSS робот - это робот, который создает RSS или Atom канал. RSS канал можно прочитать с помощью специальной программы RSS Reader, браузера, который поддерживает RSS или почтовой программы, которая позволяет читать RSS. RSS робот запускается по графику,который определяется разработчиком робота. Например, он может быть запущен один раз в час, а это означает, что раз в час канал будет обновлен новой информацией, которую, возможно, нашел робот.


REST роботы
REST робот - это робот, который запускается в качестве службы REST, это веб -сервис, который доступен с обычного URL. Робот выводит результат своей работы, например в XML, HTML или JSON. REST роботы, как правило, используются для создания API взаимодействия с веб-сайтом, и они, как правило, вызываются в рамках программы (написанными например на PHP, Ruby или Rails, C# или Java). Это делает REST роботов идеальной базой для mashups!

Web Clip роботы

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

понедельник, 14 сентября 2009 г.

Проведение документов по определенному регистру

Иногда может возникнуть потребность сформировать (или чаще изменить) движения документа по определенному регистру. Конечно с точки зрения логики движения документа нельзя рассматривать как совокупность наборов движений, то есть движения должны быть согласованы между собой.  Однако в некоторых случаях наборы движений независимы (например факт зачета аванса в БУ и проводки по НУ). Вот именно для таких движений может понадобится проведение документа по определенному регистру.
Чисто технически все достаточно просто нужно из модуля документа   вызвать соответствующую процедуру формирующую необходимые движения, однако в большинстве случаев:

  • Эта процедура не Экспортная;
  • Процедура делает движения и по другим регистрам;
то есть данный метод не универсальный (пойди разбери что там, за процедура по каким регистрам делает движения ) .

Универсальным, как мне кажется в данном случае будет:
  1. Запомнить все(существующие) движения документа;
  2. Провести документ;
  3. Восстановить все движения документа за исключением тех по которым, этот документ нужно было провести.
Практическая реализация, как всегда на основе конструктора Enterprise Integrator

пятница, 11 сентября 2009 г.

Yandex Street view

На этой неделе Яндекс запустил "панорамы улиц"  аналог гугловского Street view.
Пока Яндекс проехался своими камерами только по Москве, это смелый шаг для Яндекса поскольку мы все помним мучения гугла, с подобным сервисом -  когда на него обрушился шквал исков о нарушение прав на неприкосновенность частной жизни. После чего Гугл был вынужден затирать номера машин и лица людей. Яндекс же выпустил  свой сервис "как мать родила", можно у видеть номера машин, и лица Москвичей
иногда они не очень приветливы :)
Зная как в нашей стране много недовольных и желающих привлечь к своей "персоне" внимание, остается пожелать Яндексу только удачи, а всем остальным ловить момент и успеть поглазеть на других.
Напоследок забавный мульт,  о том как работает Google Street View

суббота, 5 сентября 2009 г.

Infostart RSS лента


Обновлена, ранее отпубликованная RSS лента сайта Infostart.ru (Если гора не идет к Магомеду..). Изменено почти все, начиная от смены технологии генерации и заканчавая самим содеражанием новости.
Теперь более подробно:
  1. Время обновления ленты 1 час.
  2. Лента содержит имя автора и его рейтинг.
  3. Описание содержит полный текст статьи(описание программы+скриншоты) с выводом ретинга и кол-ва комментариев.
  4. Ссылка на результат поиска похожих тем на сайтах 1c.ru,, infostart.ru,, mista.ru,, itland.ru,, kuban.ru,, script-coding.info,, 1c-ei.ru,
Зачем нужна эта лента и в чем ее приимущества?

Хочется сразу заметить что, "насладится общением" и скачать какую либо программу можно только на сайте, данная лента призвана:
  1. Держать подписчика в курсе самых последних новостей(изменений) связанных с 1С;
  2. Предоставлять подписчику возможность отмечать или сортировать (используя теги) новости с сайта Infostart.
ну и собственно, сама лента

Infostart.ru


P.S. В следующих постах будет описанна технология используемая при синдикации.

пятница, 4 сентября 2009 г.

Eclipse, получение строки запуска


Не секрет в том что почти все разработчики Java используют для работы какие либо IDE , которые заничительно упрошают процессы отладки и запуска, оставля "возню" связанную с описанием -classpath, -cp, jawa(w) за кадром. Однако приходит то счастливый миг :), когда мы решаем, что все замечательно работает и начинаем использовать реультат своего труда, тут разумеется вспоминанем, что нужно писать командную строку для запуска своего "творения".
Здесь я расскажу как получить строку запуска из Eclipse для своего класса, не мучая себя и не натыкаясь на сообщения вида"Exception in thread "main" java.lang.NoClassDefFoundError:"

В методе main устанавливаем точку останова, и зпускаем отладку. В окне отладки
из контекстного меню строк класса main или JVM вызываем свойства и получаем строку запуска. Немного косметики (javaw заменяем на java, убираем некоторые параметры запуска -agentlib) и все готово.