Pull to refresh

Отлично погуглил или впечатления от Google Developer Day 2010

Reading time 7 min
Views 758

В пятницу 12 числа прошло такое знаменательное событие, как Google Developers Day 2010 в Москве. Это предпоследнее событие в серии GDD, следующее будет в Праге 16 ноября, а предыдущие прошли в Токио, Сан-Паулу и Мюнхене. GDD — значимое событие для всех разработчиков и попасть туда хотели 4000 человек, именно столько заявок было подано. Прошло всего 1500 и я был одним из счастливчиков. О том, каким GDD 2010 был для меня, я и хочу рассказать.

Конференция проходила в Крокус Экспо, гигантском выставочном комплексе, на одном из этажей которого с легкостью поместилось 1500 человек. От метро вели понятные каждому указатели, которые в итоге привели нас на 3 этаж к стойке с регистрацией. Быстро пройдя ее благодаря заранее присланным регистрационным кодам, мы прошли в павильон, где все было все, чтобы создать приятную атмосферу: ненавязчивая музыка, множество мягких мест, холодильники с прохладительными напитками, горячий чай и кофе для тех, кто только встал, игры и развлечения — для тех, кто пришел получить фан, вайфай — для желающих посерфить в сети. Но все ждали главного — докладов.
Конференцию открывали Евгений Соколов, руководитель московского центра разработки, и Эрик Толоме (Erik Tholome), директор по продуктам для разработчиков. Эрик с присущим ему энтузиазмом рассказал обо всех новинках компании Гугл, что к сожалению явилось спойлером для некоторых докладов и подпортило впечатление от них. Дабы не повторять подобный опыт, кратко пройдусь по ключевым моментам его речи.
Что нового нам несет HTML5:
  • геолокация и позиционирование в пространстве;
  • распознавание речи;
  • 2D & 3D графика с использованием WebGL;
  • WebSockets;
  • повышение производительности.


Что нового нам несет App Engine:
  • full Map Reduce
  • экспорт/импорт данных;
  • большая защищенность;
  • Storage SQL;
  • OpenID + OAuth;
  • специальные предложения для бизнеса.


Затем речь зашла о GWT и такой разработке, как Spring Roo. Spring Roo  (SR)- это аналог Django, но только на java. SR берет на себя бэкэнд, а GWT — фронтэнд. На наших глазах Фред Сауэр, которому Эрик передал слово, показал как из командной строки можно создать простое приложение с некоторым набором сущностей, настроить их на Hibernate и сгенерировать UI на GWT. Затем Фред запустил Eclipse, для которого есть специальный плагин Google Plugin for Eclipse и запустил приложение на глазах у публики. (Кстати, отдельное слово о демках — почти все были продемонстрированы в FireFox на маках.) Демка сработала на ура. Фред показал так же еще одну фишку SR -  редеплой, после изменения сущности. Отдельная возможность настройки — конфигурация для деплоя на Google App Engine.

Поблагодарив Фреда, Эрик почти сразу уступил микрофон Рето Майеру, который достаточно подробно рассказал о перспективах Android-разработки. Согласно его слова, на сегодняшний день выпущено 90 типов устройств, работающих на платформе Андроид. Не став углубляться в технические детали, Рето рассказал о возможностях, которые предоставляет Android Store, а именно:
  • интеграция с сайтом разрабочика;
  • удобная система репортов и комментариев;
  • cloud;
  • специальные бизнес условия.


На этом конференция была объявлена открытой и заработали 5 секций:
  • Android;
  • Chrome & HTML5;
  • монетизация;
  • облачные вычисления;
  • социальный веб.


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

Как пишутся эпические приложения под Android
Рето Майер (Reto Meier)



Рето построил свой доклад на 4 позициях:
  • как делать НЕ надо;
  • как делать надо;
  • как измерить результат;
  • как извлечь уроки.


