Обновить
110.76

.NET *

Хаб со знаниями про .NET

Сначала показывать
Порог рейтинга
Уровень сложности

Код, понятный IDE и AI: использование атрибутов из JetBrains.Annotations

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров3.8K

У JetBrains есть фреймворк JetBrains.Annotations для .NET, который предоставляет набор полезных атрибутов. Они выступают дополнительными метаданными для статического анализатора JB, который включён в их IDE и ReSharper, для самих разработчиков и даже для нейросетей, которые работают с этим кодом.

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

Читать далее

Claw Engine: как студенты из НИУ ВШЭ релизнули MVP игрового движка

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров1.9K

Claw Engine: как студенты из НИУ ВШЭ релизнули MVP игрового движка

Всем привет! На связи Bear Head Studio, команда Claw Engine. Мы рады сообщить об открытом релизе нашего игрового движка :)

Читать далее

Атаки на умный дом: ваш холодильник может стать врагом

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров2.9K

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

По данным исследования Palo Alto Networks, 98% трафика IoT-устройств не шифруется, а средняя квартира с умным домом содержит 10-15 уязвимых устройств. Каждое из них может стать точкой входа в вашу личную жизнь.

Читать далее

Requestum: CQRS-библиотека для .NET как альтернатива MediatR

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров2.6K

Привет, Хабр! Хочу поделиться библиотекой Requestum, которую написал как открытую альтернативу MediatR.

Читать далее

Atomic — свежий взгляд на разработку игр Unity и C#

Уровень сложностиСредний
Время на прочтение19 мин
Количество просмотров9.6K

На прошлой неделе вышла вторая версия архитектурного фреймворка Atomic, который применяет атомарный подход в разработке игр на Unity и C#.

Ключевая идея фреймворка заключается в том, чтобы создавать игровые системы из атомарных элементов, которые представляют собой модульные объекты в виде констант, переменных, событий, действий и функций. Такой подход избавляет от лишней сложности объектно-ориентированной архитектуры и фокусируется на реализации игровых механик.

В этой статье мы подробно разберём концепцию атомарного подхода и посмотрим, как можно проектировать архитектуру из «болтиков» и «винтиков». Также рассмотрим способ разработки игр на чистом C#, используя Unity в качестве визуализации.

Читать далее

MVC в Unity. Часть 2. MVP

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров693

Продолжаю цикл статей, посвящённый концепции MVC.

Продолжим решать задачи с предыдущей статьи. У нас есть панель статистики, в которой указаны наши HP. Мы не реализовали функционал показа и скрытия этого окна через UI. 

Для этого мы...

Читать далее

Мастерское масштабирование: создаем утилиту для лупы в играх без риска для античита

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров1.3K

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

Читать далее

Cex в C# (вычисление выражений из строк)

Уровень сложностиПростой
Время на прочтение1 мин
Количество просмотров5K

Хочу поделиться небольшим кусочком кода для быстрого вычисления математических выражений из строк, который изначально был написан для моей инди игры. Проект я решил назвать Context EXpressions 🥰

Читать далее

Интеграция Langfuse с приложением .NET

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров1.1K

Несмотря на растущую популярность платформы Langfuse для отладки и контроля LLM ориентированных приложений, на момент написания статьи экосистема .NET остается без официальной поддержки. На момент написания статьи готовые SDK доступны только разработчикам на Python и JavaScript/TypeScript. Однако есть возможность интеграции с помощью стандарта OpenTelemetry. И в данной статье будет приведен один из примеров как это сделать.

Читать далее

О дивный новый C#

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров22K

В следующем месяце выходит очередная версия нашего любимого языка программирования. Чем не повод присесть на кухне с рюмкой чая и обсудить, что не так с современными версиями C#?

Читать далее

Анализ дампа: с чего начать

Уровень сложностиПростой
Время на прочтение12 мин
Количество просмотров3.5K

Всем привет! Меня зовут Виктор, и я программист. Восемь лет работаю в команде Т-Банка и все это время вместе с коллегами занимаюсь проектом «Т-Телефония». Моя команда разрабатывает сервисы, которые обеспечивают голосовую коммуникацию внутри и вне банка. 

Звонки — один из основных способов связи с нами, поэтому система критична для бизнеса с высоким требованием к доступности. Она обрабатывает более 2 млн звонков в день. Если происходит сбой в любой пользовательской системе и нашим клиентам плохо, количество звонков сразу увеличивается, а нагрузка на систему повышается в два-три раза.

Когда мне прилетела первая задача с дампом, единственным инструментом, который я знал, был WinDbg. Я потратил несколько дней, чтобы хоть немного разобраться в нем. С развитием проекта приходилось все чаще снимать дампы, и теперь я знаю о них намного больше.

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

Читать далее

