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

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

Открыть в Telegram

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

Больше

📈 Аналитический обзор Telegram-канала Библиотека шарписта | C#, F#, .NET, ASP.NET

Канал Библиотека шарписта | C#, F#, .NET, ASP.NET (@csharpproglib) языкового сегмента Русский является активным участником. Сейчас сообщество объединяет 21 865 подписчиков, занимая 6 209 место в категории Технологии и приложения и 30 824 место в регионе Россия.

📊 Показатели аудитории и динамика

С момента создания невідомо проект демонстрирует стремительный рост, собрав аудиторию из 21 865 подписчиков.

Согласно последним данным от 11 июня, 2026, канал показывает стабильную активность. За последние 30 дней изменение числа участников составило -95, а за последние 24 часа — -6, при этом общий охват остаётся высоким.

  • Статус верификации: Не верифицирован
  • Уровень вовлечённости (ER): Средний показатель вовлечённости аудитории составляет 12.48%. В первые 24 часа после публикации контент обычно набирает 7.13% реакций от общего числа подписчиков.
  • Охват публикаций: В среднем каждый пост получает 2 729 просмотров. В течение первых суток публикация набирает 1 560 просмотров.
  • Реакции и взаимодействия: Аудитория активно поддерживает контент: среднее количество реакций на один пост — 9.
  • Тематические интересы: Контент сосредоточен на ключевых темах, таких как .net, шарписта, навигация, await, string.

📝 Описание и контентная политика

Автор описывает ресурс как площадку для выражения субъективного мнения:
Все самое полезное для C#-разработчика в одном канале. По рекламе: @proglib_adv Учиться у нас: https://proglib.io/w/b60af5a4 Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead

Благодаря высокой частоте обновлений (последние данные получены 12 июня, 2026) канал поддерживает актуальность и высокий уровень охвата публикаций. Аналитика показывает, что аудитория активно взаимодействует с контентом, что делает его важной точкой влияния в категории Технологии и приложения.

21 865
Подписчики
-624 часа
-237 дней
-9530 день
Архив постов
⚡️ Оператор который ускоряет ваш код В C# 14 появилась небольшая, но приятная фича — составные операторы присваивания для лог
⚡️ Оператор который ускоряет ваш код В C# 14 появилась небольшая, но приятная фича — составные операторы присваивания для логических операций: &&= и ||=. На первый взгляд кажется синтаксическим сахаром, но под капотом скрывается оптимизация производительности. Раньше мы писали так:
bool isValid = true;
isValid = isValid && CheckCondition();
Теперь можно короче:
bool isValid = true;
isValid &&= CheckCondition();
Ключевое отличие — в ленивых вычислениях. Когда вы пишете isValid &&= CheckCondition(), компилятор гарантирует, что CheckCondition() вызовется только если isValid уже true. Стоит ли переписывать старый код Если у вас критичная производительность и много последовательных проверок — да, имеет смысл. В остальных случаях это приятный бонус для нового кода, но не повод рефакторить весь проект. Чтобы кичиться новыми фичами в языке посоветуйте друзьям наш курс по Python. Они смогут со скидкой 40% обучиться новому, а вы потом рассказывать чего нет в питоне. 🐸 Библиотека шарписта #sharp_view

