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

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

الذهاب إلى القناة على Telegram

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

إظهار المزيد

📈 نظرة تحليلية على قناة تيليجرام Библиотека шарписта | C#, F#, .NET, ASP.NET

تُعد قناة Библиотека шарписта | C#, F#, .NET, ASP.NET (@csharpproglib) في القطاع اللغوي الروسية لاعباً نشطاً. يضم المجتمع حالياً 21 861 مشتركاً، محتلاً المرتبة 6 194 في فئة التكنولوجيات والتطبيقات والمرتبة 30 800 في منطقة روسيا.

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

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

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

  • حالة التحقق: غير موثّقة
  • معدل التفاعل (ER): يبلغ متوسط تفاعل الجمهور 12.71‎%. وخلال أول 24 ساعة من النشر يحصد المحتوى عادةً 7.49‎% من ردود الفعل نسبةً إلى إجمالي المشتركين.
  • وصول المنشورات: يحصل كل منشور على متوسط 2 778 مشاهدة. وخلال اليوم الأول يجمع عادةً 1 638 مشاهدة.
  • التفاعلات والاستجابة: يتفاعل الجمهور بانتظام؛ متوسط التفاعلات لكل منشور يبلغ 9.
  • الاهتمامات الموضوعية: يركز المحتوى على مواضيع رئيسية مثل .net, шарписта, навигация, await, string.

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

يصف المؤلف القناة بأنها مساحة للتعبير عن الآراء الذاتية:
Все самое полезное для C#-разработчика в одном канале. Как запустить своего ии-агента: https://clc.to/tvpmDQ По рекламе: @proglib_adv Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead

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

21 861
المشتركون
-324 ساعات
-257 أيام
-4930 أيام
أرشيف المشاركات
✍🏻 Какая из операций linq исключает дублирование одинаковых элементов в выходной последовательности? Операция Distinct удаляет дублированные элементы из входной последовательности. Библиотека собеса по С#

📰 Дайджест новостей за неделю Собрали всё, что произошло на этой неделе, чтобы вы могли await важное без блокирующего Thread
📰 Дайджест новостей за неделю Собрали всё, что произошло на этой неделе, чтобы вы могли await важное без блокирующего Thread.Sleep(). Без null, без boxing, только актуальные штуки 🆕 .NET 10 Preview 2 Microsoft продолжает двигать .NET вперёд, и второй превью-релиз 10-й версии включает пачку обновлений во всех уголках платформы — от ядра до UI и облаков. 🧪 Microsoft обновили MSTest Там не просто косметические апдейты. В этом релизе добавлено множество реально полезных фич, о которых просили разработчики. 🆕 MultiGit в Visual Studio Теперь Visual Studio официально поддерживает работу с несколькими GitHub-аккаунтами. 📝 Visual Studio теперь сам пишет комментарии 🎮 Оптимизация памяти в Unity: как избежать лагов и повысить FPS в играх 🐸Библиотека шарписта #свежак

👁 Прокачай внимательность Перед тобой — сетка со словами, зашифрованными по горизонтали. Некоторые из них напрямую связаны с
👁 Прокачай внимательность Перед тобой — сетка со словами, зашифрованными по горизонтали. Некоторые из них напрямую связаны с C#, другие — просто хорошо знакомы каждому программисту 💬 Напишите в комментариях, сколько слов смогли найти, и поделитесь своими находками под спойлером. 🐸Библиотека шарписта #междусобойчик

👀 Тест на внимательность Задача простая — слова зашифрованы по горизонтали. Не все из них относятся к Go, но каждое точно зн
👀 Тест на внимательность Задача простая — слова зашифрованы по горизонтали. Не все из них относятся к Go, но каждое точно знакомо настоящему программисту 🐸Библиотека шарписта #междусобойчик

🧩💊 Алгоритмическая самоуспокоенность: как мы разучились думать своей головой Каждый день мы сталкиваемся с бесконечным пото
🧩💊 Алгоритмическая самоуспокоенность: как мы разучились думать своей головой Каждый день мы сталкиваемся с бесконечным потоком информации, которая не просто наполняет наш день, а управляет нашими мыслями. Социальные сети, алгоритмы и вечная гонка за вниманием приводят к тому, что мы забываем, как думать собственной головой. Это не просто влияет на настроение, но и на способность анализировать информацию, принимать решения и, главное, не становиться частью системы манипуляций. Если вы хотите вернуться к осознанному подходу в восприятии мира и научиться фильтровать контент, то эта тема точно для вас. 🔗 Подробнее в статье 🐸 Библиотека джависта

