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 304 مشترک است و جایگاه 7 337 را در دسته فناوری و برنامه‌ها و رتبه 36 959 را در منطقه روسيا دارد.

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

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

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

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

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

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

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

18 304
مشترکین
-124 ساعت
+27 روز
-3630 روز
آرشیو پست ها
В C# 15 появились union types. И это не косметика, это смена подхода к обработке ошибок. Вы можете явно описать результат как
В C# 15 появились union types. И это не косметика, это смена подхода к обработке ошибок. Вы можете явно описать результат как “либо значение, либо ошибка”, прямо на уровне языка. Без самодельных Result-классов, без лишних обёрток, без попыток использовать исключения там, где они неуместны. Раньше, ты либо городишь свой Result и работаешь с лишним бойлерплейтом. Либо тащишь сторонние библиотеки. Либо кидаешь исключения и теряешь контроль над потоком. С union types эта проблема решается . Pattern matching начинает работать так, как и должен. Ты не гадаешь, что вернул метод, а явно разбираешь все варианты. Код становится проще читать, проще тестировать и сложнее сломать.

Представь обычную ситуацию. Пользователь заходит в корзину, добавляет товары, что-то удаляет, меняет количество и оформляет з
Представь обычную ситуацию. Пользователь заходит в корзину, добавляет товары, что-то удаляет, меняет количество и оформляет заказ. В базе у тебя остаётся только финальное состояние. Просто запись “как есть сейчас”. Всё, что происходило до этого, исчезает. Ты не увидишь, какие товары удаляли, где пользователь сомневался, на каком шаге что-то пошло не так. Для отладки, аналитики и аудита это слепая зона. Пока у тебя простой CRUD на ASP.NET Core и Entity Framework Core, это может не мешать. Но как только появляются бизнес-процессы посложнее, начинаются проблемы. Нет истории - нет понимания. Здесь пригодится Event Sourcing. Вместо того чтобы перезаписывать состояние, ты сохраняешь каждое изменение как отдельное событие. Не “корзина сейчас такая”, а “в корзину добавили товар”, “товар удалили”, “оформили заказ”. События неизменяемые. Ты их не редактируешь и не удаляешь. Только добавляешь новые. Каждая сущность превращается в поток событий. У корзины своя последовательность: создали, добавили товар, удалили, оформили заказ. Текущее состояние собирается из этих событий. В C# это обычно выглядит как агрегат, который проигрывает события и восстанавливает состояние в памяти. Плюс там же проверяются бизнес-правила перед добавлением новых событий. Для чтения строятся отдельные модели. Например, через Marten или тот же PostgreSQL. Они обновляются сразу или асинхронно и отдают данные в API. В итоге у тебя не просто таблица с текущими значениями, а полная история системы. Можно откатиться на любой момент, разобрать баг, посмотреть реальные действия пользователя. CRUD отвечает на вопрос “что сейчас в базе”. Event Sourcing отвечает на вопрос “что реально происходило”. И для сложных систем это уже не архитектурный стиль, а вопрос выживания проекта. Гайд по эвент-сорсингу

⚡️ Версионирование API в Minimal APIs без лишней магии Если вы пишете API на ASP.NET Core и планируете жить с ним дольше одно
⚡️ Версионирование API в Minimal APIs без лишней магии Если вы пишете API на ASP.NET Core и планируете жить с ним дольше одного релиза, версионирование лучше заложить сразу. Minimal APIs отлично дружат с ApiVersionSet: можно явно объявить поддерживаемые версии, включить репортинг доступных версий и привязать конкретный endpoint к нужной версии. В примере создается набор версий API: v1 - текущая стабильная версия v2 - новая версия для развития контракта После этого endpoint /api/v{version:apiVersion}/workouts/{workoutId} получает привязку через .WithApiVersionSet(apiVersionSet) и явно мапится на .MapToApiVersion(1). Главная идея простая: версия становится частью маршрута, а не скрытой договоренностью между клиентом и backend. Это особенно важно, когда API уже используют мобильные приложения, внешние интеграции или несколько фронтендов. Вы можете развивать v2, не ломая клиентов, которые все еще сидят на v1. Для C# backend-разработчика это один из тех паттернов, который выглядит мелочью на старте, но сильно экономит нервы на проде.

