es
Feedback
C# (C Sharp) programming

C# (C Sharp) programming

Ir al canal en Telegram

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

Mostrar más

📈 Análisis del canal de Telegram C# (C Sharp) programming

El canal C# (C Sharp) programming (@csharp_ci) en el segmento lingüístico de Ruso es un actor destacado. Actualmente la comunidad reúne a 18 129 suscriptores, ocupando la posición 7 042 en la categoría Tecnologías y Aplicaciones y el puesto 36 294 en la región Rusia.

📊 Métricas de audiencia y dinámica

Desde su creación el невідомо, el proyecto ha mostrado un crecimiento acelerado, reuniendo a 18 129 suscriptores.

Según los últimos datos del 28 agosto, 2026, el canal mantiene una actividad estable. En los últimos 30 días la variación de miembros fue de -66, y en las últimas 24 horas de -1, conservando un alto alcance.

  • Estado de verificación: No verificado
  • Tasa de interacción (ER): El promedio de interacción de la audiencia es 15.26%. Durante las primeras 24 horas tras publicar, el contenido suele obtener 7.43% de reacciones respecto al total de suscriptores.
  • Alcance de las publicaciones: Cada publicación recibe en promedio 2 767 visualizaciones. En el primer día suele acumular 1 348 visualizaciones.
  • Reacciones e interacción: La audiencia responde de forma activa: el promedio de reacciones por publicación es 0.
  • Intereses temáticos: El contenido se centra en temas clave como .net, api, логика, архитектура, string.

📝 Descripción y política de contenido

El autor describe el recurso como un espacio para expresar opiniones subjetivas:
По всем вопросам- @notxxx1 Реестр РКН: https://clck.ru/3Fk3kb #VRHSZ

Gracias a la alta frecuencia de actualizaciones (últimos datos recibidos el 29 agosto, 2026), el canal mantiene la vigencia y un amplio alcance. La analítica demuestra que la audiencia interactúa activamente con el contenido, lo que lo convierte en un punto de referencia dentro de la categoría Tecnologías y Aplicaciones.

18 129
Suscriptores
-124 horas
+47 días
-6630 días
Archivo de publicaciones
💡 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

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