fa
Feedback
Библиотека шарписта | C#, F#, .NET, ASP.NET

Библиотека шарписта | C#, F#, .NET, ASP.NET

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

Все самое полезное для C#-разработчика в одном канале. Наши курсы: https://clc.to/y3LDtw По рекламе: @proglib_adv Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead

نمایش بیشتر

📈 تحلیل کانال تلگرام Библиотека шарписта | C#, F#, .NET, ASP.NET

کانال Библиотека шарписта | C#, F#, .NET, ASP.NET (@csharpproglib) در بخش زبانی روسی بازیگری فعال است. در حال حاضر جامعه شامل 21 685 مشترک است و جایگاه 5 992 را در دسته فناوری و برنامه‌ها و رتبه 30 427 را در منطقه روسيا دارد.

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

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

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

  • وضعیت تأیید: تأیید نشده
  • نرخ تعامل (ER): میانگین تعامل مخاطب 17.50% است و در ۲۴ ساعت نخست پس از انتشار، محتوا معمولاً 7.83% واکنش نسبت به کل مشترکان کسب می‌کند.
  • دسترسی پست‌ها: هر پست به طور میانگین 3 794 بازدید دریافت می‌کند. در اولین روز معمولاً 1 697 بازدید جمع‌آوری می‌شود.
  • واکنش‌ها و تعامل: مخاطبان به‌طور فعال حمایت می‌کنند؛ میانگین واکنش به هر پست 23 است.
  • علایق موضوعی: محتوا بر موضوعات کلیدی مانند .net, шарписта, навигация, await, string تمرکز دارد.

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

نویسنده این فضا را محل بیان دیدگاه‌های شخصی توصیف می‌کند:
Все самое полезное для C#-разработчика в одном канале. Наши курсы: https://clc.to/y3LDtw По рекламе: @proglib_adv Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead

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

21 685
مشترکین
اطلاعاتی وجود ندارد24 ساعت
-97 روز
-4530 روز
آرشیو پست ها
🌵🕵️‍♂️ Git-квест: 10 испытаний для повелителя репозиториев Привет, шарписты! Вы пишете код, который собирается в проекты, п
🌵🕵️‍♂️ Git-квест: 10 испытаний для повелителя репозиториев Привет, шарписты! Вы пишете код, который собирается в проекты, покоряющие мир, но знаете ли вы, как не запушить .env в мастер? Этот тест — шанс доказать, что вы не только мастер LINQ, но и ветвлений в Git ✏️ Пройти тест

🎵 «Кодю под windows - да, это легко» Предлагаем послушать авторский айти ремикс о нашем любимом C#! Без наездов на джавистов
🎵 «Кодю под windows - да, это легко» Предлагаем послушать авторский айти ремикс о нашем любимом C#! Без наездов на джавистов не обошлось. 🎧 Слушать 🐸Библиотека шарписта

👨‍💻 Кроссплатформенная разработка с .NET MAUI и Blazor Hybrid 💡 .NET MAUI и Blazor Hybrid предоставляют возможность исполь
👨‍💻 Кроссплатформенная разработка с .NET MAUI и Blazor Hybrid 💡 .NET MAUI и Blazor Hybrid предоставляют возможность использовать единую кодовую базу для создания приложений, работающих на мобильных устройствах, настольных системах и в вебе. Это решение для тех, кто хочет оптимизировать процесс разработки. 🎯 Чем это удобно? • Переиспользование Razor-компонентов между вебом, мобильными и настольными приложениями. • Единый стиль работы для разработчиков, знакомых с экосистемой .NET Если вы хотите понять, как это работает на практике, рекомендуем ознакомиться с одной из статей, где подробно описывается процесс создания кроссплатформенного приложения на основе .NET MAUI и Blazor Hybrid. 📎 Посмотреть как разработать мультиплатформенное приложение 🐸Библиотека шарписта

