Библиотека шарписта | C#, F#, .NET, ASP.NET
21.5K subscribers
2.91K photos
46 videos
91 files
5.41K links
Все самое полезное для C#-разработчика в одном канале.

Наши курсы: https://clc.to/y3LDtw

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

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

РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead
Download Telegram
⚙️ Microsoft исправила уязвимость обработки Brotli в .NET

Microsoft выпустила внеплановое обновление .NET, которое закрывает переполнение буфера при распаковке Brotli. Ошибка позволяет читать или повреждать память процесса при обработке специально подготовленных данных.

Проверьте приложения, которые используют BrotliStream, распаковку входящих запросов ASP.NET Core или автоматическую распаковку ответов HttpClient.

Исправления вышли в .NET 8.0.33, 9.0.22, 10.0.14 и 11 RC3. Установленные среды выполнения можно посмотреть командой:

dotnet --list-runtimes


Дальше обновите приложение с учётом способа развёртывания: для framework-dependent установите новый runtime и перезапустите процесс, для self-contained пересоберите и опубликуйте приложение. Контейнеры пересоберите на обновлённых образах .NET.

➡️ Навигация: База знаний • Задачи • Собеседования • Вакансии

🐸 Библиотека программиста
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡ Только до 31 октября: покупайте один курс Proglib Academy и получайте второй в подарок!

Что можно освоить?

⏬ ИИ для разработчиков — применение ИИ на разных этапах разработки: от работы с кодом до тестирования, ревью и организации рабочего процесса.

⏬ Разработка ИИ-агентов — создание собственных агентов с памятью, интеграциями и доступом к внешним инструментам.


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

Можно выбрать эту пару или сочетать любые другие курсы из каталога — под свои интересы и цели.

🎁 Один курс оплачиваете, второй получаете бесплатно. Акция длится до 31 октября.

✨ Прокачать скиллы по акции
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
⚙️ dotnetup устанавливает и обновляет .NET без прав администратора

Microsoft представила dotnetup — менеджер SDK и сред выполнения .NET. Он хранит установки в папке пользователя, поддерживает несколько версий и учитывает закреплённый в проекте SDK через global.json.

После установки инструмента доступны три основные команды:

dotnetup init
dotnetup list
dotnetup update


Первая настраивает окружение и устанавливает актуальный стабильный SDK. Вторая показывает установленные компоненты. Третья обновляет версии в отслеживаемых каналах; точно закреплённые версии остаются на месте.

Инструмент пригодится, если вы ведёте несколько проектов с разными версиями .NET или регулярно проверяете предварительные сборки. Сейчас dotnetup доступен в public preview. Начать удобно с локального окружения macOS или Linux.

➡️ Навигация: База знаний • Задачи • Собеседования • Вакансии

🐸 Библиотека программиста
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤‍🔥1
🧠 Конструктор структуры может оставить fixed-буфер неинициализированным

При оптимизации кода ReSharper класс с массивом заменили на структуру со встроенным fixed-буфером. После этого расчёты начали давать неверный результат. Причиной оказался неинициализированный буфер.

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

Если ваш код рассчитывает на нули, очистите буфер в конструкторе:

fixed (uint* p = data)
{
new Span<uint>(p, maxLength).Clear();
}


Проверьте это при работе с unsafe, нативными библиотеками и собственными структурами для вычислений. На современных целевых платформах также можно рассмотреть InlineArray.

➡️ Навигация: База знаний • Задачи • Собеседования • Вакансии

🐸 Библиотека программиста
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👏1
🔔 Последние дни акции Proglib Academy! Покупаете один курс — второй получаете в подарок. Успейте до 31 октября.

Можно совместить два направления и прокачать навыки сразу в нескольких областях:

⬆️ ИИ для разработчиков — системная работа с ИИ на всех этапах разработки: от планирования задачи до написания кода, тестирования и ревью.

⬆️ Разработка ИИ-агентов — создание собственных агентов для работы с данными, API и внешними сервисами. В программе — RAG, MCP, LangGraph, n8n и тестирование агентов.

Первый курс поможет встроить ИИ в привычный процесс разработки, второй — перейти к созданию собственных интеллектуальных инструментов.

🎁 А если эти направления не совсем то, что нужно, можно выбрать любые две программы из каталога.

Осталось совсем немного времени — акция заканчивается 31 октября!

👉 Подобрать свою пару курсов
Please open Telegram to view this post
VIEW IN TELEGRAM
🧩 Passkey можно добавить вторым фактором после пароля в ASP.NET Core

Пользователь вводит пароль, затем подтверждает вход через Windows Hello, Touch ID или аппаратный ключ. В разборе на ASP.NET Core Identity показано, как добавить passkey вторым фактором после пароля в .NET 10.

Приложение сохраняет подтверждение парольного шага в отдельной короткоживущей cookie. Затем запрашивает passkey, проверяет подпись и сверяет пользователя с тем, кто ввёл пароль. После успешной проверки завершает вход.

