C# (C Sharp) programming
18K subscribers
1K photos
52 videos
8 files
806 links
По всем вопросам- @notxxx1

Реестр РКН: https://clck.ru/3Fk3kb

#VRHSZ
Download Telegram
🕵️ Проверь, сколько ты стоишь для злоумышленника

Твоя почта, пароли и история заказов где-то уже продаются оптом. Вопрос только в том, понимаешь ли ты, как это работает и как с этим быть.
CyberYozh собрал ответ в бесплатный мини-курс прямо в Telegram. Без сайтов и регистраций: открыл приложение в мессенджере и проходишь в своём темпе.

➡️ Запустить курс в Telegram

Четыре коротких модуля:
🟦 за какими данными на самом деле охотятся;
🟦 как собирается цепочка "угроза → уязвимость → атака" на реальных примерах;
🟦 базовый алгоритм, чтобы защитить себя и свои системы;
🟦 какие профессии есть в ИБ, кто чем занимается и сколько платят.


Внутри ещё можно бесплатно записаться на личный разбор карьерного трека в ИБ.
C#-ловушка

Всего несколько строк. Никаких потоков, async/await или хитрых библиотек.

Что выведет этот код?


var h = new Holder();
h.Counter.Inc();

Console.WriteLine(h.Counter.Value);

struct Counter
{
public int Value;
public void Inc() => Value++;
}

class Holder
{
public Counter Counter { get; set; }
}


Варианты ответа:

А) 0
Б) 1
В) Ошибка компиляции
Г) NullReferenceException

Какой вариант выбираете?
ИИ за сутки подготовил 90 оптимизаций ASP.NET Core всего за $230

Дэвид Фаулер из Microsoft провёл эксперимент: запустил AI-агентов на базе Claude Opus 5.5, чтобы найти узкие места в ASP.NET Core и предложить исправления.

За один день агенты подготовили около 90 Pull Request с оптимизациями производительности.

Что удалось улучшить:

- Kestrel - уменьшить аллокации при обработке HTTP-запросов.
- Middleware - оптимизировать кеширование, сжатие и обработку запросов.
- Blazor - сократить накладные расходы при рендеринге.
- SignalR - ускорить обработку протоколов и сообщений.
- Identity - снизить расходы памяти при аутентификации.

Использовалась новая поддержка облачных агентов GitHub, представленная на GitHub Universe.

Стоимость эксперимента - около $230 за токены.

Причём агенты не ограничились генерацией кода: каждый PR сопровождается сравнительными бенчмарками BenchmarkDotNet.

На момент публикации изменения ещё проходили ревью и не были объединены с основной веткой. Реальный прирост производительности предстоит подтвердить.

90 потенциальных оптимизаций за день и $230. Интересно, сколько времени на такой объём исследований потребовалось бы команде разработчиков.

https://github.com/dotnet/aspnetcore/issues/70219
Campfire перенесли с Rails на C# и получили до 33× больше запросов в секунду.

По данным автора, версия совместима с исходной базой, файлами и cookies. В общем бенчмарке она лидирует в трёх сценариях, опережая реализации на Rust и C.

Ускорение обеспечила связка ИИ-агентов и профилировщика: найти узкое место, внести одно изменение, проверить результат.

Помогли изменения кеширования и работы с SQLite, повторное использование криптографических контекстов и сокращение логирования.

Основную прибавку дали архитектурные решения. На других маршрутах быстрее оказались C, Rust и Go.

Разбор в 11 частях: learninglinqpad.com/blog/2026/10/20/campfire-csharp-port-debrief/

Код, бенчмарки и результаты: github.com/ryanrodemoyer/once-campfire-csharp
Как Джон Кармак заставил DOOM работать без вычисления синусов и косинусов

В оригинальном DOOM 1993 года углы хранились в виде 32-битных целых чисел (`angle_t`), а полный оборот соответствовал \(2^{32}\) значениям.

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

Например, чтобы получить синус угла, достаточно было обратиться к массиву:


typedef unsigned angle_t;

fixed_t sine =
finesine[angle >> ANGLETOFINESHIFT];


Здесь происходит обычный битовый сдвиг и чтение элемента массива. Никаких вызовов sin() во время выполнения.

Для вычисления углов между точками использовалась другая таблица:


return tantoangle[
SlopeDiv(y2 - y1, x2 - x1)
];


В реальном коде R_PointToAngle2 также учитывает квадранты, чтобы правильно обрабатывать направления.