⚙️ Мини-гайд по реализации MFA в .NET Многофакторная аутентификация (MFA) — это важный инструмент для повышения безопасности
⚙️ Мини-гайд по реализации MFA в .NET Многофакторная аутентификация (MFA) — это важный инструмент для повышения безопасности приложений. Она требует подтверждения личности пользователя через два или более независимых фактора, таких как пароль и одноразовый код из приложения-аутентификатора (например, Google Authenticator). Как это работает: ➡️Для каждого пользователя создается уникальный секретный ключ. Этот ключ используется для генерации одноразовых паролей (TOTP). ➡️Секретный ключ кодируется в формате QR-кода. Пользователь сканирует этот код своим приложением-аутентификатором, чтобы настроить MFA. ➡️После настройки приложение генерирует коды, которые действуют в течение ограниченного времени. ➡️При входе в приложение пользователь вводит код из аутентификатора. Сервер проверяет его, сравнивая с тем, что должно быть сгенерировано для данного пользователя. Основные этапы реализации в .NET: 1️⃣ Настройте библиотеку для работы с TOTP и генерации QR-кодов. 2️⃣ Реализуйте процесс генерации секретного ключа и сохранения в базе данных. 3️⃣ Организуйте валидацию кода на сервере при каждом входе. 📎 Пример реализации с кодом 🐸Библиотека шарписта

⚡️ Работа с gRPC API в .NET 8 ❓Что такое gRPC? gRPC — это фреймворк удаленных вызовов процедур, который использует HTTP/2 для
⚡️ Работа с gRPC API в .NET 8 ❓Что такое gRPC? gRPC — это фреймворк удаленных вызовов процедур, который использует HTTP/2 для передачи данных между приложениями. Он выделяется высокой производительностью благодаря бинарному формату Protocol Buffers. 🧑‍💻Реализация API В статье из C#Corner пошагово описан процесс реализации API в .NET 8: 1️⃣ Всё начинается с создания нового проекта с использованием шаблона "gRPC Service". 2️⃣ Затем внимание уделяется определению Proto-файла, который задает структуру запросов и ответов, а также созданию методов API. 3️⃣ Далее рассматривается, как написать серверную логику, обрабатывающую CRUD-операции, и настроить маршруты для работы API. 4️⃣ Заключительный этап — тестирование с использованием Postman, который позволит отправить gRPC-запросы и проверить функциональность сервиса. 📎 Пошаговое руководство для gRPC API 🐸Библиотека шарписта

🔢 Числовая сортировка строк в .NET Спустя 10 лет дискуссий сообщество .NET наконец-то получит поддержку числовой сортировки
🔢 Числовая сортировка строк в .NET Спустя 10 лет дискуссий сообщество .NET наконец-то получит поддержку числовой сортировки строк. Теперь строки с числами, например "file2" и "file10", сортируются логично с учётом чисел. Это стало возможным благодаря новому флагу CompareOptions.NumericOrdering, добавленному в PR#109861. Вопрос впервые подняли ещё в 2015 году в issue#13979, и с тех пор разработчики искали безопасный и универсальный способ его решения. 🎉Эта долгожданная функция будет доступна в будущих версиях .NET, улучшая работу со строками в файлах, версиях и других данных. #новость 🐸Библиотека шарписта

🤨 Неочевидная проблема FirstOrDefault Метод FirstOrDefault в LINQ может стать источником путаницы. Он возвращает первый элем
🤨 Неочевидная проблема FirstOrDefault Метод FirstOrDefault в LINQ может стать источником путаницы. Он возвращает первый элемент последовательности или значение по умолчанию для типа, если элементов нет. Для ссылочных типов и Nullable<T> это null, а для значимых типов (например, int) — это их дефолтное значение (0, false и т.д.). ✏️ Например, вызов FirstOrDefault для пустого списка List<int> вернёт 0, что может быть неожиданно, если 0 имеет смысловое значение в вашем коде.
var numbers = new List<int> { };
var result = numbers.FirstOrDefault();
Console.WriteLine(result); // Вывод: 0
❗️Чтобы избежать ошибок, рекомендуется явно проверять коллекцию на пустоту перед вызовом метода или использовать DefaultIfEmpty, чтобы задать своё значение по умолчанию. Например:
var result = numbers.DefaultIfEmpty(null).FirstOrDefault();
Это гарантирует, что даже для пустой коллекции результат будет null, а не дефолтное значение типа. Такой подход делает код понятным и избавляет от скрытых проблем с обработкой "пустых" результатов. 🐸Библиотека шарписта #tip

