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 روز
آرشیو پست ها
🚫 EF Core + «репозитории» = лишний слой Часто советуют заворачивать EF Core в Repository Pattern. Но на практике это делает
🚫 EF Core + «репозитории» = лишний слой Часто советуют заворачивать EF Core в Repository Pattern. Но на практике это делает код только сложнее: - DbContext уже реализует Repository и Unit of Work - Репозитории со временем превращаются в «монстров» с десятками методов - Каждый новый фильтр = новая копипаста В итоге — абстракция над абстракцией и трудности с поддержкой. --- ✅ Что вместо этого? Specification Pattern Specification = маленький класс, описывающий правило или фильтр. Вы комбинируете их и получаете сложные запросы без раздутых репозиториев. Плюсы: - 🧩 Простая композиция правил - 🔍 Ясный и читаемый код - ♻️ Повторное использование условий - 🧪 Лёгкое тестирование 📌 Пример

// Бизнес-правило: активные клиенты с заказами за последние 30 дней
public sealed class ActiveCustomersSpec : Specification<Customer>
{
    public ActiveCustomersSpec(DateTime since)
    {
        Criteria = c => c.IsActive && c.Orders.Any(o => o.CreatedAt >= since);
        AddInclude(c => c.Orders);
    }
}

// Применение
var spec = new ActiveCustomersSpec(DateTime.UtcNow.AddDays(-30));
var customers = await db.Set<Customer>().Apply(spec).ToListAsync();
💡 Итог: EF Core = уже Repository + UoW Репозитории поверх EF Core → лишняя абстракция Specification Pattern → гибкость и читаемость без «метод-монстров»

Быстрый поиск подстроки: Кнут–Моррис–Пратт на практике! Разберём алгоритм Кнута–Морриса–Пратта (КМП): почему он работает за л
Быстрый поиск подстроки: Кнут–Моррис–Пратт на практике! Разберём алгоритм Кнута–Морриса–Пратта (КМП): почему он работает за линейное время и как «переиспользует» уже найденные совпадения. Покажем, где наивный подход теряет секунды (и деньги), а КМП — нет. После вебинара вы: — понимаете префикс-функцию и логику «сдвигов»; — умеете сравнить наивный поиск и КМП на реальных данных; — знаете, как внедрить быстрый поиск в проде. ⏰ Урок пройдёт 24 сентября в 20:00 МСК в преддверие старта курса «Алгоритмы и структуры данных». Всем участникам — персональные условия обучения. 👉 Для участия зарегистрируйтесь: https://otus.pw/R52E/ Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ", ИНН: 9705100963

🐧 Часто новички в Linux путаются в терминах: Terminal, Shell, Prompt, Command line. Разберёмся по порядку 👇 - Terminal — эт
🐧 Часто новички в Linux путаются в терминах: Terminal, Shell, Prompt, Command line. Разберёмся по порядку 👇 - Terminal — это программа, которая запускает shell. Примеры: Terminator, Konsole. - Shell — сам интерпретатор команд (bash, zsh, fish и др.). - Prompt — строка перед тем, как вы начинаете вводить команду (обычно с именем пользователя, директории и т.д.). - Command line — общее понятие: интерфейс, где можно вводить команды (есть в любой ОС). 🔑 Обычно вы открываете Terminal, видите Prompt, пишете команду — её обрабатывает Shell. Всё просто 😉

Можно ли использовать string.GetHashCode() в алгоритмах генерации хеша пароля? #ПятничныйКвиз
Anonymous voting

❗️C# вопрос с собеседования: Middle–Senior level Вопрос: почему возникает предупреждение о возможном null, если ProductStock
❗️C# вопрос с собеседования: Middle–Senior level Вопрос: почему возникает предупреждение о возможном null, если ProductStock здесь явно не равен null? Код:

private static IEnumerable<Error> VerifyProductQuantities(
    List<ProductStock> products,
    Dictionary<string, Domain.Entities.ProductStock> stocks)
{
    foreach (var product in products)
    {
        if (!stocks.TryGetValue(product.ProductName, out var stock))
        {
            yield return StockErrors.ProductNotFound(product.ProductName);
        }

        if (stock.AvailableQuantity < product.Quantity)
        {
            yield return StockErrors.InsufficientStocks(
                product.ProductName, product.Quantity, stock.AvailableQuantity);
        }
    }
}
Компилятор выдет: «Dereference of a possibly null reference» для переменной stock. Почему так происходит? • Метод TryGetValue возвращает false, и тогда stock остаётся равным null. • Даже если мы отфильтровали это через if (!TryGetValue(...)), компилятор не гарантирует, что в блоке после условия stock точно не null. • В результате в строке if (stock.AvailableQuantity < product.Quantity) возникает предупреждение. Как исправить? 1. Добавить continue после yield return внутри блока if (!TryGetValue(...)). Тогда компилятор поймёт, что кода после этой ветки для null не будет. 2. Либо использовать оператор !: if (stock!.AvailableQuantity < product.Quantity) — но это безопасно только если мы уверены, что значение точно не null. 3. Более читаемый вариант — переписать логику так, чтобы работа с stock была строго в ветке, где оно гарантированно задано. Вопрос для проверки понимания nullable reference types и поведения компилятора при анализе путей выполнения кода.

