en
Feedback

Don't get caught by a cheater! Telemetrio finds and tags such channels 👉 If you want to see the tag, subscribe

C# (C Sharp) programming

C# (C Sharp) programming

Open in Telegram

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

Show more

📈 Analytical overview of Telegram channel C# (C Sharp) programming

Channel C# (C Sharp) programming (@csharp_ci) in the Russian language segment is an active participant. Currently, the community unites 18 039 subscribers, ranking 7 244 in the Technologies & Applications category and 36 510 in the Russia region.

📊 Audience metrics and dynamics

Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 18 039 subscribers.

According to the latest data from 28 October, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by -51 over the last 30 days and by -11 over the last 24 hours, overall reach remains high.

  • Verification status: Not verified
  • Engagement rate (ER): The average audience engagement rate is 15.68%. Within the first 24 hours after publication, content typically collects 8.24% reactions from the total number of subscribers.
  • Post reach: On average, each post receives 2 828 views. Within the first day, a publication typically gains 1 486 views.
  • Reactions and interaction: The audience actively supports content: the average number of reactions per post is 0.
  • Thematic interests: Content is focused on key topics such as .net, api, логика, архитектура, string.

📝 Description and content policy

The author describes the resource as a platform for expressing subjective opinions:
“По всем вопросам- @notxxx1 Реестр РКН: https://clck.ru/3Fk3kb #VRHSZ”