🖥 Как убить производительность базы данных Когда вы пишете SELECT * FROM users WHERE email = 'user@example.com' без индекса на поле email, база данных выполняет Full Table Scan — последовательно проверяет каждую строку таблицы. Если в таблице 10 записей — не страшно. Но когда их миллион база читает миллион строк, чтобы найти одну нужную. Производительность деградирует нелинейно. С ростом данных время выполнения запроса растёт экспоненциально. Запрос, который работал за 10мс на тестовой базе, в продакшене может выполняться минутами. Как решить проблему • Добавить индекс Самое очевидное решение — создать индекс на нужное поле:
CREATE INDEX idx_users_email ON users(email);
• Составные индексы Если фильтруете по нескольким полям, используйте составной индекс. Порядок полей важен — самое селективное поле должно быть первым:
CREATE INDEX idx_users_status_created ON users(status, created_at);
• Функциональные индексы Для запросов с функциями создавайте индексы на выражения:
CREATE INDEX idx_users_email_lower ON users(LOWER(email));
• Партиционирование Для огромных таблиц разбейте данные на партиции по дате или другому критерию — база будет сканировать только нужные партиции, а не всю таблицу. • Денормализация и кэширование Иногда проще продублировать данные или закэшировать результаты частых запросов в Redis/Memcached, чем постоянно гонять тяжёлые запросы по базе. Индексы — не бесплатны. Они занимают место на диске и замедляют INSERT/UPDATE/DELETE операции. Не нужно индексировать всё подряд — создавайте индексы осознанно. Это уже не «Hello World» писать. Для таких решений нужно знать не только язык. Подтянуть архитектуру можно на нашем интенсиве. До конца октября со скидкой! 🐸 Библиотека шарписта #sharp_view

🧐 Хочешь в Data Science, но не знаешь, с чего начать? Пройди короткий тест по математике — бот покажет, насколько ты готов к
🧐 Хочешь в Data Science, но не знаешь, с чего начать? Пройди короткий тест по математике — бот покажет, насколько ты готов к переходу и что стоит подтянуть.
Всего пару минут — и ты поймёшь, куда двигаться дальше.
👉 Пройти тест

👨‍💻 Версии версионирования 💬 Какую систему нумерации версий предпочитаете и встречали ли экзотические варианты? Делитесь о
+2
👨‍💻 Версии версионирования 💬 Какую систему нумерации версий предпочитаете и встречали ли экзотические варианты? Делитесь опытом👇 🐸 Библиотека шарписта #схема

🔍 50 фраз, из-за которых ваше резюме C#-разработчика летит в корзину На первый взгляд может показаться, что фраза «пишу чист
🔍 50 фраз, из-за которых ваше резюме C#-разработчика летит в корзину На первый взгляд может показаться, что фраза «пишу чистый код на C#» звучит убедительно и профессионально — но на практике рекрутеры и ATS-системы давно привыкли к таким штампам и игнорируют их как пустые слова. Помните: каждая строчка в резюме должна отвечать на вопрос «и что?». Если после вашей фразы можно задать этот вопрос — значит, она недостаточно конкретна. ➡️ В статье про все клише, которые стоит убрать из резюме 🐸 Библиотека шарписта

🤓 Пока Python стал π-thon, ты можешь стать Data Scientist'ом В Proglib.academy стартует экспресс-курс «Математика для Data S
🤓 Пока Python стал π-thon, ты можешь стать Data Scientist'ом В Proglib.academy стартует экспресс-курс «Математика для Data Science»: 10 живых вебинаров, практика на Python и спикеры из ВШЭ, Яндекс Практикума и Wildberries, которые всё разложат по полочкам. В программе: 🔹 матан, линал, теория вероятностей; 🔹 3 практических проекта + викторина с розыгрышем TG Premium; 🔹 поддержка преподавателей и чат с единомышленниками; 🎁 Оплати курс до 19 октября — получи курс по базовой математике в подарок. 🗓️ Старт — 6 ноября 👉 Записаться на курс