☸️Хотите узнать, как деплоить ASP.NET-приложения в Kubernetes? 📅26 марта в 20:00 мск на открытом вебинаре мы разберем: – Per
☸️Хотите узнать, как деплоить ASP.NET-приложения в Kubernetes? 📅26 марта в 20:00 мск на открытом вебинаре мы разберем: – PersistentVolume – ConfigMap – Secret – Развернем БД в кластере и обсудим, почему секреты не такие уж секретные. С Kubernetes ваши ASP.NET Core-приложения станут масштабируемыми и гибкими. ➡️ Регистрируйтесь на вебинар и получите скидку на курс «C# ASP.NET Core-разработчик»: https://clc.to/ttot3w Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

💡 Лайфхак: foreach работает даже с числами Начиная с C# 9 можно итерироваться по числам:
foreach (int x in 5)  
    Console.Write($"{x} ");  
// Вывод: 1 2 3 4 5  

foreach (var n in 42..46)  
    Console.Write($"{n} ");  
// Вывод: 42 43 44 45 46  
Для этого достаточно добавить расширение метода GetEnumerator:
public static class Extensions
{
    public static IEnumerator<int> GetEnumerator(this int x)
        => Enumerable.Range(1, x).GetEnumerator();

    public static IEnumerator<int> GetEnumerator(this Range range)
        => Enumerable.Range(range.Start.Value, range.End.Value - range.Start.Value + 1).GetEnumerator();
}
💬 Уже использовали в работе или всё ещё балуетесь обычными циклами? 🐸Библиотека шарписта #буст

Лайфхак: foreach работает даже с числами Начиная с C# 9 можно итерироваться по числам:
foreach (int x in 5)
    Console.Write($"{x} ");
// Вывод: 1 2 3 4 5  

foreach (var n in 42..46)
    Console.Write($"{n} ");
// Вывод: 42 43 44 45 46 
Для этого достаточно добавить 🐸Библиотека шарписта #буст

🤯 Баги, которые IDE не смогла предсказать Программисты доверяют своим инструментам, но иногда даже самая умная IDE оказывает
🤯 Баги, которые IDE не смогла предсказать Программисты доверяют своим инструментам, но иногда даже самая умная IDE оказывается бессильна перед хитроумными багами. Это те моменты, когда компилятор молчит, дебаггер пожимает плечами, а ты смотришь в монитор и думаешь: «Как так-то». 🛠 В Библиотеке программиста мы считаем, что самые крутые истории — это те, которые заставляют нас учиться. Делитесь своими случаями, когда: — Компилятор не ругался, но всё работало "не так". — Ошибка пряталась в очевидном месте, но её никто не замечал. — Код выглядел идеально, но прод сказал: "ну ты и наделал..." — Рефакторинг только ухудшил ситуацию. Начнём с нашего админа:
Одной из моих первых фичей была отправка письма по шаблону. Отправку реализовал — с этим проблем не возникло. Добавил логирование, чтобы отслеживать какие письма кому идут. Так случилось, что на тестирование подзабили, потому что письма на тестовой среде не отправлялись. Вывели это в прод и оказалось, что ошибся в форматировании строки в логах... IDE как-то упустила этот момент, а мне зелёному хотелось поскорее увидеть плоды своего творения. В тот же день я и повёз свой первый хотфикс.
🐸Библиотека шарписта #междусобойчик

😊 Промт дня: генератор регулярных выражений Регулярные выражения это что-то на эльфийском. Вместо ручного написания попросите об этом нейросеть с помощью промта:
I want you to act as a regex generator. Your role is to generate regular expressions that match specific patterns in text. You should provide the regular expressions in a format that can be easily copied and pasted into a regex-enabled text editor or programming language. Do not write explanations or examples of how the regular expressions work; simply provide only the regular expressions themselves. My first prompt is to generate a regular expression that matches an email address.
В этом примере будет сгенерировано выражение, для матчинга email-адресов. 💬 Часто пишете регулярки? Делитесь в комментариях! 🚀 🐸Библиотека шарписта #буст

