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

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

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

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

РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead
Download Telegram
💡Сергей Тепляков напоминает, что KeyValuePair<TK,TV> не стоит использовать в качестве ключа хеш-таблиц, так как он не переопределяет методы Equals/HashCode.

Это может привести к снижению производительности в 100 раз, так как хеш-код KVP будет одинаковым, если ключ и значение совпадают. Почему?

Потому что по умолчанию для blittable структур хеш-код является просто операцией XOR (^) всех полей (смотрите третий скрин).

Большое время обработки вызвано коллизиями и последовательным поиском, а также огромными выделениями памяти, связанным с упаковкой каждого экземпляра для вызова метода Equals.

👉 Подробнее

#dotnet #csharp #performance #tip #benchmarks
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23🤔6😁1
🧰NuGetSolver — новый инструмент для разрешения конфликтов зависимостей NuGet в Visual Studio.

Инструмент эффективно устраняет следующие наиболее распространенные ошибки и предупреждения NuGet:

☑️ NU1107 – Unable to resolve dependency constraints between packages.
☑️ NU1202 – A dependency package doesn’t contain any assets compatible with the project.
☑️ NU1605 – A dependency package specified a version constraint on a higher version of a package than restore ultimately resolved.
☑️ NU1701 – PackageTargetFallback / AssetTargetFallback was used to select assets from a package.

👉 Анонс инструмента
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔13👍71
💡Обработка ошибок с помощью IExceptionHandler в ASP.NET Core 8.0

Антон Антонов, сеньор фуллстек-разработчик, рассматривает кейс реализации обработки ошибок с исполованием IExceptionHandler в .NET Core 8.0.

Этот подход следует похожим паттернам предыдущих методов обработки ошибок в ASP.NET Core, но добавляет дополнительную возможность внедрения кастомной логики обработки исключений в exception handling middleware.

📌 Exception handling middleware эффективно управляет несколькими ключевыми аспектами:

Он обрабатывает случаи, когда клиент закрывает запрос (499 Client Closed Request) или когда ответ уже начал отправляться.
Он также очищает контекст HTTP, устанавливает соответствующий HTTP-код, логирует ошибку и добавляет диагностику.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍181
💡Несмотря на то, что FirstOrDefault отлично подходит для запросов к базе данных, метод Find, специально разработанный для экземпляров List<T>, может предложить повышение производительности при работе со списками в памяти.

#dotnet #csharp #tip by Adem Sahin
Please open Telegram to view this post
VIEW IN TELEGRAM
35👍33🤔10
This media is not supported in your browser
VIEW IN TELEGRAM
🛠️ Interceptors

Новая статья в серии от JetBrains про возможности C# 12 и то, как ReSharper и Rider упрощают их внедрение в вашу кодовую базу.
👍5🌚2
Forwarded from Библиотека программиста | программирование, кодинг, разработка
🔤 Азбука SQL в примерах. Часть 3. Обрабатываем результаты и делаем сложные запросы

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

👉 Читать статью
👉 Часть 1
👉 Часть 2
😁26🤔2
Улучшения производительности JsonSerializer в .NET 8 на практике

#dotnet #csharp #benchmarks by Dave Callan
🔥28👍10💯1
💰⬆️ 10 факторов, влияющих на зарплату программиста

Узнайте 10 факторов, как превратиться из рядового программиста в высокооплачиваемого специалиста и научиться аргументированно запрашивать зарплату выше рынка.

Читать статью

#новость
👍6🙏1🥱1
🤔Помните у сообщества .NET в свое время «были вопросы» к разработчикам Microsoft, которые пишут официальные продукты компании вроде Teams, Outlook и т. д. с помощью сторонних языков и фреймворков.

Так вот, в новой веб-версии магазина приложений для Windows 10/11 под названием Microsoft Store команда перешла во фронтенде с React на Shoelace + Lit + Vite, а также перенесла серверную часть на ASP.NET.

Обновлённая веб-версия Microsoft Store разработана как замена существующему способу поиска приложений Windows в интернете, при котором ссылки с сайта открываются в клиенте Microsoft Store в Windows 10 или Windows 11.

💭В комментариях на Хабре пишут, что Vite + ASP.NET Core — отличная связка. Что думаете?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🥱2🤔1
💡Знаете ли вы, что можете использовать серверный GC в тестах?