👨‍💻 Windows 10 больше не получит обновлений Сегодня Microsoft выпустила последнее обновление для Windows 10. Дальше — тишин
👨‍💻 Windows 10 больше не получит обновлений Сегодня Microsoft выпустила последнее обновление для Windows 10. Дальше — тишина: новых патчей безопасности не будет. Через пару недель система станет мишенью для вирусов и хакерских атак. Есть несколько способов продлить жизнь десятке — от года до нескольких лет. • Официальная программа ESU — до октября 2026 Microsoft запустила программу расширенных обновлений. Бесплатно, но только на год. Чтобы подключиться: 1. Войдите в учётную запись Microsoft 2. Смените регион на США (для пользователей из России и Беларуси) 3. Проверьте статус через команду в PowerShell 4. Зарегистрируйтесь через Центр обновлений После активации система получит доступ к патчам безопасности ещё на год. • LTSC-версия — до января 2027 Корпоративная сборка Windows 10 LTSC (21H2) не получает новых функций, но апдейты безопасности идут до начала 2027 года. Подходит тем, кому нужна стабильность без лишних обновлений. • TSforge — до 2028 года Скрипт через PowerShell, который продлевает поддержку ещё на три года. Нужно сменить регион на страну ЕС, запустить команду и активировать ESU через меню. Проверить результат можно через команду в системе. • 0patch Agent — постоянная защита Программа, которая ставит микропатчи прямо в код системы. Работает даже после окончания всех официальных обновлений и закрывает уязвимости в реальном времени. 🐸 Библиотека шарписта #async_news

🪚 Швейцарский нож для коллекций коллекций Коллекция коллекций — частая головная боль. Пришли батчи из очереди, загрузили стр
🪚 Швейцарский нож для коллекций коллекций Коллекция коллекций — частая головная боль. Пришли батчи из очереди, загрузили страницы из API, получили результаты от нескольких потоков. Одна строка вместо циклов и временных списков:
var all = batches.SelectMany(b => b).ToList();
Когда использовать • Батчи сообщений из Kafka/RabbitMQ → один список для обработки • Постраничные данные из API → единая коллекция • Результаты параллельных задач → склеить всё вместе SelectMany сохраняет порядок. Если у вас [1,2], [3,4], [5,6] — получите [1,2,3,4,5,6]. Критично для событий, логов, приоритетных очередей. 🐸 Библиотека шарписта #sharp_view

Как работать с массивами в C# без тормозов и без unsafe-кода В C# каждое обращение к элементу массива проверяется на выход за
Как работать с массивами в C# без тормозов и без unsafe-кода В C# каждое обращение к элементу массива проверяется на выход за границы. Это безопасно, но медленно. Разработчики часто решают проблему через unsafe-код с указателями — быстро, но опасно: один неверный индекс, и приложение крашится или получает дыру в безопасности. Есть третий путь — Span<T> Span — это структура, которая хранит указатель на данные и их длину. Фишка в том, что это ref struct — она живёт только в стеке и не может попасть в кучу. Благодаря этому компилятор гарантирует: данные переживут span, а значит проверки границ можно убрать. Например, в быстрой сортровке вместо передачи массива с индексами low/high передаёте span. Код короче, переполнение невозможно, а рекурсивные вызовы работают через срезы:
// Было: опасно, (low + high) может переполниться
void Quicksort(int[] array, int low, int high) {
    int mid = (low + high) / 2;  // 💥 overflow!
    // ...
    Quicksort(array, low, pivot - 1);
    Quicksort(array, pivot + 1, high);
}

// Стало: безопасно и выразительно
void Quicksort(Span<int> span) {
    if (span.Length <= 1) return;
    
    int pivot = Partition(span);
    Quicksort(span[..pivot]);        // левая часть
    Quicksort(span[(pivot + 1)..]);  // правая часть
}
Раньше для передачи части массива в функцию приходилось либо копировать данные, либо таскать массив + offset + length. Span решает это элегантно: создаёте срез array[10..20], передаёте дальше — никакого копирования, полная безопасность типов. 🐸 Библиотека шарписта #il_люминатор

