This version of the page http://livedev.org/articles/2008/06 (0.0.0.0) stored by archive.org.ua. It represents a snapshot of the page as of 2008-07-21. The original page over time could change.
Archives for June 2008 : Журнал Веб2.0 разработчика | livedev.org

Google GData или Гигабаза с Гигаинтерфейсом 3

Posted by dobrych Sat, 28 Jun 2008 23:19:00 GMT

Скажу сразу: «я офигел». То, что сейчас предлагает Google для сторонних разработчиков — просто бомба. И не думайте, что App Engine это что-то новое. Да это неплохое дополнение к существуещей инфраструктуре, но самое главное внутри.

Итак, про что же я. GData — универсальный API Google для чтения, записи и поиска в его сервисах. Это очень сбалансированная смесь CRUD и Atom/RSS. Самое главное в GData — это фиды. Результаты поиска, сложные запросы, создание/обновление документов и т.п. возвращаются в формате, подобному Atom фиду. Ребята из Google практически дополнили спецификацию Atom возможностью делать запросы (выборки) и реализовали незаконченную спецификацию Atom Publishing Protocol. Другими словами гугловские сервисы видны через интерфейс GData, как фиды, которые можно читать, апдейтить, искать по каким-то параметрам и удалять. Эта модель работы с данными отлично вливается в сферу веб, что и показала практика Web2.0 (покажите популярный сайт без фида).

Какие сервисы на сегодня доступны через GData API:

  • Google Docs;
  • Gmail contacts;
  • Notebook;
  • Blogger;
  • Picasa;
  • Calendar;
  • Base;

Полный список на сайте Google API.

Чтобы не остаться голословным хочу привести пример кода для работы с Google Docs.

import gdata.docs.service

# авторизация
gd_client = gdata.docs.service.DocsService()
gd_client.email = 'username@gmail.com' #change this
gd_client.password = '' #change this
gd_client.source = 'exampleCo-exampleApp-1'
gd_client.ProgrammaticLogin()

# запрашиваем список (фид) всех документов с сервиса
feed = gd_client.GetDocumentListFeed()
# выбираем первый документ для работы
d = feed.entry[0]
# работаем с документом
print d.title.text # выводим название документа
print d.content.src # ссылка на документ в html виде (как он хранится в google)

Для создания или изменения документа необходимо использовать python-модуль atom. Пример кода:

import atom
# устанавливаем название нового документа
document.title = atom.Title(text='my best friends')

Что еще можно добавить. Вышеприведенный код предоставлен разработчиками Google для Python. Т.е. это уже клиентская часть API. Есть также версия для Java, .NET и PHP. Так что если есть желание интегрироваться с Google, то, пожалуй, все необходимое для этого есть.

Вывод простой. Google превращается из робота индексера в датацентр для размещения информации и вычислений. На сегодняшний день — это работа с документами, почтой, контактами, блогами и фото. Все в одной среде. И новое API — это отличный вариант реализации интерфейса к фичам этого гугло-датацентра :-)

На закусь ссылка на описание протокола GData.

  • Posted in обзоры
  • Tags gdata, google, hosting, python, web
  • Meta 3 comments, permalink, rss, atom

oEmbed или выжимка урлов 6

Posted by dobrych Wed, 25 Jun 2008 00:07:00 GMT

Сегодня, после очередного просмотра и прочтения англоязычных блогов (и фидов), обнаружил совершенно новую фичу или точнее даже формат по шарингу информации между сервисами. Интересно, что в рунете пока еще никто про это не писал. Итак, представляю oEmbed — формат для встраивания контента по URL на сторонние сайты.

Т.к. формулировка достаточно абстрактная, лучше всего приведу пример. С помощью этого формата и API я могу, имея одну лишь ссылку на страницу сайта, получить контент этой страницы в удобном для встраивания виде. От сайта-экспортера требуется поддержка формата на уровне API. Типичный пример — ссылка на YouTube ролик. Чтобы можно было при запросе на API по ссылке получить код для встраивания ролика в мою страницу.

Например, всем известный flickr поддерживает этот формат, адрес API: http://www.flickr.com/services/oembed/. Пользоваться так: http://www.flickr.com/services/oembed/?url=http://www.flickr.com/photos/dobrych/2602270116/.

Кроме flickr экспорт контента в этот формат умеют делать еще несколько сервисов. Но ничто не мешает делать свои oEmbed гейты (провайдеры) для существующих сервисов, которые еще не умеют oEmbed.

Ссылки по теме. Оригинальная новость от создателя Pownce — Leah Culver » Announcing OEmbed - An Open Standard for Embedded Content. Еще:

  • приложение для django — django-oembed;
  • самодельный провайдер, для сервисов, которые не поддерживают oEmbed — oohEmbed.com - your one-stop oEmbed provider.

От себя еще добавлю, что эту технологию классно использовать в так называемых tumblog-ах. Что в принципе и активно делает Pownce.

