Обновить
123.39

C# *

Объектно-ориентированный язык программирования

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

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

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели6.2K

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

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

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

Читать далее

AssemblyLoadContext как архитектурный приём

Уровень сложностиПростой
Время на прочтение13 мин
Охват и читатели6.1K

Привет, Хабр!

Сегодня рассмотрим, как в .NET можно горячо подгружать, обновлять и выгружать сборки на лету. Речь пойдёт о AssemblyLoadContext, специальном механизме, благодаря которому мы можем создавать плагинные системы, изолировать зависимости и освобождать память, выгружая неиспользуемые сборки.

Осваиваем ALC

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

В 40 лет в геймдев: от корпоративного архитектора к инди-разработчику

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели8.6K

Привет, хабр!

Это моя первая статья, поэтому для начала представлюсь. Меня зовут Виктор, мне 40 лет, из которых почти 20 я на разных ролях участвую в разработке различного программного обеспечения для крупных корпораций (в основном финтех). Путь был долгий и тернистый, но сейчас я занимаю роль Системного архитектора и по совместительству Руководителя направления интеграции.

Я всегда любил игры, у меня даже был собственный канал с летсплеями и обзорами разных игр, который, к сожалению, не сыскал успеха. Несмотря на это, около двух лет назад я решил с ноги ворваться в мир геймдева. Ничто не предвещало беды, просто одним февральским вечером будто щелкнуло что-то в мозгу - ХОЧУ… ДЕЛАТЬ… ИГРЫ…

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

Читать далее

Discriminated unions в C#

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

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

Читать далее

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

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

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

Читать далее

Числовой тип данных с плавающей точкой float IEEE 754

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

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

Читать далее

Explyt 5.0 на Joker: поддержка Rider и новый тестовый агент

Уровень сложностиПростой
Время на прочтение2 мин
Охват и читатели6.1K

Всем привет! Рады представить новую версию Explyt 5.0 с поддержкой Rider 🚀 новым тестовым агентом, Web search & Web fetch и другими приятными улучшениями.

Агентский режим генерации тестов

MVC в Unity. Часть 1. MVO

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

👋 Всем привет

Часто в моем окружении среди разработчиков много холивара на тему MVx-паттернов. Что обозначают все эти буквы? Почему в разных командах называют по-разному? Чем один отличается от другого? И зачем оно вообще все?

Поэтому решил сделать несколько статей на тему MVX паттернов с примерами на Unity. Хочется прояснить его для создания единого контекста в gamedev о концепции как самого паттерна MVC, так и их различные реализации.

Итак. Поехали!

Рассмотрим следующую ситуацию...

Читать далее

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

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

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

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

Читать далее

«Первые плоды неправильного использования ИИ» или «Что же случилось с поиском работы на должность разработчика?»

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

Всем привет, я Кирилл, и я оказался на рынке труда осенью 2025 года. Давайте разберем, почему же нам, разработчикам с большим стажем перестали приходить отклики, количество собеседований уменьшилось до нуля, а со всех сторон все HR-специалисты трубят о нехватке кадров в IT. А также рассмотрим новую боль всех HR-ов. Статья носит статистический характер, пару советов и философские высказывания автора, и немного юмора.

Читать далее

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

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

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

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

Сложность языка зависит не только от его особенностей, но и от вашего опыта и готовности разбираться в материалах. Объективного критерия нет.

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

Читать далее

Система резервации на 600 заказов в секунду без буферизации и другой дичи

Уровень сложностиСложный
Время на прочтение23 мин
Охват и читатели10K

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

В этой статье я расскажу, как правильно создать сервис для конкурентных обновлений остатков данных в базе данных. Буду использовать .NET, C#, Entity Framework и PostgreSql.

Читать далее

Function Object — как основа бизнес логики приложения

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

В предыдущей статье "Адаптированный паттерн Command с использованием Dependency Injection", я описывал как инкапсуляция логики приложений в отдельные объекты-функции позволяет получить преимущества в архитектуре приложений.

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

Эта статья пытается исправиль допущенную автором ошибку.

Статья является дополнением к предыдущей.

Читать далее

Плагины на C# без рантайма: NativeAOT-экспорт и вызов из Rust/Python

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

Привет, Хабр!

Наткнулись на задачу: нужен плагин на C#, который можно грузить как обычную C-библиотеку без CLR и JIT, а вызывать из Rust и Python. Без обвязок, без CoreCLR-хостинга и прочего. Чистый C ABI, нормальные строки, предсказуемые структуры, обработка ошибок и нулевой JIT-прогрев. Это как раз случай для NativeAOT: компилируем библиотеку в нативный .dll/.so/.dylib, экспортируем функции через [UnmanagedCallersOnly], а дальше живём как с любой C-библиотекой. Нюансов хватает: что экспортируется и как назвать символ, как договориться по ABI, что делать со строками UTF-8, как возвращать ошибку, как освобождать память снаружи, почему исключения нельзя проталкивать за границу, и в каком месте «cdecl» реально что-то значит.

Ознакомиться с примером NativeAOT

Файловый менеджер Files: ошибки по папочкам

Время на прочтение12 мин
Охват и читатели7.8K

Files — это сторонний файловый менеджер для Windows. Он сделан для того, чтобы быть лучшим открытым файловым менеджером для ОС, который поддерживается сообществом. А в этой статье мы взглянем на ошибки в исходном коде Files и внесём свой вклад в open source сообщество.

Читать далее

Адаптированный паттерн Command с использованием Dependency Injection

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели8.5K

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

В статье показано как совмещение Command с Dependency Injection (DI) даёт дополнительные преимущества в архитектуре приложений.

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

Читать далее

Aspid.MVVM — производительный MVVM фреймворк для Unity

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели4.9K

Aspid.MVVM — это высокопроизводительный фреймворк MVVM для Unity, построенный на Source Generator и разработанный с акцентом на простоту, масштабируемость и четкое разделение бизнес-логики и представления.

Читать далее

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