Библиотека шарписта | C#, F#, .NET, ASP.NET
22.5K subscribers
2.45K photos
39 videos
85 files
4.66K links
Все самое полезное для C#-разработчика в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/b60af5a4

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead
Download Telegram
🤩 Lorem ipsum, который имитирует научный вздор

Представьте: нужно заполнить макет контентом, чтобы дизайнер видел, как всё выглядит. Берёте Lorem ipsum. Но он выглядит как набор слов. А если нужен текст, который с первого взгляда кажется серьезным, но при внимательном чтении — полная чушь? Вот для этого WaffleGenerator.

Это библиотека, которая генерирует абзацы в стиле научно-популярного бреда. Текст выглядит настоящим: правильная структура, логичные переходы, официальный тон. Но если вы прочитаете внимательно, поймёте, что там просто красивые слова без смысла.

Как применить

Просто:
var text = WaffleEngine.Html(paragraphs: 2, includeHeading: true);
var text = WaffleEngine.Text(paragraphs: 1, includeHeading: true);
var markdown = WaffleEngine.Markdown(paragraphs: 1, includeHeading: true);


Поддерживает три формата: HTML, обычный текст и Markdown.

➡️ Попробовать либу

🐸Библиотека шарписта

#sharp_view
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥145
💬 Всё, что вам нужно знать о главном событии года для .NET разработчиков

Через неделю начинается самая важная конференция для .NET сообщества — .NET Conf 2025. С 11 по 13 ноября пройдёт трёхдневная бесплатная виртуальная конференция, где будет официально представлена .NET 10 и показаны новые возможности Visual Studio 2026.

Самые интересные сессии первого дня:


• C# 14: Новые языковые фичи — улучшенная ясность кода и новые паттерны программирования

• Производительность .NET 10 — оптимизации во всей платформе и компиляторе
Blazor в .NET 10 — WebAuthN, passkeys, улучшенная диагностика и производительность

• Aspire: облачная разработка — опinionated фреймворк для observable, production-ready распределённых приложений

• Agentic Development — как строить AI-агентов, которые могут рассуждать, планировать и действовать

• .NET MAUI обновления — новые компоненты, производительность, улучшенный tooling

Второй день:

• Облачная разработка с Azure — контейнеры, K8s, функции и AI-сервисы

• Remote MCP servers — как строить собственные интеграции

• Redis интеграция с .NET

• Расширение и кастомизация Aspire — custom integrations и расширенный функционал

• Microsoft.Testing.Platform — новый фреймворк тестирования

➡️ Анонс от Microsoft

🐸Библиотека шарписта

#async_news
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10🥱1
🎁 И мозг прокачать, и макбук утащить!

Proglib.academy разыгрывает MacBook Pro 14 (M3 Pro, 36 GB, 1 TB SSD) 💻

Условия:

1️⃣ Покупаешь любой курс Proglib до 15 ноября.
2️⃣ Проходишь минимум 2 учебные недели (можно осилить за два вечера).
3️⃣ Пишешь куратору в чат своего курса: #розыгрыш.

Что за курсы?

Математика для Data Science (6 месяцев боли и просветления).
Основы Python, ML, алгоритмы, AI-агенты и даже курс для тех, кто в IT, но не кодит.

👉 Участвовать в розыгрыше
👁 Что-то неладное..

🐸Библиотека шарписта

#garbage_collector
Please open Telegram to view this post
VIEW IN TELEGRAM
😁20
👨‍💻 IOptions vs IOptionsSnapshot vs IOptionsMonitor

В .NET существует несколько интерфейсов для работы с настройками: IOptions, IOptionsSnapshot и IOptionsMonitor. Помогаем разобраться, какой из них когда нужен.

IOptions — загружает конфигурацию однажды при запуске и всегда возвращает одно и то же значение:
public class MyService
{
private readonly MySettings _settings;

public MyService(IOptions<MySettings> options)
{
_settings = options.Value;
}

public void PrintSettings()
{
Console.WriteLine($"API Key: {_settings.ApiKey}");
}
}


Это подходит для статичных настроек, которые не меняются во время работы приложения.