💬 Как оставлять комментарии в чате нашего канала В нашем чате работает бот Shieldy — он защищает от спама, запрашивая у новых участников решение простой капчи. ⚠️ Проблема, с которой сталкиваются многие: вы нажимаете под постом «Прокомментировать», пишете что-то, а потом получаете бан и не можете писать комментарии. ❓Почему так: Shieldy отправляет капчу в сам чат, а не в комментарии под конкретный пост. Из-за этого капчу можно не увидеть, не отправить ответ на нее, и бот автоматически заблокирует вас. ✅ Как присоединиться к чату, чтобы бот вас не забанил — Зайдите в описание канала и нажмите кнопку Discuss / Чат — Нажмите Join / Присоединиться — Сразу обратите внимание на сообщение от бота Shieldy — Решите простой пример и отправьте ответ в чат После этого бот отправит приветственное сообщение и вы сможете оставлять комментарии. Эту проверку нужно пройти только один раз при вступлении в чат. ❗️ Если вас все-таки забанили — Это временная блокировка на несколько минут — Подождите и попробуйте зайти позже, бот снова отправит вам капчу Админы канала никак не могут ускорить процесс, бот автоматически снимает с вас блокировку через пару минут. Мы понимаем, что эта система неидеальна, и ищем более удобное решение. 👾 Спасибо, что активно участвуете в обсуждении наших постов!

⚙️ Передаём данные между потоками В C# есть несколько способов передать данные из одного потока в другой. Выбор зависит от тр
⚙️ Передаём данные между потоками В C# есть несколько способов передать данные из одного потока в другой. Выбор зависит от требований к производительности, удобству и безопасности. Несколько распространенных вариантов: 1️⃣ Использование BlockingCollection<T> Это потокобезопасная коллекция, позволяющая передавать данные от одного потока к другому.
var collection = new BlockingCollection<int>();

        // Поток-поставщик (Producer)
        Task.Run(() =>
        {
            for (int i = 0; i < 10; i++)
            {
                collection.Add(i);
                Console.WriteLine($"Производитель: добавил {i}");
                Thread.Sleep(500);
            }
            collection.CompleteAdding();
        });

        // Поток-потребитель (Consumer)
        Task.Run(() =>
        {
            foreach (var item in collection.GetConsumingEnumerable())
            {
                Console.WriteLine($"Потребитель: получил {item}");
            }
        }).Wait();
2️⃣ Использование TaskCompletionSource<T> Когда нужно передать значение между потоками в будущем.
var tcs = new TaskCompletionSource<int>();

        // Поток-поставщик
        Task.Run(() =>
        {
            Thread.Sleep(2000);
            tcs.SetResult(42);
        });

        // Поток-потребитель
        int result = await tcs.Task;
        Console.WriteLine($"Получено: {result}");
3️⃣ Использование ConcurrentQueue<T> Если нужно неблокирующее хранилище данных.
var queue = new ConcurrentQueue<int>();

        // Поток-поставщик
        Task.Run(() =>
        {
            for (int i = 0; i < 10; i++)
            {
                queue.Enqueue(i);
                Console.WriteLine($"Добавлено {i}");
                Thread.Sleep(500);
            }
        });

        // Поток-потребитель
        Task.Run(() =>
        {
            while (true)
            {
                if (queue.TryDequeue(out int item))
                {
                    Console.WriteLine($"Получено {item}");
                }
                Thread.Sleep(100);
            }
        }).Wait();
4️⃣ Использование Channel<T> (System.Threading.Channels) Альтернативный подход к BlockingCollection<T>
var channel = Channel.CreateUnbounded<int>();

        // Поток-поставщик
        _ = Task.Run(async () =>
        {
            for (int i = 0; i < 10; i++)
            {
                await channel.Writer.WriteAsync(i);
                Console.WriteLine($"Производитель: {i}");
                await Task.Delay(500);
            }
            channel.Writer.Complete();
        });

        // Поток-потребитель
        await foreach (var item in channel.Reader.ReadAllAsync())
        {
            Console.WriteLine($"Потребитель: {item}");
        }
