понедельник, 15 ноября 2010 г.

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

В пятницу 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 Orlov)

Джереми сначала рассказал об изменениях в семантике, а именно:
  • новые теги разметки страницы;
  • новые значения параметра 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 был практически закончен, оставалось лишь финальное слово и фуршет, который подвел итог этого замечательного и насыщенного дня.



В качестве постскриптума:


Скрытая реклама Яндекса =)
























Гугл - вид сзади

Related Posts by Categories



1 комментарий:

  1. Здравствуйте! Буду признателе, если оставите отзыв о мероприятии на IT-Event.Ru. Можете просто процитировать этот отчет. Вот тут: http://it-event.ru/1868/opinion/
    регистрация не нужна.

    ОтветитьУдалить