Говорят, бесконечно можно смотреть на три вещи: как горит огонь, как течет вода и как работают другие люди. То есть, идеальный объект для наблюдений — прямая трансляция большой конференции.


И кстати, у нас есть для вас одна такая. В это воскресенье и понедельник проходит DotNext 2017 Moscow — крупнейшая в России конференция, посвященная разработке на платформе .NET. Три десятка спикеров выступят с докладами о настоящем и будущем платформы .NET, об оптимизации производительности и многопоточности, о внутреннем устройстве платформы .NET и CLR, о профилировании и отладке .NET-кода, и так далее.


И у вас есть возможность поучаствовать в этом — без необходимости куда-то лететь или ехать через полгорода, на YouTube, бесплатно. Как именно — читайте дальше.



Changelog


Во-первых, многие уже знают, что в JUG.ru Group начали проводить открытые трансляции, побывали на нескольких, и хотят улучшений относительно прошлого раза.


И мы действительно многое улучшили. В последнее время прошло несколько конференций, таких как Joker, DevOops, SmartData, технология обкаталась, и сейчас на DotNext 2017 Moscow можно будет наблюдать текущий этап эволюции:


  • Улучшенное качество звука. Микрофоны правильно стоят и лучше работают, продумана акустика зала, решены мелкие технические проблемы;
  • Видео в 1440р — дополнительное пространство используется для одновременного отображения спикера и FullHD слайдов (или экрана ноутбука для live coding) в на одном экране;
  • Инфраструктура для работы с видео переехала в облако, что понизило вероятность отказов оборудования. (На самом деле, в основном, этим занимаются в SBTG.ru, которые помогают в записи конференции, а мы только пожинаем плоды их работы);
  • В перерывах между докладами, когда спикеры и участники на площадке удаляются в дискуссионные зоны, зрителям онлайн-трансляции мы показываем репортажи и интервью со спикерами и спонсорами. На этот раз интервью должны быть живее, вести их будут два ведущих (@phillennium и @olegchir — наши посты вы можете регулярно видеть на Хабре);
  • Решено много мелких технических проблем, которые большинство даже не заметило, но они там были. В целом, ощущение от просмотра трансляции должно быть лучше.

Как подключиться


Просто сохраните себе эти ссылки на YouTube. Обратите внимание, два дня — две разные ссылки:


День первый, 12 ноября, воскресенье



День второй, 13 ноября, понедельник



Доступные материалы


В открытой трансляции доступен только первый зал, включая открывающий и завершающий кейноут.


Отдельный вопрос в том, как формировалась программа этого зала. Конечно, мы используем ConfPlanner, созданный при участии Владимира Ситникова. ConfPlanner работает на основе OptaPlanner и автоматически пытается сделать так, чтобы все непосредственные участники конференции попали на те доклады, которые они указали в опросе. Но тем не менее, результаты работы автоматики творчески анализируется организаторами, исходя из понимания, что первый зал будут смотреть участники открытой трансляции. У последовательности докладов первого зала есть своя собственная внутренняя логика.


Вопросы участников (тех, кто смотрит бесплатно — тоже) учитываются, задавать их можно в официальном телеграм-канале конференции. Разобраться с Telegram рекомендуется заранее. Вот прямо сейчас пойдите и установите его!


Ограничения


  • Трансляция предоставляется по принципу as is: мы уверены, что все будет хорошо, но если вдруг что – не обессудьте!
  • Видеозаписей не будет. То есть они, конечно, будут, но только для участников конференции, оставивших фидбэк. А для всех остальных мы традиционно выложим их через 3-4 месяца.
  • Вы не сможете смотреть, что происходит в других залах. А там будет много интересного. В следующий раз регистрируйтесь и смотрите все без ограничений.

Программа


День первый, 12 ноября, воскресенье


Кейноут: Поговорим про performance-тестирование


Андрей DreamWalker Акиньшин, JetBrains


У кейноута есть несколько целей, в том числе — передать дух и суть того, что будет твориться ближайшую пару дней. Этот доклад будет посвящен типичным проблемам тестирования производительности и возможным подходам к их решению. Андрей Акиньшин работает над проектом Rider, является мантейнером BenchmarkDotNet и вообще — знает толк в микрооптимизациях.