Вот что мне удалось извлечь для себя. Во-первых, надо очень много работать над производительностью и пользоваться, например, Threads/AsyncThreads. При этом обязательно  надо держать пользователя в полной осведомленности о том, что же происходит в приложении. 

Само собой, приложение должно быть удобным, так что не забываем про user experience:
  • делаем удобную навигацию, в том числе повесив ее на trackboll;
  • status bar лучше не прятать;
  • лучше использовать нативные иконки;
  • обязательно учитывать и запоминать предпочтения пользователя.


Касаемо стиля программирования:
  • НЕ использовать недокументированные API (нет, серьезно!);
  • не стоит забывать про жизненный цикл приложения;
  • обязательно поддерживать landscape/portrait режимы отображения;
  • помнить про различные возможные размеры экрана.


Одним из самых казалось бы очевидных советов был позвать дизайнером. При всей его очевидности его очень часто забывают.

Заканчивал Рето рассказом о том, как важно интегрировать приложение с аналитикой для получения следующих данных:
  • статистикой посещения;
  • отзывов пользователей;
  • прочее.


Что нового в App Engine

Фрэд Сауэр (Fred Sauer)

Channel API

Данное API предназначено для прямо общения между сервером и браузерным клиентом.

Что там есть сейчас:

  • Async Server — Client (основан на Channel системе сообщений, двунаправленная система)
  • Server (шлет и принимает сообщения, через созданный канал);
  • Client (написан на JS, позволяет подписываться на сообщения и отвечать на них посредством callback`ов).


MapReduce

MapReduce — это фреймворк для вычисления некоторых наборов распределенных задач с использованием большого количества компьютеров, образующих кластер. В процессе рассказа о MapReduce Фред регулярно говорил «magic!». Частью MapReduce является Map, для которого открыт Mapper API. Несколько слов о нем:

  • удобно использовать для генерации отчетов, экспорта данных, shema миграций;
  • TaskQueue внутри;
  • Apache 2 лицензирование;
  • поддержка python/java;
  • автоматизация внутренних процессов.


Namespace API

Данное API меняет привычную работу с datastore и memcached хранилищем, добавляю между ключом и значением поле namespace. Одно из очевидных применений — работа с разными версиями программы.

Matcher API

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

Hosted SQL

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

Admin Console

Удобная админка, для работы с большинством озвученных выше функций.

Насытившись духовно, мы начали насыщаться материально — начался обед. Все было организовано очень здорово, так как не было особых толкучек и очередей. Еда была вкусной и ее было достаточно. Так же очень радовали бесплатные напитки в холодильниках.



Немного отдохнув мы вновь бросились узнавать и наслаждаться новым.

Практический HTML5

Джереми Орлов (Jeremy Orlow)

Джереми сначала рассказал об изменениях в семантике, а именно:
  • новые теги разметки страницы;
  • новые значения параметра rel тега link;
  • появление microdata;
  • ARIA атрибут.


Далее мы перешли в canvas:
  • рисование линий и фигур;
  • image data;
  • Web GL;
  • inline SVG.




Затем было демо и рассказ о:
  • тегах аудио и видео;
  • возможностях drag&drop`а файлов;
  • notifications;
  • определение ориентации девайса в пространстве.


Ну и наконец мы перешли к css3:
  • transformations;
  • transitions;
  • анимация;
  • гибкая box модель.


Вместе с Джереми выступил Вадим Макеев, так же известный как pepelsbey, которые показал свою презентацию «Чай со  спецэффектами».

Обработка данных при больших нагрузках в App Engine

Майк Айзацкий (Mike Aizatsky)

К слову сказать, это был самый насыщенный из всех докладов. Начался он с описания тех проблем, с которыми сталкиваются пользователи App Engine:
  • ограничение времени работы запросов;
  • проблемы при очень частом обновление одних и тех же записей;
  • растущие задержки;
  • AppEngine не любит тяжелые приложения.


Затем Майк привел несколько концепций, которые меняют привычный взгляд на LAMP подход:
  • данные надо писать так, чтобы их было удобно читать;
  • часто одни и те же данные могут хранится в 2х разных местах;
  • нужно менять модель программирования.


И для решения этих проблем возможны два подхода: низкоуровневые и высокоуровневые.


Низкоуровневые техники

Именованные задачи:
  • очередь гарантирует уникальность задач;
  • имена хранятся минимум 7 дней;
  • создание именованной задачи быстрее чем аналогичные манипуляции с БД.


Сцепка задач:
  • разбивка задач;
  • создание задач внутри других задач;
  • из минусов — неконтролируемый рост числа задач.


Транзакционные задачи:
  • задача создается во время применения транзакции.


Группы записей:
  • единый способ осуществления транзакций;
  • группа организуется в виде дерева;
  • нет ограничений на размер и форму дерева;
  • любые записи создают транзакцию;
  • пакетные задачи автоматически создают группы записей.


Именованные записи:
  • дают возможность быстрого поиска по ключу;
  • уже отсортированы по ключу;
  • использование автоматических ключей — лишний расход места, так что надо использовать уникальные поля самой сущности.


Синтетические свойства:
  • свойства создаются на основе других свойств;
  • быстрее проходят запросы.


Высокоуровневые техники

Тут Майк предложил следующее:
  • чтение публикаций в интернете;
  • MapReduce;
  • использование небольших библиотек;
  • обмен опытом между разработчиками.


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



Веб-приложения в Chrome WebStore

Пол Кинлан (Paul Kinlan)

Пол начала с рассказа, что же должно быть в хороших современных приложениях:

  • наипростейшая регистрация (aviary editor);
  • регистрация с наследованием, то есть использованием уже существующих аккаунтов (diary.com);
  • автоматическое долговременное хранение (iehtherpad.com);
  • богатая анимация, с использованием возможностей html5 и css3;
  • поддержка режима работы offline, за счет AppCache и LocalStorage/DB;
  • обработка большинства задач с помощью WebWorkers;
  • наличие аппаратного ускорения.


После этого Пол перешел к перечислению, почему же был создан Chrome WebStore:

  • удобный поиск нужного приложения в одной системе;
  • единая встроенная система платежей;
  • простая схема вовлечения большого количество пользователей.


И завершал все доклад, которого я ждал с большим нетерпением.

Мобильная разработка: HTML5 или Native?
Рето Майер, Майк Махемоф (Reto Meier, Michael Mahemoff)

Для начала докладчики определили, когда же стоит писать то или иное приложение.

Сила native приложений:

  • скорость работы;
  • поддержка «железа»;
  • высокая интеграция с системой.




Сила html5 приложений:
  • поддержка различных форм-факторов;
  • запускается на различных устройствах с минимум затрат со стороны разработчика;
  • быстрое развитете веб-технологий и времени их работы.

Тут, кстати, Майкл привел интересный слайд вида:
Скорость обработки js кода:
  • Firefox (2004) — 1800 ms
  • Chrome (2010) — 10 ms

Скорость обработки DOM:
  • Firefox (2004) — 118 ms
  • Chrome (2010) — 2 ms

Отличное сравнение, я считаю =)
Кроме того, уже сейчас веб-технологии позволяют работать с геолокацией и многими другими вещами, доступ к которым дает «железо».
В качестве итога доклада, была выдвинута следующая мысль, что идеалом является совмещение Native и HTML5 приложений, что позволяет делать например PhoneGap и Titanium.
На этом GDD был практически закончен, оставалось лишь финальное слово и фуршет, который подвел итог этого замечательного и насыщенного дня.

В качестве постскриптума:
  • Скрытая реклама Яндекса =)
  • Гугл — вид сзади
Tags:
Hubs:
+42
Comments 63
Comments Comments 63

Articles