🧩 Как собрать Excel-подобную таблицу в .NET MAUI через Blazor Hybrid
В статье показывают, как встроить полноценный spreadsheet-интерфейс в .NET MAUI-приложение с помощью Blazor Hybrid.
Что получается:
- таблица в стиле Excel
- редактирование ячеек
- формулы и вычисления
- форматирование
- работа с листами
- импорт и экспорт Excel-файлов
- запуск в desktop/mobile-приложении на .NET MAUI
Полезный пример для тех, кто хочет сделать внутри своего приложения редактор таблиц без разработки всего интерфейса с нуля.
https://syncfusion.com/blogs/post/blazor-spreadsheet-dotnet-maui
В статье показывают, как встроить полноценный spreadsheet-интерфейс в .NET MAUI-приложение с помощью Blazor Hybrid.
Что получается:
- таблица в стиле Excel
- редактирование ячеек
- формулы и вычисления
- форматирование
- работа с листами
- импорт и экспорт Excel-файлов
- запуск в desktop/mobile-приложении на .NET MAUI
Полезный пример для тех, кто хочет сделать внутри своего приложения редактор таблиц без разработки всего интерфейса с нуля.
https://syncfusion.com/blogs/post/blazor-spreadsheet-dotnet-maui
⚡ Refit - удобная альтернатива ручной работе с
Refit упрощает это:
- описываешь REST API обычным C#-интерфейсом
- получаешь type-safe клиент
- сериализация и десериализация выполняются автоматически
- под капотом всё равно используется
Удобно для проектов, где много внешних API и не хочется писать повторяющийся HTTP-код.
https://github.com/reactiveui/refit
HttpClient в .NETHttpClient отлично подходит для HTTP-запросов, но при неправильном использовании можно столкнуться с проблемами вроде исчерпания сокетов и некорректного обновления DNS. Плюс сериализацию и разбор ответов часто приходится писать вручную.Refit упрощает это:
- описываешь REST API обычным C#-интерфейсом
- получаешь type-safe клиент
- сериализация и десериализация выполняются автоматически
- под капотом всё равно используется
HttpClientУдобно для проектов, где много внешних API и не хочется писать повторяющийся HTTP-код.
https://github.com/reactiveui/refit
Polly много лет была одной из главных библиотек .NET для устойчивости к временным сбоям: retry, timeout, fallback, rate limiting и circuit breaker.
Теперь Polly движется в сторону платной модели, но
Microsoft.Resilience по-прежнему можно использовать бесплатно.С .NET 8 работа с resilience стала заметно проще: появился новый API Polly и официальные библиотеки Microsoft для построения resilience pipelines.
Что можно настроить:
- Retry
- Fallback
- Timeout
- Rate limiting
- Circuit breaker
Хороший разбор того, как собирать устойчивые cloud-приложения на современном .NET:
https://milanjovanovic.tech/blog/building-resilient-cloud-applications-with-dotnet
Please open Telegram to view this post
VIEW IN TELEGRAM
Запускать локальные LLM в .NET стало удивительно просто
Про AI в разработке обычно говорят в контексте написания кода, но в .NET нейросети уже можно достаточно легко встраивать прямо в приложения.
Через
Что можно собрать:
- обычный чат
- суммаризацию текста
- классификацию и категоризацию
- распознавание изображений
- свои AI-фичи без отправки данных во внешний API
Особенно интересно, что всё это можно запускать локально: модель работает на вашей машине, а приложение обращается к ней как к обычному сервису.
Примерно так:
Дальше получаем IChatClient и используем его внутри обычного .NET-приложения.
Хороший разбор того, как работать с LLM в .NET через Microsoft.Extensions.AI:
Про AI в разработке обычно говорят в контексте написания кода, но в .NET нейросети уже можно достаточно легко встраивать прямо в приложения.
Через
Microsoft.Extensions.AI и Ollama локальную модель можно подключить буквально несколькими строками.Что можно собрать:
- обычный чат
- суммаризацию текста
- классификацию и категоризацию
- распознавание изображений
- свои AI-фичи без отправки данных во внешний API
Особенно интересно, что всё это можно запускать локально: модель работает на вашей машине, а приложение обращается к ней как к обычному сервису.
Примерно так:
builder.Services.AddChatClient(
new OllamaApiClient(
new Uri("http://localhost:11434"),
"phi3:mini"));
Дальше получаем IChatClient и используем его внутри обычного .NET-приложения.
Хороший разбор того, как работать с LLM в .NET через Microsoft.Extensions.AI:
🔍 Куда Copilot тратит токены и почему тормозит
Барт Вуллемс показал, как отслеживать работу GitHub Copilot через OpenTelemetry и Aspire Dashboard локально.
В панели можно увидеть:
* расход входных и выходных токенов;
* использование кеша промптов;
* длительность запросов к модели;
* вызовы инструментов и время их выполнения;
* какая модель фактически обработала запрос.
Каждый ход агента отображается как цепочка операций. Это помогает понять, где возникла задержка: при генерации ответа, чтении файла, выполнении команды или обращении к MCP-серверу.
В статье - запуск Dashboard, настройки Copilot Chat в VS Code и разбор трассировок. Запись текста промптов и ответов включается отдельно через
Статья - https://bartwullems.blogspot.com/2026/09/monitoring-github-copilot-usage-with.html
#GitHubCopilot #Aspire #OpenTelemetry
Барт Вуллемс показал, как отслеживать работу GitHub Copilot через OpenTelemetry и Aspire Dashboard локально.
В панели можно увидеть:
* расход входных и выходных токенов;
* использование кеша промптов;
* длительность запросов к модели;
* вызовы инструментов и время их выполнения;
* какая модель фактически обработала запрос.
Каждый ход агента отображается как цепочка операций. Это помогает понять, где возникла задержка: при генерации ответа, чтении файла, выполнении команды или обращении к MCP-серверу.
В статье - запуск Dashboard, настройки Copilot Chat в VS Code и разбор трассировок. Запись текста промптов и ответов включается отдельно через
captureContent.Статья - https://bartwullems.blogspot.com/2026/09/monitoring-github-copilot-usage-with.html
#GitHubCopilot #Aspire #OpenTelemetry
This media is not supported in your browser
VIEW IN TELEGRAM
Unity подключила Claude Code, Codex и Grok к разработке игр 🎮
Компания опубликовала официальный плагин с 31 готовым скиллом для Unity 6+.
Агенту можно поручить конкретную задачу обычным текстом:
* создать экран настроек
* подключить внутриигровые покупки
* настроить физику или навигацию
* собрать мультиплеер и голосовой чат
* исправить проблемы со спрайтами
* настроить звук, локализацию, шейдеры и URP
Агент определяет нужную область Unity и загружает соответствующие инструкции. Плагин поддерживает Claude Code, Codex и Grok, устанавливается через их CLI и не содержит MCP-серверов или хуков.
https://github.com/Unity-Technologies/unity-agent-plugin#install
Компания опубликовала официальный плагин с 31 готовым скиллом для Unity 6+.
Агенту можно поручить конкретную задачу обычным текстом:
* создать экран настроек
* подключить внутриигровые покупки
* настроить физику или навигацию
* собрать мультиплеер и голосовой чат
* исправить проблемы со спрайтами
* настроить звук, локализацию, шейдеры и URP
Агент определяет нужную область Unity и загружает соответствующие инструкции. Плагин поддерживает Claude Code, Codex и Grok, устанавливается через их CLI и не содержит MCP-серверов или хуков.
https://github.com/Unity-Technologies/unity-agent-plugin#install
C# 14: задача на Span без аллокаций
Дана строка:
Нужно распарсить её без Split(), Regex и временных string:
Реализуйте:
Требования:
• парсинг через Span<char>
• false при битом формате
• без лишних аллокаций
• Email должен ссылаться на исходный buffer
Пример:
Вопрос:
почему нельзя сохранить ReadOnlySpan<char> в UserLog, а ReadOnlyMemory<char> можно?
Дана строка:
42|john@example.com|127
Нужно распарсить её без Split(), Regex и временных string:
public readonly record struct UserLog(
int Id,
ReadOnlyMemory<char> Email,
int Latency
);
Реализуйте:
static bool TryParse(
ReadOnlyMemory<char> input,
out UserLog result
)
Требования:
• парсинг через Span<char>
• false при битом формате
• без лишних аллокаций
• Email должен ссылаться на исходный buffer
Пример:
var input = "42|john@example.com|127".AsMemory();
if (TryParse(input, out var log))
{
Console.WriteLine(log.Id); // 42
Console.WriteLine(log.Email); // john@example.com
Console.WriteLine(log.Latency); // 127
}
Вопрос:
почему нельзя сохранить ReadOnlySpan<char> в UserLog, а ReadOnlyMemory<char> можно?
🔥 Microsoft выпустила .NET 11 RC1**- первый релиз-кандидат уже с **go-live support, то есть его можно использовать в production.
Из заметного: в C# 15 стабилизируют unions и другие новые возможности языка, ASP.NET Core получил обновления SignalR и OpenAPI, а в Blazor появились экспериментальные AI-компоненты для agentic UI.
В runtime добавили in-process crash reporting для Unix и аппаратные FP16-операции для
Также обновились F#, MAUI, WinForms, NuGet и MSBuild.
.NET 11 RC1 уже поддерживается в Visual Studio 2026 Insiders и VS Code с C# Dev Kit.
https://devblogs.microsoft.com/dotnet/dotnet-11-rc-1/
Из заметного: в C# 15 стабилизируют unions и другие новые возможности языка, ASP.NET Core получил обновления SignalR и OpenAPI, а в Blazor появились экспериментальные AI-компоненты для agentic UI.
В runtime добавили in-process crash reporting для Unix и аппаратные FP16-операции для
Half. В SDK улучшили dotnet test, публикацию контейнеров и file-based programs, включая Native AOT reuse.Также обновились F#, MAUI, WinForms, NuGet и MSBuild.
.NET 11 RC1 уже поддерживается в Visual Studio 2026 Insiders и VS Code с C# Dev Kit.
https://devblogs.microsoft.com/dotnet/dotnet-11-rc-1/
🧩 Задача на C#: почему воркер завис, хотя очередь почти пустая?
Есть канал вместимостью один элемент и единственный обработчик. Если задача завершилась ошибкой, обработчик возвращает её в очередь для повторной попытки.
Вопросы:
1. Что появится в консоли?
2. На какой строке остановится обработка?
3. Почему
4. Если увеличить вместимость канала до двух, проблема исчезнет?
5. Как организовать не больше трёх попыток на задачу, сохранив ограниченную очередь и одного обработчика?
Условие: нельзя использовать
👇 Найдите причину зависания и предложите исправление.
Есть канал вместимостью один элемент и единственный обработчик. Если задача завершилась ошибкой, обработчик возвращает её в очередь для повторной попытки.
using System.Threading.Channels;
var queue = Channel.CreateBounded<int>(
new BoundedChannelOptions(1)
{
FullMode = BoundedChannelFullMode.Wait,
SingleReader = true
});
await queue.Writer.WriteAsync(1);
var worker = Task.Run(async () =>
{
await foreach (var job in queue.Reader.ReadAllAsync())
{
Console.WriteLine($"Start {job}");
if (job == 1)
{
await queue.Writer.WriteAsync(2);
await queue.Writer.WriteAsync(1); // retry
}
Console.WriteLine($"Done {job}");
}
});
await worker;
Вопросы:
1. Что появится в консоли?
2. На какой строке остановится обработка?
3. Почему
await и свободные потоки пула не спасают?4. Если увеличить вместимость канала до двух, проблема исчезнет?
5. Как организовать не больше трёх попыток на задачу, сохранив ограниченную очередь и одного обработчика?
Условие: нельзя использовать
Task.Run для каждой повторной попытки, неограниченную очередь или отбрасывание сообщений.👇 Найдите причину зависания и предложите исправление.
22 сентября(уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle C# разработчика.
Как это будет:
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для C# разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_csharp_bot
Реклама.
О рекламодателе.
Please open Telegram to view this post
VIEW IN TELEGRAM
Awesome Jev - большая подборка инструментов для новой модели TypeSafe AI 🤗
Jev - новая быстрая ИИ-модель от TypeSafe AI для принятия структурированных решений внутри программ. Она выбирает из заданных вариантов, оценивает вероятность и уверенность, вместо генерации длинного текста.
В одном репозитории собрали проекты, SDK, исследования и гайды для работы с Jev - моделью класса System One, созданной для быстрых типизированных решений внутри программ.
В подборке уже есть:
- агенты для macOS, Android и браузера;
- семантический поиск по кодовой базе;
- инструменты для проверки кода и ответов LLM;
- плагины для Codex и Claude Code;
- MCP-серверы и SDK для Python, TypeScript, Go, Rust, .NET и других языков;
- демо с Doom, Mario, StarCraft, Civilization II и управлением дроном.
Jev возвращает структурированные решения с вероятностями и оценкой уверенности. Заявленная скорость ответа - 70–500 мс, стоимость - $0,042 за 1 млн входных токенов, выходные токены бесплатны.
🔗 GitHub: https://github.com/AnotiaWang/awesome-jev
Jev - новая быстрая ИИ-модель от TypeSafe AI для принятия структурированных решений внутри программ. Она выбирает из заданных вариантов, оценивает вероятность и уверенность, вместо генерации длинного текста.
В одном репозитории собрали проекты, SDK, исследования и гайды для работы с Jev - моделью класса System One, созданной для быстрых типизированных решений внутри программ.
В подборке уже есть:
- агенты для macOS, Android и браузера;
- семантический поиск по кодовой базе;
- инструменты для проверки кода и ответов LLM;
- плагины для Codex и Claude Code;
- MCP-серверы и SDK для Python, TypeScript, Go, Rust, .NET и других языков;
- демо с Doom, Mario, StarCraft, Civilization II и управлением дроном.
Jev возвращает структурированные решения с вероятностями и оценкой уверенности. Заявленная скорость ответа - 70–500 мс, стоимость - $0,042 за 1 млн входных токенов, выходные токены бесплатны.
🔗 GitHub: https://github.com/AnotiaWang/awesome-jev