Практикум, который снимет боль про микросервисы, о которой все молчат. Sync vs Async: что убьёт ваш проект, а что спасёт? 15
Практикум, который снимет боль про микросервисы, о которой все молчат. Sync vs Async: что убьёт ваш проект, а что спасёт? 15 октября, 19:00 — практический вебинар для разработчиков, архитекторов и девопсеров от OTUS. Работаем вместе с Олегом Голенищевым, Senior .NET-разработчиком Directum, преподавателем Microsoft. Приходи, если хочешь: ✍️Понимать, где Sync — мастхэв, а где Async — единственный шанс выжить ✍️Получить FANG-уровня чек-лист по интеграции (и бонус — шаблоны конфигов Spring Boot для Kafka и RabbitMQ) ✍️Забрать 7% скидку на любой курс OTUS (именно так, просто за регистрацию) ✍️Не попасть в “клуб тех, кто строил микросервисы по учебнику, а теперь переписывает всё с нуля” Запишись, чтобы не чинить то, что можно не ломать. Запись, подарки и скидка — только для своих. Лови шанс — кликай на регистрацию: https://tglink.io/a0d055ccd13e Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. erid: 2W5zFJ4TwVr

🚩 Задача с собеса Задача: дана строка s и строка p. Необходимо найти все начальные индексы подстрок в s, которые являются анаграммами строки p. Анаграмма — это слово или фраза, образованная перестановкой букв другого слова, используя все исходные буквы ровно один раз. Пример:
Input: s = "cbaebabacd", p = "abc" Output: [0, 6] Объяснение: Подстрока с индекса 0 - "cba", анаграмма "abc". Подстрока с индекса 6 - "bac", анаграмма "abc".
Оптимальное решение использует технику скользящего окна с подсчетом частот символов. 1. Подсчитываем количество и частоту всех символов в строке p 2. Создаем скользящее окно размером со строку p в строке s 3. Для каждой позиции окна сравниваем частоты символов с эталоном 4. При совпадении добавляем индекс в результат Код:
public class Solution 
{
    public IList<int> FindAnagrams(string s, string p) 
    {
        List<int> result = new List<int>();
        
        if (s.Length < p.Length) 
            return result;
        
        // Массивы для подсчета частот символов (26 букв английского алфавита)
        int[] pCount = new int[26];
        int[] windowCount = new int[26];
        
        // Подсчитываем частоты в строке p и первом окне
        for (int i = 0; i < p.Length; i++) 
        {
            pCount[p[i] - 'a']++;
            windowCount[s[i] - 'a']++;
        }
        
        // Проверяем первое окно
        if (AreEqual(pCount, windowCount))
            result.Add(0);
        
        // Скользим окном по строке s
        for (int i = p.Length; i < s.Length; i++) 
        {
            // Добавляем новый символ справа
            windowCount[s[i] - 'a']++;
            
            // Удаляем старый символ слева
            windowCount[s[i - p.Length] - 'a']--;
            
            // Проверяем текущее окно
            if (AreEqual(pCount, windowCount))
                result.Add(i - p.Length + 1);
        }
        
        return result;
    }
    
    // Вспомогательный метод для сравнения массивов частот
    private bool AreEqual(int[] arr1, int[] arr2) 
    {
        for (int i = 0; i < 26; i++) 
        {
            if (arr1[i] != arr2[i])
                return false;
        }
        return true;
    }
}
🐸 Библиотека шарписта #dotnet_challenge

В proglib.academy — Глобальная распродажа знаний ‼️ 💥 Весь октябрь –40% на те курсы, которые выбирают чаще всего.
Курсы с практикой, без воды и пафоса. Просто берёшь и делаешь апгрейд.
👉 Успей забрать свой курс на proglib.academy

❓ Какой контент на этой неделе был топ
Anonymous voting

📰 Дайджест недели Что произошло в мире за последние семь дней. — Разработчик как AI-код-ревьюер Введение AI в .NET разработк
📰 Дайджест недели Что произошло в мире за последние семь дней. — Разработчик как AI-код-ревьюер Введение AI в .NET разработку повышает темпы, но успешная интеграция зависит от тщательной проверки: ревьюеру важно контролировать архитектуру, тесты и качество, иначе риски для поддержки и надёжности возрастают. — .NET 10 готовит революцию в управлении памятью Разработчики включат по умолчанию функцию DATAS, которая адаптирует размер кучи к текущим потребностям приложения. — C# потерял две позиции в рейтинге PYPLКак вайб-кодинг меняет рынок IT-образования JetBrains .NET Days 2025 🐸 Библиотека шарписта #async_news