🚀 Микросервисная платформа для страхования Yosef — это открытая микросервисная платформа для финансовой страховой отрасли, р
🚀 Микросервисная платформа для страхования Yosef — это открытая микросервисная платформа для финансовой страховой отрасли, разработанная на .NET, Python, TypeScript и Golang. Она обеспечивает масштабируемость, гибкость и высокую наблюдаемость для современных страховых приложений. 🚀 Основные моменты: - Микросервисная архитектура для легкости масштабирования - Централизованное управление идентификацией и доступом - Полный цикл страхования от оценки до создания полиса - Высокая наблюдаемость с использованием Grafana и Prometheus - Интеграция с современными инструментами безопасности 📌 GitHub: https://github.com/elyosemite/Yosef #csharp

🚀 SQL Ultimate Course — бесплатный полный курс по SQL на GitHub Если хочешь освоить SQL с нуля и дойти до продвинутого уровн
🚀 SQL Ultimate Course — бесплатный полный курс по SQL на GitHub Если хочешь освоить SQL с нуля и дойти до продвинутого уровня — бери готовый репозиторий: 📂 Что внутри: - datasets/ — реальные данные из ERP и CRM - scripts/ — готовые SQL-скрипты для практики - docs/ — документация и материалы курса ✅ MIT-лицензия — можно использовать и менять свободно 🌍 Подходит для всех СУБД (PostgreSQL, MySQL и др.) 🎥 К курсу прилагаются видео и гайды от автора Автор: Data With Baraa — практик и ютубер, собравший в одном месте полный SQL-путь от простого SELECT до оптимизации запросов и реальных кейсов. 🔗 Репозиторий здесь: https://github.com/DataWithBaraa/sql-ultimate-course Сохраняй, проходи и прокачивай SQL 💡

🎮 Клад для геймдева — Kenney Assets Бесплатная библиотека 2D и 3D-ассетов: спрайты, текстуры, звуки, шрифты и даже модели для VR/AR. Всё под лицензией CC0 — можно использовать где угодно, включая коммерческие проекты. 📌 Плюсы: - Регулярные обновления и новые пакеты - Идеально для прототипов, обучения и инди-игр - Никаких ограничений по использованию 🔥 Забирай здесь: https://kenney.nl/assets

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

#ПятничныйКвиз #ДляСамыхМаленьких
#ПятничныйКвиз #ДляСамыхМаленьких

⚡ Как выбор структур данных влияет на скорость .NET приложений Недавно я оптимизировал 12 крупных систем на ASP .NET Core и к
⚡ Как выбор структур данных влияет на скорость .NET приложений Недавно я оптимизировал 12 крупных систем на ASP .NET Core и каждый раз сталкивался с одной и той же проблемой. Разработчики тратят много времени на оптимизацию запросов, индексов и кэша, но забывают про базу — правильный выбор коллекций. Ошибка в выборе структуры данных может замедлить приложение в 10 раз. Вот простые примеры: 1. Поиск по ключу - List<T>.Find() → O(n) — медленно на больших объёмах - ✅ Dictionary<K,V> → O(1) — быстрый доступ 2. Вставка в начало списка - List<T>.Insert(0, item) → O(n) — сдвигает все элементы - ✅ LinkedList<T> → O(1) — мгновенная вставка 3. Уникальные элементы - List<T> + Contains() → O(n) на каждую проверку - ✅ HashSet<T> → O(1) — уникальность проверяется сразу 4. Упорядоченные данные - List<T> + Sort() → O(n log n) и нужен свой поиск - ✅ SortedDictionary<K,V> → встроенный порядок и быстрый поиск 5. Кэширование API-ответов - Static Dictionary → риск утечек памяти и «зависших» данных - ✅ MemoryCache → встроенная очистка и управление временем жизни 💡 Итог: чаще всего не нужны «хитрые оптимизации». Достаточно выбрать правильную коллекцию — и производительность вырастет кратно. 👉 Вопрос к вам: какая самая серьёзная проблема с производительностью у вас решилась заменой структуры данных?

