Последние посты

C# 1001 notes
20 сент., 10:28
🧩 C# Channels: сообщение попало в очередь. Почему обработчик его не получил?Два воркера читают один ограниченный канал. Один из них отменяет ожидание. Продюсер успешно записывает сообщение — без исключений.using System.Threading.Channels;var queue = Channel.CreateBounded<int>( new BoundedChannelOptions(1) { FullMode = BoundedChannelFullMode.Wait });using var cts = new CancellationTokenSource();var firstRead = queue.Reader.ReadAsync().AsTask();var firstWorker = Task.Run(async () => { try {
C# 1001 notes
16 сент., 13:02
Эта задача проверяет понимание Memory<T>, pooling, ownership, IAsyncEnumerable, cancellation и одной из самых неприятных категорий ошибок высокопроизводительного C# — когда GC защищает объект от удаления, но не защищает вас от повторного использования его содержимого.1,150Открыть в Telegram
C# 1001 notes
16 сент., 13:02
# C# 14: хитрая задача на ArrayPool, IAsyncEnumerable и время жизни памятиЕсть поток данных, из которого нужно читать сообщения построчно без лишних аллокаций.Наивная реализация:static async IAsyncEnumerable<ReadOnlyMemory<byte>> ReadLinesAsync( Stream stream, [EnumeratorCancellation] CancellationToken cancellationToken = default) { byte[] buffer = ArrayPool<byte>.Shared.Rent(4096);try { while (true) { int read = await stream.ReadAsync(buffer, cancellationToken);if (read == 0) yield break;
C# 1001 notes
14 сент., 13:04
# C# 14: конкурентный кеш без race conditionРеализуйте потокобезопасный кеш:public sealed class AsyncCache<TKey, TValue> where TKey : notnull { public Task<TValue> GetOrCreateAsync( TKey key, Func<CancellationToken, Task<TValue>> factory, CancellationToken cancellationToken = default) { // TODO } }Условия: если 100 потоков одновременно запросят один key, factory должна выполниться только один раз. Остальные ждут тот же Task. Если вычисление завершилось ошибкой - запись удаляется из кеша. Отмена одного клиента не должна отменять работу для остальных. Глобальный lock использовать нельзя.Вопрос: как избежать race condition между созданием общего Task и удалением упавшего значения из кеша?1,030Открыть в Telegram
C# 1001 notes
14 сент., 10:58
🔍Тестовое собеседование с Senior C# разработчиком уже завтра15 сентября(уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle C# разработчика.Как это будет: 📂 Александр Моргунов, старший C# разработчик с опытом 7+ лет в Европейских высоконагруженных сервисах, будет задавать реальные вопросы и задачи разработчику-добровольцу 📂 Александр будет комментировать каждый ответ респондента, чтобы дать понять, чего от вас ожидает собеседующий на интервью 📂 В конце можно будет задать любой вопрос АлександруЭто бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для C# разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.Переходи в нашего бота, чтобы получить
1,040Открыть в Telegram
C# 1001 notes
11 сент., 10:13
🔧 Как передать многострочный PEM через Aspire в ASP.NET CoreСертификаты и ключи в PEM содержат переносы строк, которые могут создавать проблемы при передаче через параметры Aspire. Damien Bod показал обходной вариант для локальной разработки с User Secrets и развёртывания в Azure.Схема простая:закодировать PEM в однострочный Base64 сохранить значение в конфигурации AppHost под ключом Parameters:ИмяПараметра объявить приватный ключ через AddParameter(..., secret: true) передать параметр приложению через WithEnvironment в ASP.NET Core декодировать Base64 обратно в исходный PEMВ статье есть helper-класс для преобразования, настройка AppHost и пример создания сертификата через X509Certificate2.CreateFromPem.Base64 сохраняет переносы строк при передаче. Приватный ключ после кодирования остаётся секретом: Base64 не обеспечивает шифрование.https://damienbod.com/2026/09/01/using-mulSoftware EngineeringUsing multiline Parameters for Aspire and ASP.NET Core with user secrets and Azure default deploymentsMultiple line secrets or configuration do not work in Aspire per default. An example of this is using a PEM file for certificates. This posts shows how the multiple line configuration parameters ca…1,430Открыть в Telegram
C# 1001 notes
10 сент., 12:05
Согласны ?
1,520Открыть в Telegram
C# 1001 notes
9 сент., 12:40
⚡️ Задачи с технических собеседований в одном репозиторииTech-OA-Interview-Questions - подборка задач из онлайн-тестирований и интервью в технологических компаниях. Пригодится для подготовки к алгоритмическим этапам отбора.OA, или Online Assessment, - тестирование, которое кандидат обычно проходит перед собеседованиями. В репозитории собраны материалы для подготовки к таким заданиям, в том числе к отбору в Amazon.Можно использовать как список для практики: решать задачи с таймером, оценивать сложность решения и проверять граничные случаи.https://github.com/perixtar/Tech-OA-Interview-Questions1,600Открыть в Telegram
C# 1001 notes
7 сент., 15:15
переслано из @csharp_ci
✔️ Polly становится платной, но у .NET остаётся бесплатная альтернативаPolly много лет была одной из главных библиотек .NET для устойчивости к временным сбоям: retry, timeout, fallback, rate limiting и circuit breaker.Теперь Polly движется в сторону платной модели, но Microsoft.Resilience по-прежнему можно использовать бесплатно.С .NET 8 работа с resilience стала заметно проще: появился новый API Polly и официальные библиотеки Microsoft для построения resilience pipelines.Что можно настроить:- Retry - Fallback - Timeout - Rate limiting - Circuit breakerХороший разбор того, как собирать устойчивые cloud-приложения на современном .NET:https://milanjovanovic.tech/blog/building-resilient-cloud-applications-with-dotnet
1,390Открыть в Telegram
C# 1001 notes
7 сент., 13:15
.NET и Владимир: отличный повод совместить митап и выходные в городе с историейОфлайн-мероприятий для .NET-разработчиков сейчас не так много, а тут получается приятное комбо: встреча с другими разработчиками вечером в пятницу и возможность остаться на выходные в городе с историей.В программе доклады от разработчиков Altenar и Рови Тех (часть Т-Банка): — Async/await — асинхронность, которую можно читать. — Как не терять данные при асинхронной интеграции программных систем. — EF Core + PostgreSQL: за рамками CRUD.Кстати, ещё на митапе запланированы активности для программистов: адаптации известных игр ("Сапер", "Крестики-нолики", "Гонки"), где для победы понадобится понимание математики и вероятностей.Участие бесплатное, а ещё можно сэкономить на проезде — организаторы разыграют несколько билетов на "Ласточку" среди участников.Для участия в розыгрыше: 1. Зарегистрируйтесь на
1,470Открыть в Telegram
C# 1001 notes
5 сент., 10:15
Полноценный Lisp можно уместить всего в 99 строк C.Внутри при этом:- 21 примитив - REPL - сборщик мусора Cheney GC - числа с плавающей точкой - указатели - типы значенийИ всё это без struct-тегов, без внешних библиотек и без обычных динамических аллокаций для представления объектов.Главный трюк - NaN boxing.IEEE 754 оставляет много битов внутри специальных NaN-значений. Их можно использовать как скрытое хранилище:- часть битов кодирует тип - до 48 бит можно использовать под указатель - обычные double при этом остаются обычными числами