Побеждая инъекции


Владимир VladimirKochetkov Кочетков, Positive Technologies


Второй доклад про безопасность, и он имеет точно такую же практическую направленность. Рекомендуем прочитать на сайте биографию спикера чтобы понять — это лучший эксперт в области безопасности и очевидный кандидат для общения в дискуссионной зоне после доклада.


Доклад посвящен проблеме уязвимостей .NET-приложений к атакам инъекций в языки различных грамматик (HTML, JavaScript, URL, SQL, Path и т.п).


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


Вторая часть посвящена обзору открытой библиотеки LibProtection, позволяющей разработчикам безопасно использовать привычный API для работы с форматными и интерполируемыми строками при работе с входными данными и скрывающей за ним полнофункциональный инструмент встраиваемой защиты времени выполнения.




From dependency injection to dependency rejection


Mark Seemann, blog.ploeh.dk


У функционального программирования есть одна большая проблема — о нем очень непросто рассказывать. Попытки донести людям что-то с использованием терминов типа «зигохистоморфный препроморфизм» легко сводят неподготовленного слушателя с ума.


Марк — автор популярной книги Dependency Injection in .NET, автор бесчисленных блог-постов, и спикер на таком количестве конференций, что ему пришлось завести публичное расписание на своем сайте. Причем рассказывает он каждый раз все больше и больше нового. Если кто и может рассказать о ФП, так это он.


О чем же пойдет речь в этом докладе?
В объектном-ориентированном проектировании часто используют dependency injection — этот паттерн очень популярен, но тем не менее, является довольно сложным подходом к решению проблемы разделения связанных сущностей. В функциональном программировании есть способы куда проще и эффективней.


В этом докладе Марк рассмотрит применение dependency injection в классическом объектно-ориентированном дизайне и объяснит, почему его необязательно (даже нежелательно) использовать в функциональном программировании. Следом за этим будет наглядно показано, как использование приемом функционального программирования устраняет необходимость в использовании моков и стабов в модульном тестировании, и позволяет полностью выбросить мусор из прямого перечисления зависимостей.




 High performance Networking in .NET Core


Karel Zikmund, Microsoft


В топе, посвященном производительности, есть два доклада про производительность сети.


Первый из них ведет англоязычный спикер Karel Zikmund, известный тем, что является Software Engineering Manager в командах .NET Framework team и .NET Core, и является менеджером CoreFX по направлениям Networking, Crypto, Collections, Process, и т.п.


Karel расскажет об архитектуре и конкретной реализации сетевого стека .NET Core, в особенности — о производительности и переносимости. Будут освещены следующие темы:


  • Основные идеи и цели, лежащие за архитектурой и реализацией сетевой подсистемы
  • Какой прогресс был достигнут, какое состояние текущей разработки
  • Как добиваются максимальной производительности
  • Текущие результаты работ по улучшению производительности + сравнение относительно различных технологий и операционных систем



Искусственный интеллект и нейросети для .NET-разработчиков


Дмитрий shwars Сошников, Microsoft


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


Дмитрий —  технологический евангелист компании Майкрософт,  специализирующийся в области интернета вещей, в разработке универсальных приложений Windows и в области функционального программирования.


В этом докладе Дмитрий покажет, как .NET-разработчики могут использовать возможности ИИ в своих проектах: начиная от готовых когнитивных сервисов, работающих в облаке, заканчивая обучением нейросетей на .NET-языках и запуском сложных нейросетевых моделей на компактных устройствах типа Raspberry Pi.




I have a microservices architecture and I didn't know


Dino Esposito, JetBrains


Как вы уже знаете, микросервисы — вертикальные слои функциональности, независимые друг от друга с точки зрения технологий, парадигм, и даже, в какой-то мере — данных. Как и любой другой изолированный модуль, микросервис можно легко заменить или переписать, или даже горизонтально масштабировать без риска возникновения регрессий. Микросеврисы могут являться слабосвязанной частью распределенной архитектуры, но их можно использовать и по-отдельности, сами по себе. У такой архитектуры множество плюсов, и не так много минусов. Что важнее, она встречается гораздо чаще, чем об этом принято говорить. «Микросервисы» — это просто специальное название для чего угодно, что не является хорошо проработанной, всеобъемлющей системой.