Thanks to the high frequency of updates (latest data received on 29 October, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.

18 039
Subscribers
-1124 hours
-327 days
-5130 days
Posts Archive
💡 В EF Core есть штука, о которой многие забывают: CompileAsyncQuery. С её помощью можно заранее скомпилировать LINQ-запрос,
💡 В EF Core есть штука, о которой многие забывают: CompileAsyncQuery. С её помощью можно заранее скомпилировать LINQ-запрос,а потом выполнять его асинхронно: быстрее и без лишнего overhead’а. И важный еще момент: вам не нужно писать отдельную “async-версию” самого LINQ-запроса. EF сам оборачивает выполнение в асинхронный пайплайн. Немного странно, но работает. Пример:

private static Func<AppDbContext, string, Task<Newsletter?>> GetByTitle =
    EF.CompileAsyncQuery(
        (AppDbContext context, string title) =>
            context.Set<Newsletter>()
                   .FirstOrDefault(c => c.Title == title)
    );

public async Task<Newsletter?> GetNewsletterByTitleAsync(string title)
{
    return await GetByTitle(this, title);
}
Что получаем: • повторные запросы выполняются быстрее • нет лишней компиляции выражений • async-подход сохраняется Если в проекте есть часто вызываемые запросы - Compiled Queries могут дать хороший прирост производительности, особенно под нагрузкой.

В какой строке возникнет первое исключение?
Anonymous voting

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

🔍 Как делать code review, которые находят реальные баги, а не только придираются к стилю Большинство code review застревают
🔍 Как делать code review, которые находят реальные баги, а не только придираются к стилю Большинство code review застревают на форматировании, нейминге и мелочах. В итоге реальные проблемы - логические ошибки, гонки, неправильные инварианты - проходят мимо. Идея правильного code review: — Проверять поведение кода, а не его внешний вид — Искать сценарии отказа, а не соответствие линтеру — Думать как система, а не как форматтер Что реально стоит смотреть на ревью: • Граничные случаи и ошибки в бизнес-логике • Null / empty сценарии и некорректные состояния • Побочные эффекты и порядок операций • Работа с асинхронностью, транзакциями и ресурсами • Соответствие инвариантам доменной модели Инструменты с AI-ассистентами для code review помогают сместить фокус: — меньше шума про стиль — больше внимания к логике и потенциальным багам — автоматические подсказки прямо в PR Хороший code review — это не «код красивый», а «код не сломается в проде».

Интеграционные тесты прямо в CI/CD - максимум уверенности в коде 🚀 Я запускаю интеграционные тесты прямо внутри CI/CD пайпла
Интеграционные тесты прямо в CI/CD - максимум уверенности в коде 🚀 Я запускаю интеграционные тесты прямо внутри CI/CD пайплайна. Так я проверяю не абстракции и моки, а реальное поведение системы. Всё это возможно благодаря: - Docker - Testcontainers Идея простая: ты поднимаешь реальные внешние сервисы как контейнеры и используешь их прямо в тестах. В примере поднимаются: - PostgreSQL - Redis - Keycloak Контейнеры: - автоматически стартуют перед тестами - доступны из кода приложения - уничтожаются после выполнения тестов Почему это работает лучше моков: - тесты максимально близки к продакшену - одинаковое поведение локально и в CI - сразу ловятся проблемы с конфигурацией, миграциями, auth - меньше сюрпризов после деплоя Особенно полезно для: - backend-сервисов - микросервисной архитектуры - систем с авторизацией и внешними зависимостями - .NET-приложений с серьёзной бизнес-логикой Если хочешь вывести интеграционное тестирование в .NET на новый уровень — Testcontainers стоит попробовать обязательно. #dotnet, #testing

⚡️ В мире #dotnet есть куда больше вариантов для messaging, чем RabbitMQ и Kafka. И для real-time систем эти инструменты част
⚡️ В мире #dotnet есть куда больше вариантов для messaging, чем RabbitMQ и Kafka. И для real-time систем эти инструменты часто избыточны. Большинство брокеров сообщений заточены под надёжность, сложную маршрутизацию и enterprise-сценарии. Это отлично, когда нужны гарантии доставки и сложные пайплайны. Но если система живёт на частых событиях, минимальной задержке и мгновенной реакции, этот вес начинает мешать. Здесь идеально заходит NATS. NATS - лёгкая и сверхбыстрая система обмена сообщениями, спроектированная именно для real-time: - минимальная латентность - простая модель - высокая масштабируемость Отлично подходит для: - телеметрии и sensor data - live-обновлений - edge-систем - сценариев, где важно «сейчас», а не «через секунду» В статье подробно разобрано: - когда NATS имеет смысл (а когда нет) - сравнение с RabbitMQ и Kafka - использование NATS в .NET с понятными примерами кода - Pub/Sub, queue groups и request–reply https://thecodeman.net/posts/introduction-to-nats-real-time-messaging

3 простые оптимизации, которые реально ускоряют код 1️⃣ Забирай данные пачкой Меньше запросов — меньше сетевых задержек. Вмес
3 простые оптимизации, которые реально ускоряют код 1️⃣ Забирай данные пачкой Меньше запросов — меньше сетевых задержек. Вместо десятков запросов — один IN (...). 2️⃣ Делай больше параллельно Если задачи не зависят друг от друга — выполняй их одновременно. Асинхронность часто даёт бесплатный прирост скорости. 3️⃣ Кэшируй результаты Если данные не меняются — не пересчитывай и не запрашивай их заново. Память дешевле времени. Никакой магии и сложных алгоритмов — просто базовые приёмы, которые в реальных проектах дают самый заметный эффект.

🚦 Feature Flags в .NET - как управлять релизами без redeploy Feature flags (фиче-флаги) позволяют включать и выключать функц
🚦 Feature Flags в .NET - как управлять релизами без redeploy Feature flags (фиче-флаги) позволяют включать и выключать функциональность на лету, без повторного деплоя и риска для продакшена. Идея простая: код задеплоен → поведение управляется конфигурацией. Что это даёт на практике: — Постепенные релизы Можно включить новую фичу сначала для 1%, 10% или конкретной группы пользователей. — Быстрый rollback Если что-то пошло не так — просто выключаете флаг. Без откатов и срочных хотфиксов. — A/B тесты Разные пользователи получают разное поведение одного и того же кода. — Targeting пользователей Фичи можно включать: • по user id • по роли • по региону • по environment (dev / staging / prod) — Меньше фиче-веток Код живёт в main, а не за флагами в git. В .NET обычно используют: - Microsoft.FeatureManagement - Azure App Configuration - LaunchDarkly / Unleash / ConfigCat Где это особенно полезно: - публичные API - high-traffic сервисы - SaaS-продукты - экспериментальные и рискованные фичи Коротко: Feature flags превращают релиз из «одного опасного момента» в управляемый процесс. Это один из самых мощных инструментов для зрелой backend-архитектуры. 👉 Подробнее

🔍 Как делать code review, которые находят реальные баги, а не только придираются к стилю Большинство code review застревают
🔍 Как делать code review, которые находят реальные баги, а не только придираются к стилю Большинство code review застревают на форматировании, нейминге и мелочах. В итоге реальные проблемы - логические ошибки, гонки, неправильные инварианты - проходят мимо. Идея правильного code review: — Проверять поведение кода, а не его внешний вид — Искать сценарии отказа, а не соответствие линтеру — Думать как система, а не как форматтер Что реально стоит смотреть на ревью: • Граничные случаи и ошибки в бизнес-логике • Null / empty сценарии и некорректные состояния • Побочные эффекты и порядок операций • Работа с асинхронностью, транзакциями и ресурсами • Соответствие инвариантам доменной модели Инструменты с AI-ассистентами для code review помогают сместить фокус: — меньше шума про стиль — больше внимания к логике и потенциальным багам — автоматические подсказки прямо в PR Хороший code review — это не «код красивый», а «код не сломается в проде».

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

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

🔍 Инструмент для перехвата сессий в C# SessionHop — это утилита на C#, использующая COM-объект IHxHelpPaneServer для перехвата пользовательских сессий. С помощью создания "сессионного моникера" и интерфейса Execute можно запускать произвольные файлы в контексте другой сессии, что полезно для таких задач, как кейлоггинг или скриншоты. 🚀Основные моменты: - Перехват сессий пользователей с помощью COM-объекта. - Запуск файлов в контексте другой сессии. - Альтернатива удаленному инжектированию процессов. - Полезен для доступа к ресурсам как затронутый пользователь. 📌 GitHub: https://github.com/3lp4tr0n/SessionHop #csharp

👨‍💻Задачи точного покрытия — фундамент для многих алгоритмических подходов. Но пока теория лежит на полке, она мало что мен
👨‍💻Задачи точного покрытия — фундамент для многих алгоритмических подходов. Но пока теория лежит на полке, она мало что меняет в вашем инженерном мышлении На открытом уроке мы разберем Dancing Links через практику: соберем пентамино на столе, представим фигуры в виде строк матрицы и разберемся, как работает поиск с возвратом. Когда алгоритм становится наглядным, вы начинаете понимать, что на самом деле происходит внутри. Если вы хотите развивать алгоритмическое мышление, системно улучшать свои решения и уверенно чувствовать себя в задачах уровня middle+, такие разборы — обязательная часть роста. 📆 Встречаемся 22 декабря в 20:00 МСК в преддверие старта курса «Алгоритмы и структуры данных», регистрация открыта: https://tglink.io/3be365254757?erid=2W5zFHNTeic Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

⚡️ Синтаксическое сжатие строк даёт больше вертикального пространства в редакторе. Строки без букв и цифр сжимаются на 25%, б
⚡️ Синтаксическое сжатие строк даёт больше вертикального пространства в редакторе. Строки без букв и цифр сжимаются на 25%, благодаря чему на экране помещается больше кода без потери читаемости. Скоро в Visual Studio.

🔥 Открытый урок «Основы работы с Telegram API». 🗓 25 декабря в 20:00 МСК 🆓 Бесплатно. Урок в рамках старта курса «C# Devel
🔥 Открытый урок «Основы работы с Telegram API». 🗓 25 декабря в 20:00 МСК 🆓 Бесплатно. Урок в рамках старта курса «C# Developer». На вебинаре: ✔️ Рассмотрим общие вопросы посвященные работе c API, WEB API . ✔️ Более подробно познакомимся с работой Telegram API , позволяющей создавать ботов для Telegram. Кому будет полезно: - Для начинающих разработчиков, которые хотят создать своего первого бота для Telegram. Что вы получите: К концу занятия мы получим необходимые знания и умения для написания консольного приложения работающего с Telegram API, создадим Telegram бота. 🔗 Ссылка на регистрацию: https://otus.pw/ZC0M/?erid=2W5zFGtDrat Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

Многим C#-разработчикам знакома боль: в проекте хаос из имён классов, обработчиков, сервисов. Общих правил нет, каждый пишет
Многим C#-разработчикам знакома боль: в проекте хаос из имён классов, обработчиков, сервисов. Общих правил нет, каждый пишет как хочет — и через полгода код сложно читать даже автору. Есть практичное решение: архитектурные тесты, которые автоматически проверяют соблюдение naming conventions. Пример ниже - тест, который гарантирует, что все командные обработчики заканчиваются на CommandHandler. Если кто-то добавит класс с неправильным именем, тест упадёт, и проблема решится ещё до ревью. Такую технику можно использовать для: - сервисов (`...Service`) - хендлеров (`...Handler`) - репозиториев (`...Repository`) - DTO/Queries/Commands - модульных границ и зависимости между слоями Это простой способ навести порядок в архитектуре, а не надеяться только на дисциплину команды. Пример теста (C#):

public void CommandHandler_ShouldHave_NameEndingWith_CommandHandler()
{
    Types.InAssembly(ApplicationAssembly)
        .That()
        .ImplementInterface(typeof(ICommandHandler<>))
        .Or()
        .ImplementInterface(typeof(ICommandHandler<,>))
        .Should()
        .HaveNameEndingWith("CommandHandler")
        .GetResult()
        .ShouldBeSuccessful();
}
Такие архитектурные проверки избавляют от стихийных ошибок и делают кодовую базу предсказуемой — особенно в больших командах и долгоживущих проектах.

⚡️ASP.NET Core лайфхак: если нужно получить данные текущего пользователя в любом слое приложения — внедри IHttpContextAccesso
⚡️ASP.NET Core лайфхак: если нужно получить данные текущего пользователя в любом слое приложения — внедри IHttpContextAccessor и оберни его в сервис UserContext. Так ты централизуешь доступ к UserId и статусу авторизации без прямых обращений к HttpContext, а при отсутствии контекста сразу получишь исключение вместо тихих ошибок.

/// Пример класса контекста пользователя
internal sealed class UserContext(IHttpContextAccessor httpContextAccessor)
    : IUserContext
{
    public Guid UserId =>
        httpContextAccessor
            .HttpContext?
            .User
            .GetUserId() ??
        throw new ApplicationException("User context is unavailable");

    public bool IsAuthenticated =>
        httpContextAccessor
            .HttpContext?
            .User
            .Identity?
            .IsAuthenticated ??
        throw new ApplicationException("User context is unavailable");
}

✔️ Delegating Handlers в .NET: как правильно добавлять сквозную логику для HttpClient DelegatingHandler - это удобный способ
✔️ Delegating Handlers в .NET: как правильно добавлять сквозную логику для HttpClient DelegatingHandler - это удобный способ внедрять сквозную логику в каждый HTTP-запрос: авторизацию, логирование, метрики, ретраи и любые другие политики, не трогая основной код. Пример обработчика аутентификации: - добавляет заголовок Authorization - подставляет корректный User-Agent - затем передаёт управление следующему звену конвейера Это позволяет централизованно контролировать конфигурацию запросов и избегать дублирования логики во всех сервисах. Подходит для чистой архитектуры, микросервисов и SDK, где важна единообразная обработка запросов.

⚡️ Cursor-пагинация действительно очень быстрая - в тестах она оказалась в 17 раз быстрее**, чем классическая offset-пагинаци
⚡️ Cursor-пагинация действительно очень быстрая - в тестах она оказалась в 17 раз быстрее**, чем классическая offset-пагинация. Но использовать её нужно не всегда. Вот почему. Что такое cursor-пагинация Она работает через «точку отсчёта» - курсор. Это может быть уникальный идентификатор или набор полей, по которым сортируются записи. Фронтенд передаёт курсор, и сервер возвращает следующую порцию данных, начиная строго после него. Почему она быстрая - Серверу не нужно пересчитывать offset и пропускать тысячи строк. - Он просто выбирает данные «после курсора». - Это даёт стабильную производительность даже на больших таблицах. Но есть нюанс Cursor-пагинация отлично подходит для: - лент обновлений - real-time интерфейсов - бесконечной прокрутки Но если пользователи почти всегда открывают только первую страницу, а далее почти не переходят, то обычная offset-пагинация будет проще и тоже очень быстрой. Для многих приложений это нормальный и достаточный вариант. Вот подробный разбор с реализацией и тестами.

🔥 C# Pattern Matching — делает ваш код чище Вместо громоздких проверок вида: if (user != null && user.Name.Length > 0 && use
🔥 C# Pattern Matching — делает ваш код чище Вместо громоздких проверок вида:

if (user != null &&
    user.Name.Length > 0 &&
    user.Subscription != null)
{
    // ...
}

C# позволяет писать проще и выразительнее:

if (user is { Name.Length > 0, Subscription: not null })
{
    // ...
}
✨ Что изменилось? ✔️ Нет ручных проверок на null - компилятор сам учитывает это в выражении ✔️ Условие читается как описание объекта, а не как набор проверок ✔️ Логика становится компактнее и легче сопровождается Используйте pattern matching, чтобы избавляться от лишнего шума и писать более понятный код.