1,360Открыть в Telegram
C# 1001 notes
1 сент., 08:46
Вышел Aspire 13.5 - обновление с упором на интерфейс и удобство повседневной разработки.Что добавили:- обновлённый Dashboard и новый дизайн aspire.dev - фильтрацию логов и трассировок по тексту, времени и числам - более понятные ошибки health-check - загрузку файлов прямо через команды AppHost - окна прогресса с возможностью отмены - полноценный терминал прямо внутри Dashboard через WithTerminal() - поддержку persistent volumes для Kubernetes - работу с существующими Azure-ресурсами из других resource group, подписок и tenants - установку Aspire CLI через Homebrew, WinGet, npm, Nix, mise и NuGetОтдельно удобно, что теперь часть инфраструктурных настроек можно описывать прямо в AppHost на C# или TypeScript, без постоянного ухода в YAML.https://devblogs.microsoft.com/aspire/whats-new-aspire-13-5/
1,980Открыть в Telegram
C# 1001 notes
29 авг., 09:59
Как собрать production-ready CRUD на ASP.NET CoreTelerik разобрала не просто базовый CRUD, а структуру приложения, которую уже можно нормально развивать дальше.В примере используются:- ASP.NET Core Web API - Entity Framework Core - PostgreSQL - DTO - Service layer - Repository pattern - AutoMapper - FluentValidation - Swagger / OpenAPIОтдельный акцент сделан на разделении ответственности.Контроллеры не должны содержать бизнес-логику, работа с БД выносится отдельно, входные данные валидируются до выполнения операций, а DTO не дают напрямую светить наружу модели базы.
1,760Открыть в Telegram
C# 1001 notes
26 авг., 08:04
⚡ Race Conditions в ASP.NET Core - как они появляются и почему их сложно ловитьВ статье Assis Zang разбирается, что происходит, когда несколько запросов одновременно работают с общим состоянием и начинают вмешиваться друг в друга.Внутри:- откуда берутся race conditions - почему проблема может проявляться нестабильно - как воспроизвести конкурентный доступ - какие ошибки возникают при работе с shared state - как использовать синхронизацию и безопасные паттерны - почему потокобезопасность важна даже в обычном web APIПолезно для .NET-разработчиков, которые работают с многопоточностью, shared state и высоконагруженными ASP.NET Core-приложениями.https://telerik.com/blogs/understanding-race-conditions-aspnet-coreTelerik BlogsUnderstanding Race Conditions in ASP.NET CoreExplore the concept of race conditions in ASP.NET Core, understand how to identify them and learn strategies to protect applications against this type of issue.1,950Открыть в Telegram
C# 1001 notes
25 авг., 12:05
переслано из @ai_machinelearning_big_data
✔️ Hugging Face прощупывает интерес покупателейПлатформа для хостинга моделей и датасетов наняла банки, чтобы выяснить, готов ли кто-нибудь купить бизнес. Речь пока не о сделке - тестирование рынка может закончиться и новым раундом финансирования.По данным источников, сейчас компанию оценивают примерно в 1,3 млрд долларов, тогда как в 2023 году оценка доходила до 4,5 млрд, - за три года почти в три с половиной раза ниже.Наиболее вероятными покупателями называют нынешних инвесторов Hugging Face - Google, Amazon, Nvidia, Intel и Salesforce. bloomberg.com✔️ Alibaba запустила видеогенератор Wan3.0Модель собирает тридцатисекундные ролики из текстовых документов, таблиц, презентаций и веб-страниц. В новой версии лучше работают референсы и реконструкция реальных объектов, а базовая длина ролика выросла.Alibaba целится
C# 1001 notes
25 авг., 10:04
⚡️Актуальные темы .NET на DotNext 2026В .NET одновременно происходит много интересного: C# получает новые возможности, .NET 10 меняет расклад между Native AOT и JIT, а в разработке появляются ИИ-агенты, которые берут на себя часть инженерной работы. На DotNext 2026 разберем как вещи, которые происходят на уровне машинного кода, так и вполне прикладные вопросы архитектуры и разработки.📅 25–26 сентября, Москва + onlineВыбрали 8 тем из программы, среди которых не только доклады, но и хардкорный воркшоп, чтобы показать этот диапазон:— как заставить Transactional Outbox одновременно быть строгим и параллельным; — зачем ASP.NET Core модульный монолит и как собрать его без микросервисов; — где Native AOT выигрывает у JIT в .NET 10; — что происходит с циклами, inlining и bounds checks в C# и Go; — как меняется SDLC, когда в команде появляются ИИ-агенты; — что принесут discriminated