В этом докладе Дино поделится с нами болезненным опытом разработки микросервисной архитектуры, в ходе которой его компания строила инфраструктуру во множество этапов, имея на руках очень ограниченные ресурсы, по кирпичикам собирая результат — и стараясь, чтобы при добавлении новых крипичиков, старые не отваливались на ходу.


Дино — известный тренер, консультант и евангелист, CTO быстро развивающейся IT-компании. Он написал множество известных книг для Microsoft Press. Этот доклад продолжает славную традицию, по которой Дино рассказывает, как правильно превозмогать весь этот беспорядок, который мы сами наворотили.


Напоминаю, что у Дино есть еще один доклад — завершающий кейноут, на него определенно стоит сходить.




День второй, 13 ноября, понедельник


Debugging and Profiling .NET Core Apps on Linux


Sasha goldshtn Goldshtein, Sela Group


В нашей хардкорной «низкоуровневой» секции есть два доклада, касающихся отладки. И оба — про кроссплатформенные приложения.


Первый доклад ведет Саша Гольдштейн — выдающийся перфоманс-инженер, неизменно занимающий топовые позиции на всех конференциях, где бы он ни выступал. Мы несколько раз брали у него интервью, советую ознакомиться: пара видеозаписей 2015 годавидеозаписи 2016 годаинтервью о работе с перфомансом и обзор инструментов .NET перфоманс-инженера.


В этом докладе Саша расскажет примерно о следующем. Представьте, что-таки удалось запустить на Linux ваше любимое ASP.NET-приложение или даже что-то с консольным интерфейсом. Что дальше? Счастливый конец? О, нет. По факту, придется встретиться с утечками памяти, странными падениями, проблемами с производительностью и многими другими неприятностями — и что делать, когда всё это происходит на продакшне? На Windows у нас есть куча интересных инструментов, но в Linux они работать не будут, и простых альтернатив пока не существует. В этом докладе Саша расскажет о том как сейчас выглядит отладка и профилирование приложений .NET Core на Linux. Как проводить расследования с помощью perf, как LTTNG используется в качестве замены для событий ETW, как собирать и понимать трейсы LTTNG, и многое другое. Саша расскажет о сборе core dumps, и как достать из них интересную для .NET-разработчика информацию с помощью lldb и SOS. Этот доклад будет очень непростым путешествием сквозь дебри недоделанных утилит и особой магии командной строки, но в конце концов мы приедем к счастливому концу! (но это не точно).




Patterns for high-performance C#: from algorithm optimization to low-level techniques


Federico Lois, Corvalius


В этом докладе мы рассмотрим техники и паттерны, используемые для написания высокопроизводительного кода — начиная с анализа и вплоть до конкретного воплощения оптимизации. Разберемся, как понять, какие оптимизации нужно использовать, и какие проблемы обычно возникают при оптимизации кода базы данных. Многие из этих приёмов были придуманы и заполированы до зеркального блеска при разработке RavenDB 4.0 — свежей версии NoSQL движка для платформы .NET. RavenDB — это довольно сложная штука, в которой оптимизации давно идут на наносекунды, и оптимизировать приходится по времени, IO и процессору одновременно. Большинство обсуждаемых в этом докладе приемов можно применить где угодно, вне зависимости от языка или фреймворка.


Федерико прошел большой путь, чтобы иметь возможность рассказать о своих открытиях. Он не только является сооснователем компаний Corvalius и Codealike, но и реально работал над перфомансом алгоритмов последние десять лет, в качестве железа используя как CPU, так и всевозможное хитрое железо вроде GPU. Это человек, которого не пугает работа с бинарными данными, регистрами и низкоуровневой оптимизацией, и одновременно увлеченный технологиями параллелизма и современной компьютерной графикой. В общем, если кто и может рассказать доклад о низкоуровневых оптимизациях на C#, то это именно он.




Runtime code generation techniques in real life scenarios


Raffaele Rialdi, Vevy Europe


