Ни слова о луке

сэр шаман рассказывает о чём может

GWT + mvp4g: видео доклада + отзыв о ADDConf'11 + пример с портлетами

Вступление

mvp4g logo

Несомненно, сейчас уже многие знают, что такое GWT. Многие знают, что за концепция — MVP. При этом, ещё не многие слышали о фреймворке mvp4g (облегчённая реализация MVP для GWT) — а я бы хотел, чтобы на него обратили внимание как можно больше GWT-программистов: фреймворк значительно упрощает написание MVP-кода и явно повышает его наглядность. По этой причине я делал о нём доклад на конференции ADDConf, видео которого представляю ниже.

В статью я добавил, кроме прочего, отзыв о конфренции и докладах которые я видел, а также ссылки/описание работающего примера создания системы портлетов/порталов на GWT+mvp4g, я его упоминал в докладе.

Видео

Собственно, вот видео доклада.

Часть 1. GWT, вступление

GWT + mvp4g Session from ADDConf 2011 (part 1/3, Ru) from Ulric Wilfred on Vimeo.

Часть 2. mvp4g и подробнее про GWT

GWT + mvp4g Session from ADDConf 2011 (part 2/3, Ru) from Ulric Wilfred on Vimeo.

Часть 3. Вопросы и ответы

GWT + mvp4g Session from ADDConf 2011 (part 3/3, Ru) from Ulric Wilfred on Vimeo.

P.S.

Если что-то невнятно или непонятно, пожалуйста пишите мне лично (касательно моих неразборчивых слов или объяснений) или (касательно вопросов по GWT и mvp4g) в нашу русскую google-группу о GWT.

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

Огромное спасибо Стасу Фомину за очень чрезвычайно сложный композитинг видео: во время доклада не записался скринкаст и ему пришлось вручную синхронизировать кадры (300 с лишним штук!) с моими словами — наверное, теперь он вынужденно знает, кроме всего прочего, очень много и о GWT. Причём он также подготовил мне видео и с английскими слайдами. На это ушло более трёх недель его труда и труда его компьютера.

Отзыв

Я посещал до этого не так много конференций (штук пять) и всё ещё не был на Google Developer Days, но я думаю организационно всё было близко именно к GDD :).

Изначально, когда мне предложили участвовать, хоть из меня выступатель был тогда вообще без какого-либо опыта, я посмотрел на сайт конференции и он мне скептически совсем не понравился — он на многое рассчитан (как я позже узнал), но дизайн почти что полностью ужасен. Логотип конференции в нём тоже не смотрится. Но это оказалась практически единственная претензия, Миша Кашкин настоятельно посоветовал мне участвовать, предложение и условия были интересными, мне дали аж два доклада, были заманчивые другие доклады, пару докладов читали мои знакомые и в результате я нисколько не расстроен, только обрадован и мне стыдно за мой скептизизм. А логотип мне, кстати, потом полюбился.

Ну и я лох, доклад по fluxus/Processing вышел почти что никаким, я почти не уделил ему внимания при подготовке в пользу текущего доклада и в результате не смог запустить звук и рассказать детально хотя бы только про fluxus (одна из проблем со звуком была в том, что я пытался настроить одновременно и fluxus и запись скринкаста со звуком, а они перемешались в требованиях к alsa / pulseaudio / sox…). И да, у меня Linux.

Организаторы

Андрей Майоров и Стас Фомин — организаторы конференции — отличные и отзывчивые собеседники по почте и в жизни, в подготовке доклада меня никто сильно не ограничивал и не подгонял, только помогал, в результате я за пол-месяца (или месяц?) наваял презентацию на 300 слайдов, но рассказал её всё равно довольно быстро :). На конференции они всем помогали и участвовали, организовывали вай-фай потерявшимся, контролировали видео-запись, поддерживали при необходимости докладчиков и многое-многое прочее.

Залы

