• Home
  • Учебник по ExtJS
  • О сайте
  •  


    Google App Engine + Google Data API: Интересная связка для Web

    Июль 22nd, 2008

    Не думали ли вы о том, что было бы неплохо создать в блоге запись о намечающейся вечеринке, добавить ее в календарь, пригласить друзей и все это сделать одним движением мыши? И все бы фотографии и видео с вечеринки, выложенные в открытый доступ, были привязаны к этому же событию? Интерфейс Google Data API все это делает возможным так, что ваши приложения на Google App Engine смогут взаимодействовать с другими сервисами Google, отображать и обновлять информацию определенного пользователя в этих сервисах.

    Команда разработчиков Google Data API выпустила обновление для клиентской библиотеки Google Data на языке Python, которое поддерживает работу под Google App Engine. С помощью нее ваше приложение сможет использовать интерфейс AuthSub и получить доступ к пользовательским данным.

    Джеф Скаддер, разработчик Google Data API и основной контрибьютор библиотеки Google Data Python client library, написал статью, в которой рассматриваются все шаги, которые необходимо выполнить для использования данных Google Data в приложении Google App Engine. Он также добавил пример такого приложения в проект Google App Engine sample code.

    Попробуйте использование этих возможностей!




    Google App Engine Helper для Django

    Июль 21st, 2008

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

    Компания Google разработала и опубликовала специальный каркас, который обеспечивает более легкий процесс разработки проекта на Django и последующего его запуска на Google App Engine.

    Возможности этого каркаса:

    • Сохранение возможности использования большинства команд скрипта manage.py
    • Класс BaseModel имеет все те же возможности, что и стандартный для Django класс Model.
    • Возможность сериализации и десериализации экземпляров модели в код JSON, YAML и XML.
    • Доступ к тестовой среде Django с возможностью поддержки загрузки тестовых данных.

    Каркас опубликован под лицензией Apache 2.0. Команда Google продолжает работу с сообществом разработчиков Django для внесения в проект дополнительной функциональности.

    Каркас может быть загружен со страницы http://code.google.com/p/google-app-engine-django. Русскоязычная статья по его использованию находится по адресу http://googleappengine.ru/articles/appengine_helper_for_django.html. Об ошибках и предложениях по дополнительной функциональности можно сообщить на странице проекта.




    QuickFix? Испытайте совместное использование Google App Engine, Adobe AIR, and Flex

    Июль 17th, 2008

    Оригинал статьи написан Allen (http://dobeweb.com/2008/quickfix-try-google-app-engine-adobe-air-and-flex-2.html)

    Последнюю неделю я работал над приложением, в котором объединены технологии Google App Engine, Adobe AIR и Flex. Сначала это было простым экспериментом, а затем стало полноценным интересным приложением. Алгоритм работы простой: приложение, названное QuickFix, отправляет изображение в Google App Engine, которое затем выполняет над ним преобразование по алгоритму “I’m Feeling Lucky” и отправляет его обратно. Ниже представлен скриншот, показывающий трансформацию одной из фотографий с последней конференции Java Posse Roundup прошлой зимой:

    Приложение можно скачать с сайта:
    http://airquickfix.appspot.com/

    Весь исходный код выложен на проекте air-quick-fix в Google Code.

    Вся работа была разделена между Диком и мной. Дик работал над бэкэндом на Питоне, в то время как я сконцентрировался на фронтэнде приложения на Flex. Мы использовали библиотеку PyAMF для связки бэкэнда и фронтэнда. PyAMF была выбрана потому что делает эти вещи просто и позволяет не отвлекаться на низкоуровневое программирование. Единственной проблемой, над которой пришлось подумать, явилась задача корректной конвертации типов данных. Первая версия приложения была готова буквально за несколько часов.

    Бэкэнд, написанный на Питоне, очень примитивен. Метод, вызываемый клиентом (код немного обрезан):

    def fiximage(data):
    
      image_in = Image(str(data))
      image_in.im_feeling_lucky()
    
      image_out = ByteArray()
      image_out.write(image_in.execute_transforms())
    
      return image_out

    В этом коде данные, передаваемые методу, являются классом ByteArray, содержащим изображение. Эти данные передаются экземпляру класса Image, после чего вызывается операция преобразования im_feeling_lucky, по завершении которой изображение отдается обратно клиенту.

    Фронтэнд кода на Flex, который производит отправку изображения бэкэнду тоже достаточно простой:

    Объект RemoteObject (сетевой интерфейс AMF в Flex) определен как:

    <mx:RemoteObject id=“ro” destination=“image” endpoint=“http://airquickfix.appspot.com/image/”>

    Функция, которая фактически выполняет запрос к бэкэнду:

    var stream:FileStream = new FileStream();
    stream.open(startFile, FileMode.READ);
    
    var imageData:ByteArray = new ByteArray();
    stream.readBytes(imageData);
    ro.fiximage(imageData);

    Этот код открывает файл с изображением, считывает его в объект ByteArray, затем передает его содержимое в метод fiximage бэкэнда.

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

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