Начало основного контента

  • Best practices

    • Смотреть запись

      Тип доклада: Доклад

      Распределенный трейсинг OpenTelemetry вместо логирования всего подряд

      Трейсинг ошибок процесса обработки данных или поиск источника замедления работы распределенной системы требует немало времени. А обобщить опыт использования инструментов для решения этих задач сложно.

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

      Спикер разберет примеры использования OpenTelemetry в веб-сервисах, базах данных, очередях и покажет, как все это экспортировать в различные бэкенды.

    • Смотреть запись

      Тип доклада: Доклад

      Пиши, как тиктокер, а не как дед. Новые конструкции языка C# в бою

      За 20 лет эволюции вышло много версий языка С#, постепенно набор конструкций расширялся. К сожалению, не многие могут охватить в голове это разнообразие и продолжают писать так, как «деды писали на Си». В докладе будет много примеров, как можно переписать старый код по-новому, и как не увлекаться этим делом.

    • Смотреть запись

      Тип доклада: Доклад

      Пишем код, когда пишем код: source generator'ы

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

    • Смотреть запись

      Тип доклада: Доклад

      Тестируем код, взаимодействующий с базой данных

      В докладе рассматриваются различные подходы к тестированию взаимодействия с базами данных в .NET, как при использовании Entity Framework, так и при работе с другими инструментами. Сравним плюсы и минусы различных решений и стратегии их реализации.

      • Гурий Самарин

        Компания: Инжиниринговый дивизион Госкорпорации «Росатом»

    • Смотреть запись

      Тип доклада: Доклад

      Пишем приложения, которые не ломаются в продакшене

      Любой разработчик в своей работе учитывает много метрик качества: производительность, читаемость, расширяемость. Однако чтобы все это было важно, приложение для начала должно просто работать.

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

    • Смотреть запись

      Тип доклада: Доклад

      Что нового в .NET 7 и C# 11

      Вместе с релизом .NET 7 вышел C# 11 с новыми возможностями: generic math, raw string literals и list patterns. В докладе рассмотрим, что интересного можно найти в новой версии .NET и сопутствующих фреймворках — ASP.NET Core, MAUI, Blazor и других. Обязательно затронем minimal APIs, source generators и WebAssembly. Обсудим какие фичи облегчают написание современных cloud-native приложений: интеграция с OpenTelemetry, автогенерация докер-контейнеров, rate limiting и прочее. И, конечно же, не забудем про улучшение производительности.

    • Смотреть запись

      Тип доклада: Доклад

      Алгоритмы троттлинга запросов

      Спикер расскажет о разных подходах к реализации асинхронных блокировок и семафоров и их применении для контроля нагрузки на сервисы (Rate Limiting). Будут рассмотрены стандартные SemaphoreSlim, System.Threading, RateLimiting, а также другие алгоритмы.

    • Смотреть запись

      Тип доклада: Доклад от партнера

      Уязвимость регулярных выражений: теория и практика ReDoS-атак

      В своем докладе Алексей ответит на вопрос: «Как злоумышленник может заставить вашу валидацию работать на себя?» Он разберет, почему компоненты от Microsoft, содержащие регулярные выражения, не всегда безопасны, а также предложит решения на случай уязвимости вашего сервиса к ReDoS-атакам.

    • Смотреть запись

      Тип доклада: Доклад

      Загадочный EF Core, или Как написать свое расширение

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

    • Смотреть запись

      Тип доклада: Доклад

      Введение в Microsoft SignalR

      Это обзорный доклад о технологии Microsoft SignalR. Александр расскажет о том, для чего предназначена эта технология и на практике рассмотрит ее возможности и ограничения.

  • Расширяем горизонты

    • Смотреть запись

      Тип доклада: Доклад

      Анализ C# кода на Roslyn: от теории к практике

      Roslyn помогает достаточно легко анализировать C# код, но азы знать все равно полезно. Зачем нужны синтаксические деревья? А семантическая модель? И как использовать все это для решения практических задач?

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

    • Смотреть запись

      Тип доклада: Доклад

      Как научить вашего ребенка программировать (и не только)

      Дискуссия о том, надо ли всем ли современным детям нужно изучать программирование, ведь «программирование — это вторая грамотность», ведется с середины прошлого века.

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

    • Смотреть запись

      Тип доклада: Обсуждение

      Объединяем .NET-разработчиков: как запустить и развить гильдии в компании

      Гильдии — сообщества специалистов, объединенных технологическим стеком и общими целями. Их участники обмениваются опытом, устанавливают общие стандарты и имеют реальную возможность влиять на процессы в компании. На круглом столе поговорим о том, какие еще преимущества дают гильдии, и как запустить их у себя.

      Участники дискуссии — лидеры гильдий .NET из Альфа-Банка, Контура, Додо и Почтатеха. Они поделятся опытом построения и развития сообществ: вы узнаете, как продать идею гильдий руководству, должны ли гильдии быть частью оргструктуры и какова во всем этом роль лидера.

    • Смотреть запись

      Тип доклада: Доклад

      SkillsFlow: разработка системы управления навыками и компетенциями

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

      По технике будут продемонстрированы возможности ASP.NET Core (кэширование и сжатие ответов, отслеживание изменений конфигурации в K8S без перезагрузки, аутентификация и авторизация OIDC, OAuth, политики авторизации и авторизация на основе ресурсов), ML.NET, развёртывание, управление секретами и конфигурацией в K8S.

    • Смотреть запись

      Тип доклада: Доклад

      Поговорим об описательной статистике перформанс-распределений

      Метрики производительности приложений никогда не описываются одним числом. Они являются случайными значениями из некоторого распределения. Но как нам это распределение описать? Как стабильно вычислить среднее значение и степень вариации? Как высчитать квантили и построить график плотности распределения? Что делать с мультимодальностью и экстремальными выбросами?

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

    • Смотреть запись

      Тип доклада: Доклад

      Open source с точки зрения юриста

      Open source — неюридическая тема, в основе которой лежит юридическая проблематика. Мы поговорим о том, почему юрист становится лучшим «другом» разработчика, и как избежать неожиданных рисков для компании при использовании компонентов или ПО с открытым кодом. Также поговорим о тенденциях в области привлечения к ответственности за нарушения, связанные с неправомерным использованием open source. Узнаем, как это происходит и почему вообще мы должны об этом переживать, разрабатывая ПО в России.

  • Architecture

    • Смотреть запись

      Тип доклада: Доклад

      Rich Model и Anemic Model: враги или друзья

      В сообществе много холиваров о том, какую модель лучше использовать — Rich или Anemic. При этом лагерь консультантов активно топит за Rich Model, а среди разработчиков популярна Anemic Model. Поговорим о модели без предрассудков и с практической точки зрения. Для начала определимся с понятиями, что принято называть терминами Rich Model и Anemic Model, по каким критериям их можно отличить. Посмотрим, стоит ли использовать две модели данных: бизнес-модель для бизнес-логики и отдельную data-модель для маппинга на базу. Увидим, какие кейсы невозможно реализовать в канонической Rich-модели. Обсудим, так ли страшна анемичная модель, как ее ругают. И придем к прагматичной модели, которая чаще всего встречается на практике.

    • Смотреть запись

      Тип доклада: Доклад

      MediatR не нужен

      В индустрии использование MediatR считается хорошим тоном. Поработав с большим количеством сервисов, в которых его применяли, спикеры поняли, что в 99% случаев он вреден. Почему так и этому есть доказательства — обо всем этом вы узнаете из доклада.

    • Смотреть запись

      Тип доклада: Доклад

      Интересные подходы в реализации паттернов проектирования

      За годы исследований паттернов проектирования в C# удалось выявить некоторые интересные подходы, которые креативно используют возможности языка. В этом докладе посмотрим на то, как некоторые паттерны проектирования Банды Четырех могут быть реализованы весьма необычным путем.

    • Смотреть запись

      Тип доклада: Доклад

      Думай как архитектор: майндшифт инженера

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

    • Смотреть запись

      Тип доклада: Доклад

      Zero-downtime deployment и базы данных

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

      Спикер разберет популярные способы деплоя на кластер. Покажет типовые проблемы, возникающие при обновлении базы данных, и пути их решения. Также разберемся, чем обновление NoSQL баз данных отличается традиционных реляционных баз.

    • Смотреть запись

      Тип доклада: Доклад

      Архитектурные тесты

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

  • Internals

    • Смотреть запись

      Тип доклада: Доклад

      Instruction pipelining от 8086 до 2022: как работает конвейер в современных процессорах

      Superscalar pipeline, µop cache, branch prediction, pattern recognition, Out-Of-Order pipeline, re-order buffer, да и просто hyper-threading — все эти механизмы и технологии добавляются в современные процессоры для ускорения выполнения инструкций и улучшения производительности конечных программ. Но глобально современные архитектуры мало чем отличаются от первых Пентиумов и очень похожи на процессоры 8086.

      Как работают RISC-процессоры в 2022 году и как это влияет на .NET-программистов — посмотрим на простом примере прикладной задачи расчета выручки сети супермаркетов.

    • Смотреть запись

      Тип доклада: Доклад

      lock(_sync): иллюзия идеального выбора

      Ввиду того, что lock является конструкцией языка, которая лаконично и понятно создает секцию монопольного исполнения кода, это создает иллюзию единственно верного решения. Спикер рассмотрит алгоритм его работы и ответит на вопрос: так ли это?

    • Смотреть запись

      Тип доклада: Доклад

      [Test] + <T> = ❤️

      Для своей работы популярные тестовые фреймворки используют атрибуты, применимость которых из-за их реализации в .NET имеет существенные ограничения. В новой версии C# потенциал атрибутов увеличен благодаря обобщениям. Спикер покажет, как обобщённые атрибуты позволяют создавать более эффективные и выразительные тесты, а тестовые фреймворки, в свою очередь, делают это возможным благодаря своей редко используемой функциональности.

  • Бонусный контент

    • Смотреть запись

      Тип доклада: Доклад

      High refresh web

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

    • Смотреть запись

      Тип доклада: Доклад

      Введение в реактивное программирование

      React — не реактивен (спойлер: не совсем), а вот Vue, Svelte и Angular — да. Но почему? Во времена jQuery, когда программа получала данные, она должна была знать все места, где эти данные задействованы, чтобы обновить их. Сейчас же фреймворки позволяют вам просто обновить данные, а отображением они уже займутся сами. Это один из принципов реактивности — инверсия зависимостей. Отображение следит за изменением данных, чтобы сделать что-то самой. В React этого не происходит, но все же стало лучше, чем было — теперь не нужно обновлять вручную во всех местах, за нас это сделает фреймворк. Доклад будет не о фреймворках, хотя и о них тоже поговорим, а больше про фундаментальные вещи.

    • Смотреть запись

      Тип доклада: Доклад

      WebTransport и его место среди других протоколов

      Спикеры расскажут о технологии WebTransport и ее применении. Сейчас она находится в стадии draft и активно разрабатывается W3C.

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

    • Смотреть запись

      Тип доклада: Доклад

      ESLint — больше чем просто "extend"

      ESLint — мощный инструмент и при должном обращении он будет служить верой и правдой. Но зачастую вся работа с ним сводится к extend'у от всеми известного плагина. Как раскрыть его потенциал, как сократить время проверки кода, как сделать реюзабельный конфиг и при чем тут "Prettier" — узнаете из доклада.

    • Смотреть запись

      Тип доклада: Доклад от партнера

      Shared Modules

      Обсудим проблему дублирования статики между разными микрофронтендами.

      Андрей покажет, как в hh.ru шарили общие модули вендоров, собственных библиотек и UI-кита между разными микрофронтендами. Расскажет, как и зачем добавляли общие модули в микрофронтенды, и что делать, если версии общих модулей разъехались. 

      Также поговорим о том, как в hh.ru устроены микрофронтенды и как настроить `ModuleFederationPlugin` для шаринга общих модулей. Какие особенности могут вас ожидать при написании npm-пакета, если он становится общим модулем.

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

    • Смотреть запись

      Тип доклада: Доклад от партнера

      Код как данные, или Будь крутым программистом

      У инженера часто возникает проблема: «А как расти дальше?» Не в менеджеры же уходить. Учить новые фреймворки и языки программирования? Прочитать книжку про Hamster Driven Development? А можно взглянуть на свой код по-другому — это же просто набор строк. Их можно анализировать, генерировать, изменить. Фронтендеры часто пишут программы, которые какие-то данные переводят в строки. Так почему бы не написать программу, которая «пишет» программы?

      На примерах спикер покажет, как другие программы помогают нам писать/изменять. От подсказок IDE до рукописных генераторов и кодмодов. Это проще, чем кажется. И в этом Александр видит свое развитие как инженера.

    • Смотреть запись

      Тип доклада: Доклад

      Хаки и ветчина из JS-геймдева, которые подходят для велосипедных оптимизаций приложений в вебе

      Доклад для тех, кто пишет свои игры или высоконагруженные распределенные модели данных. Например, стартап с бесконечной доской и тасками на ней. Спикер рассмотрит связь некоторых высокоуровневых концептов и простого кода на JS. Полученные знания могут пригодиться при написании своих велосипедов и при изучении низкоуровневых вставок в коде популярных библиотек. Весь доклад построен на GameDev-опыте, в частности — разработки рендерера PixiJS.

    • Смотреть запись

      Тип доклада: Доклад

      Event Sourcing: глубокое погружение

      На пути построения Event Sourcing-системы вам предстоит столкнуться со множеством трудностей и подводных камней. Придется принимать важные архитектурные решения, и неправильный выбор принесет значительные проблемы или даже похоронит ваш проект. Спикер занимался темой Event Sourcing более четырех лет и прошелся по всем возможным граблям. В этом докладе он поделится своим опытом.

    • Смотреть запись

      Тип доклада: Доклад

      Анимации и их оптимизация в корпоративных проектах

      Анимации на сайте позволяют управлять вниманием пользователя, делают просмотр более приятным, а информацию более запоминающейся. Для SPA анимация является еще более важным элементом, позволяющим сгладить рендер страницы и имитировать поведение нативного приложения.

      Несмотря на удешевление производительности устройств, анимации все еще остаются достаточно «тяжелой» историей для браузера, и приходится прикладывать немало усилий для плавности анимации и высокого FPS.

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

    • Смотреть запись

      Тип доклада: Доклад

      А почему бы не вынести все конфиги в отдельный пакет, сократив бойлерплейт до нуля?

      Вам когда-нибудь приходилось копировать конфиги ESlint, Babel, Webpack и других инструментов из проекта в проект? В вашем package.json уже столько плагинов, что среди них невозможно найти реальные зависимости проекта? А что, если вы можете избавиться от всех лишних зависимостей вынесением в отдельные тематические пакеты? И все конфиги сократятся до одной строки импорта, а бойлерплейт — до 100 байтов. Из доклада вы узнаете, как команде спикера в Билайне это удалось. Спикер поделится историей появления этого решения, а заодно расскажет, сколько боли они схватили там, где совсем не ожидали.

    • Смотреть запись

      Тип доклада: Доклад

      Сколько это стоит

      Попробуем посчитать, что нужно, чтобы запустить более-менее приличный сервис на Node.js на VDS (blue-green деплой, балансировка, база данных, логи), и сравним с подходом на AWS-стеке (лямбды, RDS, API-gateway). А, может быть, даже удастся сравнить и Selectel с Yandex Cloud.

    • Смотреть запись

      Тип доклада: Доклад

      Батчинг в React

      Дмитрий обратил внимание, что на собеседованиях мало кто из разработчиков отвечает на вопрос о батчинге. Некоторые даже впервые слышат такое слово. Спикер расскажет об этом явлении в React. Как это работало в старых версиях и как работает сейчаc.

    • Смотреть запись

      Тип доклада: Доклад

      Ситидрайв: поездка продолжается

      Удивительная и местами невеселая история о том, как в Ситидрайв удается давать клиентам доступ к десяти тысячам машин круглые сутки. Рецепт одного из крупнейших каршерингов: NodeJS, Redis, RabbitMQ и маленькая щепотка удачи.

    • Смотреть запись

      Тип доклада: Обсуждение

      Дебаты.JS

      Истина рождается в споре. Умение грамотно отстаивать точку зрения — целый навык, требующий тренировки. Политики и бизнесмены пользуются спортивными дебатами для тренировки этого навыка. Наши участники попробуют себя в этой дисциплине. 

      Вы увидите, как наши спикеры и эксперты пытаются отстоять случайно выбранную точку зрения на случайную тему, связанную с JavaScript без подготовки и поиска материалов. Только аргументы, красноречие и отвага!

    • Не записывалось

      Тип доклада: Доклад

      Lightning talks

      Lightning talks — это мини-доклады от участников конференции. На Lightning talks действуют три правила: время доклада строго не более 10 мин читать доклады могут только участники конференции; доклад должен как-то пересекаться с IT в широком понимании. Активность не будет транслироваться.