Три больших зала, один (центральный) очень крупный с большой сценой, второй помельче (но с двумя экранами по разные стороны комнаты!), третий — в виде широкого коридора. Я за весь первый день (на втором я не смог быть) не видел ни одного “невольно непосаженного” человека. В первом и третьем зале все стулья (насколько я помню, если вру — по крайней мере 60%) были с подставками под ноутбук. Удобные настолько, что хотелось взять себе такой домой.

Со всех мест было слышно и видно. Технических неполадок не помню. Неудобств не помню, во втором зале точно были розетки (не на всех, но можно было достать), в первом и третьем — не знаю. Вай-фай у меня не терялся, всё было стабильно.

Организация

Расписание на самой конференции (висело только у главного зала) было очень симпатично оформлено, цветное и при этом понятное. Сама идея разделения на три зала, распределение по ним докладов у меня не вызвали нареканий, по-моему всё было честно.

Всегда были доступны вода и кофе (и для слушающих, в холле, и для докладчиков, на столах), обед насколько я слышал отзывы, был тоже хорош.

В холле стояли стенды JetBrains, e-Legion и других хороших фирм, где они давали комментарии к своим докладам и искали к себе хороших умных программистов.

Также в холле, около кофе-машины, было два монитора с вещанием из твиттера (небольших, правда).

При входе выдавали разноцветные симпатичные бейджи, пакетики с фирменной ручкой, расписанием и блокнотом, в котором на каждом развороте на половине одной стороны было описание доклада, а на остальной части — место для записей (для крупных докладов по-моему было больше страниц). В конце блокнота были цветные фотографии организаторов, обложка твёрдая и цветная — полиграфия безупречна :). А, ещё в пакетике была железная визитница, очень удобная, с предподготовленными (!) визитками, тоже весьма симпатичными.

Переключатель слайдов, кстати, работал вполне стабильно и на убунте.

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

Стас Фомин собрал, оформил и обработал (и продолжает это делать) кучу видео с докладов (немногие из видео с русских конференций, на которых слайды крупно отдельно, докладчик отдельно) и отдаёт их докладчикам безвозмездно.

Доклады

Ввиду того, что я готовился к докладам/докладывал и кроме этого не присутствовал второй день, я успел посмотреть немногое. Некоторые доклады я потом посмотрел/пересмотрел отдельно в записи, но про них рассказывать, видимо, не имею права. Посмотрите список видео Стаса Фомина, там очень много интересных вещей.

Также прошу нещадно критиковать мой доклад, чтобы я мог учитывать недостатки на будущее. Знаю, что сам мямлил и торопился. Может буду поначалу отмазываться, но в любом случае запомню и учту все ваши замечания :).

Максим Мазин и Language Oriented Programming

Видео

Может чуточку сумбурно, но сама тема настолько интересная, что после доклада все побежали смотреть ещё реальных примеров на ноутбуке в холле и смотрели их там около получаса (а кто-то остался у стенда JetBrains на весь день). LOP — Language Oriented Programming. MPS — система для написания собственных языков программирования от JetBrains. Её примерным конкурентом, получается, выступает XText от Eclipse. Как я понимаю, именно эта cистема использовалась и для создания нового языка (который, конечно, все обсудили) Kotlin. Это очень интересный доклад, советую не вчитываться в рецензии, а посмотреть его на видео. Кстати, в нём также было и про то, как “думает” и подбирает варианты ваша IDE при наборе вами программного кода.

Технически всё хорошо, поскольку доклад описывает настолько гиковую вещь, что для неё даже не нужно шуток и спецэффектов.

Алексей Какунин и LifeRay

Видео

Доклад о написании веб-приложений на LifeRay, чем это удобно и почему, а также как Liferay применяется в EmForge. Алексей был моим первым начальником и я ему многим обязан в своём опыте, поэтому не буду сильно описывать: могу быть предвзят :). Вкратце: живо и помянули Microsoft :).

Time Management by Михаил Гедзберг

Видео

