GDD2009 (Отчет Клинчаева Олега)
Содержание
- 1 Отчет о конференции Google Developer Day 2009
- 1.1 Регистрация
- 1.2 Открытие
- 1.3 Как привлечь посетителя на сайт // Chewy Trewhella
- 1.4 Расширения для Chrome // Brian Kennish
- 1.5 Обед
- 1.6 Как заинтересовать посетителя // Chewy Trewhella
- 1.7 Android // Reto Meier
- 1.8 Google Wave API // Вадим Герасимов
- 1.9 Архитектура Google Web Toolkit: полезные советы по написанию вашего приложения на GWT // Fred Sauer
- 1.10 Закрытие
Отчет о конференции Google Developer Day 2009
Регистрация
Данная конференция проходила в 10 ноября Москве в здании кинотеатра «Октябрь». Программу и краткую информацию обо всем можно посмотреть на официальном сайте.
В 2009 году европейские конференции GDD проходили в Праге (?) и в Москве. Таким образом (и на открытии конференции об этом прямо говорилось) Google говорит, что развитие ИТ индустрии в России является ему небезынтересным.
Начало регистрации было в 8:30 утра, я приехал в 9 и попал в очередь (как оказалось потом, в дальнейшем очередь сильно выросла и народ немного померз, пока ждал). Пока стоял, увидел уходящего Андрея Бибичева (он хоть попал внутрь, всё равно расстроился, что «гугл не масштабируется» и поехал на работу). После того, как попал внутрь, сориентироваться большой проблемы не было.
Стойки регистрации были разбиты по-алфавиту, но, как известно, не все буквы «одинаково полезны» — людей с фамилией на К очень много, а вот на Э — намного меньше (по-моему был ровно 1). В результате мне пришлось немного подождать, ну а Дима Эйдин зарегистрировался сразу.
Открытие
По ходу конференции я старался фиксировать имена выступающих и прочее, но за 100 % достоверность везде ручаться, к сожалению, не могу — где-нибудь могла закрасться ошибка.
После регистрации мы пошли в основной зал, где стали ждать начала. На экране за это время крутились довольно прикольные вещи, написанные на javascript-е. Может быть кто-нибудь погуглит и найдет видео на ютубе в нормальном виде (я заснял только несколько секунд в самом конце — \\st-klinchaev\photo\2009-11-10-Google_Developer_Day_2009\GDD2009_olk_013.mov.
В самом начале несколько слов сказал Дмитрий Полухин (Tech Lead Manager, Google). В первую очередь он извинился за проблемы с регистрацией, в результате чего некоторым (в том числе и нам) пришлось немного померзнуть на улице и сказал, что регистрироваться можно будет в течении всего дня — «сначала отстоять очередь, а потом идти на доклады» не требуется. Далее он передал слово Eric Tholome (Product Management Director, Developer Products), который уже собственно и вел оставшуюся часть, рассказывая общие для всей конференции вещи и переодически передавая слова ключевым докладчикам.
Если вкратце, то веб растет и развивается довольно быстро: .
При этом в последнее время очень сильно ускорилось выполнение JavaScript-а (Если верить презентации, в 100 раз) .
От этого в выигрыше остаются все:
- конечные пользователи, так как
- не надо ничего ставить и обновлять
- всё доступно в один клик…
- … откуда угодно
- и сразу «коллаборативно» (Natively collaborative — ну вроде как раз уж это веб, то легче организуется взаимодействие и прочее).
- компании
- получается дешевле
- «Natively collaborative»
- более тесная связь с заказчиками
- разработчики
- можно запускать быстро и чаще (веб обновить проще, чем десктоп)
- OS-независимость
- открытые стандарты
- пользовательские данные
Собственно, два последних бенефита я не понял (ну то есть оно как бы есть, но при чем тут именно веб — не ясно).
После вступления, был блиц на тему HTML 5, где были продемонстрированы 5 нововведений, который облегчат разработку веб приложений.
- Canvas — теперь мы можем легко добавлять попиксельную графику на страницы и вообще рисовать что угодно в 2D. По-быстрому смог нагуглить несколько ссылок: от графиков до сложной анимации.
- Video — долой всё ненужное разнообразие флеш-плееров. Теперь есть специальный тег, который позволит вставлять видео в страницы.
- Доступ к геолокаторам: GPS и прочему (это из веб страницы, а не из установленного ПО).
- Встроенные базы данных для хранения локальной информации — чтобы программы могли работать и без сервера.
- Background threads — возможность запуска вычислений в фоновом потоке (чтобы не блокировать пользовательский интерфейс).
Далее слово снова взял Эрик. Он «раскрыл карты» — в чем именно интерес Google-а, зачем он вкладывается в веб. Ответ — в следующей картинке (читать по часовой стрелке, начиная от open web platform):
Расшифровка следующая: открытая и мощная веб платформа — позволяет создавать качественные веб приложения — которые привлекают больше пользователей — которые смотрят рекламу (от Google) — часть выручки инвестируется в развитие веба.
После этого при помощи магических слов «веб не только на десктопе, он ещё и в телефоне» перешли к Android-у. Если год назад было только 1 устройство с этой ОС, то теперь на рынке уже 12 устройств в 26 странах на 19 языках и более 12000 приложений в Android Market-е.
Далее слово было передано Fred Sauer-у, разработчику Google Web Toolkit и нескольких полезных библиотек для него (gwt-dnd, gwt-voices и gwt-log). Он за несколько минут написал небольшое GWT приложение и развернул его на Google App Engine (всё это было сделано из Eclipse-а).
Что же можно написать при помощи GWT ? — Встречаем Google Wave! (Прим. авт. — недавно Google открыл свою JavaScript библиотеку Google Closure, на которой написан, например, GMail. Так что теперь нас ожидает ещё один «холивар» — что использовать для больших веб приложений — GWT или Closure).
Тут проще один раз увидеть, чем 100 раз услышать. Довольно прикольно, что там можно делать чуть-ли не «всё, что душе угодно». Например, устраивать соревнования по игре в судоку. Вообщем, довольно интересная вещь.
Стас, когда мы уже на неё с вики перейдем ? ;)
- Стас Фомин 15:58, 11 ноября 2009 (UTC): Когда перестанет глючить и тормозить.
Далее: как из специй Google Product APIs что-нибудь приготовить? Слово было передано Chewy Trewhella. Сказать, что Чюи делает доклады очень интересными — это не сказать ничего. На открытии он лишь показал один из сервисов гугла в деле — Custom Search. Основное же было на его докладах. О них я напишу ниже.
В конце слово дали основателям викимапии (Evgeniy Saveliev, Alexandre Koriakine). Они рассказали, как они заказывали разработку двум фрилансерам и те ничего не сделали (смех в зале), и в итоге они сели и за 2 недели сами написали первую версию (оба не являются программистами и изучали API «с нуля»).
Плюс было пара слов о Google Technology User Groups
Как привлечь посетителя на сайт // Chewy Trewhella
Среди первых докладов было 2 кандидата на посещение: HTML5 и Chewy. Про первое можно будет и в интернетах почитать, а вот поприсутствовать на докладе последнего — уже сложнее. Вообщем, я пошел знакомиться с тем, что заставляет пользователей оставаться на сайте и приходить на него в дальнейшем.
Итак, начали с Developers, Developers, Developers, Developers«Измерять, измерять и ещё раз измерять»:
Очень сильно акцентировалось внимание на том, что очень важно измерять, кто и как пользуется сайтом: откуда он приходит (с какого другого сайта, из поисковика, из какой страны, и прочее), когда он приходит и что он делает. Это важно потому, что не всегда наши ожидания совпадают с тем, что происходит на самом деле.
Второй момент — контент (содержимое страницы) имеет значение.
Третье — картинка . Что мы тут видим ? А то, что страница была сформирована и отправлена пользователю менее чем за секунду. Это очень важно (как минимум никогда нельзя допускать случаев, что первая страница открывается секунд 30). Важно, чтобы пользователь получал отклик на свои действия не позднее чем через несколько секунд.
Четвертое — был разобран пример, что не обязательно использовать контекстную рекламу для привлечения «большого» количества народа — иногда гораздо выгоднее привлекать «качественных» посетителей. Ну и для качества нужно, чтобы то, что есть на сайте хорошо соответствовало тому, что человек ищет (тут могу очень сильно ошибаться, так как не совсем в теме ключевых слов, поиска и контекстной рекламы).Вообщем, вот формулы для AdWords:
Ad Rank = CRC bid * Quality Score Ad 1: CRC Bid: 100 руб Quality Score: 1.0 Ad Rank: 100 Ad 2: CRC Bid: 200 руб Quality Score: 0.25 Ad Rank: 50
Далее были детали про сортировку страниц (кто в выдаче идет раньше, кто — позже). У них есть «релевантность» (зависит от запроса) и «важность» (от запроса не зависит).
Пятое — персонализация выдаваемого контента (iGoogle), возможность использовать OpenID (чтобы пользователю не надо было заполнять 10 полей для регистрации) — последнее вкупе с социальными сетями ещё и дает возможность чаще видеть не «виртуала», а реального человека, так как в них неверная информация попадается реже.
Шестое — делайте работу качественно и ссылайтесь на свой контент откуда это возможно. Тут были упомянуты и блоги — можно вести свой блог и из него ссылаться на свой сайт, где обязательно стоит указать свой блог ;). И то, что можно очень легко сделать гаджет для iGoogle и его стоит делать. В качестве одного из примеров был приведен ход борьбы против «пиратского» Монти Пайтона, которого в свое время на ютуб заливали в огромных количествах. И компания, владеющая правами на него и продающая его в HD качестве не стала бороться со всеми пользователями, нарушающими авторское право, а просто стала добавлять рядом с пиратскими записями ссылки на платную версию в HD. В результате продажи увеличились у них на 23000 процентов.
Седьмое — социальные вещи (поделись ссылкой, опубликуй это в твиттере/ЖЖ и прочее) сейчас очень популярны и надо давать пользователям легко пользоваться этими сервисами:
Восьмое — блоги. Про них я уже говорил.
После этого пришел яндекс.директ и стал продавать себя. Не сказать, что всё было плохо, но просто мне не очень понравилось: слишком много акцента делалось на то, какие они крутые и как всё шоколадно. Хотя продукт у них судя по всему хороший и конечно может составить конкуренцию Google Analytics, подать эти все факты можно было бы и по-другому.
Расширения для Chrome // Brian Kennish
Браен рассказывал и показывал как разрабатывать расширения (плагины) для браузера Google Chrome.
Содержание доклада было примерно следующим:
- Введение
- Что такое расширения
- Зачем с ними стоит возиться
- Где они могут применяться
- Как разрабатывать расширения
- Технические вопросы
- Пошаговый пример
- Выводы
- Вопросы и ответы
На всех слайдах презентации у него были прикольные рисунки, которые оживляли текст:
Вначале были общие слова и т.п. Отдельно хочется лишь выделить то, что API пока ещё очень маленькое для написание расширений, так как они не хотят спешить с тем, что и как должно быть через него доступно, чтобы в дальнейшем не было необходимости ломать обратную совместимость. Это же касается и возможностей, где вы можете добавлять визуальные компоненты своего плагина (пока их можно добавлять в тулбар и на страницу).
Ну а потом был разбор примера.
Довольно подробно и на доступном уровне (так, что любой смог бы написать после лекции свое расширение для Google Chrome), было разобрано создание расширения для работы с твиттером. При этом часть вопросов разбиралась вплоть до строк кода. Если вы хотите создать свой плагин, но не знаете с чего начать и тому подобное, думаю, что можно начать с этой презентации (материалы они обещали выложить позже).
Также разбирался манифест, который служит для подключения плагина и безопасности (на подключение плагина к серверам нужны специальные разрешения, которые пользователь может увидеть при установке).
После доклада обсудили с Браеном вопросы безопасности расширений: основной контроль за тем, что делают плагины, возлагается на сообщество (аналогично тому, как это делается сейчас для плагинов firefox, если я не ошибаюсь); против того, чтобы плагин не имел доступа к сохраненным паролям специальных механизмов не предполагается (по крайней мере до тех пор, пока это не станет масштабной проблемой).
Ну и последний слайд презентации:
Обед
После двух докладов был перерыв на обед. В холле на столах были сендвичи, пицца ну и прочая еда, так что подкрепившись знаниями и технологиями народ пошел есть бутерброды.
Очереди у стойки регистрации уже не было, так что те, кто не успел зарегистрироваться до открытия конференции, без проблем могли это сделать в обеденный перерыв.
Особенно уютно было в уголке GTUG, где тоже можно было перекусить.
Ну и ещё несколько фоток
В связи с последней фоткой хочется особенно отметить уровень организации конференции — во всех залах были удлинители, так что батареи в ноутбуках не садились и можно было весь день оставаться онлайн.
Как заинтересовать посетителя // Chewy Trewhella
Признаться, очень хотелось пойти на первую секцию (Google Wave Client: Powered by GWT by David Hearnden), но так как для первых двух секций велась видеозапись и её можно будет потом посмотреть, то я снова пошел на Chewy.
Ну и с самого начала доклада снова полилась волна позитива. (Приятно было слушать всех докладчиков, но Чюи отжигал лучше всех).
Теперь про сам доклад. В начале снова были слова про важность измерения. Теперь их рассмотрели чуть более подробно. «Ничего нельзя сказать без измерений. Измеряйте всё, а не только посещение страниц. Регулярно просматривайте результаты измерений.» Ну и кто же сможет ответить на наши сложные вопросы? Конечно, Google Analytics :). После чего данный инструмент был рассмотрен чуть по-ближе.
Здесь и далее в презентации, упор делался на то, что добавить всю представленную функциональность на свой сайт проще простого — достаточно скопировать сгенерированный код на свою страницу и вы получите всю мощь приложений и API сервисов Гугла.
Потом речь пошла о продукте Web Optimizer. Я так думаю, что в инете и так полно информации о нем, поэтому не буду тут расписывать его подробно. Добавить можно разве то, что продукт этот они активно тестировали внутри гугла (например, для сайта программы Picasa).
Фотки в основном получились совсем плохими, поэтому лучше дождаться опубликования материалов на официальном сайте. По ходу доклада также были рассмотрены следующие продукты:
- Web Elements
- Video
- GFC (Google Friend Connect). Кстати, довольно интересная штука: одна из возможностей — добавить на сайт возможность обсуждения той или иной статьи.
И тут мне понравилось то, что комментарии пользователей можно будет отфильтровать и смотреть только тех, кто у тебя в друзьях (в соответствующей соц. сети). Вообщем, если вам нужен функционал добавления комментариев на сайте, взгляните на эту штуку.
- Google Custom Search
Ну и процитирую ещё одну часть из доклада: «И, как вы помните, мы хотели зарабатывать при помощи Custom Search деньги. Итак, как заработать деньги? Находим на сайте кнопку 'Заработать Деньги' и нажимаем на неё».
Android // Reto Meier
Как вы знаете, доклады на GDD2009 были двух видов: «знакомимся с технологией» и «Для тех, кто уже пользуется». И я пошел «знакомиться» с этой технологией.
Сказать, что был аншлаг — это не сказать ничего. Зал был переполнен и многие (в том числе и я) слушали доклад стоя.
Если кратко, то:
- Для написания приложений на Android используется Java синтаксис
- В него включено большинство стандартных Java библиотек
- Без проблем можно запускать несколько экземпляров приложений
- Быстрый, действенный и разработанный для мобильных устройств
- Это НЕ J2ME виртуальная машина
- Нет «песочницы» для приложений от сторонних разработчиков — все ПО работает в системе одинаково.
Были так же показаны несколько примеров кода. Например, как организовывать взаимодействие между приложениями, чтобы не нужно было писать свою Google Maps, а можно было воспользоваться другим приложением, установленным в системе. Ещё были примеры кода взаимодействия с сенсорами (определение координат, акселерометры и т. п.).
Потом был второй докладчик (не из компании Google), чьё имя и фамилию сфоткать я не успел. Он рассказывал про опыт использования NDK (Native Development Kit) для написания приложений.
И про официальные методы отладки (официально можно отлаживать приложение только при помощи записи сообщений в лог). Парень волновался, но мне его часть доклада тоже понравилась — JNI штука полезная (иногда всё-таки приходится писать нативный код для быстродействия). В конце один слушатель из зала рассказал про вариант отладки при помощи strace и gdb.
Google Wave API // Вадим Герасимов
Один из немногих докладов, который был на русском.
Вадим рассказывал про устройство «волны», как предполагается реализовывать взаимодействие серверов (так как не все компании захотят хранить данные на серверах Гугл). Конечно же, были рассмотрены разные варианты «дополнений» к волнам (гаджеты, роботы, установщики). Был показан и консольный клиент:
Думаю, админам эта штука понравится :).
Несколько слов о будущем волны:
- Расширения
- Интернационализация
- Магазин расширений
- Роботы
- Режимы просмотра/редактировнаия
- Роботы вне App Engine
- Гаджеты
- UI библиотека
- Поддержка Caja (чтобы избавиться от iframe в который сейчас встраиваются гаджеты, если мне не изменяет память)
- In-line гаджеты (сейчас поддерживаются только блочные)
- Внедрение
- Анонимный доступ и доступ только для чтения
- Больше конфигурационных возможностей
- Федерация
- Открытие кода
- Расширенный пример сервера
Архитектура Google Web Toolkit: полезные советы по написанию вашего приложения на GWT // Fred Sauer
Что, испугались? Я тоже сначала испугался, что будет часовой доклад про эту социальную сеть. Докладывался Денис Пархоменко, учавствующий в разрабатке новой системы обмена сообщениями для этой сети. Он рассказал, с какими они сталкивались проблемами и как эти проблемы разрешались.
Большая часть была про «динамическую прорисовку данных». Это когда для участков истории сообщений, не отображаемых на странице используются пустые div-ы с фиксированной высотой, заполняемые DOM элементами динамически по мере прокрутки скролл-бара. Два момента:
- высоту мы задаем для того, чтобы у нас был нормальный скролл-бар
- в каждый момент времени у нас нормально «отрисованы» 3 экрана: тот, который отображается пользователю, на страницу выше и на страницу ниже
Штука известная и реализованная во многих JavaScript библиотеках, но если кто с ней не знаком — милости просим.
Также Денис сказал несколько слов о том, как избежать лишних запросов к серверу, что очень актуально в тех местах, где интернет недостаточно быстрый — для этого данные сразу встраивают в страницу, а не делают AJAX запрос сразу же после загрузки страницы.
После него выступал Фред.
Хочется сделать небольшое лирическое отступление об этом докладе. В первый раз этот доклад я увидел в исполнении Ray Ryan на видео с конференции Google I/O 2009. Если вы пишете (или хотите писать) на GWT, то рекомендую посмотреть. К сожалению статей на эту тему не очень много, а библиотеки для MVP (Model-View-Presenter) еще не имеют документации в достаточном количестве. Вообщем, упускать такой шанс было нельзя.
Пересказывать полностью не буду (тем более, что видео доступно уже сейчас). Основные моменты:
- Используйте EventBus, чтобы избежать «спагетти-кода»
- Используйте паттерн MVP, чтобы можно было писать обычные JUnit тесты, запускаемые в виртуальной машине Java, а не в JavaScript движке браузера (за счет этого можно очень здорово повысить скорость прогона тестов)
- Dependency Injection очень здорово облегчает жизнь, так что используйте Google Guice на стороне сервера и Ginjector на стороне GWT клиента (можете заменить названия библиотек на другие — тут главное DI)
- Окно браузера должно олицетворять «сессию» работы с вашим приложением. Сервер не должен хранить никакого состояния (stateless), разве что кеширование некоторых данных. Плюс за счет этого сервера можно будет перезапускать незаметным для пользователя образом (при наличии кластера).
- С самого начала используйте возможности GWT History и реализовывайте поддержку истории работы с вашей программой
- Если пользователь нажимает на клавиши «Назад» или «Обновить», это не должно быть катастрофой
- …и несколько других советов.
Вообщем, очень познавательный доклад. Уже на закрытии, потягивая пиво (или что там было на столах), Фред показывал возможности фреймворка GWT 2.0 (релиз которого, возможно будет даже до 2010 года). Наконец-то есть кроссплатформенность, а то я со своей 64-битной системой не мог использовать HostedDevelopment Mode (со второй версии режим отладки был переименован). Показаны были как возможности отладки, так и возможности модификации выполняемого кода «на лету» (при изменении тела метода он перевыполняется) — необъятные возможности для любителей дебага.
Кроме этого, Фредом разработаны такие библиотеки, как — gwt-dnd, gwt-voices и gwt-log. Если вы про них раньше не слышали, то тоже советую взглянуть.
Закрытие
На закрытие народ разошелся по диванам, сиденьям и т. п. и болтал на разные темы.
Хочется выразить благодарность компании Google за организацию и проведение этой конференции.
Любые правки этой статьи будут перезаписаны при следующем сеансе репликации. Если у вас есть серьезное замечание по тексту статьи, запишите его в раздел «discussion».
Репликация: База Знаний «Заказных Информ Систем» → «GDD2009 (Отчет Клинчаева Олега)»