💡Лучшие практики работы с HttpClient в C# HttpClient — это часто неочевидная область, где мелкие ошибки могут обернуться бол
💡Лучшие практики работы с HttpClient в C# HttpClient — это часто неочевидная область, где мелкие ошибки могут обернуться большими проблемами, такими как утечки ресурсов, игнорирование изменений DNS или перегрузка сети. Вот несколько ключевых уроков, которые помогут вам эффективно управлять HTTP-запросами в ваших приложениях. 1️⃣ Никогда не создавайте HttpClient в цикле Каждый раз, когда вы создаёте новый экземпляр HttpClient, в операционной системе открывается новый TCP-сокет. Если вы забыли правильно утилизировать его (или создаёте их слишком много за короткий промежуток времени), это может привести к исчерпанию доступных портов и замедлению работы приложения. 2️⃣ Используйте IHttpClientFactory Вместо создания HttpClient вручную, внедряйте фабрику IHttpClientFactory. Она решает проблемы утечки сокетов, управляет временем жизни клиентов и правильно обрабатывает изменения DNS. 3️⃣ Используйте политику повторных попыток Сетевые запросы могут иногда прерываться. Настройте стратегию повторных попыток через библиотеку Polly, к примеру.
services.AddHttpClient("RetryClient")
    .AddTransientHttpErrorPolicy(policy =>
        policy.WaitAndRetryAsync(3, _ => TimeSpan.FromSeconds(2)));
📎Если вы хотите погрузиться глубже, разобраться с именованными и типизированными клиентами, управлением DNS и правильной утилизацией, то рекомендуем статью к прочтению

💡 Совет по паттерн-матчингу Когда вы работаете с switch или проверяете объекты через is, не забывайте про символ _. Это унив
💡 Совет по паттерн-матчингу Когда вы работаете с switch или проверяете объекты через is, не забывайте про символ _. Это универсальный паттерн, который подходит для любого значения. Например, в switch он удобно используется для обработки случаев «по умолчанию»:
string DescribeDay(string day) => day switch
{
    "Monday" => "Начало недели",
    "Friday" => "Пятница, ура!",
    _ => "Обычный день" // Все остальные случаи
};

Открытая редакция: ищем авторов для рубрики DevLife Друзья, нас часто спрашивают про публикацию материалов о личном опыте и з
Открытая редакция: ищем авторов для рубрики DevLife Друзья, нас часто спрашивают про публикацию материалов о личном опыте и знаниях в IT. Пора это систематизировать! Если у вас есть история о том, как вы: • выросли в профессии • освоили новые технологии • сделали крутой карьерный скачок • эпично лажанулись • создали интересные проекты — присылайте свои статьи на почту hello@proglib.io с темой DevLife Требования простые: • Реальный опыт • Конкретные шаги • От 5000 знаков • Ссылка на Google Docs Лучшие истории опубликуем на сайте и в наших соцсетях с общим охватом 1 млн + человек.

Вакансии «Библиотеки программиста» — ждем вас в команде! Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем: 👉контент-менеджеров для ведения телеграм-каналов Подробности тут Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴 Ждем ваших откликов 👾