Важные составляющие работы в команде, как её организовать, “вышколить” до блеска и правильно работать в дальнейшем, от проджект-менеджера из Luxoft. В описании по ссылке есть почти полные конспекты доклада. GTD, Scrum, Agile — здесь про это всё. Немного занудно, некоторые вещи банальны, некоторые были в новь. В принципе, в докладе всё было описано верно и правильно: что засевшим в одной задаче программистам нужно давать новую; слушать на стэнд-апах не только тех, кто много говорит, а даже затыкать их; что нужно следить за поведением и состоянием программиста; как заставить говорить тех, кто мямлит; как правильно составлять ТЗ; как звонить и сообщать об опоздании; что нужно отвечать на письма. Но уж очень монотонно расказывалось + слайды были почему-то на английском.

Графическая визуализация логов и Андрей Кирпичёв

Видео

Интересная, но очень по-математически изложенная тема о собственных разработках автора на Хаскеле timeplot и splot, звучала и смотрелась просто как неплохая лекция в институте. Тема очень интересная — про то, как через real-time парсинг текстовых логов можно делать разнообразнейшие цветные графики и в результате иметь воможность наглядно оценить время выполнения тех или иных задач и нагруженность процессора при их выполнении. Но эти ребята делают журнал про функциональное программирование и за это я готов простить им всё. Доклад был с картинками, всё чрезвычайно наглядно и подробно рассмотрено, наверное был разобран каждый кусок кода и способ использования.

CouchDB by Андрей Орлов

Видео

Этот доклад мне не понравился (единственный из всех) наверное потому, что визуально презентация не была подготовлена вообще никак. Times New Roman и серые таблицы при том, что CouchDB — это относительно свежая и отнюдь не бюрократичная тема: No-SQL это крутое течение, избавляющее нас от многих проблем, но здесь по-моему всё было именно что бюрократично. Проценты, на которые ускорились запросы. Дампы запросов. В качестве примера был приведён пример из опыта автора (ну, они все у нас из опыта) — промышленная АИС с электросчётчиками. Хотя это на практике показывает, что новые веяния применяются не только в молодых стартапах. Соседний доклад про MongoDB был значительно живее, насколько я понял по его видео. Но иногда серверные разработчики делают очень унылые доклады, но при этом являются отъявленными профессионалами, поэтому я говорю только про сам доклад и ни в коем случае не про личные или профессиональные качества автора.

Будущее ECMASCript и Андрей Сошников

Видео

Развитие JavaScript мне очень интересно (хотя оно зависит не только от спецификаций ECMASсript, но и от скорости развития браузерных движков), я очень уважаю этот язык и предан ему. Докладчик хорошо известен для тех, кто интересуется JavaScript. Сам доклад был хорош, только по делу, с большим количеством примеров и сравнений с тем, что было, и в результате ничего непонятного не было вообще. Лучше — смотреть.

Касательно самих нововведений у меня есть личное мнение. В новых стандартах вводят много заимствований из функциональных и динамически типизированных языков, вроде list comprehensions подобных питоновским, лямбд и прочего. Пусть так, хотя для меня это всё же потеря “духа” языка, получается что в сфере развития “старых” языков всё идёт к одному коммунистическому мета-языку. Тот же Гвидо в своё время отказался от внедрения java-подобных интерфейсов в питон, хотя его очень просили, и правильно, я считаю, сделал.

Чтобы “залатать” многие кривые моменты в новом стандарте выбран не очень привычный синтаксис: оператор # для оборачивания участков кода, которые должны сохранить в себе внешние переменные, замыканий; оператор let вместо var (я так понял, что планируется полная замена), специальный синтаксис для того самого this, который должен отнаследоваться от внешнего блока кода и т.п. Но возможно, просто не было выхода.

Тем не менее, недостатки