Почему это было важно? В 1993 году процессоры не могли позволить себе тысячи дорогих тригонометрических вычислений на каждом кадре. Целочисленная арифметика и lookup-таблицы помогали поддерживать высокую скорость рендеринга.

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

Сегодня подобный подход всё ещё встречается в embedded-разработке, DSP, игровых движках и других системах, где важна предсказуемая скорость вычислений.
10 Open Source инструментов для создания игр с помощью ИИ

Отдельный полезный проект для разработчиков, работающих с инфраструктурой: GoKubeDownscaler. Позволяет автоматически масштабировать Kubernetes-приложения в нерабочее время и сокращать расходы на серверы.

https://github.com/caas-team/GoKubeDownscaler

А для разработки самих игр пригодятся следующие инструменты:

1. Godot - движок для создания 2D- и 3D-игр.

https://github.com/godotengine/godot

2. Stable Baselines3 - обучение игровых агентов с подкреплением.

https://github.com/DLR-RM/stable-baselines3

3. Unity ML-Agents - обучение поведения NPC.

https://github.com/Unity-Technologies/ml-agents

4. ComfyUI - генерация текстур, концепт-артов и изображений.

https://github.com/comfyanonymous/ComfyUI

5. TripoSR - создание 3D-моделей по изображениям.

https://github.com/VAST-AI-Research/TripoSR

6. OpenVoice - генерация голосов персонажей.

https://github.com/myshell-ai/OpenVoice

7. Whisper - распознавание речи для голосовых диалогов.

https://github.com/openai/whisper

8. RVC - преобразование голоса для озвучивания NPC.

https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI

9. Blender - моделирование, анимация и подготовка 3D-ресурсов.

https://github.com/blender/blender

10. Ren'Py - разработка визуальных новелл на Python.

https://github.com/renpy/renpy

Этого набора достаточно, чтобы собрать прототип игры с собственными персонажами, графикой, озвучкой и обучаемыми NPC. Дальнейшая интеграция и доработка всё равно потребуют навыков разработки.
.NET 11: нативный async, union types и Zstandard

Microsoft обновила обзор .NET 11 до RC2. Финальный релиз ожидается в ноябре 2026 года.

Одно из крупных изменений - Runtime Async. Среда выполнения получает встроенную поддержку асинхронности: меньше накладных расходов, компактнее сгенерированный код и понятнее стеки вызовов. Для проектов под net11.0 больше не требуется включать EnablePreviewFeatures.

В C# 15 появились union types, закрытые иерархии, extension-индексаторы и именованные break и continue. А System.Text.Json получил поддержку объединений C# и F#, а также вывод JSON Lines.

В стандартные библиотеки добавили Zstandard, FullJoin в LINQ и типы Decimal32, Decimal64, Decimal128 по стандарту IEEE 754. Новые потоки позволяют оборачивать данные в памяти без копирования.

NativeAOT ускоряет вызовы через интерфейсы. JIT лучше убирает проверки границ массивов, лишние ветвления и виртуальные вызовы.

Из повседневного: dotnet run -e для переменных окружения, #:include для приложений из нескольких файлов и новые возможности dotnet test.

Перед обновлением стоит проверить серверы: в .NET 11 повышены минимальные требования к наборам инструкций процессора.

https://learn.microsoft.com/en-us/dotnet/core/whats-new/dotnet-11/overview
Labcoat - веб-интерфейс для .NET-тестов с интеграцией в Aspire.

Эрик Либен сделал инструмент, который находит тестовые проекты, собирает их и позволяет запускать тесты и разбирать результаты прямо в браузере.

Что умеет:

- Перезапускать упавшие тесты и запускать проверки, затронутые изменениями кода.
- Показывать покрытие, историю прогонов и нестабильные тесты.
- Отображать различия в snapshot-тестах.
- Связывать интеграционный тест с трассировками и логами сервисов в Aspire — чтобы быстрее найти причину сбоя.

Работает отдельно или как ресурс в AppHost. Поддерживает MSTest, NUnit, xUnit v3 и TUnit при использовании Microsoft.Testing.Platform 2.

Для запуска нужен .NET 10 SDK, для интеграции - Aspire 13.4.5+. Лицензия MIT.

https://eriklieben.com/posts/labcoat-test-ui-for-dotnet/
🔴 Открытое собеседование на Middle C# | 10 ноября, 19:00 мск

Senior C# разработчик проведёт техническое интервью в прямом эфире. Посмотришь, как всё устроено изнутри, какие задания предлагают кандидатам и насколько ты готов к такому формату.

