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

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

Open in Telegram

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

Show more

📈 Analytical overview of Telegram channel Библиотека шарписта | C#, F#, .NET, ASP.NET

Channel Библиотека шарписта | C#, F#, .NET, ASP.NET (@csharpproglib) in the Russian language segment is an active participant. Currently, the community unites 21 701 subscribers, ranking 5 943 in the Technologies & Applications category and 30 267 in the Russia region.

📊 Audience metrics and dynamics

Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 21 701 subscribers.

According to the latest data from 29 August, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by -48 over the last 30 days and by -6 over the last 24 hours, overall reach remains high.

  • Verification status: Not verified
  • Engagement rate (ER): The average audience engagement rate is 16.72%. Within the first 24 hours after publication, content typically collects 7.84% reactions from the total number of subscribers.
  • Post reach: On average, each post receives 3 628 views. Within the first day, a publication typically gains 1 702 views.
  • Reactions and interaction: The audience actively supports content: the average number of reactions per post is 23.
  • Thematic interests: Content is focused on key topics such as .net, шарписта, навигация, await, string.

📝 Description and content policy

The author describes the resource as a platform for expressing subjective opinions:
Все самое полезное для C#-разработчика в одном канале. Наши курсы: https://clc.to/y3LDtw По рекламе: @proglib_adv Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead

Thanks to the high frequency of updates (latest data received on 30 August, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.

21 701
Subscribers
-624 hours
-57 days
-4830 days
Posts Archive
⭐️ Безопасная очистка строки Чтобы не упасть на удалении пробелов по краям строки можно использовать ванлайнер:
var clean = input?.Trim() ?? string.Empty;
?. вызывает Trim() только если input не null, иначе возвращает null • ?? подставляет пустую строку, если результат null Итог: строка очищена от пробелов, либо получаем пустую строку — без риска. Откройте своим друзьям путь в айти с помощью нашего курса по основам IT для непрограммистов. До конца октября со скидкой! 🐸 Библиотека шарписта #sharp_view

⏰ Сегодня последний день! 🎁 Только при оплате до 19 октября — курс «Базовая математика» в подарок! Успей попасть на экспресс
⏰ Сегодня последний день! 🎁 Только при оплате до 19 октября — курс «Базовая математика» в подарок! Успей попасть на экспресс-курс «Математика для Data Science»10 живых вебинаров, практика на Python, поддержка менторов и преподаватели из ВШЭ, Яндекс Практикума и Wildberries. За 2 месяца разберёшься с тем, на чём держится Data Science:
• векторы, матрицы и регрессия; • градиенты, оптимизация, вероятности и статистика; • реальные задачи анализа данных;
🎓 Построишь математический фундамент и поймёшь, как работают алгоритмы ML под капотом. 👉 Записаться на курс Старт — 6 ноября, не упусти бонус!🎁

♾️ 17 формул, которые изменили мир Математика в действии — как уравнения, придуманные века назад, сегодня управляют интернето
♾️ 17 формул, которые изменили мир Математика в действии — как уравнения, придуманные века назад, сегодня управляют интернетом, медициной, космосом и вашими финансами. 📎 Читать статью А если после статьи захотите разобраться, как эта математика работает в Data Science — вот экспресс-курс, который всё расставит по полочкам: «Математика для Data Science»
— практика и живые уроки — разбор кода и проверка домашних — поддержка в Telegram-чате
🎓 За 2 месяца поймёте, как работают алгоритмы ML под капотом. 🗓️ Старт — 6 ноября 👉 Записаться на курс

🛠 Почему dynamic не заслуживает пожизненного бана Представьте: кто-то в команде написал код с dynamic, получил RuntimeBinder
🛠 Почему dynamic не заслуживает пожизненного бана Представьте: кто-то в команде написал код с dynamic, получил RuntimeBinderException в продакшене, и теперь это слово под запретом навсегда. Это самая ленивая политика в истории .NET. Вместо того чтобы разобраться с проблемой, команды просто заклеивают её скотчем из запретов. В чём подвох Когда вы запрещаете dynamic, разработчики не перестают решать те же задачи. Они просто переходят на рефлексию. И получается вот:
// Вместо одной строки
dynamic plugin = LoadPlugin("RenderEngine");
plugin.Render(data);

// Пишем вот это
var pluginType = plugin.GetType();
var method = pluginType.GetMethod("Render");
if (method == null) throw new InvalidOperationException("Method not found");
method.Invoke(plugin, new object[] { data });
800 строк рефлексии с silent nulls и магическими строками. Риски те же, код хуже, багов больше. Когда dynamic действительно нужен В 95% случаев dynamic — избыточен. Но есть сценарии, где он просто незаменим: • Плагин-системы Ваше приложение загружает расширения, которые вы не компилировали вместе с основным кодом. У вас нет доступа к типам на этапе компиляции. dynamic позволяет вызвать plugin.Calculate() без танцев с reflection. • Скриптинг Админы пишут небольшие скрипты для настройки логики — расчёт цен, трансформация данных. Вам не нужны 20 статических классов. Вам нужна гибкость с контролем. • Duck typing в тестах Когда вы тестируете поведение, а не типы. Не важно, какой это класс — важно, что он умеет делать GetPrice(). Не нужно создавать фейковые интерфейсы ради компилятора. Проблема не в dynamic. Проблема в бесконтрольном доступе. Если вы валидируете имена методов, ограничиваете доступ, логируете вызовы и ставите таймауты — вы в безопасности. Возможно, даже в большей, чем с тем лабиринтом из reflection, который живёт в половине вашего кода плагинов. 🐸 Библиотека шарписта #sharp_view

🔒 Октябрьские обновления безопасности Microsoft выпустила сервисные обновления для .NET 8.0 и .NET 9.0 с исправлениями уязви
🔒 Октябрьские обновления безопасности Microsoft выпустила сервисные обновления для .NET 8.0 и .NET 9.0 с исправлениями уязвимостей и багов. Исправили три уязвимости: CVE-2025-55315, CVE-2025-55247 и CVE-2025-21176. 🐸 Библиотека шарписта #async_news

Недавно мы анонсировали старт нового курса «Математика для Data Science». В ближайшие дни выйдет серия постов о том, что ждёт
Недавно мы анонсировали старт нового курса «Математика для Data Science». В ближайшие дни выйдет серия постов о том, что ждёт вас на курсе, а пока познакомим вас с его экспертами. Спикеры курса: 👤 Ксения Кондаурова Преподаватель и автор курсов для бакалавриата Центрального Университета (Т-Банк), спикер и методист для Edutoria (Сбербанк). Ксения расскажет, как линейная алгебра применяется для построения предсказательных моделей, и научит проверять гипотезы для бизнеса с помощью статистики. 👤 Диана Миронидис Преподаватель НИУ ВШЭ, автор и методист Яндекс Практикума. Самый экстравагантный преподаватель из всех, с кем вы учились, — убедитесь, что математика может быть нескучной. Диана погрузит в математический анализ, научит исследовать функции и находить параметры, при которых ошибка модели минимальна. 👤 Маргарита Бурова Академический руководитель образовательных программ по аналитике и анализу данных, Wildberries & Russ. Проведёт квиз с розыгрышем годовой подписки TG Premium. Маргарита — эксперт в дата-сайенс, ИИ и математических методах анализа данных, фанат развития ИТ-образования. Вместе с экспертами за 8 недель вы не просто получите знания, а познакомитесь с математикой заново. 🎁 Только при оплате до 19 октября курс «Базовая математика» в подарок! 👉 Записаться на курс

🔄 Как развернуть связный список Дан связный список, нужно развернуть его задом наперёд. Разберём как решить задачу элегантно. У вас есть цепочка узлов: 1 → 2 → 3 → 4 → 5. Каждый узел хранит значение и ссылку на следующий элемент. Задача — перевернуть все стрелки: 1 ← 2 ← 3 ← 4 ← 5. Главная сложность здесь не в алгоритме, а в работе с указателями. Стоит перезаписать ссылку неправильно — и вы теряете доступ к остальной части списка. Именно поэтому многие решения проваливаются на первой попытке. Итеративное решение: три указателя Самый надёжный подход — использовать три указателя, которые двигаются по списку синхронно. • prev отслеживает предыдущий узел • curr указывает на текущий обрабатываемый узел • next сохраняет следующий узел, чтобы не потерять его при развороте Код:
public ListNode ReverseList(ListNode head)
{
    ListNode prev = null;
    ListNode curr = head;
    
    while (curr != null)
    {
        ListNode next = curr.next;  // сохраняем следующий
        curr.next = prev;           // разворачиваем стрелку
        prev = curr;                // двигаем prev
        curr = next;                // двигаем curr
    }
    
    return prev;
}
Рекурсивное решение Если вам нравятся рекурсивные решения, есть и такой вариант:
public ListNode ReverseList(ListNode head)
{
    if (head == null || head.next == null)
        return head;
    
    ListNode newHead = ReverseList(head.next);
    head.next.next = head;
    head.next = null;
    
    return newHead;
}
Попробуйте решить задачу сами, прежде чем смотреть готовый код. Нарисуйте список на бумаге, отследите движение указателей вручную. Это единственный способ понять, что происходит. ➡️ Решить задачу 🐸 Библиотека шарписта #dotnet_challenge

🔄 Как развернуть связный список Дан связный список, нужно развернуть его задом наперёд. Разберём как решить задачу элегантно. У вас есть цепочка узлов: 1 → 2 → 3 → 4 → 5. Каждый узел хранит значение и ссылку на следующий элемент. Задача — перевернуть все стрелки: 1 ← 2 ← 3 ← 4 ← 5. Главная сложность здесь не в алгоритме, а в работе с указателями. Стоит перезаписать ссылку неправильно — и вы теряете доступ к остальной части списка. Именно поэтому многие решения проваливаются на первой попытке. Итеративное решение: три указателя 🐸 Библиотека шарписта #dotnet_challenge

📎 Порядок выполнения SQL-запросов Создали наглядную шпаргалку по работе с базами данных. Визуализировали последовательность
📎 Порядок выполнения SQL-запросов Создали наглядную шпаргалку по работе с базами данных. Визуализировали последовательность операций и их влияние на данные. #схема

⚡️ Microsoft выпустили .NET 10 rc2 Microsoft опубликовала второй и финальный релиз-кандидат .NET 10. Это значит, что платформ
⚡️ Microsoft выпустили .NET 10 rc2 Microsoft опубликовала второй и финальный релиз-кандидат .NET 10. Это значит, что платформа практически готова к официальному выходу, а вы уже сейчас можете протестить её. Что обновили — .NET MAUI: разрешения для микрофона, SafeAreaEdges, улучшенная генерация из XAML, Android API 36.1, биндинги Xcode 26. —Entity Framework Core: фиксы для JSON, миграции без единой транзакции, ExecutionStrategy для retry-логики, предупреждения анализатора при конкатенации строк в raw SQL. —Остальные компоненты получили только багфиксы. ➡️ Установить .NET rc2 #async_news

🎲 Мы не только учим, но и играем! На экспресс-курсе «Математика для Data Science» — викторина с призом TG-Premium 🎁 Проверь
🎲 Мы не только учим, но и играем! На экспресс-курсе «Математика для Data Science» — викторина с призом TG-Premium 🎁 Проверь знания, прокачай математику и забери приз. ‼️ Оплатишь до 19 октября — получишь базовый курс в подарок. 👉 Записаться на курс

🎓 Как вайб-кодинг меняет рынок IT-образования В карточках разобрали, как университеты и онлайн-школы перестраивают программы
+5
🎓 Как вайб-кодинг меняет рынок IT-образования В карточках разобрали, как университеты и онлайн-школы перестраивают программы под новую реальность, где разработчик становится дирижёром, а не исполнителем. ➡️ Узнать как ИИ меняет обучение 🐸 Библиотека шарписта

⚡️ Оператор который ускоряет ваш код В 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
👨‍💻 Версии версионирования 💬 Какую систему нумерации версий предпочитаете и встречали ли экзотические варианты? Делитесь опытом👇 🐸 Библиотека шарписта #схема