Генерация кода в рантайме — очень мощная и хорошо изученная техника, но многие разработчики все еще неохотно её используют. Обычно изучение Expression Trees начинают с какого-нибудь простого примера типа создания предиката (фильтра) или математического выражения. Но не Expression Trees единым жив .NET разработчик. Совсем недавно появилась возможность генерировать код, используя сам компилятор — это делается с помощью API библиотек Roslyn/CodeAnalisys, предоставляющих, кроме всего прочего, еще и парсинг, обход и генерацию исходников.


В этом докладе мы, вместе с Рафаэлем, проанализируем реальные способы использования кодогенерации. В отдельных случаях они позволяет очень сильно улучшить производительность приложения, что в свою очередь приводит нас к дилемме — если сгенерированный код так полезен и мы собираемся его часто использовать, то как же отлаживать этот код? Это один из фундаментальных вопросов, возникающих в реальных проектах.


Рафаэль — практикующий архитектор, консультант и спикер, имеющий MVP в категории Developer Security начиная с 2003 года, который прямо сейчас занимается бэкендами enterprise-проектов, специализируясь на генерации кода и кроссплатформенной разработки для C# и C++. Иначе говоря, Рафаэль именно тот человек, которому в дискуссионной зоне можно задать почти любой вопрос про кодогенерацию, и не только про .NET, и с большой вероятностью он ответит.




Life, liberty and the pursuit of APIness: the secret to happy code


Dylan Beattie, Spotlight


Это будет весьма философский, и вместе с тем — сугубо практический доклад. Его будет вести Dylan Beattie — человек с таким количеством рабочих достижений и интересных проектов, что полный список проще прочитать на нашем сайте. В контексте доклада интересно, что Дилан — системный архитектор, который прямо сейчас занимается вопросами построения сложных современных распределенных приложений, и соответственно — вопросами разработки правильных API для них. А еще он, наверное, сыграет нам на гитаре, на вечеринке после первого дня DotNext вместе с Вагифом.


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


Осознаем мы или нет, каждый раз при создании новых программ мы создаем и user experience. Люди будут взаимодействовать с нашим кодом — как конечные пользователи, или может быть — как члены команды разработки. А может быть, они — разработчики мобильного приложения, использующие твое API, или это кто-то кому нужно ехать в ночь, чтобы исправлять возникшие проблемы. Со стороны это может казаться совершенно разными кейсами, но на самом деле у них есть кое-что общее. Дилан называет это словом «discoverability». (Я специально не перевожу это слово, потому что доклад все равно будет на английском языке, а в английском языке оно имеет больше значений, чем русский эквивалент «понятность»).


В этом докладе Дилан обрисует идеи и открытия, касающиеся user experience, дизайна API, психологии и психологии обучения, и покажет как можно интегрировать идею discoverability на всех архитектурных уровнях приложения. Будут иллюстрации на настоящих больших проектах, с объяснениями, как discoverability работает с различными парадигмами взаимодействия. Неважно, создаете ли вы базы данных или системные библиотеки, hypermedia API или мобильные приложения — однажды случится момент, когда кто-то начнет взаимодействовать с вашим кодом — и когда это произойдет — лучше чтобы они остались довольны, верно?




Провайдеры типов без боли и магии


Роман nevoroman Неволин, EPAM


Newtonsoft.Json — самый популярный пакет в NuGet. А рядом с ним, на третьем месте, — Entity Framework. Пожалуй, это неплохо демонстрирует, насколько часто .NET разработчики обрабатывают разнообразные данные. И для каждого типа данных — своя библиотека, а еще куча классов-оберток, которые приходится писать ради получения всех благ строгой типизации. И делать это нужно для каждого нового источника данных.


Однако F# предлагает нам другое решение вечной проблемы — провайдеры типов. Решение, которое позволяет максимально упростить работу с любыми типами данных, избавиться от написания и сопровождения классов оберток, а заодно и решить совсем другие проблемы, вроде рисования сложных графиков и работы с нейронными сетями средствами F#.


Если вы хотите узнать, как использовать провайдеры типов, какие проблемы они решают, как работают и как написать собственный провайдер для ваших задач, — приходите на этот доклад!


Знание F# не обязательно. Роман занимается исследованиями в области Machine Learning и разработкой собственных инструментов машинного обучения, поэтому умеет простыми словами объяснять сложные вещи.




