Ловите записи докладов с 91-й встречи SpbDotNet:
🌐 Станислав Сидристый (известный .NET-разработчик, автор онлайн-книги .NET Platform Architecture): «Реактивная сборка огромного проекта»
• При стремительном росте проекта возникает ряд трудностей не только у разработки, но и у DevOps. Станислав решил помочь коллегам и сделал очень быструю сборку всех проектов.
• В итоге удалось ускорить сборку с 400 машиноминут (20 агентов, 20 минут) до диапазона (30 сек, 1 мин 30 сек) в зависимости от количества изменений. Через что пришлось пройти, все неудачные варианты и результат — в докладе.
🌐 Евгений Пешков (ранее разрабатывал JetBrains Rider, занимался инфраструктурой в Контуре): «Убийцы производительности»
• Одна из причин низкой производительности .NET-приложений — некачественные сторонние библиотеки или неправильное их использование. Например, обычное логирование может превратить всю программу в однопоточную, если неправильно сконфигурировано.
• Увы, некоторые подобные проблемы кочуют из библиотеки в библиотеку, и из проекта в проект. В докладе Евгений показывает примеры таких проблем и рассказывает, как их избежать.
#чтопроисходит
• При стремительном росте проекта возникает ряд трудностей не только у разработки, но и у DevOps. Станислав решил помочь коллегам и сделал очень быструю сборку всех проектов.
• В итоге удалось ускорить сборку с 400 машиноминут (20 агентов, 20 минут) до диапазона (30 сек, 1 мин 30 сек) в зависимости от количества изменений. Через что пришлось пройти, все неудачные варианты и результат — в докладе.
• Одна из причин низкой производительности .NET-приложений — некачественные сторонние библиотеки или неправильное их использование. Например, обычное логирование может превратить всю программу в однопоточную, если неправильно сконфигурировано.
• Увы, некоторые подобные проблемы кочуют из библиотеки в библиотеку, и из проекта в проект. В докладе Евгений показывает примеры таких проблем и рассказывает, как их избежать.
#чтопроисходит
Please open Telegram to view this post
VIEW IN TELEGRAM
❤13👍8
Каким терминалом/интерпретатором командной строки пользуетесь? Пользователи Windows, поделитесь опытом👇
Anonymous Poll
38%
CMD
35%
PowerShell
28%
Windows Terminal
20%
Всеми — в зависимости от задачи
3%
Другим (напишу в комментариях)
7%
Посмотреть результаты
❤3
📈Каким бы противоречивым ни был индекс TIOBE, который отслеживает показатель популярности языков программирования, но согласно ему C# потихоньку обгоняет Java.
«Разрыв между C# и Java никогда не был таким маленьким», — говорится в последнем выпуске. «В настоящее время разница составляет всего 1,2 процента, и если тенденция сохранится, C# превзойдёт Java примерно через 2 месяца».
📌Почему этим данным можно верить?
💬Снижение популярности Java может быть вызвано решением Oracle ввести модель платного лицензирования после Java 8 и ростом популярности Kotlin. .NET/C# в свою очередь повернулся в сторону открытого исходного кода и сообщества.
«Разрыв между C# и Java никогда не был таким маленьким», — говорится в последнем выпуске. «В настоящее время разница составляет всего 1,2 процента, и если тенденция сохранится, C# превзойдёт Java примерно через 2 месяца».
📌Почему этим данным можно верить?
💬Снижение популярности Java может быть вызвано решением Oracle ввести модель платного лицензирования после Java 8 и ростом популярности Kotlin. .NET/C# в свою очередь повернулся в сторону открытого исходного кода и сообщества.
👍43❤11👏3
✅C# и System.Reflection.Assembly
✅C# и MemoryStream()
✅C#, память и неуправляемый код
✅Конвертация в JScript
✅Специальные лоадеры
👉Читать
#pentest #redteam
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Диск – это лава. Исследуем методы выполнения пейлоада в памяти
Привет, Хабр! Меня зовут Миша, я работаю экспертом в центре инноваций Future Crew в команде тестирования на проникновение. В ходе пентестов очень часто приходится бороться с антивирусами. Увы, это...
👍3
Использование паттерна Outbox для надежного обмена сообщениями микросервисов: на заметку C#-разработчику
#dotnet #csharp #tip by Milan Jovanović
#dotnet #csharp #tip by Milan Jovanović
👍17🤔3😁2
default(T)
. Что, если мы хотим сделать то же самое во время выполнения? Каково значение по умолчанию для любого System.Type
?👉Разбирается Microsoft MVP/разработчик из Ubisoft Gérald Barré
Please open Telegram to view this post
VIEW IN TELEGRAM
Meziantou's blog
Get the default value of a type at runtime - Gérald Barré
In this post, I describe how to get the default value of a type at runtime in .NET.
❤2👍2❤🔥1
☑️Улучшения в System.Text.Json
☑️Поддержка IAsyncEnumerable Stream в System.Net.Http.Json
☑️Создание JsonContent через JsonContent.Create
☑️Анализ JsonNode Instances с помощью JsonNode.ParseAsync
☑️Улучшение JsonSerializerOptions.MakeReadOnly(bool populateMissingResolver)
☑️Режим AndroidStripILAfterAOT на Android
☑️Поддержка Azure Managed Identity для SDK Container Publishing и другие
Please open Telegram to view this post
VIEW IN TELEGRAM
DEV Community
.NET 8 is on the Way! 7 Features that will blow your mind 🤯
Howdy, fellow developers! Here’s another exciting journey that we’re about to embark on, exploring...
❤7👍2
#холивар
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Существует много атрибутов From, включая FromQuery и FromForm, при добавлении параметра к экшену контроллера в ASP.NET Core Web API или MVC-приложении.
Но что делают эти атрибуты? И что более важно, как мы можем заставить их работать? David Grace рассматривает каждый из них и предоставляет примеры на C#.
👉Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
Round The Code
FromQuery? FromForm? What do the .NET attributes do?
How the FromQuery, FromBody, FromForm, FromHeader and FromServices attributes work in an ASP.NET Core Web API and MVC app with C# code.
👍10
📌 Подборка за неделю на Code Maze:
🔹ConcurrentQueue в C#: фундаментальные концепции, использование и роль класса в обеспечении потокобезопасности
🔹Использование Keyed Services в .NET: обзор новой фичи, которая появилась в .NET 8
🔹Понимание паттерна Unit of Work в C#: преимущества и недостатки паттерна + пример реализации, который полностью независим от ORM
🔹Как и когда использовать TPC Inheritance Mapping в EF Core: погружение в недавно добавленную стратегию наследования в EF Core 7
🔹Как выполнить поиск подстроки без учета регистра в C#: гайд по использованию методов String.Contains(), String.IndexOf(), регулярных выражений и LINQ в сочетании с String.Equals( )
#dotnet #csharp #codemaze #матчасть
🔹ConcurrentQueue в C#: фундаментальные концепции, использование и роль класса в обеспечении потокобезопасности
🔹Использование Keyed Services в .NET: обзор новой фичи, которая появилась в .NET 8
🔹Понимание паттерна Unit of Work в C#: преимущества и недостатки паттерна + пример реализации, который полностью независим от ORM
🔹Как и когда использовать TPC Inheritance Mapping в EF Core: погружение в недавно добавленную стратегию наследования в EF Core 7
🔹Как выполнить поиск подстроки без учета регистра в C#: гайд по использованию методов String.Contains(), String.IndexOf(), регулярных выражений и LINQ в сочетании с String.Equals( )
#dotnet #csharp #codemaze #матчасть
👍8⚡2
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍7
🚀System Design 101
Готовитесь к собеседованию по проектированию систем или просто хотите понять принцип работы сложных систем? Тогда репозиторий ByteByteGo точно для вас.
👉 GitHub
Готовитесь к собеседованию по проектированию систем или просто хотите понять принцип работы сложных систем? Тогда репозиторий ByteByteGo точно для вас.
👉 GitHub
👍30
От монолита к микросервисам: как помогает модульный монолит
🔸Хорошей отправной точкой является разделение по ограниченным контекстам.
🔸Ограниченные контексты определяют явные границы между модулями. Затем вам нужно решить проблему связывания: зависимости БД, коммуникация.
🔸Каждый модуль содержит согласованный набор функций и изолирован от других модулей в системе.
👉Подробнее о том, какие требования предъявляются к модулю, как именно это сделать на практике, а также добавить брокер сообщений и извлечь модули в микросервисы, читайте в очередном материале Milan Jovanović.
#dotnet #csharp #tip by Milan Jovanović
🔸Хорошей отправной точкой является разделение по ограниченным контекстам.
🔸Ограниченные контексты определяют явные границы между модулями. Затем вам нужно решить проблему связывания: зависимости БД, коммуникация.
🔸Каждый модуль содержит согласованный набор функций и изолирован от других модулей в системе.
👉Подробнее о том, какие требования предъявляются к модулю, как именно это сделать на практике, а также добавить брокер сообщений и извлечь модули в микросервисы, читайте в очередном материале Milan Jovanović.
#dotnet #csharp #tip by Milan Jovanović
👍11❤3
В 9-ой части Эндрю Лок погружается в новую поддержку рендеринга компонентов Blazor вне контекста ASP.NET Core.
10-ая часть посвящена обновлению Docker-образов в .NET 8. Вы узнаете о некоторых различиях в тегах, новых поддерживаемых типах образов, а также критические изменения в образах.
#dotnet8
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Библиотека шарписта | C#, F#, .NET, ASP.NET
Знакомство с предварительной версией .NET 8: традиционная серия статей от Эндрю Лока перед выходом новой версии.
Следите за обновлениями👇
▫️Часть 1. Using the new configuration binder source generator
▫️Часть 2. The minimal API AOT compilation template…
Следите за обновлениями👇
▫️Часть 1. Using the new configuration binder source generator
▫️Часть 2. The minimal API AOT compilation template…
👍4❤1
🔥В Rider 2023.3 завезут фичу под названием Debugger Data Flow Analysis, которая позволяет предсказывать движение потока данных и показывать во время отладки, в каком направлении продолжится выполнение кода
При отладке программы вы обычно видите ее текущее состояние и можете проанализировать уже выполненный код. Поэтому, когда вы входите в функцию, вы не видите, что происходит внутри ее тела, пока не примените дополнительные пошаговые действия. С помощью новой фичи вы можете увидеть, что происходит после текущего оператора, без каких-либо шагов. Он выполняет код в фоновом режиме и предоставляет информацию.
На скрине анализ потока данных отладчика помогает сразу увидеть, что метод не будет выполнен после вызова RandomizeBool(), поскольку он выдаст ошибку NotImplementedException.
👉 Подробнее
При отладке программы вы обычно видите ее текущее состояние и можете проанализировать уже выполненный код. Поэтому, когда вы входите в функцию, вы не видите, что происходит внутри ее тела, пока не примените дополнительные пошаговые действия. С помощью новой фичи вы можете увидеть, что происходит после текущего оператора, без каких-либо шагов. Он выполняет код в фоновом режиме и предоставляет информацию.
На скрине анализ потока данных отладчика помогает сразу увидеть, что метод не будет выполнен после вызова RandomizeBool(), поскольку он выдаст ошибку NotImplementedException.
👉 Подробнее
❤38🔥18👍7