Как стать автором
Обновить
53.24

C# *

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

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

Первая игра на LeoEcsLite

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

Целью этой статьи является изучение архитектурного паттерна Entity Component Systems на практике. Я подготовил пошаговое руководство по созданию небольшой игры, с помощью которого вы познакомитесь с основными принципами разработки на Ecs.

Читать далее
Всего голосов 2: ↑2 и ↓0 +2
Комментарии 0

Новости

Обработка ошибок с помощью IExceptionHandler в ASP.NET Core 8.0

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

Давайте рассмотрим, как вы можете реализовать обработку ошибок, используя IExceptionHandler в .NET Core 8.0. Этот подход следует похожим паттернам предыдущих методов обработки ошибок в ASP.NET Core, но добавляет дополнительную возможность внедрения вашей собственной логики обработки исключений в exception handling middleware.

Читать далее
Всего голосов 6: ↑4 и ↓2 +2
Комментарии 14

Как я участвовал в геймджеме | Pixel New Year Jam

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

Если тебе удобнее смотреть видео, то вот.

А это то же видео, только в текстовом формате, что кому-то может быть удобнее.

Читать далее
Всего голосов 3: ↑2 и ↓1 +1
Комментарии 0

Фамильный вики-движок Bonsai: 6 лет спустя

Уровень сложности Простой
Время на прочтение 9 мин
Количество просмотров 2K
Прошло шесть с лишним лет с момента, когда я начал работать над проектом Bonsai. Если в двух словах, то это вики-движок, заточенный под хранение семейной истории и построение генеалогических деревьев. Он распространяется в полностью открытом и бесплатном виде, подразумевая установку на ваш собственный сервер в качестве docker-контейнера.



Более подробно о его устройстве и истории создания можно почитать в моих предыдущих статьях 3+ годичной давности: раз, два. Изначально я планировал выпускать мажорную версию и писать про нее статью раз в год, но родительство и переезд вносят в планы изрядную долю хаоса. Тем не менее, проект все еще активен и развивается. Сегодня я расскажу о том, что было реализовано и улучшено за последнее время.
Читать дальше →
Всего голосов 12: ↑12 и ↓0 +12
Комментарии 17

Истории

Async/Await в C#. Часть 3. Чем Tasks(Задачи) лучше чем IAsyncResult. О чем не написал Stephen Toub

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

В этот раз я достаточно внимательно прочитал перевод главы про задачи(Tasks) из этого Поста, чтобы выяснить, что он не очень точно передает смысл исходного текста. Я попробую пересказать содержание так, как я его понял, в том числе полагаясь на свой практический опыт программирования многопоточных приложений и embedded приложений с множеством прерываний.

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

Пару ссылок на предыдущие работы по этой теме вы тоже найдете под катом.

Читать далее
Всего голосов 2: ↑1 и ↓1 0
Комментарии 2

Сто паттернов для разработки корпоративных программ. Часть 2.1

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

В этой статье представлены такие паттерны, как Abstract Document, Monad, Object Mother, Object Pool, Step Builder. Примеры приведены на .NET 7 и C#. Приятного чтения.

Продолжение в статье "Сто паттернов для разработки корпоративных программ. Часть 2.2".

Читать далее
Всего голосов 12: ↑2 и ↓10 -8
Комментарии 57

Искусственный интеллект для игры Точки

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

Кратко о правилах: игроки поочерёдно ставят точки двух цветов в перекрестия линий. Цель — окружить точки соперника замыканием вокруг них непрерывной цепи своих точек.

Читать далее
Всего голосов 30: ↑29 и ↓1 +28
Комментарии 17

Включаем Nullable reference types в Unity за несколько минут

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

🎯 Что такое Nullable reference types?

Nullable reference types явным образом указывает, должна ли переменная содержать значение или может отсутсвовать.

Читать далее
Всего голосов 6: ↑4 и ↓2 +2
Комментарии 5