Pattern-matching — это функциональность языка, позволяющая проверять объект на соответствие определённому шаблону и выполнять
Pattern-matching — это функциональность языка, позволяющая проверять объект на соответствие определённому шаблону и выполнять действия, если объект удовлетворяет этим условиям. Этот механизм помогает писать более читабельный и компактный код, устраняя необходимость в громоздких конструкциях вроде if-else или switch. Паттерн-матчинг в C# активно развивается с каждой новой версией языка и поддерживает множество типов паттернов, таких как: 1️⃣ Проверка типа Используется для проверки типа объекта и его преобразования в этом же выражении.
object obj = "Hello, world!";
if (obj is string str)
{
    Console.WriteLine($"Длина строки: {str.Length}");
}
2️⃣ Константные паттерны Проверяет значение переменной на соответствие константе.
int number = 42;
if (number is 42)
{
    Console.WriteLine("Число равно 42");
}
3️⃣ Реляционные и логические паттерны Сравнивает значения и комбинирует паттерны с помощью логических операторов (and, or, not).
int age = 25;
if (age is > 18 and < 30)
{
    Console.WriteLine("Возраст в диапазоне от 18 до 30");
}
4️⃣ Паттерны в выражении switch Улучшает конструкцию switch, позволяя использовать сложные условия.
object shape = new Circle { Radius = 5 };

string description = shape switch
{
    Circle { Radius: > 0 } c => $"Круг с радиусом {c.Radius}",
    Rectangle { Width: > 0, Height: > 0 } r => $"Прямоугольник {r.Width}x{r.Height}",
    _ => "Неизвестная форма"
};
5️⃣ Свойственные паттерны Позволяют проверять свойства объекта.
Person person = new Person { Name = "Alice", Age = 30 };

if (person is { Name: "Alice", Age: > 25 })
{
    Console.WriteLine("Это Алиса старше 25 лет");
}
6️⃣ Список и позиционные паттерны Используются для проверки списков и кортежей.
int[] numbers = { 1, 2, 3 };

if (numbers is [1, 2, 3])
{
    Console.WriteLine("Массив содержит 1, 2, 3");
}
🐸Библиотека шарписта

👨‍💻 Жизненный цикл потока в C# В C# потоки управляются через класс Thread из пространства имен System.Threading. Поток прох
👨‍💻 Жизненный цикл потока в C# В C# потоки управляются через класс Thread из пространства имен System.Threading. Поток проходит несколько этапов на протяжении своего жизненного цикла. Давайте разберём эти этапы. 1️⃣Unstarted (Не запущен) Поток создан, но ещё не запущен. Он находится в этом состоянии сразу после инициализации объекта Thread, но до вызова метода Start().
Thread thread = new Thread(MyMethod); 
// Поток создан, но не запущен
2️⃣Running (Выполняется) Поток начинает выполнение после вызова Start(). В этом состоянии поток выполняет код, переданный в качестве делегата.
thread.Start(); 
// Поток запущен и выполняется
3️⃣Waiting (Ожидание) Поток приостанавливается, ожидая выполнения какого-либо условия или ресурса. Это может быть вызвано методами: Thread.Sleep() — поток "засыпает" на заданное время. Monitor.Wait() или lock — поток ожидает захвата монитора. Thread.Join() — поток ожидает завершения другого потока.
Thread.Sleep(1000); 
// Поток приостановлен на 1 секунду
4️⃣Blocked (Заблокирован) Поток заблокирован, пытаясь получить доступ к ресурсу, уже занятому другим потоком. Например, ожидание захвата блокировки через lock. 5️⃣Stopped (Остановлен) Поток завершает выполнение. Это состояние наступает, когда метод, выполняемый в потоке, завершает работу или вызывается метод Abort() (устарел и не рекомендуется использовать). Поток в этом состоянии больше нельзя запустить снова.
thread.Join(); 
// Основной поток ожидает завершения
Дополнительные состоянияBackground (Фоновый поток): Поток может быть фоновым, если свойство IsBackground установлено в true. Фоновые потоки завершаются автоматически, когда завершается основной поток приложения.
thread.IsBackground = true; 
// Устанавливаем поток как фоновый
Suspended (Приостановлен, устарело): Метод Suspend() приостанавливал выполнение потока, но был удалён из новых версий .NET из-за возможных проблем с безопасностью. 🐸Библиотека шарписта

