uz
Feedback
C# (C Sharp) programming

C# (C Sharp) programming

Kanalga Telegram’da o‘tish

По всем вопросам- @notxxx1 Реестр РКН: https://clck.ru/3Fk3kb #VRHSZ

Ko'proq ko'rsatish

📈 Telegram kanali C# (C Sharp) programming analitikasi

C# (C Sharp) programming (@csharp_ci) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 18 127 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 7 041-o'rinni va Rossiya mintaqasida 36 302-o'rinni egallagan.

📊 Auditoriya ko‘rsatkichlari va dinamika

невідомо sanasidan buyon loyiha tez o‘sib, 18 127 obunachiga ega bo‘ldi.

29 Avgust, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni -78 ga, so‘nggi 24 soatda esa -7 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.

  • Tasdiqlash holati: Tasdiqlanmagan
  • Jalb etish (ER): Auditoriya o‘rtacha 15.03% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 7.44% ini tashkil etuvchi reaksiyalarni to‘playdi.
  • Post qamrovi: Har bir post o‘rtacha 2 725 marta ko‘riladi; birinchi sutkada odatda 1 348 ta ko‘rish yig‘iladi.
  • Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 0 ta reaksiya keladi.
  • Tematik yo‘nalishlar: Kontent .net, api, логика, архитектура, string kabi asosiy mavzularga jamlangan.

📝 Tavsif va kontent siyosati

Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi:
По всем вопросам- @notxxx1 Реестр РКН: https://clck.ru/3Fk3kb #VRHSZ

