fa
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

نمایش بیشتر

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

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

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

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

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

  • وضعیت تأیید: تأیید نشده
  • نرخ تعامل (ER): میانگین تعامل مخاطب 12.48% است و در ۲۴ ساعت نخست پس از انتشار، محتوا معمولاً 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