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


    PHP код теперь можно запускать под Google App Engine

    Апрель 15th, 2009

    Недавний анонс поддержки Java в App Engine от Google породил целую волну экспериментов с реализацией возможности запуска кода под другие языки – Clojure, Beanshell, Groovy, Javascript, Ruby, Scala, Scheme и другие (если они имеют соответствующие JVM-реализации).

    Напомню, что проект или приложение, размещенное на Google App Engine, может хоститься бесплатно, если оно вписывается в стандартную квоту, которая в принципе достаточна для сайтов с 5 млн хитов в месяц. В AppEngine для хранения данных используется специальный интерфейс к собственной высокомасштабируемой платформе BigTable, которая кардинально отличается от СУБД на основе SQL.

    Так как подавляющее большинство web-разработчиков в своей работе использует язык PHP, им будет интересно узнать, что теперь и их приложения возможно запустить под App Engine. Для этого используется JVM-движок Quercus, который прозрачно выполняет перекомпиляцию в Java-байткод. Примечательно, что по тестам многих разработчиков скорость выполнения такого PHP кода гораздо выше работы стандартного движка без использования дополнительных механизмов ускорения.

    Остается вопрос: как правильно работать из PHP с фирменными API от Google: Datastore, Mail, Users и прочими? Если есть желание провести эксперименты, присоединяйтесь к русскоязычной группе проекта




    Java и Google App Engine

    Апрель 8th, 2009

    Друзья!

    Настал тот радостный миг, когда компания Google все таки публично анонсировала второй поддерживаемый язык для платформы Google App Engine, которым, как и я ожидал, стала Java. Сложно даже сказать, какой импульс придаст этот шаг дальнейшему росту популярности для разработчиков, однако ясно, что это открывает для нас более интересные возможности, чем были ранее.

    Итак, обо всем по порядку. Радует то, что Google не пошла по пути изобретения собственного велосипеда, а попыталась максимально возможно использовать существующие на сегодняшний день и сложившиеся де-факто стандарты на Java-интерфейсы и методы работы с данными Java Servlet API, JDO, JPA, javax.cache и javax.mail. Практически все они реализованы подобно существующим для Python-подсистемы библиотекам Webapp, Datastore, Memcache и Mail API. Прежде всего это дает возможность несложной адаптации существующих Java-приложений на рельсы App Engine, а самое главное – защищает от vendor lock, в случае выбора платформы Google под коммерческий проект: разверните точно такую же инфраструктуру на своем сервере с любой БД по желанию.

    Аналогично приложениям, написанным для GAE на языке Python, Java код исполняется в специальной песочнице, что гарантирует отсутствие негативного влияния на соседей по серверу и наоборот. Учитывая тот факт, что была произведена огромная работа по модификации системного окружения, и скорее всего первое время будут обнаруживаться досадные ошибки, Google набирает команду из 10000 добровольцев, которые хотят прямо сейчас начать тестирование новой системы. Обратите внимание на появление Google Plugin for Eclipse, который сейчас кроме App Engine поддерживает работу еще с GWT. Насколько я понимаю, в планах компании и дальше развивать функционал для этой IDE, что несомненно будет помогать начинать быстрый старт с их решениями для новичков в Java.

    И в завершении три проекта, о которых просто необходимо упомянуть:

    • Доступ к корпоративным данным из веб-приложения: система позволяет осуществить контролируемый политиками доступ к данным компании. Нацелено на использование с коммерческой версией Служб Google.
    • Поддержка заданий сron: стало возможным производить назначенный запуск задач генерации отчетов и работы с данными вне пользовательского контекста в четко заданный момент времени.
    • Импорт данных в хранилище: теперь легко и просто наполнить гигабайтами данных новое приложение App Engine. Аналогичный механизм экспорта данных из хранилища ожидается в ближайшее время.

    А теперь представьте Java-приложение на ExtGWT (а ведь уже на подходе вторая, улучшенная, версия), запущенное на App Engine. Чем не возвращение времен Delphi, когда можно было за пару дней создать толковую морду к БД и передать заказчику? Только теперь это будет web и модель распространения SaaS.




    Google App Engine: Обновление roadmap

    Февраль 7th, 2009

    Разработчики Google App Engine вновь приоткрыли завесу над планами по развитию платформы и решили опубликовать список будущих нововведений, которые должны быть реализованы в ближайшие подгода. Из многих вкусностей стоит отметить:

    • Поддержка запуска задач по расписанию (а-ля cron)
    • Возможность с помощью специальных команд запускать процессы, выполняющиеся вне контекста пользовательских сессий (так называемые background tasks)
    • Возможность получения и обработки входящих сообщений по электронной почте
    • Поддержка отправки и приема сообщений через протокол XMPP (всем известный Jabber).

    Кроме того, в мае этого года ожидается очередная конференция разработчиков Google I/O, видео с которой как обычно будут выложены на канале Google Developers на Youtube.

    P.S. А я все никак не могу дождаться выхода в свет поддержки Java в GAE :-(




    Вышел Google App Engine SDK 1.1.6

    Ноябрь 24th, 2008

    Вышел релиз среды разработки Google App Engine SDK версии 1.1.6. Скачать его можно на соответствующей странице хостинга проектов Google, там же находятся Замечания к выпуску.

    Этот релиз содержит ряд новых важных возможностей, большинство которых касаются работы с хранилищем:

    • Для ключей объектов стало возможным использовать операции сортировки и фильтрования
    • Теперь удалить объект можно просто зная его ключ, без необходимости загружать объект целиком из хранилища
    • Если указать атрибут key_name при создании модели, то это значение будет доступно до сохранения объекта операцией put()
    • Интерфейс URLFetch при работе в среде разработки устанавливает таймаут запроса в 5 секунд, эмулируя таким образом поведение приложения на сервере

    Вместе с тем с выпуском новой версии были устранены следующие проблемы:

    Как обычно, ждем ваших сообщений в группе Google проекта!




    Планы по развитию App Engine

    Октябрь 24th, 2008

    Разработчики платформы Google App Engine открыли карты и по многочисленным просьбам опубликовали список планируемых в течении следующих двух кварталов новых возможностей:

    • Сервис для хостинга больших файлов
    • Утилита, позволяющая выполнять импорт и экспорт данных хранилища, способная работать с огромными базами данных
    • Биллинг: наконец можно будет воспользоваться дополнительными платными ресурсами
    • Поддержка в платформе еще одного нового языка программирования
    • Сайт для мониторинга работоспособности приложений

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

    Напомним, какие возможности были добавлены в проект после его публичного выхода:

    • 16.10.08 – Включена поддержка протокола HTTPS для доменов *.appspot.com
    • 14.10.08 – Журнал использования и фильтры регулярных выражений в Административной консоли
    • 18.10.08 – Детализация использования ресурсов CPU, поддержка модулей zipimport, zipserve
    • 22.08.08 – Пакетная запись и удаление множества объектов
    • 24.07.08 – Добавлена возможность экспорта логов, увеличено количество доступных приложений для одного разработчика
    • 28.05.08 – Стали доступны интерфейсы API Memcache и API работы с изображениями, открыта регистрация всех желающих
    • 15.05.08 – Анонсирован App Engine Launcher для Mac
    • 08.04.08 – Выход ограниченной тестовой версии App Engine

    Все дополнительные вопросы можно задать в группе Google проекта.




    Присоединяйтесь к чату с разработчиками App Engine

    Октябрь 21st, 2008

    Вы, наверное, давно хотели задать некоторые вопросы команде разработки Google App Engine?

    Начиная с этой недели, разработчики этой платформы будут периодически раз в две недели посвящать 1 час своего времени ответу на вопросы пользователей на IRC канале #appengine сервера irc.freenode.net. Если вы до сих пор не установили IRC клиента, то предлагаем выбрать подходящий и присоединиться к чату. Приветствуются любые вопросы, относящиеся к App Engine, и мы надеемся, что на многие из них будет получен ответ в течении выделенного часа. Планируются, что записи будут опубликованы в группе проекта, а перевод наиболее интересных из них ожидайте на нашем сайте.

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

    Список запланированных конференций (время московское):

    • Среда, 22 октября, с 20-00 до 21-00
    • Среда, 5 ноября, с 6-00 до 7-00
    • Среда, 19 ноября, с 20-00 до 21-00
    • Среда, 3 декабря, с 6-00 до 7-00
    • Среда, 17 декабря, с 20-00 до 21-00

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




    Поддержка HTTPS в доменах appspot.com

    Октябрь 17th, 2008

    Google анонсировал одну из самых нужных опций современных масштабируемых приложений – поддержку протокола HTTPS. Начиная с сегодняшнего дня, App Engine может обрабатывать входящие подключения по HTTPS с использованием настоящего сертификата для всех поддоменов из зоны appspot.com. Для его включения необходимо:

    • в файле app.yaml прописать новый атрибут secure в секции обработчика URL:
      - url: /accounts/.*
        script: admin.py
        login: admin
        secure: always

      Он может принимать значение always, optional или never (использовать всегда, по требованию или никогда – последнее по умолчанию) и определяет поведение при обработке HTTP и HTTPS запросов. Дополнительная информация скоро появится в документации.

    • HTTPS-запросы имеют отдельную квоту на пропускную способность, которая также учитывается в составе общей пропускной способности всего приложения. Отследить использование этой квоты можно в Административной консоли.

    Многие могут удивиться, что была добавлена поддержка безопасных соединений только для доменов appspot.com без возможности работы с доменами Служб Google. Однако на то есть простое объяснение – таковы фундаментальные ограничения самого протокола SSL, который не поддерживает работу виртуальных серверов. Команда разработки платформы App Engine в данный момент изучает возможные пути преодоления этого ограничения, в том числе вариант использования технологии SNI, которая поддерживается всеми современными браузерами.




    Ускоряем работу локального сервера в App Engine

    Октябрь 15th, 2008

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

    Мы рассмотрим способ выноса статического содержимого приложения Django для обслуживания его сторонним сервером на базе пакета SimpleHTTPServer.

    Сначала создаем скрипт, который будет использован для старта обоих серверов:

    python simplehttpserver.py & dev_appserver.py -d --datastore_path="dev_appserver.datastore" .

    Создаем файл simplehttpserver.py со следующим содержимым:

    try:     import SimpleHTTPServer     import SocketServer     port = 9000     Handler = SimpleHTTPServer.SimpleHTTPRequestHandler     httpd = SocketServer.TCPServer(("", PORT), Handler)     httpd.serve_forever() except:     pass

    Исключение будет срабатывать в том случае, если порт уже занят (сервер запускается повторно). Далее напишем специальную функцию, которая будет принимать в своих параметрах объекты фреймворка Django HttpResponse и HttpRequest, и при необходимости перенаправлять браузер на сервер со статическим содержимым (если сервер запущен локально). Для повторного использования ее лучше вынести в отдельный файл (например, utils.py).

    def goFast(request,response):     developing = onDevelServer(request)     if developing:         for folder in ['images','css','js']:             dir = 'http://localhost:9000/%s/' % folder             response.content = response.content.replace('/%s/' % folder,dir)     return response def onDevelServer(request):     return request.META['SERVER_NAME'] == 'localhost'

    Этот код выполняет замену в ответе адрес ‘/images/homepage_logo.png’ на ‘http://localhost:9000/images/homepage_logo.png’. Ну и в завершении, модифицируем функцию render_to_response:

    from django.shortcuts import render_to_response as r2r from services.utils import goFast def render_to_response(template, ls):     return goFast(ls['request'], r2r(template,ls))

    Это все, теперь можно насладиться скоростью работы!




    Новая Административная консоль

    Октябрь 15th, 2008

    Разработчики платформы Google App Engine снова порадовали нас новыми изменениями в Административной консоли:

    Admin Logs (журнал работы администраторов): Это нововведение позволяет отобразить все действия, выполненные администраторами приложения. К примеру, щелкните по ссылке Admin Logs в разделе Administration левой навигационной панели. Здесь вы сможете просмотреть выполненные действия по настройке приложения, управлению его версиями и внесенными изменениями в хранилище данных. Просто выберите требуемое действие из выпадающего списка и нажмите кнопку Display.

    Regex Filtering in Logs (фильтрация по регулярным выражениям): Хотите найти все запросы, при обработке которых возникла определенная ошибка? Или нужна информация о запросах с заданными параметрами? Воспользуйтесь новым фильтром с поддержкой регулярных выражений, который позволяет отобрать нужные записи в журнале событий. Обратите внимание, что за один проход выполняется поиск только в 10000 записях, однако при нажатии на кнопку Next будет просмотрена следующая порция данных. Для удобства в результатах будет отображаться время создания последнего события, в котором производился поиск (а не которое удовлетворяет заданному фильтру!).

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




    Релиз 1.1.5 Google App Engine SDK

    Октябрь 4th, 2008

    Сегодня вышла среда разработки App Engine SDK версии 1.1.5, которая как всегда доступна для загрузки на сайте проекта. Ниже приведены основные изменения:

    В этом релизе были добавлены следующие возможности:

    Также были устранены следующие ошибки:

    Также тихо и незаметно прошел выпуск SDK версии 1.1.4 SDK в пятницу 26 сентября, который исправил два важных бага под Windows: один из них проблемы со значениями параметров в файле app.yaml, а другой – некорректная работа вьювера хранилища в SDK.

    Мы всегда рады видеть вас в группе Google!