🧠 Должен ли разработчик запоминать код На Reddit вспыхнула классическая тема — запоминают ли профессиональные разработчики с
🧠 Должен ли разработчик запоминать код На Reddit вспыхнула классическая тема — запоминают ли профессиональные разработчики свой код. Комментаторы разбились на два лагеря:
Если ты не помнишь, как работает твоя функция, ты просто копипастер!
и
Профессионал не держит в голове код, он держит в голове логику и подход. Код — деталь реализации
💬 Нужно ли запоминать код, или важно просто понимать, как он работает? 🐸 Библиотека шарписта #entry_point

✏️ Задача с собеса: квадраты отсортированного массива Вам дан отсортированный по возрастанию массив целых чисел. Нужно создать новый массив, в котором содержатся квадраты этих чисел — и он тоже должен быть отсортирован по возрастанию. Поскольку исходный массив отсортирован, отрицательные числа после возведения в квадрат могут стать больше положительных, поэтому нужно рассматривать оба края массива. 1. Обрабатываем два края массива (left и right), сравниваем их квадраты. 2. Наибольший квадрат записываем в конец результирующего массива. 3. Сдвигаем соответствующий указатель — либо left, либо right. 4. В конце получаем отсортированный массив квадратов. Решение с двумя указателями:
public int[] SortedSquares(int[] nums) {
    int n = nums.Length;
    int[] result = new int[n];
    int left = 0, right = n - 1, pos = n - 1;

    while (left <= right) {
        int leftSq = nums[left] * nums[left];
        int rightSq = nums[right] * nums[right];

        if (leftSq > rightSq) {
            result[pos] = leftSq;
            left++;
        } else {
            result[pos] = rightSq;
            right--;
        }
        pos--;
    }
    return result;
}
➡️ Попробовать на литкоде 🐸 Библиотека шарписта #dotnet_challenge

🚀 JetBrains .NET Days 2025 JetBrains снова собрала лучших инженеров и евангелистов .NET на своей онлайн-конференции .NET Day
🚀 JetBrains .NET Days 2025 JetBrains снова собрала лучших инженеров и евангелистов .NET на своей онлайн-конференции .NET Days. Два дня плотных докладов — от чистой архитектуры и распределённых систем до GenAI и F#. Самое интересное за первый день: • Чистая архитектура с ASP.NET Core Как выстроить проект так, чтобы код был читаемым, тестируемым и легко рефакторился. Разделение слоёв и зависимостей без боли. • Nullability в C#: включаем защиту от NullReferenceException Аннотации и статический анализ помогают избавиться от NullReferenceException и внедрить null safety даже в старый код. • Как выбрать систему обмена сообщениями Сравнение AWS SQS, RabbitMQ и Azure Service Bus — плюсы, минусы и типичные ошибки при выборе очередей сообщений. • TDD на фронтенде с Blazor Как применять TDD на фронтенде с Blazor и bUnit. Быстрая обратная связь и уверенность в каждом изменении. Темы за второй день: • Версионирование событийных систем Безопасные приёмы эволюции событий: версионирование, апкастинг и совместимость без поломок у потребителей. • Генеративный ИИ и .NET Aspire в действии Интеграция LLM, управление контекстом и масштабируемая оркестрация с помощью Semantic Kernel и Aspire. • Функциональное программирование в F#: мода или польза Реальные преимущества функционального подхода — лаконичные пайплайны, паттерн-матчинг и безопасные абстракции. • Как нашли утечку 2 ГБ в день за 5 минут История о том, как обнаружить гигабайтные утечки памяти с помощью dotMemory в продакшене за считанные минуты. Два дня — и десятки инсайтов о будущем .NET: от облаков и AI до функционального подхода и устойчивой архитектуры. Записи доступны на YouTube. ➡️ Первый день ➡️ Второй день 🐸 Библиотека шарписта #sharp_view