Библиотека шарписта | C#, F#, .NET, ASP.NET
22.9K subscribers
2.26K photos
36 videos
85 files
4.42K links
Все самое полезное для C#-разработчика в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/b60af5a4

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead
Download Telegram
🎉.NET 8 уже совсем близко. Стали известны темы докладов и все подробности, которые ждут участников .NET Conf 2023. А мы разбираемся, что из себя представляет второй релиз-кандидат новой версии платформы:

🔹 Анонс .NET 8 RC2
🔹 Обновления ASP.NET Core .NET 8 RC 2
🔹 Анонс .NET MAUI в .NET 8 RC 2
🔹 EF Core 8 RC 2

☑️ Смотрите также серию видеоуроков Learn Live, которая охватывает основы C# для новичков:
📺 Написание первой программу на C#
📺 Разработка и запуск простого приложения на C#
📺 Добавление логики в консольное приложение
📺 Работа с переменными данными в консольных приложениях C#

#чтопроисходит #матчасть
🔥9👍5🤩41🤔1
Отладка распространенных проблем с файлами Cookie в ASP.NET Core: гайд для C#-разработчика.

👉 Читать
👍94
👩‍💻 Если вы работаете над веб-приложением в Visual Studio и хотите запустить его в режиме инкогнито, просто используйте “Browse With…”.

#tools #tip by Dave Callan
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5492
Discriminated Unions в C#

Discriminated Unions — давняя потребность в C#. Хотя этот функционал пока недоступен напрямую C#-разработчикам, Maarten Balliauw, Developer Advocate в JetBrains, представляет краткое введение в концепцию и два способа, которые вы можете использовать уже сейчас👇

🔗Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
🤔 Newtownsoft vs System.Text.Json

Как вам производительность встроенного инструмента для сериализации и десериализации JSON?

#csharp #benchmarks by Nabi Karampoor
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥55👍5🥱41
From_Junior_to_Genius_an_optimization_story_by_Israel_Lot_ITNEXT.pdf
8.5 MB
🤔 Что будет, если разработчики разного уровня (джун, мидл, сеньор, хакер, эксперт и гений) реализуют простой метод вычисления контрольной суммы?

Получится довольно любопытная история оптимизации. Версия джуна выглядит следующим образом👇


public static uint Checksum(ReadOnlySpan<byte> arr)
{
if (arr.Length == 0) return 0;

uint sum0 = 0, sum1 = 0, sum2 = 0, sum3 = 0;

for(var i = 0; i<arr.Length; i++)
{
switch (i % 4)
{
case 0: sum0 += arr[i]; break;
case 1: sum1 += arr[i]; break;
case 2: sum2 += arr[i]; break;
case 3: sum3 += arr[i]; break;
}
}

var sum = sum3+ (sum2 << 8) + (sum1 << 16) + (sum0 << 24);

return sum;
}


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

#csharp #benchmarks
Please open Telegram to view this post
VIEW IN TELEGRAM
👍112🔥1
🤔.NET Framework vs .NET Core Environment Configuration

• .NET Framework применяет конфигурации окружения на этапе сборки, преобразуя файлы, зависящие от окружения, чтобы создать единый файл конфигурации для развернутого приложения. Приложение знает, в каком окружении оно должно работать, независимо от того, где оно развернуто.

• .NET/Core применяет конфигурации окружения во время выполнения, используя конкретную переменную окружения, и может использовать множество источников конфигурации. Приложение спрашивает, в какой среде оно развернуто.

👌Build once, deploy to many

🔧С первого взгляда все кажется простым и понятным, но команда .NET сделала огромную работу, полностью изменив принцип работы конфигурации в .NET/Core и решив множество проблем.

👉 Читайте подробнее о том, что именно изменилось и как это должно работать.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🤔2
🚀Самый быстрый способ запуска тестов в .NET: гайд по работе с Meziantou.Xunit.ParallelTestFramework от Ника Чапсаса.

📺Смотреть
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
Ловите записи докладов с 91-й встречи SpbDotNet:

🌐Станислав Сидристый (известный .NET-разработчик, автор онлайн-книги .NET Platform Architecture): «Реактивная сборка огромного проекта»

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

• В итоге удалось ускорить сборку с 400 машиноминут (20 агентов, 20 минут) до диапазона (30 сек, 1 мин 30 сек) в зависимости от количества изменений. Через что пришлось пройти, все неудачные варианты и результат — в докладе.

🌐Евгений Пешков (ранее разрабатывал JetBrains Rider, занимался инфраструктурой в Контуре): «Убийцы производительности»

• Одна из причин низкой производительности .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# в свою очередь повернулся в сторону открытого исходного кода и сообщества.
👍4311👏3
😎Михаил Жмайло, пентестер в команде МТС RED, делится опытом выполнения полезной нагрузки (payload) в памяти и показывает, насколько жизнь атакующих становится проще.

C# и System.Reflection.Assembly
C# и MemoryStream()
C#, память и неуправляемый код
Конвертация в JScript
Специальные лоадеры

👉Читать

#pentest #redteam
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Использование паттерна Outbox для надежного обмена сообщениями микросервисов: на заметку C#-разработчику

#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
2👍2❤‍🔥1
🚀 Тезисно об интересных функциях .NET 8, о которых стоит знать:

☑️Улучшения в 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
7👍2
💬 Вы пользуетесь ИИ-помощниками в ходе разработки?

🤔 Если да, то каким именно? Повысилась ли ваша производительность?

#холивар
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
🤔FromQuery, FromForm и другие: что делают атрибуты веб-API .NET

Существует много атрибутов From, включая FromQuery и FromForm, при добавлении параметра к экшену контроллера в ASP.NET Core Web API или MVC-приложении.

Но что делают эти атрибуты? И что более важно, как мы можем заставить их работать? David Grace рассматривает каждый из них и предоставляет примеры на C#.

👉Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
👍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 #матчасть
👍82
🧰Вышел крупный релиз проекта OpenSilver 2.0, который продолжает развитие платформы Silverlight и позволяет создавать интерактивные веб-приложения при помощи .NET, C#, VBNET и XAML.

🤔«OpenSilver 2.0 — это гигантский шаг вперед, гарантирующий дальнейшее процветание .NET и XAML в современной среде веб-разработки. Мы не просто возрождаем, но и превосходим дух Silverlight» (Giovanni Albani, CEO Userware).
Please open Telegram to view this post
VIEW IN TELEGRAM
10👍7