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, а именно:
Поблагодарив Фреда, Эрик почти сразу уступил микрофон Рето Майеру, который достаточно подробно рассказал о перспективах Android-разработки. Согласно его слова, на сегодняшний день выпущено 90 типов устройств, работающих на платформе Андроид. Не став углубляться в технические детали, Рето рассказал о возможностях, которые предоставляет Android Store, а именно:
- интеграция с сайтом разрабочика;
- удобная система репортов и комментариев;
- cloud;
- специальные бизнес условия.
На этом конференция была объявлена открытой и заработали 5 секций:
- Android;
- Chrome & HTML5;
- монетизация;
- облачные вычисления;
- социальный веб.
В каждой секции было по 6 докладов (это если монетизацию и социальный веб объединить в одно), так что всего было прочитано 24 доклада, и временами жутко хотелось разорваться. Но в итоге вышло то, что вышло. Пойдем по порядку.
Как пишутся эпические приложения под Android
Рето Майер (Reto Meier)
Рето построил свой доклад на 4 позициях:
Как пишутся эпические приложения под 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:
- тегах аудио и видео;
- возможностях 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 приложений:
- поддержка различных форм-факторов;
- запускается на различных устройствах с минимум затрат со стороны разработчика;
- быстрое развитете веб-технологий и времени их работы.
Тут, кстати, Майкл привел интересный слайд вида:
Скорость обработки js кода:
- Firefox (2004) - 1800 ms
- Chrome (2010) - 10 ms
Скорость обработки DOM:
- Firefox (2004) - 118 ms
- Chrome (2010) - 2 ms
Отличное сравнение, я считаю =)
Кроме того, уже сейчас веб-технологии позволяют работать с геолокацией и многими другими вещами, доступ к которым дает "железо".
В качестве итога доклада, была выдвинута следующая мысль, что идеалом является совмещение Native и HTML5 приложений, что позволяет делать например PhoneGap и Titanium.
Здравствуйте! Буду признателе, если оставите отзыв о мероприятии на IT-Event.Ru. Можете просто процитировать этот отчет. Вот тут: http://it-event.ru/1868/opinion/
ОтветитьУдалитьрегистрация не нужна.