Yuqori yangilanish chastotasi (oxirgi ma’lumot 30 Avgust, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli bo‘lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini ko‘rsatadi.

18 127
Obunachilar
-724 soatlar
-157 kunlar
-7830 kunlar
Postlar arxiv
💡 Soft delete в EF Core без лишней логики в сервисах Удалять данные физически — не всегда хорошая идея. Логи, аудит, восстан
💡 Soft delete в EF Core без лишней логики в сервисах Удалять данные физически — не всегда хорошая идея. Логи, аудит, восстановление, аналитика — всё это требует soft delete. Вот удобный способ реализовать его через EF Core interceptor. Что делает перехватчик: - Проверяет ChangeTracker на сущности с интерфейсом ISoftDeletable - Если состояние сущности — Deleted - Меняет его на Modified - Устанавливает: - IsDeleted = true - DeletedOnUtc = DateTime.UtcNow В итоге: Вы вызываете обычный:

context.Remove(entity);
А в базе: - запись не удаляется - просто помечается как удалённая Плюсы подхода: - никакой логики soft delete в сервисах и репозиториях - единая точка обработки - чистый доменный код - безопасное удаление по всему приложению Важно: Если у вас есть связанные сущности (navigation properties), перехватчик нужно дополнительно расширить — каскадное soft-удаление EF Core не делает автоматически. Soft delete через interceptor — это один из самых чистых production-подходов для EF Core. #dotnet #EFCore #Backend #Architecture #CSharp

🖥 Асинхронщина ломает интеграционные тесты? Есть простой паттерн Проблема: Вы отправляете событие в одном модуле… И начинает
🖥 Асинхронщина ломает интеграционные тесты? Есть простой паттерн Проблема: Вы отправляете событие в одном модуле… И начинаете ждать. Если используете Thread.Sleep — готовьтесь к: - медленным тестам - flaky-падениям - ненависти от CI/CD Решение — Retry Assertion (Polling) Как работает паттерн: 1. Выполняем команду (Module A) 2. Периодически опрашиваем состояние (Module B) 3. Ждём, пока результат появится 4. Делаем assert Схема: - Execute Command (Module A) - Poll Query (Module B) until result != null - Assert Почему это лучше: - Нет случайных падений - Тесты работают быстрее - Полностью детерминированное поведение - Отлично подходит для async, событий и modular monolith Главная идея: Не жди фиксированное время — жди состояние. Такой подход превращает нестабильные интеграционные тесты в надёжные и быстрые.

Динамическая строка подключения в EF Core - когда и зачем это нужно Факт В EF Core можно задать connection string динамически
Динамическая строка подключения в EF Core - когда и зачем это нужно Факт В EF Core можно задать connection string динамически при регистрации DbContext. Для этого используется делегат, который выполняется в момент получения контекста из DI. Как это работает При регистрации DbContext вы передаёте функцию, которая получает IServiceProvider. Внутри неё можно: - получить любой сервис - определить текущего пользователя или tenant - выбрать нужную базу данных - и только после этого установить строку подключения Пример

builder.Services.AddDbContext<OrdersDbContext>((sp, o) =>
{
    var tenantProvider = sp.GetRequiredService<TenantProvider>();
    var connectionString = tenantProvider.GetConnectionString();

    o.UseSqlServer(connectionString);
});
Dynamic DbContext configuration - ключевой паттерн для масштабируемых multi-tenant систем. Если приложение растёт и базы начинают разделяться по клиентам или регионам, этот подход становится стандартом архитектуры.

⚡️ Async-коммуникация ломает интеграционные тесты. Вы отправляете событие в одном модуле… и что дальше? Ждать? Если используе
⚡️ Async-коммуникация ломает интеграционные тесты. Вы отправляете событие в одном модуле… и что дальше? Ждать? Если используете Thread.Sleep — готовьтесь к: - медленным тестам - flaky-поведению - падениям в CI/CD Решение — не ждать. Опрос (Polling). Я использую паттерн Retry Assertion для тестирования асинхронного взаимодействия между модулями: Как это работает: 1. Выполняем команду (Модуль A) 2. Периодически выполняем запрос (Модуль B) 3. Ждём, пока результат появится 4. Делаем assert Пример:

var userId = await Sender.Send(new RegisterUserCommand(...));

var result = await Poller.WaitAsync(
    TimeSpan.FromSeconds(15),
    async () =>
    {
        return await Sender.Send(new GetCustomerQuery(userId));
    });

result.Should().NotBeNull();
result.IsSuccess.Should().BeTrue();

⚡️ КАСТОМИЗАЦИЯ ИСТОРИИ МИГРАЦИЙ В ENTITY FRAMEWORK В Entity Framework можно гибко настроить таблицу истории миграций и это п
⚡️ КАСТОМИЗАЦИЯ ИСТОРИИ МИГРАЦИЙ В ENTITY FRAMEWORK В Entity Framework можно гибко настроить таблицу истории миграций и это полезно в реальных проектах. По умолчанию EF создаёт таблицу __EFMigrationsHistory в стандартной схеме (dbo). Но часто требуется: - вынести её в отдельную схему - изменить имя таблицы - разделить миграции между модулями - привести структуру БД к корпоративным стандартам Это можно сделать прямо при настройке DbContext через метод MigrationsHistoryTable.


services.AddDbContext<AppDbContext>(options =>
    options.UseSqlServer(
        connectionString,
        sqlOptions =>
        {
            sqlOptions.MigrationsHistoryTable(
                tableName: "MigrationHistory",
                schema: "infrastructure"
            );
        }));


// Теперь EF будет хранить историю миграций в:
// infrastructure.MigrationHistory

Что выведет на экран этот код?
Anonymous voting

#ПятичныйКвиз
#ПятичныйКвиз

✔️ Unity обещает создание игр через текстовые команды. CEO Unity Мэтт Бромберг определил "AI-driven authoring" как приоритетн
✔️ Unity обещает создание игр через текстовые команды. CEO Unity Мэтт Бромберг определил "AI-driven authoring" как приоритетное направление развития компании на 2026 год. Компания готовит инструмент, который сможет собирать казуальные игры с нуля, используя только естественный язык. Бета-версию Unity AI покажут на GDC в марте 2026 года. Технология будет работать нативно внутри платформы, Unity возьмет топовые внешние модели и доучит их понимать контекст движка. В компании уверены, что такой подход даст результат лучше, чем попытки заставить универсальные LLM писать сложный игровой код. Цель - окончательная демократизация геймдева, порог входа в который, похоже, скоро исчезнет совсем. wccftech.com

⚡️ Guard Clauses в .NET: проверяй ошибки одной строкой Хочешь упростить код и избавиться от вложенных if? Используй guard cla
⚡️ Guard Clauses в .NET: проверяй ошибки одной строкой Хочешь упростить код и избавиться от вложенных if? Используй guard clauses — быстрые проверки входных данных в самом начале метода. Вместо длинной логики и вложенности ты сразу останавливаешь выполнение, если данные некорректны. Код становится чище, короче и легче для чтения. В новых версиях .NET появилось много встроенных проверок: .NET 6: - ArgumentNullException.ThrowIfNull .NET 7: - ArgumentException.ThrowIfNullOrEmpty .NET 8: - ThrowIfNullOrWhiteSpace - ThrowIfNullOrEmpty (для коллекций) - ThrowIfZero - ThrowIfNegative - ThrowIfGreaterThan Когда это особенно полезно: - в сервисах и API для валидации входных данных - в доменных моделях — чтобы не допустить невалидного состояния - в конструкторах и фабриках Главная мысль: Guard clauses — это не про «больше проверок», а про ранний отказ и чистую архитектуру.

public class Order
{
    public Order(string customerName, decimal amount)
    {
        ArgumentException.ThrowIfNullOrWhiteSpace(customerName);
        ArgumentOutOfRangeException.ThrowIfNegativeOrZero(amount);

        CustomerName = customerName;
        Amount = amount;
    }

    public string CustomerName { get; }
    public decimal Amount { get; }
}

🔥На Stepik вышел курс: Linux: полный апгрейд твоих скиллов Хочешь реально понимать, что происходит под капотом твоей системы
🔥На Stepik вышел курс: Linux: полный апгрейд твоих скиллов Хочешь реально понимать, что происходит под капотом твоей системы, а не просто кликать по GUI? Без глубокого знания базы ты не инженер - ты просто пользователь. 🔹 В курсе ты: - Освоишь bash, grep, sed, awk - инструменты, которыми живут админы. - Разберёшь права, процессы, сеть, файловую систему и научишься чинить всё, что падает. - Настроишь SSH, firewall, systemd, crontab, демоны и автозапуск. - Научишься анализировать логи, следить за нагрузкой, и не паниковать при 100% CPU. 💡 Формат: пошаговое объяснение базы и разбор важных практик по работе с Linux. 🎯 После курса ты: будешь чувствовать Linux как родную среду и забудешь, что такое “permission denied”. 🚀 24 часа действует скидка 30% 👉 Учиться со скидкой

Что выведет на экран этот код?
Anonymous voting

#ПятничныйКвиз #ДляСамыхМаленьких
#ПятничныйКвиз #ДляСамыхМаленьких

⚡️ КАК СДЕЛАТЬ ИНТЕГРАЦИИ БЕЗ ПОТЕРИ ДАННЫХ Вы регистрируете пользователя и сразу вызываете внешние сервисы: - сохраняете пол
⚡️ КАК СДЕЛАТЬ ИНТЕГРАЦИИ БЕЗ ПОТЕРИ ДАННЫХ Вы регистрируете пользователя и сразу вызываете внешние сервисы: - сохраняете пользователя в БД - отправляете welcome-email - публикуете событие в event bus

public async Task RegisterUserAsync(User user, CancellationToken token)
{
    _userRepository.Insert(user);

    await _unitOfWork.SaveChangesAsync(token);

    await _emailService.SendWelcomeEmailAsync(user, token);
    await _eventBus.PublishAsync(new UserRegisteredEvent(user.Id), token);
}
Вопрос Что здесь может пойти не так? Проблемы — Пользователь сохранён, но email не отправился — Email отправился, но событие не опубликовалось — Событие ушло, а транзакция в БД откатилась — При ретраях возможны дубли Чем больше внешних вызовов, тем больше точек отказа и сложнее обработка ошибок. Решение — Outbox Pattern Сохраняем пользователя и событие в одной атомарной транзакции:

public async Task RegisterUserAsync(User user, CancellationToken token)
{
    _userRepository.Insert(user);

    _outbox.Insert(new UserRegisteredEvent(user.Id));

    await _unitOfWork.SaveChangesAsync(token);
}
Дальше отдельный процесс: • читает сообщения из Outbox • отправляет email • публикует события • помечает как обработанные Результат — Нет рассинхронизации между БД и внешними сервисами — Гарантированная доставка событий — Возможность безопасных повторов — Простая и надёжная архитектура для распределённых систем

🚀 Научитесь создавать AI-проекты и зарабатывать на них 🦾🦾 Сегодня ценится не умение «пользоваться ChatGPT», а навык проектировать и запускать полноценные AI-решения под реальные задачи бизнеса 🤖 Университет искусственного интеллекта - один из самых крупных образовательных проектов в сфере AI: 7 лет на рынке, более 11 000 студентов, практические программы и стажировки в реальных компаниях 🔥🔥 Сейчас открыт доступ к презентации программы GPT Engineer - обучения, где показывают путь от базы до разработки AI-приложений и сервисов Что вы узнаете из презентации: 🔹 Программа курса по занятиям 🔹 Необходимый уровень для поступления 🔹 Тарифы и цены 🔹 Описание формата практики на стажировках 🔹 Обзор процесса трудоустройства 🔹 Разбор программы поддержки студентов 👉 Если планируете развиваться в сфере искусственного интеллекта или хотите перейти в новую востребованную профессию - обязательно посмотрите презентацию

⚡ Лучший конфиг HttpClient тот, который ты не повторяешь в каждом сервисе. В .NET всё настраивается один раз через IHttpClien
Лучший конфиг HttpClient тот, который ты не повторяешь в каждом сервисе. В .NET всё настраивается один раз через IHttpClientFactory (и Aspire, если используешь его): • Service discovery для service-to-service вызовов • Встроенная устойчивость к сбоям (retry, handling transient errors) После этого ты просто инжектишь клиент и пишешь бизнес-логику — без ручной магии с сокетами, таймаутами и DNS. Чистый код. Меньше багов. Больше фокуса на логике. Полный разбор

👨‍💻 Ручная сборка, деплой по инструкции в Confluence и ночные правки на сервере — частая реальность ASP.NET-проектов. Пока система доставки не автоматизирована, скорость разработки и стабильность всегда под угрозой. На открытом уроке разберём, как выстроить рабочий pipeline от коммита до деплоя. Покажем типовую цепочку: сборка, тесты, упаковка в Docker-образ, публикация в реестр и автоматическое развертывание. ❗️ Вы увидите CI/CD не как абстрактную DevOps-теорию, а как воспроизводимый процесс, который можно применить в собственном проекте. Это фундамент для перехода к микросервисам и контейнерной инфраструктуре без лишней сложности. 🗓 Встречаемся 11 февраля в 20:00 МСК в преддверии старта курса «C# ASP.NET Core-разработчик». ➡️ Регистрация открыта: https://tglink.io/3e020aa35caaf6?erid=2W5zFGkbWek Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru #реклама О рекламодателе

Если вы думаете, что EF Core «медленный» в 2026 — вы просто живёте в прошлом. Одна из мощных современных фич — bulk-операции,
Если вы думаете, что EF Core «медленный» в 2026 — вы просто живёте в прошлом. Одна из мощных современных фич — bulk-операции, в том числе массовое удаление. Теперь можно удалить любое количество записей одним запросом к базе. Пример: e-commerce платформа хочет удалить все корзины, созданные более года назад. Раньше это выглядело так: загрузили сущности в память, RemoveRange, SaveChanges — лишние аллокации, трафик и нагрузка. Теперь достаточно:

context.Carts
    .Where(o => o.CreatedOn < DateTime.Now.AddYears(-1))
    .ExecuteDelete();
В результате выполняется один SQL DELETE, который напрямую удаляет старые записи в базе — быстро и без промежуточных объектов в памяти. ⚠️ Важно: bulk-операции обходят change tracker EF. Если в контексте уже есть отслеживаемые сущности, состояние может рассинхронизироваться — учитывайте это в логике. EF Core давно уже не просто ORM, а полноценный инструмент для высоконагруженных систем. И у него есть ещё много фич, которые серьёзно упрощают жизнь разработчику. Подробнее

🔥 Полезная подборка каналов только код, практика и самые передовые инструменты, которые используют разработчики прямо сейчас
🔥 Полезная подборка каналов только код, практика и самые передовые инструменты, которые используют разработчики прямо сейчас.👇 🖥 ИИ: t.me/ai_machinelearning_big_data 🖥 Python: t.me/pythonl 🖥 Linux: t.me/linuxacademiya 🖥 C++ t.me/cpluspluc 🖥 Docker: t.me/DevopsDocker 🖥 Хакинг: t.me/linuxkalii 🖥 Devops: t.me/DevOPSitsec 👣 Golang: t.me/Golang_google 🖥 Аналитика: t.me/data_analysis_ml 🖥 Javascript: t.me/javascriptv 🖥 C#: t.me/csharp_ci 🖥 Java: t.me/javatg 🖥 Базы данных: t.me/sqlhub 👣 Rust: t.me/rust_code 🤖 Технологии: t.me/vistehno 💰 Экономика и инвестиции в ИИ t.me/financeStable 💼 Актуальные вакансии: t.me/addlist/_zyy_jQ_QUsyM2Vi 🖥 Chatgpt бот в тг: t.me/Chatgpturbobot 📚 Бесплатные ит-книги: https://t.me/addlist/HwywK4fErd8wYzQy 🖥Подборка по Golang: https://t.me/addlist/MUtJEeJSxeY2YTFi ⚡️ Лучшие ИИ ресурсы: https://t.me/addlist/2Ls-snqEeytkMDgy Самое лучшее в этом: ты учишься даже тогда, когда “нет времени, просто потому что читаешь правильную ленту.

Что выведет на экран это код
Anonymous voting

#ПятничныйКвиз
#ПятничныйКвиз