Библиотека Eremex Controls для Avalonia UI — Версия 1.2 — Октябрь 2025

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров1.7K

На прошлой неделе мы выпустили обновление кроссплатформенной библиотеки контролов Eremex Controls для Avalonia UI. О новых ее возможностях расскажем в этой статье, но уже в рамках нового корпоративного блога нашей компании Эремекс.

Читать далее

Обзор нововведений в C# 14

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров14K

Грядёт новая версия C#, а это значит, что мы вновь выпускаем наш ежегодный обзор нововведений. Этот год принёс нам не так много изменений, как прошлый. Возможно, некоторым они покажутся совсем незначительными, но так ли это на самом деле? Давайте же взглянем на них.

Читать далее

Ближайшие события

Discriminated unions в C#

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров3.9K

Небольшая статья об алгебраических типах данных и о том как их собрать в C#, где всё ещё нет нативной реализации Discriminated Unions.

Читать далее

.Net GRPC, или мульти-стек в проекте

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров2K

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

Начинали мы с нуля, с эскизов. Задача была реализовать систему, обладающую следующими функциональными и техническими требованиями:

поддержка разговора с абонентом в режиме реального времени
адаптация на высокую нагрузку + масштабируемость (тысячи одновременных звонков)
доп. фичи, в виде отправки расшифровки разговора абоненту, текстовые нотификации в телеграмм и прочее.

Читать далее

Тупик

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров13K

Мат рождается в душе. Больше всего его рождается когда сталкиваешься с чем-то похожим на <подставь свой фреймворк>. Инструмент с прекрасными целями и задачами постепенно превращается во все больший и больший кусок г.. в котором приходиться копаться. Ощущаешь себя жужжащей мухой, летающей вокруг по необходимости.

Когда трава была зеленее, когда мы сильно боролись за каждый такт процессора, тратя на это наше время, которое мы тогда не очень ценили, все было в какой-то мере проще.
Если тебе нужна была фича, ты ее делал сам.
Или ты искал уже реализованную фичу, и прикручивал к своему коду.
Больше времени уходило на поиск. Не всегда можно было найти.

Сейчас все поменялось.
Подключение новой фичи чаще всего присоединяет к твоему коду 100500 дополнительных фиговин, которые мало того, что чаще не нужны, но и которые мешают запустить твой код.
Они подключаются по дефолту сами, и ты ищешь как их отключить. Но так как библиотеки постоянно меняются, это не так просто. Сколько раз подключал <подставь свой фреймворк>, ещё не разу не было одинакового кода. Постоянно меняются названия методов, их параметры, типы.

Раньше было просто. Возьмем для примера <подставь свой фреймворк>. Ты подключал и говорил ему, что нужно делать в первом случае, что во втором, что в третьем.
Сейчас же так просто не работает. Все стало сложнее. Ты указываешь доступный всем метод по старинке, но не тут то было. Клиенты получают в ответ фигу. Ты думаешь, что поменялся синтаксис, ищешь новые незадеприкейчаные методы (которых по количеству уже меньше, чем задеприкейчаных), но все равно клиенты получают фигу. Один и тот же код разрешает пользователям работать с одними запросами, но не разрешает с другими. Уверен, что это как-то объясняется. Просто подключается ещё куча бинов по дефолту, с доп параметрами по дефолту, и т.д. Идеология упрощения.
Но то, что прямо игнорируется команда разработчика, это уже перебор.

Читать далее

Немного о «Data Engeneering»

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров1.5K

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

Читать далее

UI-автотесты: Fluent-стиль и умные данные — чтобы тесты работали на вас, а не вы на них

Уровень сложностиПростой
Время на прочтение24 мин
Количество просмотров2.2K

"Тесты должны работать на вас, а не превращать жизнь в бесконечный дебаг.
В статье — как сделать автотесты читаемыми, стабильными и предсказуемыми: Fluent API, централизованные данные, логирование, retry и философия «ошибка — это информация».
Без боли, без магии — только архитектура и здравый смысл."

Читать далее

О вызовах в разработке современной пререндеренной игры The Goddess's Will: работа с графикой

Уровень сложностиПростой
Время на прочтение27 мин
Количество просмотров2.1K

Доброе утро, Хабр!

Разработка технического демо длиной в пять лет подошла к концу, а работа над полной версией The Goddess's Will обещает быть интенсивной и сложной.
Сегодня я принёс статью о базовых проблемах, с которыми мы столкнулись при производстве графики, разрабатывая современную игру в эстетике пререндера.

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

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

Читать текст, смотреть движущиеся картинки

Пиксель к пикселю: проверка проекта PixiEditor

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров1.2K

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

Давайте с помощью статического анализатора поищем потенциальные ошибки и странные места в исходном коде открытого проекта PixiEditor.

Читать далее

Вклад авторов