⏹️Новая специализация, о которой почти никто не знает: проще вход, ниже конкуренция, выше чеки В архитектурной сфере катастро
⏹️Новая специализация, о которой почти никто не знает: проще вход, ниже конкуренция, выше чеки В архитектурной сфере катастрофически не хватает разработчиков. Проектировщики и инженеры нуждаются в плагинах для софта, а программистов, которые умеют их писать, — единицы. Конкуренция минимальна, спрос растет, а чеки за проекты выше, чем в классическом аутсорсе. ▶️Освоив Revit API, вы сможете быстро войти в нишу, где каждый навык напрямую конвертируется в деньги. На курсе «Программирование в Autodesk Revit» от EdTech-платформы STEMPS вы научитесь: ➡️Писать плагины и инструменты на C# для инженеров ➡️Автоматизировать рутинные процессы и проверки моделей ➡️Создавать востребованный софт для архитектурных и проектных бюро 👤Автор курса — Дмитрий Смирнов, CTO DynamicLabs, STEMPS, Atomtech, Plancy. Разрабатывал системы автоматизации и SaaS-системы для компаний на 700+ сотрудников. 🗓 Старт курса — 23 сентября. 📍Студенты получат документ о повышении квалификации. 🔥Успейте записаться на курс со скидкой 10%: https://stemps.ru/

⚡ Как выбор структур данных влияет на скорость .NET приложений Недавно я оптимизировал 12 крупных систем на ASP .NET Core и к
⚡ Как выбор структур данных влияет на скорость .NET приложений Недавно я оптимизировал 12 крупных систем на ASP .NET Core и каждый раз сталкивался с одной и той же проблемой. Разработчики тратят много времени на оптимизацию запросов, индексов и кэша, но забывают про базу — правильный выбор коллекций. Ошибка в выборе структуры данных может замедлить приложение в 10 раз. Вот простые примеры: 1. Поиск по ключу - List<T>.Find() → O(n) — медленно на больших объёмах - ✅ Dictionary<K,V> → O(1) — быстрый доступ 2. Вставка в начало списка - List<T>.Insert(0, item) → O(n) — сдвигает все элементы - ✅ LinkedList<T> → O(1) — мгновенная вставка 3. Уникальные элементы - List<T> + Contains() → O(n) на каждую проверку - ✅ HashSet<T> → O(1) — уникальность проверяется сразу 4. Упорядоченные данные - List<T> + Sort() → O(n log n) и нужен свой поиск - ✅ SortedDictionary<K,V> → встроенный порядок и быстрый поиск 5. Кэширование API-ответов - Static Dictionary → риск утечек памяти и «зависших» данных - ✅ MemoryCache → встроенная очистка и управление временем жизни 💡 Итог: чаще всего не нужны «хитрые оптимизации». Достаточно выбрать правильную коллекцию — и производительность вырастет кратно. 👉 Вопрос к вам: какая самая серьёзная проблема с производительностью у вас решилась заменой структуры данных?

🖥 Notepads — легковесный и функциональный текстовый редактор для Windows, который является альтернативой стандартному блокно
🖥 Notepads — легковесный и функциональный текстовый редактор для Windows, который является альтернативой стандартному блокноту! 💡 Это открытое приложение с современным интерфейсом, ориентированное на простоту использования, но при этом обладающее рядом полезных функций для повседневного редактирования текста и работы с кодом. 🔍 Основные особенности Notepads: 🌟 Минималистичный интерфейс с возможностью использования вкладок для работы с несколькими документами. 🌟 Поддержка синтаксической подсветки для популярных языков программирования (например, Python, JavaScript, HTML и другие). Возможность использования темной и светлой темы. 🌟 Автосохранение документов и высокая производительность, что делает редактор удобным для работы с небольшими текстовыми файлами и кодом. 🌟 Поддержка Unicode и работы с многоязычными текстами. Интеграция с Windows 10 API, что позволяет использовать функциональные возможности операционной системы, такие как улучшенные окна и взаимодействие с пользовательским интерфейсом. 🔐 Лицензия: MIT 🖥 Github @csharp_ci