🖥 Что выведет код? public decimal CalculateTotal(Order order) { decimal total = 0; if (order != null) { if (order.Items != n
🖥 Что выведет код?

public decimal CalculateTotal(Order order)
{
    decimal total = 0;

    if (order != null)
    {
        if (order.Items != null)
        {
            foreach (var item in order.Items)
            {
                if (item != null)
                {
                    if (item.IsActive)
                    {
                        if (item.Price > 0)
                        {
                            if (item.Quantity > 0)
                            {
                                total += item.Price * item.Quantity;
                            }
                        }
                    }
                }
            }
        }

        if (order.Customer != null)
        {
            if (order.Customer.IsVip)
            {
                total = total * 0.9m;
            }
        }
    }

    return total;
}
Как бы ты почистил этот код? A - Заменить вложенные if на guard clauses B - Использовать LINQ для фильтрации и суммы C - Вынести скидку VIP в отдельный метод D - Все варианты выше @csharp_ci

🖥 На Stepik обновили курс «C# с нуля до профи» Представьте: через четыре месяца вы открываете чужой .NET-проект и читаете ег
🖥 На Stepik обновили курс «C# с нуля до профи» Представьте: через четыре месяца вы открываете чужой .NET-проект и читаете его как книгу. IServiceCollection не вызывает ступора. async Task<IActionResult> пишется на автомате. Вы точно знаете, почему EF Core сгенерировал именно такой SQL - и как переписать запрос, чтобы он летал. Это не фантазия. Это результат после 16 модулей, в которых каждая концепция объясняется через код и закрепляется практикой. ООП, SOLID, LINQ, async/await, DI, EF Core, ASP.NET Core, Docker, Kubernetes - всё, что казалось магией, станет рабочим инструментом. А бонусом - портфолио проектов: от CLI-утилит и REST API до собственного SaaS с multi-tenancy, JWT и деплоем в Kubernetes под TLS. Скидка - 58% доступна 48 часов: https://stepik.org/a/282984/

✔️ Rate Limiting по пользователю это must have для любого нормального API. Если ты до сих пор ограничиваешь по IP, у тебя уже
✔️ Rate Limiting по пользователю это must have для любого нормального API. Если ты до сих пор ограничиваешь по IP, у тебя уже есть проблема. Один шумный клиент может легко положить сервис для всех. Правильный подход это лимиты по User ID. Ты берёшь идентификатор пользователя из контекста и используешь его как partition key. В итоге каждый пользователь получает свой собственный лимит, нет конфликтов между клиентами, нет ложных блокировок, и API остаётся стабильным даже под нагрузкой. Плюс это честно, потому что один агрессивный пользователь не влияет на остальных. В ASP.NET Core это настраивается буквально в пару строк через AddRateLimiter с FixedWindow или SlidingWindow стратегией. Главная мысль в том, что rate limiting это не только про защиту от атак, это про контроль ресурсов и предсказуемость системы. Если у тебя есть публичный API и нет нормальных лимитов, это не вопрос если упадёт, это вопрос когда.

Никогда не возвращай null для коллекций в C# Спорное мнение, но на практике это один из самых частых источников багов. Когда
Никогда не возвращай null для коллекций в C# Спорное мнение, но на практике это один из самых частых источников багов. Когда метод возвращает null вместо списка, ты заставляешь каждого, кто его вызывает, писать дополнительную проверку. Иначе всё ломается на самом банальном месте:

foreach (var transaction in GetTransactions(userId))
{
    // boom, если null
}
В итоге получаешь: • лишние null-проверки повсюду • более громоздкий код • ошибки в рантайме, если кто-то забыл проверить Всегда этого возвращай пустую коллекцию:

Enumerable.Empty<T>()
new List<T>()
[] в C# 12
var transactions = GetTransactions(userId) 
                   ?? Enumerable.Empty<TransactionDto>();
Теперь код становится чище и понятнее. Ты всегда можешь итерироваться и не думаешь о null каждый раз. Хороший API - это тот, в работе с которым ошибиться почти невозможно.

⚡️ Вы слышали про Rust. Знаете, что он быстрый, безопасный и что за ним будущее. Осталось одно: сесть и выучить. Этот курс со
⚡️ Вы слышали про Rust. Знаете, что он быстрый, безопасный и что за ним будущее. Осталось одно: сесть и выучить. Этот курс со Stepik- кратчайший путь от «знаю что такое Rust» до «пишу на нём». 6 модулей, 50 уроков, 143 теста. Ownership, borrowing, traits, async, Tokio, Axum, макросы, WASM — всё разложено по полочкам и закреплено практикой. Никакого видео на 40 минут ради одной мысли. Подробный текст, много кода, реальные задачи после каждого урока. На выходе — портфолио из 10+ проектов: от CLI-утилит до REST API с базой данных. 48 часов действует скидка 55 процентов: stepik.org/course/269250

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

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

👩‍💻 Приглашаем на открытый урок «Производительность кода на примере алгоритмов сортировки» 🗓 21 апреля в 20:00 МСК 🆓 На э
👩‍💻 Приглашаем на открытый урок «Производительность кода на примере алгоритмов сортировки» 🗓 21 апреля в 20:00 МСК 🆓 На этом открытом уроке мы разберёмся, как скорость работы программы зависит от выбранного способа решения задачи - на понятном примере сортировки данных. 🔍 Что вы узнаете на вебинаре: – Почему существует несколько способов выполнить одну и ту же задачу. – Как разные подходы к сортировке данных влияют на скорость работы программы. – Почему одни решения подходят для маленьких объёмов данных, а другие — для больших. – Что происходит с программой, когда данных становится в 10, 100 или 1000 раз больше. – Как разработчики заранее прогнозируют производительность. 🔗 Ссылка на регистрацию: https://otus.pw/QZB5/?erid=2W5zFGs2tAd Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576 Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

🚨 Тихий убийца производительности в EF Core, о котором забывают почти все. Запрос выглядит идеально - пока у тебя мало данны
🚨 Тихий убийца производительности в EF Core, о котором забывают почти все. Запрос выглядит идеально - пока у тебя мало данных. Потом начинается ад. Ты пишешь обычный Include, потом ещё один на ту же сущность… и не замечаешь, как EF Core превращает это в монструозный SQL с кучей JOIN’ов. Что происходит под капотом: EF делает несколько JOIN’ов → получается cross product → строки начинают дублироваться Итог: • данных в ответе становится в разы больше • память улетает • запросы резко тормозят И всё это без единой ошибки в коде. Решение есть и оно банально простое - Query Splitting. Вместо одного жирного запроса EF разбивает его на несколько аккуратных. Без дублирования, без раздувания результата, без боли. Одна настройка - и ты экономишь кучу ресурсов на проде. P.S. Если работаешь с EF Core - такие нюансы решают, будет ли твой сервис летать или умирать под нагрузкой.

🔥 Самая недооценённая фича HttpClient в .NET DelegatingHandler - это middleware для исходящих HTTP-запросов, про который мно
🔥 Самая недооценённая фича HttpClient в .NET DelegatingHandler - это middleware для исходящих HTTP-запросов, про который многие забывают. По сути, ты собираешь pipeline для запросов так же, как в ASP.NET для входящих. И вместо того чтобы пихать логику в каждый вызов, выносишь всё в одно место. Авторизация, логирование, ретраи, кеш, аудит, всё навешивается как цепочка обработчиков. Код становится чище, повторного кода меньше, а поведение запросов контролируется централизованно. Один раз настроил и это работает для всех клиентов. Если используешь HttpClient и до сих пор не трогаешь DelegatingHandler, ты реально упускаешь мощный инструмент

👩‍💻 Приглашаем на открытый урок «Облегчённые (Slim) примитивы синхронизации» 🗓 16 апреля в 20:00 МСК 🆓 На открытом уроке
👩‍💻 Приглашаем на открытый урок «Облегчённые (Slim) примитивы синхронизации» 🗓 16 апреля в 20:00 МСК 🆓 На открытом уроке рассмотрим: ✔️ Проблему синхронизации доступа к общему ресурсу в многопоточном приложении в рамках внутрипроцессного взаимодействия; ✔️ Разберём классическую задачу читателей–писателей и её реализацию с использованием примитивов синхронизации из пространства имён System.Threading; ✔️ Отдельно обсудим, в каких случаях облегчённые версии примитивов (например, SemaphoreSlim и ReaderWriterLockSlim) оказываются эффективнее стандартных решений, таких как Monitor, Mutex и конструкция lock. 🌿 Вебинар является частью курса «C# разработчик. Экспертный уровень» 🔗 Ссылка на регистрацию: https://otus.pw/oAo7/?erid=2W5zFGHwwxd Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

🔥 Не понимаешь, что происходит внутри .NET приложения Значит у тебя нет нормальной трассировки Минимальный сетап, который ст
🔥 Не понимаешь, что происходит внутри .NET приложения Значит у тебя нет нормальной трассировки Минимальный сетап, который стоит добавить почти в любой проект OpenTelemetry с базовой инструментализацией ASP.NET Core, HttpClient, EF Core, Redis и база через Npgsql или SqlClient Этого хватает, чтобы видеть полный путь запроса от входа в API до базы и внешних сервисов Дальше всё становится прозрачным • где тормозит • где падает • где утекает время Для визуализации можно подключить любой стек • Aspire Dashboard под быстрый старт • Grafana если нужен прод уровень • Jaeger для классического трейсинга • Seq если хочешь объединить логи и трейсы Seq особенно удобен, потому что нормально работает со структурированными логами По факту это один из самых дешёвых апгрейдов инфраструктуры, а профит даёт сразу Гайд

Когда производительность упирается в железо, а когда в архитектуру? Как проектировать надежные и быстрые системы на C++? Каки
+4
Когда производительность упирается в железо, а когда в архитектуру? Как проектировать надежные и быстрые системы на C++? Какие подходы используют разработчики компиляторов, рантаймов и системного ПО? Ответы на эти и другие вопросы найдем на C++ Russia — конференции для C++ разработчиков, инженеров, разработчиков компиляторов, тимлидов и исследователей. 📅 7 мая 2026 — онлайн-день 📅 16–17 мая 2026 — Москва + онлайн Три дня докладов, воркшопов и общения C++ сообщества. Будем говорить про язык и инженерные задачи: архитектуру, производительность, управление памятью, многопоточность и разработку низкоуровневого ПО. Новое в этом году — системное программирование: компиляторы, рантаймы, операционные системы, управление ресурсами и дизайн языков программирования. В карточках собрали несколько топовых докладов из программы. Используйте промокод, чтобы купить персональный билет со скидкой — CPLUSCSHARP Купить билет Реклама. ООО «Джуг Ру Груп». ИНН 7801341446

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

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

Шарп рулит)
Шарп рулит)