💬 Какой вариант вам больше всего понравился? 🐸Библиотека шарписта #буст

🎮💾 Оптимизация памяти в Unity: как избежать лагов и повысить FPS в играх Оптимизация памяти в Unity — ключ к стабильной раб
🎮💾 Оптимизация памяти в Unity: как избежать лагов и повысить FPS в играх Оптимизация памяти в Unity — ключ к стабильной работе игр. Если хочется избежать лагов и повысить FPS, важно правильно управлять памятью. Использование эффективных методов загрузки и выгрузки данных, уменьшение количества аллокаций и грамотное применение сборщика мусора помогут улучшить производительность и стабильность игры. ➡️ Подробнее в статье 🐸Библиотека шарписта

💾 Шпаргалка по C# Все важные моменты в одном репозитории. Сохраняйте себе в закладки. ➡️ Репозиторий со шпаргалкой 🐸Библиот
💾 Шпаргалка по C# Все важные моменты в одном репозитории. Сохраняйте себе в закладки. ➡️ Репозиторий со шпаргалкой 🐸Библиотека шарписта #буст

🐧 Пингвин, покоривший мир: история взлета Linux – ОС, управляющей 96% серверов В 1991 году на компьютере с 4 мегабайтами пам
🐧 Пингвин, покоривший мир: история взлета Linux – ОС, управляющей 96% серверов В 1991 году на компьютере с 4 мегабайтами памяти родилась программа, которая сегодня управляет большей частью интернета, смартфонами и даже космическими аппаратами. Это история Linux, рассказанная одним из первых свидетелей. ➡️ Читать статью ➡️ Зеркало

📝 Visual Studio теперь сам пишет комментарии Microsoft представила автоматическую генерацию комментариев в Visual Studio с п
📝 Visual Studio теперь сам пишет комментарии Microsoft представила автоматическую генерацию комментариев в Visual Studio с помощью GitHub Copilot. Теперь, просто введя /// перед методом, можно получить готовое описание его работы, параметров и возвращаемого значения. • Доступно в Visual Studio 17.14 Preview 2. ➡️ Подробнее в блоге разработчиков Как думаете, полезно или лучше вообще не писать комментарии? 💬 🐸Библиотека шарписта #свежак

Количество уникальных букв в строке 1. Создаем строку str, которую нужно проанализировать. 2. Применяем метод Distinct() для
Количество уникальных букв в строке 1. Создаем строку str, которую нужно проанализировать. 2. Применяем метод Distinct() для получения уникальных символов в строке. 3. Вызываем метод Count() для получения количества элементов в последовательности уникальных символов. 4. Добавляем параметр char.IsLetter, чтобы учитывать только буквы алфавита.

Как устроены поколения в сборке мусора Garbage Collector (GC) в .NET работает по поколенческой (generational) модели и исполь
Как устроены поколения в сборке мусора Garbage Collector (GC) в .NET работает по поколенческой (generational) модели и использует три поколения, нумеруемые от 0. 1️⃣ Gen 0 (Первое поколение) • В этом поколении создаются новые объекты. • Сборки происходят часто, но занимают мало времени. • Если объект переживает сборку мусора, он перемещается в Gen 1. Очистка происходит когда выделено определенное количество памяти или когда в системе недостаточно памяти. 2️⃣ Gen 1 (Второе поколение) • Содержит объекты, которые выжили после очистки Gen 0. • Используется как буфер перед Gen 2. • Очистка Gen 1 происходит реже, чем Gen 0. Очистка происходит когда Gen 0 заполняется, и GC не смог освободить достаточно памяти. 3️⃣ Gen 2 (Третье поколение) • Включает долгоживущие объекты, например, кеш, синглтоны. • Очистка происходит редко и занимает больше времени. • Все объекты, пережившие сборку в Gen 1, перемещаются в Gen 2. Очистка происходит, когда в системе не хватает памяти. А также есть LOH (Large Object Heap) – специальная область для больших объектов. В нём очистка очень редкая и дорогостоящая. Чем меньше объектов доживает до Gen 2, тем лучше работает GC. 🐸Библиотека шарписта #буст