Представьте: нужно заполнить макет контентом, чтобы дизайнер видел, как всё выглядит. Берёте 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
🔥14❤5
Через неделю начинается самая важная конференция для .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 — новый фреймворк тестирования
#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, но не кодит.
👉 Участвовать в розыгрыше
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, но не кодит.
👉 Участвовать в розыгрыше
В .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
👍18❤1
📰 Дайджест недели
Вспоминаем что произошло за последние три рабочих дня и четыре выходных
— Релиз SQLite 3.51.0
В новой версии SQLite оптимизирована работа с запросами, расширена поддержка SQL и исправлены критичные ошибки.
— Управление доступом в .NET
— Demystifier
— Дорожная карта Visual Studio
— Скоро .NET Conf 2025
🐸 Библиотека шарписта
#async_news
Вспоминаем что произошло за последние три рабочих дня и четыре выходных
— Релиз 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
Anonymous Poll
46%
Каналы и фоновые сервисы для долгих операций
18%
Задача про квадратный корень
14%
Видео про управление доступом
23%
Базовые cli-команды .NET
19%
Demystifier
15%
Новость про роадмапу
19%
Генератор lorem ipsum'ов
54%
IOptions и компания
🥱1
💻 ВАЖНО: макбук ещё не забрали!
Proglib.academy продолжает розыгрыш MacBook Pro 14» (M3 Pro, 36 Гб, 1 Тб SSD).
Что нужно для участия?
— Берёшь любой курс Академии до 15 ноября.
— Проходишь хотя бы 2 недели обучения (можно за два дня ).
— Пишешь куратору #розыгрыш. Всё — ты в игре!
Что за курсы?
▫️Алгоритмы и структуры данных — если хочешь готовиться к собесам в Яндекс, FAANG и не сидеть на джуне вечно.
▫️Архитектуры и шаблоны проектирования — учат думать как senior, а не просто писать код.
▫️ Python, математика для DS, основы IT и другие темы — можно стартовать с нуля или усилить то, что уже знаешь.
👉 Влетай, не думай!
Proglib.academy продолжает розыгрыш MacBook Pro 14» (M3 Pro, 36 Гб, 1 Тб SSD).
Что нужно для участия?
— Берёшь любой курс Академии до 15 ноября.
— Проходишь хотя бы 2 недели обучения (
— Пишешь куратору #розыгрыш. Всё — ты в игре!
Что за курсы?
▫️Алгоритмы и структуры данных — если хочешь готовиться к собесам в Яндекс, FAANG и не сидеть на джуне вечно.
▫️Архитектуры и шаблоны проектирования — учат думать как senior, а не просто писать код.
▫️ Python, математика для DS, основы IT и другие темы — можно стартовать с нуля или усилить то, что уже знаешь.
👉 Влетай, не думай!
😁4🥱1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁25🌚4🤔2🥱2👾2
В 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
Ручное добавление сервисов через 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
🤔15❤4
💻 Хочешь MacBook Pro? Просто начни учиться!
Да-да, вы не ослышались: Proglib.academy дарит макбук за учёбу!
Всё просто:
— купи любой курс Академии до 15 ноября;
— пройди 2 недели обучения (можно за два дня );
— напиши куратору в чате курса хэштег #розыгрыш.
📚 Выбирай свой курс:
▫️ «Математика для DS» — для тех, кто хочет уверенно работать с данными;
▫️ «Основы Python» — чтобы начать писать код с нуля;
▫️ «Алгоритмы и структуры данных» — для будущих инженеров;
▫️ «AI-агенты» или «Машинное обучение» — для тех, кто хочет прокачаться в ИИ.
👉 Участвовать в розыгрыше
Да-да, вы не ослышались: 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🥱6❤3
Сегодня начинается 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.
🎓 Выбирай курс, который реально двинет тебя в карьере, и учись со скидкой.
👉 Учиться со скидкой
Только до 30 ноября — скидка 40% на ВСЕ курсы.
Пора добавить в корзину не носки, а новые скиллы: Python, математика для Data Science, AI, алгоритмы и структуры данных, ML.
🎓 Выбирай курс, который реально двинет тебя в карьере, и учись со скидкой.
👉 Учиться со скидкой
💻 Скриншоты текста — зло для разработчиков
Когда видишь скриншот с кодом или ошибкой, хочется плакать — приходится вручную переписывать, тратить время и допускать ошибки. Почему бы просто не вставить текст? Отказ от удобств в угоду ленью — плохой тренд.
💬 Пробовали ли вы объяснять коллегам, почему скриншоты текста — это неудобно? Есть ли похожий опыт? Делитесь болью в комментах 👇
🐸 Библиотека шарписта
#entry_point
Когда видишь скриншот с кодом или ошибкой, хочется плакать — приходится вручную переписывать, тратить время и допускать ошибки. Почему бы просто не вставить текст? Отказ от удобств в угоду ленью — плохой тренд.
#entry_point
Please open Telegram to view this post
VIEW IN TELEGRAM
😁2