Говорят, бесконечно можно смотреть на три вещи: как горит огонь, как течет вода и как работают другие люди. То есть, идеальный объект для наблюдений — прямая трансляция большой конференции.
И кстати, у нас есть для вас одна такая. В это воскресенье и понедельник проходит 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х, но гораздо лучше). Время покажет, и время летит очень быстро.
Atreides07
Не подумайте что я не рад этому начинанию, я очень рад что такая возможность появилась наконец, но я оплатил участия онлайн, просто что бы понять смысл — какой профит мне дает то что я купил участие онлайн, если теперь я могу то же самое получить бесплатно? :)
F0iL
В бесплатном онлайне транслируется только доклады первого зала, а в платном, как я понимаю, вообще все выступления.
olegchir Автор
Сейчас отвечу, но есть проблема: для всех на Хабре, кроме нас с вами, этот ответ будет выглядеть как кусок бесстыдной рекламы. Не знаю, что здесь можно сделать, ответить-то нужно. Итак,
Покупая платную трансляцию вы, во-первых, получаете доступ к просмотру всех залов. В бесплатной — только первого.
Во-вторых, вы гарантированно получаете записи всех докладов почти сразу после конференции. Тогда как записи бесплатного зала не будет вообще, и совершенно не факт, что через 3-4 месяца мы выложим все доклады.
Более того, покупая платную трансляцию, вы покупаете сервис. Посмотрите на раздел «ограничения» в этом хабрапосте: мы в первую очередь решаем проблемы и учитываем хотелки участников закрытой трансляции. Открытую мы тоже поддерживаем — но например, если с трансляцией случится что-то плохое, первыми мы спасем именно участников закрытой трансляции.
Итого: в три раза больше контента, записи, сервис.
KvanTTT
Почему записи бесплатного зала не будет? Лучше бы тогда бесплатной трансляции не было, но запись то почему жалко? Там тоже может быть что-то интересное.
Т.е. купившие билет и смотрящие другой зал так же не смогут получить запись бесплатного? Или я что-то неправильно понял?
olegchir Автор
Купившие билет получат записи всего (включая первый зал), причем очень быстро, почти сразу. Не купившие — получат в общем порядке только через 3-4 месяца.
B-CCCPcekca-HET
Например, вы можете потом поделиться записями трансляции с другими людьми)
23derevo
совестьлицензия не позволит так поступить. Оно для личного использования.