Потом уже, после приезда с конференции подумал о паре [незначительных] моментов:

  1. Всё-таки, дизайн сайта плох — а это лицо конференции. Функциональность, при этом, у него хорошая (отдельные статьи про авторов и отдельные про их доклады, с комменариями фото и даже слайдами, ссылки в расписании, фейсбуковые лайки). Логотип сначала кажется странным, но потом привыкаешь и он становится довольно милым и приятным глазу (особенно на атрибутике). Но сайт — всё же нет.
    1. Вход для вольных программистов очень дорогой. В феврале-марте это было 5000, в мае — 8000 (подталкивали раньше купить). Возможно это вполне оправдано, чрезвычайно много сделано для организации конференции, но многие (кого отправили не от компании и не смогли читать доклад) не пошли на неё именно из-за цены. С другой стороны, всё видео в свободном доступе, быстро и оперативно, а посетителей было вполне достаточно на все три зала. Тогда единственное, что нужно —агитировать компании, чтобы платили сотрудникам за походы эту на конференцию.
  2. Расписание висело только у главного зала, между докладами там всем приходилось толпиться. Однако менее цветной вариант был ещё у каждого в пакетике.
  3. Из-за того, что крупный зал был очень большой и приятный, в нём многие так и остались и не ходили на доклады в соседних залах. Хотя, может им и правда была интересна только программа первого зала и/или возможно в ней было сконцентрировано больше известных людей, чем в других залах.
  4. Во время первого доклада в первом зале из проектора освещался только лоб Максима Мазина, наверное это недостаток освещения или расположения докладчика.
  5. Нужна такая же простая, как под Windows, программа записи скринкастов под Linux :). Хотя само существование такой программы для конференции, которую кстати написал Стас, уже вызывает уважение.
  6. Нужно (возможно) продумать сидячие места для докладчиков (для livecoding это нужно, и нужны микрофоны в ухо). Однако на докладе Fluxus во втором зале мне дали стул и микрофон в руки и я довольно спокойно с него вещал :).
  7. Футболки, всё же, должны быть [почти] бесплатно, думаю дешевле 400 рублей. Это, всё же, пост-реклама конференции.

Итог отзыва

Всем рекомендую посетить эту конференцию в следующем году, организовано практически идеально, всем боссам и финансистам компаний настоятельно советую выделять программистам на неё бюджет! :)

Пример с портлетами

Фреймворк mvp4g сам по себе помогает писать приложения, в которых либо не происходит значительных изменений во внутренней части страницы, либо вообще сменяется только её центральная часть. Нельзя сказать, что фреймворк заточен на это — в ближайшем будущем эта ситуация может измениться, тем не менее на данный момент это так.

Однако в нашем проекте, в какой-то момент, накопилась критическая масса страниц с нескрываемо схожим расположением виджетов и мы с Виталием Гашок (который и познакомил меня с этим фреймворком) и Сергеем Дыниовским (верстальщиком, который разобрался в хитросплетениях виджетов GWT) решили, что пора эти вещи структурировать и генерализировать. Так родился набор лэйаутов, наречённых именами известных артистов, существующие страницы были распределены по этим лэйаутам и начался рефакторинг (который, конечно же, не только избавил нас от некоторых набивших оскомину костылей, но и добавил десяток новых багов). Кроме того, мы с удовольствием убрали повторяющиеся реализации виджетов, которые приходилось делать из-за их различного поведения на разных страницах. Квинтэссенция этого рефакторинга, полностью отделённая от логики проекта и тех багов, которые он от проекта получил в наследство, собственно, и описана в этой статье.

Где посмотреть?

Исходный код лежит на github: github.com/shamansir/gwt-mvp4g-layouting-demo.

В исполняемом и кликабельном состоянии (что называется in action) пример доступен на GAE: gwt-mvp4g-layouting-demo.appspot.com. Это чисто технический пример, поэтому в нём нет никакого дизайна.

Краткая документация по нему также располагается на github: shamansir.github.com/gwt-mvp4g-layouting-demo

Что ещё?

Добро пожаловать в нашу русскую группу о GWT на Google Groups: google-web-toolkit-ru. Нас там ещё немного, но давно пора собраться и задать жару :).

Наверх