IOptionsSnapshot — создаётся на каждый запрос или скоуп и предоставляет новые значения при каждом новом запросе:
public class MyScopedService
{
private readonly MySettings _settings;

public MyScopedService(IOptionsSnapshot<MySettings> options)
{
_settings = options.Value;
}

public void PrintSettings()
{
Console.WriteLine($"Timeout: {_settings.Timeout}");
}
}


Подходит для веб-приложений, где конфигурация может меняться между запросами.

IOptionsMonitor — позволяет подписаться на изменения и получать обновления конфигурации в реальном времени:
public class MyMonitorService
{
private MySettings _settings;

public MyMonitorService(IOptionsMonitor<MySettings> monitor)
{
_settings = monitor.CurrentValue;
monitor.OnChange(updatedSettings =>
{
_settings = updatedSettings;
Console.WriteLine("Settings updated!");
});
}

public void PrintSettings()
{
Console.WriteLine($"LogLevel: {_settings.LogLevel}");
}
}


Подходит для длительно работающих приложений, которые должны реагировать на изменения конфигурации без перезапуска.

🐸Библиотека шарписта

#sharp_view
Please open Telegram to view this post
VIEW IN TELEGRAM
👍181
📰 Дайджест недели

Вспоминаем что произошло за последние три рабочих дня и четыре выходных

Релиз SQLite 3.51.0

В новой версии SQLite оптимизирована работа с запросами, расширена поддержка SQL и исправлены критичные ошибки.

Управление доступом в .NET

Demystifier

Дорожная карта Visual Studio

Скоро .NET Conf 2025

🐸Библиотека шарписта

#async_news
Please open Telegram to view this post
VIEW IN TELEGRAM
2
💻 ВАЖНО: макбук ещё не забрали!

Proglib.academy продолжает розыгрыш MacBook Pro 14» (M3 Pro, 36 Гб, 1 Тб SSD).

Что нужно для участия?

— Берёшь любой курс Академии до 15 ноября.
— Проходишь хотя бы 2 недели обучения (можно за два дня).
— Пишешь куратору #розыгрыш. Всё — ты в игре!

Что за курсы?

▫️Алгоритмы и структуры данных — если хочешь готовиться к собесам в Яндекс, FAANG и не сидеть на джуне вечно.

▫️Архитектуры и шаблоны проектирования — учат думать как senior, а не просто писать код.

▫️ Python, математика для DS, основы IT и другие темы — можно стартовать с нуля или усилить то, что уже знаешь.

👉 Влетай, не думай!
😁4🥱1
🤩 Doom теперь в Telegram

В Telegram появился порт классической игры Doom, а также Doom II, который теперь запускается прямо внутри WebView виджета.

➡️ Поиграть

🐸Библиотека шарписта

#async_news
Please open Telegram to view this post
VIEW IN TELEGRAM
👾6😁4
Управление зависимостями в ASP.NET Core: меньше рутины, больше автоматизации.

Ручное добавление сервисов через AddScoped и AddSingleton превращает Program.cs в бесконечный список регистраций. Но есть способ проще — библиотека Scrutor.

На открытом вебинаре курса OTUS C# ASP.NET Core разработчик Михаил Дмитриев покажет, как автоматизировать регистрацию сервисов и расширить стандартный IoC контейнер.

📌 18 ноября, 20:00
Управление зависимостями в ASP.NET Core с помощью Scrutor
— массовая регистрация сервисов по правилам
— использование паттерна декоратор
— добавление кэширования без переписывания кода
— реальные примеры для продакшн-проектов

Вебинар бесплатный и будет полезен ASP.NET Core-разработчикам, которые хотят упростить настройку зависимостей и сделать код чище.

👉 Регистрируйтесь: https://clc.to/kM8GpA

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
1🤔1
⚡️ Когда важна производительность

В C# цикл foreach часто воспринимается как самая удобная и красивая форма для обхода коллекций. Но в вопросах производительности foreach не всегда оптимален.

Почему лучше избегать foreach:

foreach использует итератор — для массивов его оптимизируют, но для списков, словарей и других коллекций создаётся объект или struct-итератор.

• под капотом foreach может создавать временные объекты, что увеличивает нагрузку на сборщик мусора и снижает производительность.