PS: если это все таки «баян», дайте знать, где еще есть инфа по теме — оч интересно.

  • Posted in обзоры
  • Tags API, oEmbed, service, url
  • Meta 6 comments, permalink, rss, atom

Загрузка (upload) файлов на сервер с помощью Adobe AIR и JavaScript 1

Posted by dobrych Fri, 13 Jun 2008 09:24:00 GMT

Я давно планировал начать серию статей про фронтенд разработку, т.е. про JavaScript, CSS и HTML. Про верстку писать — уже «баян», тем более это не очень мне интересно. Так что буду стараться разбирать наиболее редкие и уникаьные примеры.

Adobe AIR — тема этой статьи. Тема не обзорная, а вполне кокретная. Итак, как сделаь загрузку файлов на сервер с помощью AIR и JavaScript. Оказалось есть нюансы, которые в документации не освещены.

Пример.

// что и куда будем заливать
var url = "http://img31.picoodle.com/upload.php";
var pictureFile = new air.File('/path/to/local.file');

// устанавливаем переменные и их значения для http запроса, как в html форме
var variables = new air.URLVariables();
variables.op = 'upload';

// настраиваем парметры http-запроса
var tmpRequest = new air.URLRequest(url);
tmpRequest.method = air.URLRequestMethod.POST;
mpRequest.contentType = 'multipart/form-data'; // это тип для загрузки файлов
tmpRequest.data = variables;
air.sendToURL(tmpRequest);

// аттач ивентов для прогресс бара и завершения загрузки
pictureFile.addEventListener(air.ProgressEvent.PROGRESS, callback_for_upload_progress);
pictureFile.addEventListener(air.DataEvent.UPLOAD_COMPLETE_DATA, callback_for_upload_finish); 

// выполняем загрузку файла на сервер (отличается от простых http-запросов).
pictureFile.upload(tmpRequest, 'pic', false);

Вот про ивент air.DataEvent.UPLOAD_COMPLETE_DATA в доке нигде не написано, я выцепил его из примера, написанного для Flex на AcionScript. Пример рабочий, опробывал. Его нужно дополнить хендлерами ивентов. Для примера:

function callback_for_upload_progress(event) { 
    var loaded = event.bytesLoaded; 
    var total = event.bytesTotal; 
    var pct = Math.ceil( ( loaded / total ) * 100 ); 
    air.trace('Uploaded ' + pct.toString() + '%');
}

function callback_for_upload_finish(event) {
    Console.log('File upload complete');
    air.trace(event.data); // вывод ответа сервера на консоль air (режим отладки)
}

Эта заметка для тех, кто уже хоть немного знаком с AIR. В следующем обзоре я пожалуй напишу пример для работы с файлами. Если нужно сделать пример «с нуля» для начинающих, напишите, попробую. Хотя я считаю, что в официальной доке как раз неплохо написано с чего начать.

Я почти уверен, что у вас есть не мало вопросов по этой новой теме. Пишите в комментах, мне будет более понятно на что больше стоит обратить внимание.

  • Posted in заметки
  • Tags adobe, air, javascript, upload
  • Meta 1 comment, permalink, rss, atom

Про меня 3

Posted by dobrych Tue, 10 Jun 2008 22:56:00 GMT

Решил обновить страницу автора (тобишь о себе). Делаю копи-паст в ленту. Постоянная ссылка на страницу «Об авторе».

Об авторе

Зовут меня Илья, можно по-дружески — Илюха. Позывной в сети (всякие соц. сети, мессенджеры итп) — dobrych. Так что можете смело мне писать в Gmail/GTalk на dobrych [a] gmail.com и в Skype с тем же логином.

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

Мне очень нравится писать, поэтому с Сентября 2006 я — блоггер. Планирую в будующем делать новые контент-проекты, скорее всего в формате медиа-блогов. Набегами пишу в Twitter / dobrych.

Мне очень близки идеи дауншифтинга, поэтому я не спешно подыскиваю интересные варианты для миграции. Меня совершенно не устраивает ситуация в странах СНГ с неразвитостью регионов/провинции. Поэтому, буду рад любой интересной информации по теме.

Еще я пользовтель Mac (macbook pro). Это не понты и не дань моде, а просто хороший инструмент в моих руках. Делюсь опытом работы с Mac в отдельном блоге — Appleworms

Далее в перемешку.

Мне нравится:

  • минимализм в дизайне;
  • беспроводные устройства;
  • смотреть старое кино;
  • слушать инди-музыку;
  • катать детей на шее;
  • путешествовать;
  • работать с компьютером в командной строке;
  • рассказывать;

Не воспринимаю:

  • снобов;
  • шансон, попсу и эмо;
  • виндовз.
  • Posted in заметки
  • Tags about, life, me
  • Meta 3 comments, permalink, rss, atom