Метод быстрого марша (Fast Marching Method)

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

Пример реализации метода быстрого марша(Fast Marching Method) для создания полей расстояний(Distance FIeld) и поиска кратчайшего пути.

Читать далее
Всего голосов 13: ↑12 и ↓1 +11
Комментарии 10

Как на самом деле Async/Await работают в C#. Часть 2 Артефакты от EAP шаблона, SynchronizationContext

Уровень сложности Сложный
Время на прочтение 9 мин
Количество просмотров 3.3K

Насколько я понял из комментариев к своим предыдущим статьям по этой теме:

1. Часть 1. Проблемы модели асинхронного программирования (APM)

2. Уроки по асинхронному программированию из первой половины работы

3. Параллельные вычисления — Все дело в контексте-синхронизации (SynchronizationContext)

4. Async/Await из C#. Головоломка для разработчиков компилятора и для нас

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

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

Читать далее
Всего голосов 2: ↑1 и ↓1 0
Комментарии 0

Изучаем C# в 2024 году

Время на прочтение 8 мин
Количество просмотров 23K

Если вы собираетесь стать разработчиком С# в 2024 году, вас ждет увлекательное путешествие! Чтобы помочь вам эффективно ориентироваться в этом ландшафте, мы составили подробную дорожную карту, в которой описаны основные скиллы и технологии, которыми вы должны овладеть. Независимо от того, являетесь ли вы новичком в разработке программного обеспечения или переходите с другого технологического стека, эта дорожная карта поможет вам определить ключевые области, на которых следует сосредоточиться.

t.me/csharp_ci – огромное количество гайдов, библиотек и примеров с кодом в моем телеграм канале для C# и .Net разработчиков.

https://t.me/addlist/u15AMycxRMowZmRi – тут я собрал огромную папку каналов C# и .Net программистов.

Читать далее
Всего голосов 27: ↑9 и ↓18 -9
Комментарии 22

Сто паттернов для разработки корпоративных программ. Часть первая

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

В этой статье рассмотрены все паттерны проектирования из "Банды четырёх" с примерами на языке программирования C#. Для самых терпеливых имеются дополнительные паттерны.

Это первая статья из серии "Сто паттернов для разработки корпоративных программ". Следующие статьи будут посвящены паттернам из книг Мартина Фаулера и Роберта Нистрема.

Читать далее
Всего голосов 17: ↑11 и ↓6 +5
Комментарии 20

GigaChat API для .NET Core

Время на прочтение 6 мин
Количество просмотров 4.4K

Всем привет! Если Вы решили подключить в свою разработку на .NET Core поддержку GigaChat, то эта статья для Вас.

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

Изучить статью
Всего голосов 7: ↑7 и ↓0 +7
Комментарии 7

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

Собираем автономную игру на C# в 2 килобайтах

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

Моё детство пришлось на эпоху 1,44-мегабайтных дискет и 56-килобитных модемов, поэтому я всегда любил маленькие программы. Раньше можно было записать на дискету кучу мелких игр и таскать её с собой. Если программа не помещалась на дискету, я задумывался, почему — в ней много графики? Есть музыка? Возможно, она выполняет много сложных операций? Или она просто раздута?

В наши дни дисковое пространство стало настолько дешёвым, что люди отказались от оптимизации по размеру.

Размер важен только при передаче: если вы передаёте программу по проводам, мегабайты равны секундам. По быстрому соединению на 100 Мбит в лучшем случае можно передать 12 МБ в секунду. Если на другом конце провода находится человек, ожидающий завершения скачивания, то разница между пятью и одной секундой может существенно повлиять на его ощущения.

Человек может зависеть от времени передачи как напрямую (пользователь, скачивающий программу по сети), так и косвенно (serverless-сервис, отвечающий на веб-запрос).