foreach всегда выполняет проверки и гарантирует корректность обхода, но это стоит некоторой производительности.

Что использовать вместо foreach:

Цикл for с индексом, особенно для массивов:
for (int i = 0; i < data.Length; i++)
{
// работа с data[i]
}


Span<T> и его методы — для обхода данных без выделения памяти и избыточных проверок:
var span = data.AsSpan();
for (int i = 0; i < span.Length; i++)
{
// работа с span[i]
}


Когда можно использовать foreach:

• Если цикл выполняется нечасто или количество элементов небольшое.

• Для обхода коллекций, где критичен чистый и понятный стиль программирования.

🐸Библиотека шарписта

#sharp_view
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔154
💻 Хочешь MacBook Pro? Просто начни учиться!

Да-да, вы не ослышались: Proglib.academy дарит макбук за учёбу!

Всё просто:

— купи любой курс Академии до 15 ноября;
— пройди 2 недели обучения (можно за два дня);
— напиши куратору в чате курса хэштег #розыгрыш.

📚 Выбирай свой курс:

▫️ «Математика для DS» — для тех, кто хочет уверенно работать с данными;
▫️ «Основы Python» — чтобы начать писать код с нуля;
▫️ «Алгоритмы и структуры данных» — для будущих инженеров;
▫️ «AI-агенты» или «Машинное обучение» — для тех, кто хочет прокачаться в ИИ.

👉 Участвовать в розыгрыше
😁2👍1
⭐️ Иммутабельность без танцев с бубном

Records — это ссылочный тип, который упростил жизнь разработчикам, привыкшим писать иммутабельные классы вручную. Вот зачем они нужны.

Раньше иммутабельный класс требовал много кода: readonly свойства, отключённые сеттеры, кастомные конструкторы. И всё равно где-то находилась лазейка. С Records это просто исчезает:
public record User(string Name, string Email);

var user = new User("Алексей", "[email protected]");
// user.Name = "Новое имя"; — Ошибка компиляции


Все свойства автоматически получают init-accessor. Установить значение можно только при создании объекта. Это не просто синтаксический сахар — это гарантия от багов состояния, которые трудно найти.

Если вам нужен объект инициализатор, Records это поддерживают:
public record Product
{
public string Name { get; init; }
public decimal Price { get; init; }
}

var book = new Product { Name = "C# Deep Dive", Price = 49.99M };


Проще тестировать, проще рассуждать о коде, проще избежать багов в многопоточной среде. А ошибки, связанные с неожиданным изменением состояния, просто перестают существовать.

🐸Библиотека шарписта

#sharp_view
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🥱63
👀 .NET Conf 2025 — День 1

Сегодня начинается 15-я ежегодная виртуальная конференция .NET Conf 2025.

В первый день будут доклады по C# 14, производительности .NET 10, обновлениям Blazor, фреймворку Aspire, Agentic Development и .NET MAUI. Второй день посвящён облачной разработке с Azure, интеграциям Remote MCP серверов, Redis, расширениям Aspire и новому фреймворку тестирования Microsoft.Testing.Platform

➡️ Трансляция

🐸Библиотека шарписта

#async_news
Please open Telegram to view this post
VIEW IN TELEGRAM
2
🛒 Black Friday от Proglib.academy!

Только до 30 ноября — скидка 40% на ВСЕ курсы.

Пора добавить в корзину не носки, а новые скиллы: Python, математика для Data Science, AI, алгоритмы и структуры данных, ML.

🎓 Выбирай курс, который реально двинет тебя в карьере, и учись со скидкой.

👉 Учиться со скидкой
💻 Скриншоты текста — зло для разработчиков

Когда видишь скриншот с кодом или ошибкой, хочется плакать — приходится вручную переписывать, тратить время и допускать ошибки. Почему бы просто не вставить текст? Отказ от удобств в угоду ленью — плохой тренд.

💬 Пробовали ли вы объяснять коллегам, почему скриншоты текста — это неудобно? Есть ли похожий опыт? Делитесь болью в комментах 👇

🐸Библиотека шарписта

#entry_point
Please open Telegram to view this post
VIEW IN TELEGRAM
😁2