Проходило данное мероприятие 28-29 мая, и, так как мне и Денису Тагаеву посчастливилось туда попасть, пишу краткий отчет для всех интересующихся.
Вначале для тех, кто не знает, что такое DevCon. Конференцию ежегодно проводит Microsoft для привлечения разработчиков к работе на их платформе. Удовольствие это не бесплатное и не дешевое, но в принципе того стоит, проводится в загородном формате.
На конференции такого масштаба я был впервые. И там было круто! Даже пасмурная погода и иногда небольшой дождь не испортили впечатление. В общем, всем рекомендую, да и сам бы не отказался съездить еще раз.
Вначале для тех, кто не знает, что такое DevCon. Конференцию ежегодно проводит Microsoft для привлечения разработчиков к работе на их платформе. Удовольствие это не бесплатное и не дешевое, но в принципе того стоит, проводится в загородном формате.
На конференции такого масштаба я был впервые. И там было круто! Даже пасмурная погода и иногда небольшой дождь не испортили впечатление. В общем, всем рекомендую, да и сам бы не отказался съездить еще раз.
Место
Называется оно природный курорт «Яхонты» и расположено в деревне «Жилино», что в Московской области около города Ногинск. Два часа езды на автобусе от станции метро «Партизанская». Масштаб курорта впечатлил: много больших домов отельного типа для размещения большого количества человек. На конференции было более 900 участников и их разместили всего в 2 домах. Место клевое: красивое озеро, ресторан, большая концертная площадка, дом для конференций с одним огромным залом и несколькими залами среднего размера, у озера пляж (но погода не позволяла), детская площадка. Территория оформлена в традиционном русском стиле, в дереве. Сервис как и на любом курорте: гостиничный номер, ресепшн, горничные, шведский стол, официанты и т.д. Позабавили служащие, ездящие по территории на трехколесном велосипеде с подносом яблок на голове.
Организация
У нас был очень плотный график, так как конференция шла всего полтора дня, и было заявлено много докладов. Сразу же по приезду нам дали кучу заданий: нужно было зарегистрироваться, получить ключ от номера, рюкзак, отметить командировочные, успеть позавтракать, заполнить анкету, изучить правила фотоконкурса и что-то еще. Нам пришлось поторопиться, чтобы успеть к открытию в 11 часов. Спасибо организаторам, нас разместили с Денисом вместе, как мы и просили. Между домами в палатке был организован «Гостевой дом», где всех зарегистрировали, там же можно было попробовать Xbox One и Oculus Rift - 3D устройство, которое одевается, как шлем, на голову и выводит 3D модель. На докладе показывали пример модели, написанной на чистом JavaScript, двигаться внутри такой модели можно было с помощью устройства или из браузера, который синхронизировался с устройством. Также в гостевом доме был 3D принтер, и неожиданно KIA Quaris, бортовой комп которой, взаимодействовал с бекэндом, находящимся в облаке. В перерывах между докладами там шла онлайн-трансляция. Слева от гостевого дома находился дом для конференций, а справа по длинной дорожке ресторан. В ресторане шведский стол.Между докладами был перерыв в 20 минут, за который можно было выпить кофе и перекусить. В первый день было 6 докладов, во второй – 7, полтора часа было отведено на обед, ужин и завтрак. Доклады были в том числе и на английском, для них под залог ценного документа выдавали наушники с синхронным переводом. После каждого доклада можно было задавать вопросы или лично пообщаться с докладчиком, но в этом случае рискуешь опоздать на следующий. В гостевом доме и доме для конференций был бесплатный вай-вай, в столовой не было, а в гостинице был от «Яхонтов» за деньги, что немного огорчило.Про доклады
Началось все с пленарного доклада на 2 часа, где веселый американец итальянского происхождения при помощи коллег из известной корпорации рассказывал про светлое будущее Microsoft, и как их ПО скоро окажется на любом устройстве (напоминает исконную стратегию Java, что очень забавно). Далее с перерывом на обед и ужин шли доклады продолжительностью по часу. А вот вечером наш ждал приятный сюрприз: пивная вечеринка и выступление группы УмаТурман. Почему-то я никак не ожидал, что на пивной вечеринке будет клинское пиво с сухариками хрустим. А вот концерт очень понравился, спели все хиты, была домашняя атмосфера, желающие, как следует, отрывались, а в конце ребята даже спели на бис песню из «Ночного дозора». После выступления неожиданно был пионерский костер с песнями под гитару. А для тех, кто не любит романтическую атмосферу, проходила «Ночь кодирования» и «Машинное обучение на F# за полтора часа».Утром, едва проснувшись, уже в 7:30 отправились на завтрак. И в 9 часов опять понеслись доклады, к счастью, хотя бы первые 2 доклада шли по полчаса. Потом еще 5 докладов с перерывом на обед, закрытие конференции с вручением призов и посадка на автобус.
Про закрытие: вначале показали фотоотчет и нарезку смешных видео со звукорядом из эпизодов конференции, а потом было вручение призов за фотоконкурс и «Ночь кодирования» и в завершение общее фото. В фотоконкурсе было много номинаций и победители получили разные модели телефона Nokia. А вот победителю «Ночи кодирования» подарили планшет, за программу для Windows Phone, которая измеряет скорость раскручивания рукой телефона.
Большинство докладов, конечно, было про облако (Windows Azure) и кроссплатформенную разработку..
Открытие конференции. Пленарный доклад - Джоржио Сардо, Александр Ложечкин, Михаил Черномордиков, Microsoft
Начал доклад Михаил Черномордиков, он с энтузиазмом рассказывал про DevCon, говорил о его массовости, хорошей организации, курорте "Яхонты" и т.д.Далее слово взял улыбающийся итальянец небольшого росточка, который в течение почти двух часов, периодически приглашая коллег показать какие-то детали, рассказывал, как клёво писать на платформах Microsoft, как майкрософт делает жизнь людей лучше, как клево развивается их облако (Windows Azure), как майкрософт развивает кроссплатформенность и много чего еще клевого, что есть у майкрософт. Выступление, как и принято, у американцев проходило в жанре Standup, то бишь с шутками и раздеванием до майки со сборной России по футболу. Основной посыл этой конференции сводился к тому, что Microsoft вкладывается и в устройства (кроссплатформенность), и в сервисы (в облаке), и в разработчиков (клевые инструменты, в основном, конечно, это Visual Studio, куда они пытаются запихнуть всё). Доклад очень понравился, удивительно, как у него получалось плавно переходить от одного к другому и рассказать вообще про все технологии Microsoft меньше, чем за 2 часа. Правда не обошлось без накладок, студия повисла раза 3 у разных людей, это нормально :)
Интересные тезисы:
- Единая среда разработки для всех устройств.
- Обновление для Windows Phone и Windows.
Нативная разработка игр (с++): для XBox One, Windows 8.1 и Windows Phone. Unity – для всех платформ:
- c#/Xaml, с++/dx, js/html/css.
- Бесплатный компилятор .net – Roslyn.
- Xib/ios, axml/android, xaml/native ui.
- Xamarin c#.
- Универсальные приложения на c# для WinRT, Win Phone, Android (Xamarin).
Упаковка веб-приложений в магазин Windows (сайт zoopla):
- Упаковка сайта в пакет. Создание среды для андроид (cordova).
- Улучшение кроссплатформенности.
Облако (Azure):
- Автоматический выбор элемента страницы в браузере и редактирование в браузере (Browser Link).
- WebJobs – фоновые приложения сайта, взаимодействуют с сайтом через атрибуты.
- Добавление элементов данных для своего портала в windows azure.
Мобильные сервисы:
- AD онлайн.
- Мобильные приложения с бекендом в облаке.
- Удаленная база данных в azure. Синхронизация с локальной.
Облако (Azure) продолжение:
- Автодокументация портала на azure.
- Проверка API, безопасность трафика, статистика нагрузки и активности пользователей.
- Поддержка многих платформ в azure.
Будущее:
- Тенденция расширения кроссплатформенности на Xbox.
Новейшие сервисы Windows Azure, которые помогут сделать ваши приложения быстрее, надежнее и безопаснее. Владимир Юнев, Microsoft
По моему мнению, это был самый интересный доклад, самый лучший докладчик и самый обширный и динамичный доклад.- 11 дата центров по все миру.
Web sites:
- Публикация через портал или расширение для студии.
- Фоновые задачи: WebJobs.
- Удаленная отладка через портал.
- Поддержка Java.
- Полноценный бэкап сайта, возможность пинговать сайт через скрипты или портал.
- Поддержка ssl (одного бесплатно), управление трафиком (менеджер), переключает на разные дата центры в зависимости от месторасположения и от нагрузки.
- API Management через прокси портала azure: безопасность, трансформации в разные форматы, много функций портала из коробки (500$ в месяц).
- Redis (база в памяти, кеш для любых данных): доступен как сервис, есть библиотеки для всех платформ, с репликацией (есть пакет nuget).
- Kudu – панель администрирования сайта (Open Source), удаленный PowerShell, можно снимать дамп памяти, можно доставить расширения (phpmyadmin, azure local resource explorer), управление WebJobes.
Мобильная разработка (мобильные сервисы):
- Единый бекэнд для всех платформ (много разных sdk), можно писать и на .net (rest сервис asp .net) (раньше только через nodejs)
- Разграничение доступа через удаленный AD.
- Доступ к разным БД.
- Синхронизация данных (если нет доступа используется независимая бд, оффлайн БД SQLite, разрешение конфликтов).
- Переход на пуш уведомления вместо смс (пуш намного дешевле), меньше спама.
Корпоративная разработка:
- RemoteApp размещение старых приложений в azure, потом может заработать на любом устройстве (не только с windows) (используя AD), пока бесплатное !!!
- Azure Files - SMB 2.1 в облаке !!!, хранит 3 копии – до 100 ТБ.
- Azure AD – единая точка ко всем ресурсам, интеграция собственного AD с AD в облаке, ко многим сервисам в интернете.
- Мультифакторная аутентификация (смс, коды безопасности), Управление правами, Самообслуживание для пользователей (например сброс пароля).
- AD – бесплатно.
Инфраструктура:
- Виртуальные машины (простое добавление агентов, виртуальных машин), антивирусы.
- 8-16 ядер, 56-112 ГБ РАМ, быстрая шина обмена данных между виртуальными машинами, более быстрые процессоры.
- Резервирование адресов (белых, прямых), внутренняя балансировка ресурсов (внутри инфраструктуры) (раньше только внешняя).
- Подключение нескольких локальных сетей к единой виртуальной, vpn между дата центрами
- 14$ минимальная цена за инфраструктуру.
- SQL Database: сохранение до 30 бэкапов (платно), георепликация (из другого региона).
- 20 мб – бесплатно!
Инструментарий:
- Все через студию, нужно поставить azure sdk, удаленная отладка, подключение к приложению любого бекэнда, доступ к коду бекэнду, тестирование пуш нотификаций.
- Visual Studio Online: хорошая поддержка веб.
- Цель – получать деньги за услугу, за использование облака.
Создание мобильных приложений для веб-разработчиков. Джефф Буртофт, Microsoft
- Веб-приложения в магазине – идея не прижилась и мало приложений.
- Firefox OS Emulator позволяет запускать веб-приложения как на устройстве.
- Можно закрепить веб-приложение в устройстве.
- Можно представить обычное приложение, размещенное на веб-сервере.
- Поиск браузерных приложений зависит от поисковика. Магазины приложений позволяют быстрее найти приложение.
- Трансформацию веб приложения в мобильное делает компонент WebView (но приложение расположено на веб-сервере).
- Это приложение будет иметь свой кэш и куки.
- Можно написать код для закрепления на начальном экране.
- Есть готовые шаблоны js (находящиеся на специальных серверах, но могут храниться и в кеше, то есть можно работать оффлайн) для: кнопки назад, меню, сортировка, вторичное закрепление, то есть все функции, как и у приложения из магазина.
- Есть манифест веб-приложения (json), содержит метаданные для магазина. Например, ориентация экрана, можно описывать конкретные функции для конкретных платформ.
- Цель – написать приложение раз, а работало чтобы везде.
- Код внутри WebView не имеет доступа к WinAPI.
- Ajax также будет работать, потому что все кэшируется (http запросы и все остальное), то есть все будет работать как будто онлайн.
Управление качеством в промышленной разработке программных продуктов. Владимир Гусаров, Dell
Ожидал большего от доклада, но в результате доклад оказался о том, что и так есть в большинстве фирм, в том числе у нас. Докладчик периодически ссылался на TFS, и говорил, что там есть все, и если вы его поставите, то будет вам счастье (то есть качество).- Application LifeCycle Management (ALM) – это все кроме, непосредственной разработки продукта.
- Что такое качество: совокупность многих свойств (красота, удобство, надежность, выполнение своих функций).
- Этапы ALM: сбор требований, разработка и документирование, тестирование, фидбек от заказчика, доработка, выпуск, техподдержка.
Сбор требований:
- Прототипирование, макетирование дизайна, критерии готовности
Разработка и документирование:
- Модульное тестирование, организация кода (система контроля версий), автоматическая сборка (кода, документации, запуска тестов, покрытие. Собираться должно все !!!), инспекция (статистический анализ кода).
Тестирование:
- Тест-планы (кейсы), фиксация прохождение тестов (ручных и автоматических), автоматическое тестирование, нагрузочное тестирование
Обратная связь:
- Демо результатов спринта, клиент сбора обратной связи (есть в TFS, Feedback Client) (простота использования, запись видео и голоса, создание мгновенных снимков), подключение на разных этапах. Обратная связь - чем раньше, тем лучше (пусть даже небольшой функционал).
Выпуск:
- Release Management (TFS) – автоматизация управления выпуском, полное управление стеком стадий продукта.
- Утверждение выпуска (автоматическое через Release Management).
- Тренинги: техподдержки, отдела продаж.
- Продукты умирают, потому их не продают !!! (с)
Тех. поддержка:
- Удовлетворенность потребителя (тесная связь с разработкой), метрики инцидентов (кейсов), стоимость инцидента (кейсов), обзор продукта службой поддержки.
Lab Management:
- Тоже входит в TFS :) – создание тестовых окружений.
Метрики качества:
Разработка, подготовка к выпуску:- Тенденции дефектов
- Тенденции сборки
- Изменения исходного кода
- Реактивация дефектов
- Время до решения
- Время в разработке
- Время реакции
Введение в UnityEngine. Владимир Колесников, Microsoft
Решил немного разнообразить и сходить на доклад про написание графических приложений, в основном игр, на .net, с использованием хорошего движка.Доклад был интересный, но докладчик не очень понравился, все как-то он старался обговаривать кратко сложные моменты и уходил от хитрых вопросов, ссылаясь на недостаток времени.
- Многоплатформенный графический движок.
- Фреймворк для работы с аудио, сетью, вводом/выводом.
- Компиляторы и среда выполнения (плагины), базирующиеся на .net (mono).
- C#, javascript, boo.
- Визуальный редактор (плагины).
- Asset Store (магазин скриптов, текстур, расширений).
- Многоплатформенность: оптимизация быстродействия, возможность использования специального API (плагины под конкретную платформу, c#, c++)
- Зрелость и популярность: 53% игровых разработок
- Подтвержденные возможности разработки высококачественных игр
- Расширение через плагины
- Набор готовых текстур для создания простых игр (земля, небо, «человечек»).
- Переход в MonoDevelop для написание обработчиков.
- Перевод из c# на с++, затем в js, в итоге все работает в webgl.
Intel Parallel Studio XE. Новая. Производительность. Твоя. Игорь Воробцов, Станислав Павлов, Intel
Доклад оказался не совсем о том, что я ожидал. Но инструмент этот в целом интересный.Intel Parallel Studio XE - это набор инструментов от Intel для написания приложений, максимально использующих параллельность. К сожалению, писать можно только на c, c++ (или неожиданно! на фортране), но говорят, что инструменты могут быть встроены в visual studio.
- Высокопроизводительные вычисления.
- Гонка частот процессоров подошла к концу, сейчас идет гонка за количество ядер – это вызов программисту, софт должен масштабироваться на все ядра.
- Как максимально использовать железо – новый компилятор, добиться базовой версии, распараллелить, добиться стабильной параллельной версии, найти узкие места сдерживающие производительность, оптимизировать микроархитектуру.
- Для этого помогает пакет Intel Parallel Studio XE, состоящий из 4 частей: средство проектирования параллельных приложений, компилятор и библиотеки, поиск ошибок, профилирование производительности (интеграция в студию)
Создание XAML-приложения для Windows Phone, планшетов и настрольных компьютеров с помощью проектов универсальных приложений. Ларри Либерман, Microsoft
Доклад понравился, докладчик не совсем: очень сильно торопился, старался преподнести много материала, но иногда наоборот повторялся.- Один solution с общей частью и отдельными проектами под платформы.
- В общей части может почти все что угодно, включая визуальные компоненты, есть отдельные шаблоны в студии.
- Для добавления новой платформы, есть пункт в контекстном меню проекта. Далее нужно переместить часть кода в общую часть.
- В общем коде нюансы платформ реализуется через директивы условной компиляции.
- Выбор платформы реализуется через выбор стартового приложения нужный платформы в солюшене. Можно реализовать переход по кнопке назад для windows phone.
- Поддержка IntelliSense в условной компиляции, переключение запуска приложений.
- Портабельные библиотеки менее удобные, можно использовать только скомпилированные библиотеки в проекте для конкретной платформы.
- Студия упрощает разработку универсальных приложений.
- Можно переключаться между нужными разрешениями экрана в дизайнере студии.
- Отдельные свойства в дизайнере для определенной платформы (например, цвет акцента).
- Есть нюансы, которые отличаются, например, открытие файлов или работа с устройствами, их надо знать.
Колоночные индексы в SQL Server 2014. Дмитрий Пилюгин, TNS Gallup Adfact
Доклад клевый и сложный, докладчик понравился. Народу пришло много, а я задержался на 5 минут, пришлось сидеть на полу и писать в блокнотике.Сразу скажу, штука эта для запросов, поднимающих много колонок или выполняющих агрегацию из кучи исходных строк. В противном случае может быть даже вредна. Появилась в MS SQL 2012, но по-человечески ее допили в 2014, о чем собственно и шла речь в докладе.
- Это такой же индекс, может некластеризованный с указанием столбцов, а может быть кластеризованный, тогда он будет один на таблицу, столбцы указывать не надо.
- Каждая колонка такого индекса располагается на отдельной странице в файле данных.
- Суть алгоритма работы такого индекса – разбиение таблицы на группу строк, далее столбцов, и затем сжатие и сохранение в формате LOB в специальном месте.
- Основные преимущества: поднимаются только нужные столбцы, хорошо сжимаются, исключение сегментов, пакетный режим обработки (строки обрабатываются пачками, не по одной).
- Колоночный индекс – необновляемый, совместим с обычным, в 2014 – есть обновляемый, но не совместимый с другими (можно создать только кластеризованный один на таблицу).
- Можно собирать статистику по колоночному индексу.
- Сканирование оптимальное по производительности (с использованием словаря).
- Динамическое определение степени параллелизма (DUP) (для нескольких row group).
- Механизм закладок для колоночных индексов (используется при изменении колоночного индекса) использует номер row group и номер внутри группы.
- При использовании кластерного колоночного индекса, нужно удалить все другие индексы, а также есть ряд других ограничений.
- При добавлении записей в кластерный колоночный индекс данные не сразу преобразуются в колоночный формат (сжатая закрытая row group).
Централизованное управление облачным приложением с помощью Azure Resource Manager. Хакан Эскиси, Microsoft
Думал, что доклад про дополнительный инструмент для разработчиков под Windows Azure, а оказалось что это скорее инструмент для администраторов таких приложений. Инструмент этот оказался для меня каким-то совсем мутным, я понял доклад где-то на 40%. Ресурсная группа: имеющие один жизненный цикл.- Унифицированный интерфейс доступа ко всем ресурсам (API): Azure PowerShell, REST API. Размещение ресурсов в разных регионах.
- Файлы шаблонов ресурсов в json.
- В файле конфигурации можно настраивать зависимости между ресурсами.
- Много рассказал про развитие REST API (OData) и json (Scheme).
- Azure Resource Manager состоит из 3 частей: контейнер жизненного цикла, декларативная модель развертывания и конфигурации (json), соответствующий уровень управления.
- Жизненнный цикл: разворачивание, обновление, удаление, статус.
- Декларативность в текстовом виде
- Повторное использование
- Унифицированное API
- Работает везде
Практика кросс-платформенной разработки на C# и XAML с ипользованием Appercode. Дмитрий Адонин, Digital Sparta
Доклад очень понравился, докладчик был молодой, но рассказывал четко и грамотно, хорошо построил доклад. Технически один из самых интересных докладов. Наша разработка – можно гордиться!- Xamarin – 60% общего кода.
- Базируется на моно (написана разработчиком моно), предоставляет обертки над системными вызовами.
- Общий код из коробки: ввод, вывод, сеть, потоки, SQLite, поддержка Portable Class Library.
- Xamarin+MVVM – до 70% общего кода.
- Позволяет переиспользовать вьюмодель, вью пишутся под каждую платформу.
- MVVM Cross (есть в nuget), MVVM Light (частично) – фреймворки для MVVM.
- В андроид во вью (axml) нужно добавить только специальный биндинг (умеет mvvm cross).
- В ios тоже, но в code behind.
- Процент общего кода для ios – минимальный (около 50%).
- Xamarin 3.0: поддержка верстки для iosв студии.
- Xamarin.Forms – кроссплатформенный ui: базируется на идеях ui android, ios. Поддерживает xaml (много похоже на обычный xaml).
- Genymotion – быстрый эмулятор, быстрее нативного, для некоммерческой разработки – бесплатный.
- Большая часть простых контролов может быть переиспользована.
- ApperCode (расширение для студии) – 146% общего кода J.
- ApeerCode: ui framework, xaml, bindings, стили, ui модель как в Silverlight. Мелкие фишки: android – скролл по 2 направлениям, ios – работа с клавиатурой. Контролы предстоставляют обертки, можно подсунуть любой uielement. Апперкод не взаимодействует с mvvm фреймворками, имеет свои биндинги.
- Нужна лицензия xamarin, ApperCode – бесплатный и будет бесплатный, получили грант от майкрософт. Готовы к сотрудничеству, нужны примеры проектов.
Практический опыт создания расширений Microsoft Visual Studio. Николай Леонов, Microsoft
Доклад понравился, все четко разложено по этапам, каждый этап сделан отдельной заливкой в гите.- Расширение должно не зависеть от бизнес-логики.
- Возможности расширения: интеграция в студию, подписка на события студии, работы со свойствами узла обозревателя решений, создание страницы параметров, интеграция с панелью вывода и окном Списка ошибок, запуск инструментов.
- Что нужно для разработки расширения: поставить сдк студии, выбрать тип проекта для создания расширения, задать тип проекта – пакет.
- После запуска проекта расширения запускается экспресс версия студии.
- Можно связывать команды через атрибуты пакета. Можно зарегистрировать свою команду в нужном месте меню, можно привязать хоткей. Можно создать динамическую команду (через обработку события студии), можно команду привязать к нескольким местам.
- Для динамических команд нужно задать событие загрузки пакета расширения (через атрибут). Можно создать динамическую группу команд.
- Можно создать кастомную панель свойств (нужно наследоваться от стандартного класса, нужно переписать контекст данных нужного класса).
- Подписка на события студии (объект DTE), нужно хранить ссылку на класс события студии.
- Для создания страницы настроек (в свойствах студии будет новая строка) нужно наследоваться от стандартного класса и задать нужные атрибуты, используются публичные свойства с заданным чтением и записью, нужно на них навешивать атрибуты.
- Можно выводить сообщение в отдельную группу в аутпут и в ошибки студии.
- Интеграция с Powershell (создание своего хоста Powershell): передача параметров в скрипт, перехват вывода, обработки в скрипте переменных студии.
Заключение
График очень плотный, но нужно попытаться успеть все. Я вот не успел/забыл: поставить оценку докладам (Денис сделал – молодец, получил еще приз), получить сертификат (жалею, хотел получить), участвовать в фотоконкурсе (я не хотел фотографировать на телефон, а фотоаппарат брать не стал, о чем жалею), погулять по всей территории (немного, конечно, успел, но хотел бы подольше).Народу была тьма (более 900 человек), куда не сунься - везде люди/небольшие очереди, особенно в ресторане.
Но в целом все, конечно, очень понравилось: доклады интересные, концерт клевый, организация хорошая, еда вкусная, разнообразная. Всем рекомендую!
Вот вкратце (или уже нет) отчет о конференции, если кто хочет более подробно что-то узнать, обращайтесь, с удовольствием отвечу.