Как всё будет проходить:

📂 Интервьюер: Александр Моргунов, Senior C# разработчик с опытом 7+ лет в европейских высоконагруженных сервисах. В роли кандидата - разработчик-доброволец.

📂 Никакого сценария: Александр задаст вопросы и предложит задачи, которые использует на технических интервью. Кандидат заранее их не знает.

📂 В конце Александр пообщается со зрителями и ответит на их вопросы

Участие бесплатное!
Эфир проходит в рамках менторской программы ШОРТКАТ для разработчиков, которые хотят сменить работу, вырасти в грейде и зарплате или прокачать технические навыки

Переходи в бота, чтобы получить ссылку на эфир → @shortcut_csharp_bot

Реклама.
О рекламодателе.
В Unix 1979 года команда `file` определяла английский текст по частоте букв.

В исходниках Unix V7 есть функция english(). Она считала три группы символов:

- Гласные: a, e, i, o, u.
- Частые буквы: e, t, a, i, o, n.
- Редкие буквы: v, j, k, q, x, z.

Финальная проверка выглядела так:


return (
vow * 5 >= n - ct[' '] &&
freq >= 10 * rare
);


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

Были и дополнительные фильтры: слишком короткие фрагменты не проверялись, учитывались пунктуация и символы, характерные для кода.

Это эвристика, а не полноценное распознавание языка. Но для практической задачи - отличить похожий на английскую прозу текст от других данных – хватало нескольких счётчиков и простых условий.

https://www.tuhs.org/cgi-bin/utree.pl?file=V7%2Fusr%2Fsrc%2Fcmd%2Ffile.c
⌨️ C# и векторный поиск

Приглашаем на открытый урок.

🗓 18 ноября в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «C#-разработчик. Продвинутый уровень».

На открытом уроке разберём работу с векторными хранилищами и посмотрим, какие возможности для этого предоставляет .NET.
В практической части реализуем семантический поиск и соберём минимальное RAG-приложение на C#.

На вебинаре рассмотрим:
✔️ работу с векторными хранилищами в .NET;
✔️ основные абстракции .NET для векторного поиска;
✔️ реализацию семантического поиска;
✔️ создание минимального RAG-приложения.

🔗 Ссылка на регистрацию: https://otus.pw/GZ7b/?erid=2W5zFH21qhc

Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
# .NET 11 вышел: C# 15, Union Types и новые возможности для ИИ-агентов

Microsoft выпустила .NET 11. Обновление затрагивает C#, ASP.NET Core, EF Core, MAUI, производительность runtime и инструменты разработки.

Главные изменения:

C# 15
- Union Types: объединение нескольких типов в один с проверкой всех вариантов компилятором.
- Closed Hierarchies: ограничение наследования для более строгой проверки типов.
- Collection Expression Arguments.
- Extension Indexers и именованные break / continue.

Пример Union Types:


public union Result(Product, ProductNotFound);

var result = new Product(42, "Keyboard");

string message = result switch
{
Product p => p.Name,
ProductNotFound e => $"Not found: {e.Id}"
};


Производительность и SDK
- Native AOT CLI Host для ускорения запуска команд.
- Постоянно работающий MSBuild Server.
- Сотни оптимизаций JIT и runtime.
- Улучшения Native AOT и аппаратных инструкций.

ASP.NET Core и Blazor
- Асинхронная валидация.
- OpenAPI 3.2 по умолчанию.
- Улучшения SignalR и Blazor.
- Новые экспериментальные компоненты для создания агентных интерфейсов.

ИИ и агенты
- Шаблон MCP Server: dotnet new mcpserver.
- Microsoft.Extensions.AI для интеграции моделей.
- Microsoft Agent Framework для агентов и рабочих процессов.
- Интеграция агентных интерфейсов с Blazor через AG-UI.

Другие изменения
- EF Core 11: улучшения LINQ, SQL и поддержка векторных индексов SQL Server.
- .NET MAUI переходит на CoreCLR в качестве стандартного runtime.
- Встроенная поддержка Zstandard.
- Новые API для работы с JSON, процессами и памятью без лишнего копирования.

.NET 11 относится к ветке STS и получает два года поддержки. .NET 10 остаётся вариантом LTS.

Релиз: https://devblogs.microsoft.com/dotnet/announcing-dotnet-11/

Документация: https://learn.microsoft.com/dotnet/core/whats-new/dotnet-11/