⚡ .NET 9 — самая быстрая платформа 2025 года Microsoft прокачала .NET так, что он обгоняет почти все популярные фреймворки: J
⚡ .NET 9 — самая быстрая платформа 2025 года Microsoft прокачала .NET так, что он обгоняет почти все популярные фреймворки: Java, Go, Node.js, Python и даже PHP. 🚀 Что сделали: - Мусорщик (GC) стал адаптивным → меньше пауз даже при высоких нагрузках. - JIT-компилятор быстрее разогревает код и оптимизирует горячие участки. - Векторизация через AVX10 и Arm SVE ускоряет циклы в несколько раз. - Native AOT уменьшает размер бинарников и ускоряет запуск (контейнеры, IoT, edge). - Сеть (сокеты, HTTP/3) стала работать быстрее с низкой задержкой. - JSON обрабатывается через System.Text.Json максимально эффективно. - Меньше аллокаций → меньше нагрузка на память и GC. - Thread-pool и многопоточность лучше распределяют задачи по ядрам. - Минимальные API и оптимизация исключений дали ещё +15% к скорости. 📊 Бенчмарки показывают: - Java (Spring) — медленнее в 2.5 раза - Go (Fiber) — в 1.3 раза - Node.js (Fastify) — в 4 раза - Python (FastAPI) — в 10 раз - PHP (Laravel) — в 15 раз - Ruby (Rails) — в 20 раз 💡 Итог: .NET 9 — быстрый старт, низкая задержка и топ-производительность. Отличный выбор для веба, микросервисов и облака. #dotnet #performance #benchmark #backend

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

#ПятничныйКвиз #ОсеньВремяЗаготавливатьОгурцы
#ПятничныйКвиз #ОсеньВремяЗаготавливатьОгурцы

⁉️Хотите начать карьеру Data Scientist? Освойте методы ансамблирования ML Чтобы понять, как добиться высокого качества предск
⁉️Хотите начать карьеру Data Scientist? Освойте методы ансамблирования ML Чтобы понять, как добиться высокого качества предсказания в машинном обучении, присоединяйтесь к открытому вебинару 8 сентября в 18:00 МСК! На уроке мы разберем ключевые методы ансамблирования моделей, которые использует каждый Data Scientist: Бэггинг, Random Forest и Градиентный бустинг. Эти методы помогут вам повысить точность ваших моделей и научиться их эффективно применять в реальных задачах. После занятия вы будете уверенно работать с ансамблями моделей на Python и знать, как применять их на практике для получения лучших результатов. ➡️ Присоединяйтесь и получите скидку на курс «Machine Learning. Basic»: https://otus.pw/OiTt/?erid=2W5zFHvwwRz Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

🚀 Docker + .NET pro tip Для .NET приложений используйте многоступенчатую сборку: сначала компилируем и публикуем, потом копируем только готовые бинарники в минимальный рантайм-образ.

# Этап сборки
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY *.csproj .
RUN dotnet restore
COPY . .
RUN dotnet publish -c Release -o /app/publish

# Этап финального образа
FROM mcr.microsoft.com/dotnet/aspnet:8.0
WORKDIR /app
COPY --from=build /app/publish .
ENTRYPOINT ["dotnet", "MyApp.dll"]
💡 Преимущества: - минимальный размер финального контейнера, - быстрый запуск без SDK, только рантайм, - меньше уязвимостей благодаря облегчённому окружению. @csharp_ci

⚡ ASP.NET Core: Глобальный обработчик исключений Красивый и лаконичный пример реализации IExceptionHandler в .NET 8+ через sw
ASP.NET Core: Глобальный обработчик исключений Красивый и лаконичный пример реализации IExceptionHandler в .NET 8+ через switch`-выражение и сервис `IProblemDetailsService.

internal sealed class GlobalExceptionHandler(
    IProblemDetailsService problemDetailsService,
    ILogger<GlobalExceptionHandler> logger) : IExceptionHandler
{
    public async ValueTask<bool> TryHandleAsync(
        HttpContext httpContext,
        Exception exception,
        CancellationToken cancellationToken)
    {
        logger.LogError(exception, "Unhandled exception occurred");

        httpContext.Response.StatusCode = exception switch
        {
            ApplicationException => StatusCodes.Status400BadRequest,
            _ => StatusCodes.Status500InternalServerError
        };

        return await problemDetailsService.TryWriteAsync(new ProblemDetailsContext
        {
            HttpContext = httpContext,
            Exception = exception,
            ProblemDetails = new ProblemDetails
            {
                Type = exception.GetType().Name,
                Title = "An error occured",
                Detail = exception.Message
            }
        });
    }
}
📌 Что тут важно: - switch по типу исключения для назначения статуса ответа - IProblemDetailsService для единообразного формирования ответа - Логгирование всех необработанных ошибок 🔥 Такой подход делает код чище, централизует обработку ошибок и избавляет от дублирования в middleware.