Так можно добавить passkey в существующее приложение с паролями. Потребуются провайдер второго фактора, страница подтверждения и два обработчика: выдача параметров WebAuthn и проверка ответа.

Возьмите пример из статьи. Проверьте привязку обоих шагов к одному пользователю, срок действия cookie и CSRF-защиту обработчиков.

➡️ Навигация: База знаний • Задачи • Собеседования • Вакансии

🐸 Библиотека программиста
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ Тестам WinUI 3 нужен UI-диспетчер приложения

Тест создаёт UI-компонент, выполняет await и затем обращается к его свойствам. Чтобы такой сценарий работал, код должен продолжиться в UI-потоке приложения. Одной пометки STA для тестового потока недостаточно.

В руководстве по MSTest для UWP и WinUI 3 показана настройка с MSTest 4.5.1 и Microsoft.Testing.Platform 2.5.1. Атрибут [UITestMethod] позволяет выполнять тест с доступом к настоящему UI-диспетчеру.

При настройке CI проверьте модель приложения: для обычного WinUI-процесса и приложения в MSIX запуск устроен по-разному. На чистом агенте также должны быть нужные компоненты Windows App SDK и разрешения для регистрации пакета.

➡️ Навигация: База знаний • Задачи • Собеседования • Вакансии

🐸 Библиотека программиста
Please open Telegram to view this post
VIEW IN TELEGRAM
👀 Durable Task восстанавливает ход процесса после перезапуска воркера

Сервис создаёт окружение клиента: сеть, базу, хранилище. В середине работы воркер перезапускается. Теперь нужно выяснить, что уже создано и с какого шага продолжать.

Durable Task записывает историю оркестрации и результаты завершённых шагов. При восстановлении код оркестратора проходит по этой истории, использует сохранённые результаты и доходит до следующего действия. Так можно выразить ожидание согласования, внешний callback и таймер.

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

➡️ Навигация: База знаний • Задачи • Собеседования • Вакансии

🐸 Библиотека программиста
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔3❤2
👀 Анализаторы Blazor в .NET 11 находят лишние вызовы StateHasChanged

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

В ASP.NET Core для .NET 11 также добавлены проверки работы с состоянием аутентификации: ошибки здесь могут оставить интерфейс со старыми сведениями о пользователе. В обзоре изменений есть ссылки на реализации этих проверок.

Если уже тестируете .NET 11 RC, посмотрите новые предупреждения в своём проекте. Для них не требуется переходить на стороннюю библиотеку компонентов: анализаторы входят в инструменты самого фреймворка.

➡️ Навигация: База знаний • Задачи • Собеседования • Вакансии

🐸 Библиотека программиста
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
🖥 После перехода на Xcode 27 MAUI-приложению может понадобиться настройка UIScene

Приложение собирается, устанавливается на iPhone, показывает заставку и закрывается. Если в журнале есть сообщение UIScene life cycle is required for apps built with this SDK, нужно проверить жизненный цикл интерфейса.

В руководстве по миграции разобраны изменения для существующих MAUI-проектов. UIScene управляет окнами приложения и их переходами между активным и фоновым состояниями.

При обновлении сборочного окружения пройдите этот сценарий на устройстве: запуск, сворачивание, возврат и открытие приложения по ссылке.

➡️ Навигация: Вакансии • Задачи • Собеседования

🐸 Библиотека шарписта
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
🖥 Copilot SDK на C# позволяет подключить собственную модель

Приложению с ИИ-агентом нужны обработка запросов, вызовы инструментов и управление ходом работы. Copilot SDK предоставляет такую среду выполнения, а BYOK позволяет направить запросы в собственное развёртывание модели.

В примере на C# показана настройка подключения к Microsoft Foundry или Azure OpenAI.

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

➡️ Навигация: Вакансии • Задачи • Собеседования

🐸 Библиотека шарписта
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤1
🖥 JIT ускоряет виртуальные вызовы, когда узнаёт конкретный тип объекта

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

В разборе производительности .NET 11 показано, как этому помогают сведения, собранные во время выполнения. Для частого типа создаётся быстрый путь с проверкой.

Материал полезен при разборе горячих участков кода. Возьмите один пример, запустите его с DisassemblyDiagnoser и посмотрите, какие вызовы остались после оптимизации. Примеры используют предварительную версию .NET 11.

➡️ Навигация: Вакансии • Задачи • Собеседования

🐸 Библиотека шарписта
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 BenchmarkDotNet позволяет сравнить один код на двух версиях .NET

Перед обновлением runtime можно измерить важную операцию на текущей и новой версии. BenchmarkDotNet собирает тестовые приложения, выполняет измерения и выводит результаты рядом.

В примерах сравнения .NET 10 и .NET 11 проект настроен сразу на две платформы. Измерения запускают в Release.

Выберите операцию из своего приложения: сериализацию, обработку коллекции или вычисление. Подготовьте одинаковые входные данные и сравните время выполнения и выделение памяти. Для .NET 11 в материале используется предварительная сборка.

➡️ Навигация: Вакансии • Задачи • Собеседования

🐸 Библиотека шарписта
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥2👾1