Как должна выглядеть .NET-конференция в 2016-м, когда в .NET-мире происходит тектонический сдвиг? Очевидно, что (ASP).NET Core очень сильно скажется на жизни разработчиков, но для большинства из них это произойдёт лишь спустя ощутимое время. О чём в таком случае рассказывать — масштабных новшествах, которые станут актуальны позже, или более привычных темах, которые важны здесь и сейчас?
Петербургский «Летний фестиваль разработчиков», состоящий из трёх конференций подряд, начался с DotNext 2016. Как там была разрешена возникшая дилемма, и как вообще прошёл DotNext? По снимку команды организаторов видно, что при всей хардкорности мероприятие не обошлось без летнего настроения, а все остальные подробности — под катом.
Сложно ожидать, что самой запоминающейся деталью на открытии конференции станет название задачи волонтёра, но здесь произошло именно так. Программный директор Андрей Дмитриев, говоря о том, что спикеры после своих докладов отправляются в «экспертную зону» (где отвечают на вопросы заинтересовавшихся зрителей), уточнил, что для задачи «отвести спикера после доклада» у волонтёров даже есть специальная роль. И называется она так: «буксировщик докладчика».
Звучит забавно, но в то же время момент показательный: это отвечает на вопрос «зачем ходить на конференции, когда можно и в интернете всё узнать». Возможность задать вопрос в кулуарах всегда была преимуществом личного присутствия, а когда для этого ещё и созданы все условия, с выделенной экспертной зоной и досками для иллюстраций, можно получить от мероприятия ещё больше.
После открытия был keynote от Дмитрия Сошникова (Microsoft) «Сколько жизней у .NET». Начав с ностальгии (на экране появился даже код на COBOL) и дойдя до будущего (вроде локальных функций в C# 7), в процессе он устроил шоу: с помощью Microsoft Band измерял свой пульс («тут резко упал, обычно это говорит о смерти докладчика, но не в этом случае»), а с помощью Microsoft Cognitive Services распознавал собственные эмоции по выражению лица («счастливым у меня лучше получается быть, чем печальным»).
Часть выступления была посвящена «развенчанию мифов о Microsoft». Неудивительно, что евангелист компании отстаивал её правоту в спорных вопросах, но его аргументы понравились залу. Например, оспаривая тезис «Microsoft заставляет разработчиков постоянно переучиваться», он покорил аудиторию фразой «Не Microsoft такой, жизнь такая» (смех смехом, но не поспоришь: переучиваться не приходится только там, где нет прогресса). А затем добил слайдом «Тем временем в параллельной вселенной», на котором были просто перечислены популярные JavaScript-фреймворки: по сравнению с этим постоянно меняющимся зоопарком .NET-мир и впрямь может выглядеть тихой гаванью.
Затем всё разделилось на разные залы, и тут стало ясно, как революционность и повседневность могут сосуществовать в рамках одной конференции: им попросту были отданы разные треки, так что каждый пришедший мог выбрать для себя, что ему важнее.
С главной сцены англоязычные спикеры (Морис де Бейер, Дино Эспозито, Адам Ситник) говорили о том, что для .NET-мира означает переход к (ASP).NET Core. Получился зал для тех, кто хочет уже сегодня быть готовым к вызовам завтрашнего дня.
Третий зал поначалу оккупировали спикеры от JetBrains с серией докладов о своей новой IDE Rider (недавно они уже вкратце рассказывали нам о ней, а тут смогли поведать детальнее). Поскольку проект ещё не дошёл до релиза, получалось тоже про будущее, но более близкое. Благодаря Early Access Program при желании его уже можно использовать, а в числе первых пользователей есть сами JetBrains, использующие Rider для разработки Rider. Это объясняет, почему их продукты так любят: можно ли эффективнее мотивировать разработчика совершенствовать продукт, чем когда он на собственной шкуре ощущает любые недостатки?
А во втором зале в это время были доклады о кодогенерации, оптимизации и динамическом прототипировании — то есть речь шла о том, от чего можно получать практическую пользу здесь и сейчас, не дожидаясь светлого будущего.
Любопытно, насколько по-разному звучали доклады о ASP.NET Core. Морис де Бейер спокойно констатировал факты: .NET в его привычном виде перестал соответствовать запросам времени, так что теперь всё станет модульнее и кроссплатформеннее (неудивительно: когда Azure стал много значить для Microsoft, жёсткая привязка к Windows начала мешать получать клиентов).
А вот Дино Эспозито использовал на всю катушку свою саркастичность, описывая ситуацию «Microsoft сначала устраивает революцию, а уже затем внезапно задумывается, какие проблемы возникнут у лояльных клиентов с legacy code». В его исполнении гипотетический диалог о миграции крупного проекта выглядел так живо, что зрители отлично поняли суть последней реплики, которую он изобразил беззвучно:
— Сколько нам потребуется вложить?
— Миллион долларов и год работы.
— А ради чего?
— Чтобы делать то же, что сейчас.
— …!
Внезапные перемены на стадии release candidate действительно выглядят странновато. Но это не означает, что Microsoft делает плохой продукт, и Дино такого и не говорил. Он заявлял только, что до стадии «по-настоящему подходит для продакшена» дело дойдёт лишь через пару лет. Как он ехидно заметил в конце выступления, «это хорошо сочетается с общей политикой Microsoft: их продукты не стоит использовать до третьей версии». Судя по громкости смеха в зале, для очень многих из собравшихся Windows когда-то началась с 3.x.
Эспозито сменил Саша Гольдштейн (Sela Group) с выступлением про PerfView. Это был уже третий подряд доклад на английском языке, а всего за день таких в главном зале оказалось целых пять: на этой конференции можно было не заскучать, даже вообще не зная русского. Как показали отзывы зрителей об докладе Гольдштейна, многие извлекли для себя практическую пользу, впервые ознакомившись с инструментом и сразу же захотев применять его.
А позже в другом зале он выступал с темой «The C++ and CLR Memory Models», и в этом случае отзывы оказались ещё восторженнее: многими была отмечена способность «говорить просто о сложном». В результате в топ-10 докладов DotNext (согласно зрительским оценкам) один и тот же докладчик взял и «золото», и «бронзу»:
Тем временем во втором зале Ромуальд Здебский (Microsoft) говорил об играх, и возникал вопрос «насколько доклад актуален конкретно на этой конференции». Здебский использовал эффектные видеоролики новейших игр вроде Deus Ex: Mankind Divided, но это AAA-тайтлы, большой геймдев, крупные западные компании — а мог ли что-то извлечь для себя обычный российский .NET-разработчик? Как оказалось, мог.
Во-первых, доклад обращал внимание на то, что несложные игры (например, 2D) можно делать с помощью Xamarin — так что можно пробовать сделать что-то сразу для всех мобильных платформ, при этом не сталкиваясь с высоким порогом входа. А во-вторых, говорилось, что даже в более амбициозном проекте можно срезать углы: взяв движок Unity и купив модели в официальном магазине, создать полноценную игру без осваивания многих вещей.
Мимоходом было упомянуто решение Microsoft открыть платформу Windows Holographic (используемую в HoloLens). Прямо сейчас это на разработчиках не сказывается, но в перспективе новость хорошая: если рынок VR/AR окажется большим, то будет здорово писать код сразу для большой пользовательской базы AR-устройств от разных производителей. Кстати, в перерывах конференции можно было оценить перспективы VR/AR на собственном опыте и вестибулярном аппарате: аттракцион с DK2-версией Oculus Rift без дела не стоял.
Послеобеденный доклад в главном зале, хотя был совсем не о Core, тоже оказался в формате «вряд ли необходимо вам для текущего проекта, но вообще-то знать стоит». Андрей Акиньшин (JetBrains) представлял паззлеры, связанные с арифметикой, и открывал залу новое в, казалось бы, самых базовых операциях. Первый пример, «Write(0.1 + 0.2 == 0.3);», вряд ли удивил многих тем, что ответом оказалось false (широко известно, что операции с плавающей точкой подкидывают такие сюрпризы). Но вот дальше поводов ошибиться возникало много — например, оказывалось, что вроде бы очевидное выражение приводит к неожиданным результатам в специфической конфигурации. А как по-вашему, какой из вариантов верен вот здесь?
Затем два доклада подряд — от Никиты Цуканова (ProMarket) и Мориса де Бейера — были посвящены Docker. Как заметил Морис, название проекта и логотип выбраны крайне удачно: аналогия с погрузкой контейнеров на морские суда отлично объясняет его пользу. Когда-то на корабли всё грузили «как есть» (например, отдельными бочками), и это приводило к «проблемам совместимости»: как расположить их так, чтобы влезло как можно больше, и при этом всё не грохнулось? С появлением транспортных контейнеров строго фиксированного размера, гарантированно совместимых друг с другом, жизнь заметно упростилась, и погрузка кораблей стала гораздо эффективнее. Docker позволяет добиться примерно того же.
А Цуканов, перечисляя окружения для деплоя, обращал внимание на то, что потребность в кроссплатформенности начинается уже внутри команды разработчиков: «фронтэндщики сидят с джаваскриптом за своими макбуками, они эту нашу винду в гробу видели». Сразу хотелось дождаться HolyJS и услышать, будут ли в своих докладах упоминать Docker сами «фронтэндщики с макбуками».
Наконец, в последнем слоте был доклад Романа Неволина (WaveAccess) о машинном обучении. Здесь, как и в случае с докладом об играх, возникал вопрос «релевантно ли это для аудитории»: пусть за этим будущее, но имеет ли это значение конкретно для собравшихся? И здесь докладчик также объяснял, что имеет: круг задач, для которых машинное обучение может пригодиться, довольно широк, а порог входа ниже, чем можно предположить. Чтобы не быть голословным, Неволин демонстрировал его применение — например, для такой насущной задачи, как распознавание спама в потоке входящих сообщений. Особенно запоминалась фраза «метод научного тыка — это основа машинного обучения, он спасёт нас».
По словам Романа, машинное обучение прежде всего полезно в таких случаях:
1. Когда алгоритм трудно описать в коде, но легко объяснить человеку.
2. Когда пытаешься предсказать изменения (например, курсы акций).
3. Когда алгоритм должен совершенствоваться за счёт накопления данных.
Любопытно узнать в комментариях: в том, над чем вы работаете сейчас, приходится ли сталкиваться с задачами, которые подпадают под эти описания и в которых машинное обучение могло бы помочь?
На этом конференция закончилась (тех, кому хочется ещё, ждём в декабре на московском DotNext). Зато не закончился «Летний фестиваль разработчиков»: впереди оставались Mobius о мобильной разработке и HolyJS о JavaScript, и о них расскажем в следующих текстах.
Петербургский «Летний фестиваль разработчиков», состоящий из трёх конференций подряд, начался с DotNext 2016. Как там была разрешена возникшая дилемма, и как вообще прошёл DotNext? По снимку команды организаторов видно, что при всей хардкорности мероприятие не обошлось без летнего настроения, а все остальные подробности — под катом.
Сложно ожидать, что самой запоминающейся деталью на открытии конференции станет название задачи волонтёра, но здесь произошло именно так. Программный директор Андрей Дмитриев, говоря о том, что спикеры после своих докладов отправляются в «экспертную зону» (где отвечают на вопросы заинтересовавшихся зрителей), уточнил, что для задачи «отвести спикера после доклада» у волонтёров даже есть специальная роль. И называется она так: «буксировщик докладчика».
Звучит забавно, но в то же время момент показательный: это отвечает на вопрос «зачем ходить на конференции, когда можно и в интернете всё узнать». Возможность задать вопрос в кулуарах всегда была преимуществом личного присутствия, а когда для этого ещё и созданы все условия, с выделенной экспертной зоной и досками для иллюстраций, можно получить от мероприятия ещё больше.
После открытия был keynote от Дмитрия Сошникова (Microsoft) «Сколько жизней у .NET». Начав с ностальгии (на экране появился даже код на COBOL) и дойдя до будущего (вроде локальных функций в C# 7), в процессе он устроил шоу: с помощью Microsoft Band измерял свой пульс («тут резко упал, обычно это говорит о смерти докладчика, но не в этом случае»), а с помощью Microsoft Cognitive Services распознавал собственные эмоции по выражению лица («счастливым у меня лучше получается быть, чем печальным»).
Часть выступления была посвящена «развенчанию мифов о Microsoft». Неудивительно, что евангелист компании отстаивал её правоту в спорных вопросах, но его аргументы понравились залу. Например, оспаривая тезис «Microsoft заставляет разработчиков постоянно переучиваться», он покорил аудиторию фразой «Не Microsoft такой, жизнь такая» (смех смехом, но не поспоришь: переучиваться не приходится только там, где нет прогресса). А затем добил слайдом «Тем временем в параллельной вселенной», на котором были просто перечислены популярные JavaScript-фреймворки: по сравнению с этим постоянно меняющимся зоопарком .NET-мир и впрямь может выглядеть тихой гаванью.
Затем всё разделилось на разные залы, и тут стало ясно, как революционность и повседневность могут сосуществовать в рамках одной конференции: им попросту были отданы разные треки, так что каждый пришедший мог выбрать для себя, что ему важнее.
С главной сцены англоязычные спикеры (Морис де Бейер, Дино Эспозито, Адам Ситник) говорили о том, что для .NET-мира означает переход к (ASP).NET Core. Получился зал для тех, кто хочет уже сегодня быть готовым к вызовам завтрашнего дня.
Третий зал поначалу оккупировали спикеры от JetBrains с серией докладов о своей новой IDE Rider (недавно они уже вкратце рассказывали нам о ней, а тут смогли поведать детальнее). Поскольку проект ещё не дошёл до релиза, получалось тоже про будущее, но более близкое. Благодаря Early Access Program при желании его уже можно использовать, а в числе первых пользователей есть сами JetBrains, использующие Rider для разработки Rider. Это объясняет, почему их продукты так любят: можно ли эффективнее мотивировать разработчика совершенствовать продукт, чем когда он на собственной шкуре ощущает любые недостатки?
А во втором зале в это время были доклады о кодогенерации, оптимизации и динамическом прототипировании — то есть речь шла о том, от чего можно получать практическую пользу здесь и сейчас, не дожидаясь светлого будущего.
Любопытно, насколько по-разному звучали доклады о ASP.NET Core. Морис де Бейер спокойно констатировал факты: .NET в его привычном виде перестал соответствовать запросам времени, так что теперь всё станет модульнее и кроссплатформеннее (неудивительно: когда Azure стал много значить для Microsoft, жёсткая привязка к Windows начала мешать получать клиентов).
А вот Дино Эспозито использовал на всю катушку свою саркастичность, описывая ситуацию «Microsoft сначала устраивает революцию, а уже затем внезапно задумывается, какие проблемы возникнут у лояльных клиентов с legacy code». В его исполнении гипотетический диалог о миграции крупного проекта выглядел так живо, что зрители отлично поняли суть последней реплики, которую он изобразил беззвучно:
— Сколько нам потребуется вложить?
— Миллион долларов и год работы.
— А ради чего?
— Чтобы делать то же, что сейчас.
— …!
Внезапные перемены на стадии release candidate действительно выглядят странновато. Но это не означает, что Microsoft делает плохой продукт, и Дино такого и не говорил. Он заявлял только, что до стадии «по-настоящему подходит для продакшена» дело дойдёт лишь через пару лет. Как он ехидно заметил в конце выступления, «это хорошо сочетается с общей политикой Microsoft: их продукты не стоит использовать до третьей версии». Судя по громкости смеха в зале, для очень многих из собравшихся Windows когда-то началась с 3.x.
Эспозито сменил Саша Гольдштейн (Sela Group) с выступлением про PerfView. Это был уже третий подряд доклад на английском языке, а всего за день таких в главном зале оказалось целых пять: на этой конференции можно было не заскучать, даже вообще не зная русского. Как показали отзывы зрителей об докладе Гольдштейна, многие извлекли для себя практическую пользу, впервые ознакомившись с инструментом и сразу же захотев применять его.
А позже в другом зале он выступал с темой «The C++ and CLR Memory Models», и в этом случае отзывы оказались ещё восторженнее: многими была отмечена способность «говорить просто о сложном». В результате в топ-10 докладов DotNext (согласно зрительским оценкам) один и тот же докладчик взял и «золото», и «бронзу»:
- Sasha Goldshtein — The C++ and CLR Memory Models
- Dino Esposito — ASP.NET Core 1.0: Challenges and Opportunities
- Sasha Goldshtein — PerfView: Measure and Improve Your App's Performance For Free
- Андрей Акиньшин, Юлия Цисык, Анатолий Кулаков — Поговорим про арифметику
- Дмитрий Сошников — Сколько жизней у .NET: размышляем о судьбах любимой платформы
- Сергей Щегрикович — ETW для .Net разработчиков
- Игорь Чевдарь — Кодогенерация для оптимизации
- Дмитрий Иванов — Реактивное многопроцессное взаимодействие: JetBrains Rider Framework
- Игорь Лабутин — Диагностируем WCF
- Виталий Баум — Практические примеры создания Микросервисов
Тем временем во втором зале Ромуальд Здебский (Microsoft) говорил об играх, и возникал вопрос «насколько доклад актуален конкретно на этой конференции». Здебский использовал эффектные видеоролики новейших игр вроде Deus Ex: Mankind Divided, но это AAA-тайтлы, большой геймдев, крупные западные компании — а мог ли что-то извлечь для себя обычный российский .NET-разработчик? Как оказалось, мог.
Во-первых, доклад обращал внимание на то, что несложные игры (например, 2D) можно делать с помощью Xamarin — так что можно пробовать сделать что-то сразу для всех мобильных платформ, при этом не сталкиваясь с высоким порогом входа. А во-вторых, говорилось, что даже в более амбициозном проекте можно срезать углы: взяв движок Unity и купив модели в официальном магазине, создать полноценную игру без осваивания многих вещей.
Мимоходом было упомянуто решение Microsoft открыть платформу Windows Holographic (используемую в HoloLens). Прямо сейчас это на разработчиках не сказывается, но в перспективе новость хорошая: если рынок VR/AR окажется большим, то будет здорово писать код сразу для большой пользовательской базы AR-устройств от разных производителей. Кстати, в перерывах конференции можно было оценить перспективы VR/AR на собственном опыте и вестибулярном аппарате: аттракцион с DK2-версией Oculus Rift без дела не стоял.
Послеобеденный доклад в главном зале, хотя был совсем не о Core, тоже оказался в формате «вряд ли необходимо вам для текущего проекта, но вообще-то знать стоит». Андрей Акиньшин (JetBrains) представлял паззлеры, связанные с арифметикой, и открывал залу новое в, казалось бы, самых базовых операциях. Первый пример, «Write(0.1 + 0.2 == 0.3);», вряд ли удивил многих тем, что ответом оказалось false (широко известно, что операции с плавающей точкой подкидывают такие сюрпризы). Но вот дальше поводов ошибиться возникало много — например, оказывалось, что вроде бы очевидное выражение приводит к неожиданным результатам в специфической конфигурации. А как по-вашему, какой из вариантов верен вот здесь?
Затем два доклада подряд — от Никиты Цуканова (ProMarket) и Мориса де Бейера — были посвящены Docker. Как заметил Морис, название проекта и логотип выбраны крайне удачно: аналогия с погрузкой контейнеров на морские суда отлично объясняет его пользу. Когда-то на корабли всё грузили «как есть» (например, отдельными бочками), и это приводило к «проблемам совместимости»: как расположить их так, чтобы влезло как можно больше, и при этом всё не грохнулось? С появлением транспортных контейнеров строго фиксированного размера, гарантированно совместимых друг с другом, жизнь заметно упростилась, и погрузка кораблей стала гораздо эффективнее. Docker позволяет добиться примерно того же.
А Цуканов, перечисляя окружения для деплоя, обращал внимание на то, что потребность в кроссплатформенности начинается уже внутри команды разработчиков: «фронтэндщики сидят с джаваскриптом за своими макбуками, они эту нашу винду в гробу видели». Сразу хотелось дождаться HolyJS и услышать, будут ли в своих докладах упоминать Docker сами «фронтэндщики с макбуками».
Наконец, в последнем слоте был доклад Романа Неволина (WaveAccess) о машинном обучении. Здесь, как и в случае с докладом об играх, возникал вопрос «релевантно ли это для аудитории»: пусть за этим будущее, но имеет ли это значение конкретно для собравшихся? И здесь докладчик также объяснял, что имеет: круг задач, для которых машинное обучение может пригодиться, довольно широк, а порог входа ниже, чем можно предположить. Чтобы не быть голословным, Неволин демонстрировал его применение — например, для такой насущной задачи, как распознавание спама в потоке входящих сообщений. Особенно запоминалась фраза «метод научного тыка — это основа машинного обучения, он спасёт нас».
По словам Романа, машинное обучение прежде всего полезно в таких случаях:
1. Когда алгоритм трудно описать в коде, но легко объяснить человеку.
2. Когда пытаешься предсказать изменения (например, курсы акций).
3. Когда алгоритм должен совершенствоваться за счёт накопления данных.
Любопытно узнать в комментариях: в том, над чем вы работаете сейчас, приходится ли сталкиваться с задачами, которые подпадают под эти описания и в которых машинное обучение могло бы помочь?
На этом конференция закончилась (тех, кому хочется ещё, ждём в декабре на московском DotNext). Зато не закончился «Летний фестиваль разработчиков»: впереди оставались Mobius о мобильной разработке и HolyJS о JavaScript, и о них расскажем в следующих текстах.
Поделиться с друзьями
MindVersal
Возможные ответ к упражнению 5:
ru.wikipedia.org/wiki/Округление
Математическое округление — округление всегда в бо?льшую по модулю сторону (предыдущий разряд всегда увеличивается на единицу).
Банковское округление (англ. banker's rounding) — округление для этого случая происходит к ближайшему чётному, то есть 2,5 > 2, 3,5 > 4.
То есть в любом случае ответ C?
phillennium
Чтобы не спойлерить здесь словами о том, правильный ли это ответ, сошлюсь на презентацию Акиньшина — там можно и на этот паззлер ответ увидеть, и другие порешать.
phillennium
Напишу тут вот что (не говорящее, правильный ли ответ): но если «предыдущий разряд всегда увеличивается на единицу» и из -1.5 получается -2, то ведь тогда из -0.5 должно получаться -1, а не 0 (то есть вариант B, а не C), разве нет?
justmara
.
PsyHaSTe
Во-первых давно придумали такую замечательную вещь,
phillennium
Про спойлеры забыл, да, спасибо.
Про «два вида округлений» — так человек при этом предполагал, что «в любом случае ответ C», то есть что оба упомянутых им вида округлений приведут к одному и тому же результату. На это я и возражал.
e23fx
Говоря про окружение для деплоя, интересно было бы обратить внимание, что для некоторых дистрибутивов ситуация ухудшается. Например, имеющаяся и так древняя версия mono 2.10.8 в Astra Linux 1.3, вообще исчезла к версии 1.4.
Java и Python же, наоборот увеличили своё присутствие. Это может быть актуально для нашей страны.
Сравнение пакетов: lab50.net/wp-content/uploads/se13-se14.html
werwolfby
Смотрели конференцию онлайн, но не всё удалось посмотреть.
Когда будут доступны видео докладов? Нигде информации найти не удалось.
VMAtm
Обычно примерно месяц уходит на обработку всех видео, если судить по прошлым конфам.
yegelletezeta
Видеозаписи уже доступны тем участникам конференции (и онлайн-участникам в том числе), которые заполнили форму обратной связи.
Если вы не оставляли свой отзыв в анкете — значит, для вас видеозаписи, как и для всех остальных, будут в открытом доступе осенью :).
werwolfby
У нас компания это организовывала, и фидбек нашей организации я оставил :)
Про форму обратной записи ничего не говорили, значит буду наших «огранизаторов» пытать.
Спасибо
yegelletezeta
Напишите, пожалуйста, мне на почту: yana@jugru.org — да пребудет с вами форма обратной связи :).
werwolfby
Спасибо, форму заполнил.
Очень рад что успел, до закрытия анкеты :)
dmitry_ch
Если не секрет, что вам помешало картинки нормального размера вставить, а не ужимать ее браузером? Они ж 1920 по ширине, а на сайте дизайн их до 1000 по ширине уменьшил, получились очень корявые артефакты.
Чес-слово, интересный рассказ и прямо видимые косяки картинок очень диссонируют.
phillennium
Я помнил, что Habrastorage автоматически уменьшает большие картинки, и всегда думал, что до стандартной хабровской ширины, а только после вашего комментария понял, что до 1920. Спасибо, что обратили внимание.
Сейчас уменьшил первую до 1000, перезалил — артефакты пропали, но при этом она почему-то поблёкла. Буду разбираться)