fa
Feedback
C# (C Sharp) programming

C# (C Sharp) programming

رفتن به کانال در Telegram

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

نمایش بیشتر

📈 تحلیل کانال تلگرام C# (C Sharp) programming

کانال C# (C Sharp) programming (@csharp_ci) در بخش زبانی روسی بازیگری فعال است. در حال حاضر جامعه شامل 18 129 مشترک است و جایگاه 7 041 را در دسته فناوری و برنامه‌ها و رتبه 36 302 را در منطقه روسيا دارد.

📊 شاخص‌های مخاطب و پویایی

از زمان ایجاد در невідомо، پروژه رشد سریعی داشته و 18 129 مشترک جذب کرده است.

بر اساس آخرین داده‌ها در تاریخ 29 اوت, 2026، کانال فعالیت پایداری دارد. در ۳۰ روز گذشته تغییر اعضا برابر -78 و در ۲۴ ساعت گذشته برابر -7 بوده و همچنان دسترسی گسترده‌ای حفظ شده است.

  • وضعیت تأیید: تأیید نشده
  • نرخ تعامل (ER): میانگین تعامل مخاطب 15.03% است و در ۲۴ ساعت نخست پس از انتشار، محتوا معمولاً 7.44% واکنش نسبت به کل مشترکان کسب می‌کند.
  • دسترسی پست‌ها: هر پست به طور میانگین 2 725 بازدید دریافت می‌کند. در اولین روز معمولاً 1 348 بازدید جمع‌آوری می‌شود.
  • واکنش‌ها و تعامل: مخاطبان به‌طور فعال حمایت می‌کنند؛ میانگین واکنش به هر پست 0 است.
  • علایق موضوعی: محتوا بر موضوعات کلیدی مانند .net, api, логика, архитектура, string تمرکز دارد.

📝 توضیح و سیاست محتوایی

نویسنده این فضا را محل بیان دیدگاه‌های شخصی توصیف می‌کند:
По всем вопросам- @notxxx1 Реестр РКН: https://clck.ru/3Fk3kb #VRHSZ

به لطف به‌روزرسانی‌های پرتکرار (آخرین داده در تاریخ 30 اوت, 2026)، کانال همواره به‌روز و دارای دسترسی بالاست. تحلیل‌ها نشان می‌دهد مخاطبان به‌طور فعال با محتوا تعامل دارند و آن را به نقطه اثرگذاری مهم در دسته فناوری و برنامه‌ها تبدیل کرده‌اند.

18 129
مشترکین
-724 ساعت
-157 روز
-7830 روز
آرشیو پست ها
⚡️ Синтаксическое сжатие строк даёт больше вертикального пространства в редакторе. Строки без букв и цифр сжимаются на 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, чтобы избавляться от лишнего шума и писать более понятный код.

Почти 50 процентов разработчиков сталкиваются с утечками памяти в EF Core. И причина у большинства одна и та же. ❌ Ошибочное
Почти 50 процентов разработчиков сталкиваются с утечками памяти в EF Core. И причина у большинства одна и та же. ❌ Ошибочное управление временем жизни DbContext Многие регистрируют DbContext как scoped и считают что этого достаточно. На деле всё сложнее. - DbContext не потокобезопасен. Делить один экземпляр между потоками приводит к исключениям. - DbContext лёгкий и должен жить недолго. Создавай его часто, освобождай сразу. - Неверная работа с контекстом ведёт к росту памяти и утечкам. ✅ Решения которые уже есть в EF Core IDbContextFactory Позволяет безопасно создавать контексты по запросу. Подходит для фоновых задач, многопоточности и десктоп приложений. DbContext Pooling Переиспользует заранее подготовленные экземпляры. Сбрасывает состояние после использования, снижает нагрузку на память и процессор. Pooled DbContextFactory Комбинирует фабрику и пул. Даёт контексты по запросу и эффективно их переиспользует. ⚠️ Правила которые нельзя нарушать - Никогда не дели DbContext между потоками. - Всегда освобождай контекст с помощью using или возврата в пул. Грамотное управление жизненным циклом DbContext повышает стабильность и масштабируемость и убирает скрытые утечки памяти которые годами портят EF Core проекты. https://antondevtips.com/blog/top-10-mistakes-developers-make-in-ef-core/

44 000 000+ операций c товарами осуществляется на складских объектах Ozon. Лучший способ влиять на то, как эти товары находят
44 000 000+ операций c товарами осуществляется на складских объектах Ozon. Лучший способ влиять на то, как эти товары находят дорогу к покупателям, — откликнуться на одну из этих вакансий. ✔️В команду расписания и отгрузки магистрали: Руководитель группы разработки C# Старший C#-разработчик ✔️В команду коммерциализации логистики: Старший C#-разработчик ✔️В команду учётной интеграции и претензионной работы: Руководитель группы разработки C# Старший C#-разработчик C#-разработчик Удачи на интервью! 🍀

⚡️ Annotation Toolkit помогает дизайнерам прямо в макете объяснить, как должны работать элементы интерфейса. Проще говоря, он
⚡️ Annotation Toolkit помогает дизайнерам прямо в макете объяснить, как должны работать элементы интерфейса. Проще говоря, он позволяет: подписывать элементы: что кликается, что меняется, как ведёт себя при разной ширине экрана; сразу указать требования по доступности: например, какой alt-текст нужен или что должно быть доступно с клавиатуры; убрать путаницу при передаче макета разработчикам, чтобы они точно понимали задумку. Почему это важно: Почти половина ошибок по доступности появляется только потому, что дизайнеры и разработчики по-разному понимают поведение элемента. Если зафиксировать эти детали заранее - проблемы просто не возникнут. https://github.blog/enterprise-software/collaboration/level-up-design-to-code-collaboration-with-githubs-open-source-annotation-toolkit/