1️⃣ Для .NET Core достаточно установить свойство MSBuild 'ServerGarbageCollection'.

2️⃣ Для .NET вам придется либо изменить app.config, либо использовать nuget-пакет MSTest, который делает тестовый проект исполняемым. В этом случае вы можете добавить app.config с включенным серверным GC.

Другие способы: установить переменную окружения COMPlus_gcServer или DOTNET_gcServer

#dotnet #csharp #tip by Сергей Тепляков
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18
Представьте, что вы оказались в сложной ситуации, и вам нужно принять решение. Какого сотрудника вы возьмете в команду?
Anonymous Poll
22%
С достойным портфолио и хард-скиллами, но неприятного в общении
52%
Легкого в общении и целеустремленного, но проседающего в технических навыках
26%
Посмотреть результаты
😁12💯1
🎤«Blazor: Frontend For Backend» — доклад Георгия Круглова из Ozon Tech на встрече SpbDotNet №93

📌 Из доклада вы узнаете о механизмах работы Blazor (Server и WebAssembly), возможностях Razor и библиотек компонентов для него.

📺 Смотреть
Please open Telegram to view this post
VIEW IN TELEGRAM
😁22👍3🥱2🔥1
🎙Свежий выпуск подкаста RadioDotNet про .NET Aspire, миграцию из Framework, чувствительные логи и многое другое

YouTube | Apple Подкасты | Google Подкасты | Яндекс Музыка

#подкасты
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
Свежие и обновленные статьи: подборка для C#-разработчика с Code Maze

🔸 Модификатор доступа к файлу в C#: какие проблемы решает и как использовать
🔸 Получение данных из MongoDB с использованием ObjectId в C#: логическое продолжение руководства «Начало работы с ASP.NET Core и MongoDB»
🔸 Отладка и профилирование многопоточных приложений .NET: обзор инструментов, доступных в Visual Studio
🔸 Как сериализовать объект в query string format в C#: проблемы, которые могут возникнуть при работе с вложенными объектами и массивами, и способы их решения
🔸 Service discovery в .NET: что это и как использовать
🔸 Как получить имена свойств JSON в C#: использование Newtonsoft.Json и System.Text.Json
🔸 Реализация кастомного Authorization Policy Provider с помощью ASP.NET Core: как получить и предоставить политику авторизации для определенного имени политики
🔸 Значения по умолчанию для лямбда-выражений в C#: обзор одного из многих улучшений, появившихся в C# 12
🔸 Управление точностью десятичных чисел в C#: от теории к практике
🔸 Как инициализировать параметры record в C#: простой гайд с примерами
🔸 Различия между NUnit, xUnit and MSTest: на заметку C#-разработчику
🔸 Архитектурный паттерн «клиент-сервер» на C#: как работает паттерн, его компоненты, преимущества и проблемы, которые он создает
🔸 Согласованное байтовое представление строк без явного указания кодировки: рабочий кейс для C#-разработчика
🔸 Как добавить или обновить значения строки запроса в C#: обзор различных способов решения задачи
🔸 Создание распределенных приложений с помощью .NET Aspire: использование нового стека на практике
🔸 Thread.Sleep vs. Task.Delay: сравнение двух часто используемых механизмов для введения задержек в коде
🔸 Как экранировать символ '\' в C#: обзор лучших практик
🔸 Как сохранить список в текстовый файл на C#: использование StreamWriter и File
🔸 Как проверить валидность строки в формате JSON на C#: практика работы с популярным форматом данных
🔸 Как откатить изменения в миграции EF Core: что делать, если накосячил
🔸 Как сравнить два списка по одному свойству в C#: обзор нескольких методов для понимания контекста
🔸 Как добавить custom claims к access токену в Duende Identity Server: практика работы с интерфейсом IProfileService
🔸 Как обрезать строку в .NET: сравнение различных методов с акцентом на производительность
🔸 Как получить значение свойства по имени в C#: использование рефлексии на практике
🔸 Самый быстрый способ преобразования JObject в словарь на C#: пример сценариев, в которых словарь является более подходящей структурой данных

#чтопроисходит
7👍6🥱2🥰1