1,430Открыть в Telegram
C# 1001 notes
21 авг., 09:25
Rate Limiting и Throttling API в .NETВ ASP.NET Core есть встроенные механизмы, которые помогают защитить API от перегрузки и слишком частых запросов.Можно ограничивать трафик:— по IP — по пользователю — по endpoint — по фиксированному окну — через sliding window — token bucket — concurrency limiterЭто полезно не только против DDoS. Rate limiting помогает не дать одному клиенту забить весь сервис, защитить дорогие операции и стабилизировать нагрузку на БД и внешние API.В .NET это можно настроить прямо в middleware без сторонних библиотек.Хороший разбор с примерами: https://tundehub.dev/rate-limiting-and-throttling-apis-in-net
2,020Открыть в Telegram
C# 1001 notes
12 авг., 15:05
⚡️ C#-приём: не привязывай метаданные к объектам через обычный Dictionary — иногда нужен ConditionalWeakTable.Допустим, библиотека кеширует данные о типах:private static readonly Dictionary<Type, Metadata> Cache = new();В обычном приложении это может годами работать без проблем.Но если используются plugins, dynamic assemblies или unloadable AssemblyLoadContext, такой словарь способен удерживать Type, а вместе с ним — всю загруженную сборку.И получить memory leak.Для таких случаев в .NET есть малоизвестный:ConditionalWeakTable<TKey, TValue>Пример:private static readonly ConditionalWeakTable<Type, Metadata> Cache = new();2,190Открыть в Telegram
C# 1001 notes
8 авг., 10:50
🚀 C# 15 меняет подход к unsafe: указатели больше не означают автоматически опасный кодРаньше в C# сам факт использования указателя требовал:unsafe { int ptr; }Теперь язык движется к более точной модели:опасным считается не наличие указателя, а операция, которая реально работает с unmanaged-памятью.В preview-версии C# 15 уже не требуют unsafe:✅ объявление pointer-типа ✅ получение адреса через & ✅ fixed для закрепления памяти ✅ преобразование stackalloc в указатель ✅ sizeof для unmanaged-типов2,020Открыть в Telegram
C# 1001 notes
3 авг., 13:16
🔥 EF Core migrations - это компилятор схемы базы, а не кнопка «создать таблицу»Опытный C#-разработчик не оставляет бизнес-инварианты только внутри SaveChangesAsync().Проверку в приложении можно обойти прямым SQL, импортом данных, фоновым процессом или второй версией сервиса. Поэтому правила, нарушение которых делает данные некорректными, стоит закреплять в самой базе.public sealed class ProductConfiguration : IEntityTypeConfiguration<Product> { public void Configure(EntityTypeBuilder<Product> builder) { builder.ToTable("Products", table => { table.HasCheckConstraint( "CK_Products_Price_Range", "[Price] > 0 AND [Price] <= 10000000"); });builder.Property(x => x.Name) .HasMaxLength(200)2,110Открыть в Telegram