🖥 Async-блокировки в C# - тема, на которой часто «ловят» на собеседованиях. Синхронный lock не работает с async/await, и мно
🖥 Async-блокировки в C# - тема, на которой часто «ловят» на собеседованиях. Синхронный lock не работает с async/await, и многие пытаются заменить его чем угодно, лишь бы компилилось. Правильный путь — использовать SemaphoreSlim с WaitAsync, как на примере: он позволяет ограничивать конкуренцию и работает корректно в асинхронном коде. Главное — всегда освобождать семафор в finally и не забывать про таймауты, чтобы не создавать висячие блокировки. Асинхронная синхронизация — это не магия, а аккуратность и понимание того, как работает планировщик задач в .NET.

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

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

🎮 Создайте игры с s&box! s&box — это современный игровой движок на основе Source 2 от Valve и новейших технологий .NET. Он п
🎮 Создайте игры с s&box! s&box — это современный игровой движок на основе Source 2 от Valve и новейших технологий .NET. Он предлагает интуитивно понятный редактор для разработки игр и предоставляет возможность компилировать движок из исходников для тех, кто хочет внести свой вклад в его развитие. 🚀 Основные моменты: - Современный игровой движок с мощным редактором. - Основан на Source 2 и .NET технологиях. - Поддержка разработки и компиляции из исходников. - Полная документация и обучающие материалы доступны онлайн. 📌 GitHub: https://github.com/Facepunch/sbox-public #csharp

⚡️ Hunyuan 3D Engine Новый высокоточный ИИ-движок сокращает производство коммерческих 3D-ассетов с недель до нескольких минут. Платформа поддерживает создание объектов из текста, изображений с мультивидовой реконструкцией и даже из простых скетчей. Это делает процесс максимально гибким и доступным как художникам, так и командам в индустрии. Качество отвечает профессиональному уровню. Новый 3D-DiT модельный стек обеспечивает трёхкратный прирост точности и выдаёт ультра-HD разрешение. Форматы OBJ и GLB легко подключаются к Unreal Engine, Unity и Blender. Модель также доступна через Tencent Cloud International. Платформа даёт новым авторам 20 бесплатных генераций в день. Корпоративные клиенты получают 200 бесплатных кредитов при регистрации. Попробовать движок можно на 3d.hunyuanglobal.com API: tencentcloud.com/products/ai3d #AI #3D #Hunyuan3D #Tencent #AItools #3Dgeneration

Как сделать .NET-приложения устойчивыми с помощью Polly Polly — это мощная библиотека для обработки сбоев и нестабильных сете
Как сделать .NET-приложения устойчивыми с помощью Polly Polly — это мощная библиотека для обработки сбоев и нестабильных сетевых вызовов в .NET. С её помощью можно легко добавить retry, timeout, circuit breaker и другие стратегии отказоустойчивости. На картинке показан пример, где применяется два ключевых механизма: 1) Retry (повтор запроса при ошибках) — Обрабатываем конфликты через Handle<ConflictException>() — Делаем паузу между попытками (`Delay = 1 сек`) — Используем экспоненциальный backoff — Добавляем jitter, чтобы избежать «шторма» повторов — Ограничиваем количество попыток (`MaxRetryAttempts = 2`) 2) Timeout (ограничение времени выполнения) — Ставим таймаут в 10 секунд на сетевой запрос Далее создаётся pipeline и выполняется HTTP-запрос: await pipeline.ExecuteAsync(async ct ⇒ await httpClient.GetAsync("https://modularmonolith.com", ct)); Эти две стратегии уже дают серьёзную устойчивость: запросы не зависают, ошибки перехватываются, приложение остаётся стабильным даже при нестабильных сервисах. https://github.com/App-vNext/Polly

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

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

✔️ Задача C# и ASP.NET Core В проде под нагрузкой периодически "умирает" интеграция с внешним сервисом оплаты: в логах всплыв
✔️ Задача C# и ASP.NET Core В проде под нагрузкой периодически "умирает" интеграция с внешним сервисом оплаты: в логах всплывают TimeoutException и SocketException: "Only one usage of each socket address...". Фрагмент кода из сервисного слоя:

public class PaymentClient
{
    private readonly string _baseUrl;

    public PaymentClient(string baseUrl)
    {
        _baseUrl = baseUrl;
    }

    public async Task<bool> ChargeAsync(ChargeRequest request)
    {
        using var http = new HttpClient();
        http.BaseAddress = new Uri(_baseUrl);

        var response = await http.PostAsJsonAsync("/charge", request);
        return response.IsSuccessStatusCode;
    }
}
Под нагрузкой: - растёт количество TIME_WAIT соединений - часть запросов получает timeout - p95 и p99 по этому методу улетают в космос Какой вариант исправления правильный? 1. Увеличить Timeout у HttpClient и ServicePointManager.DefaultConnectionLimit. 2. Сделать HttpClient статическим полем и переиспользовать его во всех запросах. 3. Зарегистрировать HttpClient через IHttpClientFactory и использовать пул подключений, конфигурируя таймауты и политику повторов. Как думаешь, какой вариант правильный?

🖥 Bash Академия: секреты командной строки, которые нигде не рассказывают Олег Шелест - профессионал по информационной безопа
+4
🖥 Bash Академия: секреты командной строки, которые нигде не рассказывают Олег Шелест - профессионал по информационной безопасности, раскрывает скрытые механики Linux, с помощью наглядных картинок и коротких, максимально понятных разборов у себя в тг канале. - Без воды. - Без лишней теории. Только практические приёмы, которые реально используют профи. Если хочешь уверенно владеть Bash - здесь ты получишь всё, что нужно: t.me/bashmastter