Завершающий кейноут: Unchain my heart


Dino Esposito, JetBrains


Представим себя в 2048 году. Что будет считаться искусством? Как мы будет заниматься привычными делами, как будем делать бизнес?


Дино расскажет нам историю — вымышленную историю — которую можно считать научной фантастикой. Или особой сотовой фантастикой. В 2008 году один парень сделал Bitcoin. Чтобы управлять Bitcoin, нужно использовать общий реестр — Blockсhain. Блокчейн — это публичный реестр для транзакций — в перспективе, транзакций любого типа. Представьте, что кто-то пошел дальше, на парочку уровней. Блокчейн распространился по миру, и стал основой для совершенно всего. Банки, нотариусы, органы государственного управления — короче, любые сторонние удостоверяющие органы — оказались на грани катастрофы.


Представьте, что в 2048 году весь мир оказался целиком основан на Блокчейне, и любая транзакция в нём видна, отслеживаема и проверяема кем угодно. Представьте мир, в котором люди одеваются в одежду, прочипованную RFID, подключенными к Блокчейну. За любым твоим шагом тоже следят (кстати, сейчас в 2017 они следят тоже!). Твое местоположение всем хорошо известно, все действия я записаны. Представьте мир, в котором компьютеры занимаются большинством наиболее нудных задач, которые ты когда-либо встречал в жизни — они делают за тебя решения, ведут за тебя машину, заказывают за тебя билеты на самолет, покупают для тебя разные вещи — и даже пишут за тебя программы.


Представьте мир, в котором только мысли и сны всё действительно твои, и они — единственная приятная вещь, которая у тебя еще есть. (Нет, я не думаю, что компьютеры будут заниматься за тебя сексом, даже в 2048!). Это будет утопия или анти-утопия? Мир без обмана, зависти и преступлений. Полный честности, свободы, любви. (И да, свободная любовь — типа той, о которой хиппи мечтали в 70х, но гораздо лучше). Время покажет, и время летит очень быстро.

Комментарии (7)


  1. Atreides07
    10.11.2017 21:58

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


    1. F0iL
      10.11.2017 22:08

      В бесплатном онлайне транслируется только доклады первого зала, а в платном, как я понимаю, вообще все выступления.


    1. olegchir Автор
      11.11.2017 08:55

      Сейчас отвечу, но есть проблема: для всех на Хабре, кроме нас с вами, этот ответ будет выглядеть как кусок бесстыдной рекламы. Не знаю, что здесь можно сделать, ответить-то нужно. Итак,

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

      Во-вторых, вы гарантированно получаете записи всех докладов почти сразу после конференции. Тогда как записи бесплатного зала не будет вообще, и совершенно не факт, что через 3-4 месяца мы выложим все доклады.

      Более того, покупая платную трансляцию, вы покупаете сервис. Посмотрите на раздел «ограничения» в этом хабрапосте: мы в первую очередь решаем проблемы и учитываем хотелки участников закрытой трансляции. Открытую мы тоже поддерживаем — но например, если с трансляцией случится что-то плохое, первыми мы спасем именно участников закрытой трансляции.

      Итого: в три раза больше контента, записи, сервис.


      1. KvanTTT
        11.11.2017 19:17

        Тогда как записи бесплатного зала не будет вообще, и совершенно не факт, что через 3-4 месяца мы выложим все доклады.

        Почему записи бесплатного зала не будет? Лучше бы тогда бесплатной трансляции не было, но запись то почему жалко? Там тоже может быть что-то интересное.


        Т.е. купившие билет и смотрящие другой зал так же не смогут получить запись бесплатного? Или я что-то неправильно понял?


        1. olegchir Автор
          11.11.2017 22:36

          Купившие билет получат записи всего (включая первый зал), причем очень быстро, почти сразу. Не купившие — получат в общем порядке только через 3-4 месяца.


    1. B-CCCPcekca-HET
      11.11.2017 16:56

      Например, вы можете потом поделиться записями трансляции с другими людьми)


      1. 23derevo
        12.11.2017 01:29

        совесть лицензия не позволит так поступить. Оно для личного использования.