👨‍💻Алгоритмы на LeetCode как способ усилить навыки C# давно стал ключевым инструментом для создания корпоративных приложени
👨‍💻Алгоритмы на LeetCode как способ усилить навыки C# давно стал ключевым инструментом для создания корпоративных приложений, сложных API и облачных решений. В мире .NET задачи на LeetCode могут показаться странной тренировкой: вместо проектирования архитектуры вы решаете головоломки. Но так ли они бесполезны? Или в этом есть скрытая выгода? Давайте разберемся, как алгоритмы и структуры данных соотносятся с реальной разработкой на C#. ❓Почему LeetCode может быть полезным инструментом для C#-разработчиков?LINQ и коллекции: максимальная отдача от стандартной библиотеки Практически каждая задача на LeetCode заставляет вас работать с массивами, списками и словарями – ключевыми инструментами C#. С помощью этих задач вы научитесь писать лаконичный и оптимальный код, использующий силу LINQ. ➖Фокус на чистоту и производительность кода Решение задач на платформах вроде LeetCode требует строгого подхода: минимизации сложности, оптимизации потребления памяти и написания понятного кода. ➖Готовность к любым вызовам Собеседования на позиции C#-разработчика в крупных компаниях, таких как Microsoft или Amazon, часто включают задачи на алгоритмы и структуры данных. ❓Почему LeetCode может быть не лучшей инвестицией времени?Слишком далеко от реальных задач В реальном мире вы скорее будете настраивать ASP.NET, работать с базами данных через Entity Framework или строить архитектуру приложений, а не искать кратчайший путь в графе. ➖ Недостаток контекста экосистемы .NET Практика на LeetCode практически не затрагивает таких аспектов, как разработка облачных решений на Azure, работа с Blazor или настройка CI/CD. ➖ Риск упущенных возможностей Вместо того чтобы часами разбираться с задачей на динамическое программирование, вы могли бы потратить это время на изучение новых возможностей языка, таких как record-типы, async/await или паттерн-матчинг.

🔖📕 Что почитать? Нашли для вас несколько новинок компьютерной литературы! 🐸Библиотека шарписта
+2
🔖📕 Что почитать? Нашли для вас несколько новинок компьютерной литературы! 🐸Библиотека шарписта

👨‍💻⚡️ Akka.NET: Ваш путь к созданию масштабируемых и надёжных приложений Если вы ищете способ создавать распределённые, выс
👨‍💻⚡️ Akka.NET: Ваш путь к созданию масштабируемых и надёжных приложений Если вы ищете способ создавать распределённые, высокопроизводительные и отказоустойчивые приложения на платформе .NET, то Akka.NET — это инструмент, который стоит вашего внимания! Что такое Akka.NET? Akka.NET — это фреймворк, основанный на модели акторов (Actor Model). Он позволяет разработчикам легко работать с конкурентностью, параллелизмом и асинхронностью, избегая головной боли от многопоточности. Каждый «актор»" — это небольшая изолированная сущность, которая взаимодействует с другими через обмен сообщениями. Почему Akka.NET? 🔄 Отказоустойчивость: приложение не упадёт из-за сбоя — акторы можно перезапустить или перенести. 📡 Распределённость: стройте приложения, которые работают на нескольких серверах или в облаке. ⚡️ Масштабируемость: akka.NET легко справляется с нагрузкой, увеличиваясь вместе с вашими задачами. 🛠 Интеграция с .NET: используйте привычный C# и экосистему .NET для построения сложных систем. ❓Где это используется? Чат-приложения: реальное время, тысячи пользователей. Игровые серверы: управление игроками и состоянием мира. Финансовые системы: обработка тысяч транзакций в секунду. IoT: обработка данных от огромного числа устройств. 🐸Библиотека шарписта