ar
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 127 مشتركاً، محتلاً المرتبة 7 041 في فئة التكنولوجيات والتطبيقات والمرتبة 36 302 في منطقة روسيا.

📊 مؤشرات الجمهور والحراك

منذ تأسيسه في невідомо، حقق المشروع نمواً سريعاً وجمع 18 127 مشتركاً.

بحسب آخر البيانات بتاريخ 29 أغسطس, 2026، تحافظ القناة على نشاط مستقر. خلال آخر 30 يوماً تغيّر عدد الأعضاء بمقدار -78، وفي آخر 24 ساعة بمقدار -7، مع بقاء الوصول العام مرتفعاً.

  • حالة التحقق: غير موثّقة
  • معدل التفاعل (ER): يبلغ متوسط تفاعل الجمهور 15.03‎%. وخلال أول 24 ساعة من النشر يحصد المحتوى عادةً 7.44‎% من ردود الفعل نسبةً إلى إجمالي المشتركين.
  • وصول المنشورات: يحصل كل منشور على متوسط 2 725 مشاهدة. وخلال اليوم الأول يجمع عادةً 1 348 مشاهدة.
  • التفاعلات والاستجابة: يتفاعل الجمهور بانتظام؛ متوسط التفاعلات لكل منشور يبلغ 0.
  • الاهتمامات الموضوعية: يركز المحتوى على مواضيع رئيسية مثل .net, api, логика, архитектура, string.

📝 الوصف وسياسة المحتوى

يصف المؤلف القناة بأنها مساحة للتعبير عن الآراء الذاتية:
По всем вопросам- @notxxx1 Реестр РКН: https://clck.ru/3Fk3kb #VRHSZ

بفضل وتيرة التحديث المرتفعة (أحدث البيانات بتاريخ 30 أغسطس, 2026) تحافظ القناة على حداثتها ومستوى وصول مرتفع. وتُظهر التحليلات تفاعلاً نشطاً من الجمهور، ما يجعلها نقطة تأثير مهمة ضمن فئة التكنولوجيات والتطبيقات.

18 127
المشتركون
-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