Люди обычно воспринимают всё, что длится меньше 0,1 секунды, как мгновенное, 3 секунды — это примерно тот предел, после которого прерывается состояние потока пользователя; а уж 10 секунд удержать внимание пользователя очень сложно.

Хотя уменьшение сегодня уже необязательно, оно всё равно лучше.

Эта статья задумывалась как эксперимент, позволяющий выяснить, каким может быть минимальный размер полезного автономного исполняемого файла C#. Могут ли приложения на C# достичь размеров, при которых пользователи будут ощущать их скачивание как мгновенное? Позволит ли это использовать C# там, где он не используется сейчас?
Читать дальше →
Всего голосов 124: ↑123 и ↓1 +122
Комментарии 34

Чистая архитектура на примере

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

Познакомил друга с понятием "Чистая архитектура" и он стал часто спрашивать меня как лучше сделать то или другое. Хотел дать ему к какому-нибудь туториал, но, к удивлению (плохому), не нашел подходящего.

Поэтому выкладываю небольшой обзор:

1.. Что такое чистая архитектура;
2.. Как можно реализовать;
3.. Мои мысли.

Читать далее
Всего голосов 15: ↑13 и ↓2 +11
Комментарии 23

Dictionary и SortedDictionary

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

Всем привет. Сегодня я планирую рассказать в общих чертах о Dictionary и SortedDictionary в .NET - как они устроены и в чем различие между ними.

Читать далее
Всего голосов 17: ↑13 и ↓4 +9
Комментарии 15

«Хакнем» технические собеседования на Unity

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

Привет!

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

Но даже в таком случае эта выборка не более репрезентативна, чем мнение рандомного человека или статья с Хабра 3/5/10-летней давности.

Посудите сами, даже выборка из 30 отзывов будет более точной чем все подборки от менторов или «продавателей курсов»! А выборка из сотни будет точнее всего, что вы найдете на рынке! Потому что физически единственные, у кого может быть бОльшая выборка - это всякие онлайн школы. Но как мы все знаем после тех самых онлайн школ многие все равно идут к нормальным менторам. А их статистика “95% трудоустроенных” чаще всего буквально обозначает “эти люди имели работу на момент завершения курса, не важно какую и связана ли она вообще с курсами” (привет, Нетология).

Читать далее
Всего голосов 12: ↑3 и ↓9 -6
Комментарии 5

Async/Await из C#. Головоломка для разработчиков компилятора и для нас

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

Я рискну все таки продолжить изложение своего понимания Поста: How Async/Await Really Works in C#, которое в предыдущей статье получило название “ортогональный взгляд”. Также, недавно мы познакомились (возможно несколько преждевременно) с изначальным определением концепции SynchronizationContext на которую ссылается автор этого Поста.

Это не перевод. Это изложение содержания Поста на разных уровнях раскрытия сущностей и их взаимодействия по мере развития (эволюции) моего понимания тех мыслей и идей, которые, как мне кажется, хотел донести до читателя автор Поста Stephen Toub.

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

В этот раз попробуем сформулировать задачу, которую решает компилятор, то есть те разработчики, которые разрешили нам пользоваться конструкциями Async/Await в C#.

Читать далее
Всего голосов 7: ↑6 и ↓1 +5
Комментарии 6

Dependency Injection контейнеры .NET, допускающие полиморфное поведение

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


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

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

Однако стандартный DI контейнер платформы долгое время не давал этой возможности.

В рамках этой статьи я решил напомнить альтернативы для решения этой задачи на тот случай, если вы ещё не успели переехать на .NET 8 или работаете в каком-нибудь Иннотехе, где в наличии только зеркало NuGet-пакетов, выпущенных до начала 2022 года.
Читать дальше →
Всего голосов 59: ↑56 и ↓3 +53
Комментарии 146

Синхронизация операций в .NET на примерах

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

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

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

Читать далее
Всего голосов 15: ↑11 и ↓4 +7
Комментарии 26

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

Работа