При разработке приложений на платформе .NET почти всегда возникает необходимость включить в сборку сторонние ресурсы. Попробуем настроить процесс сборки небольшого проекта на Avalonia UI для Windows и Linux.
.NET *
Хаб со знаниями про .NET
Новости
Валидация входных данных в фильтрах Minimal API .NET, просто и без затей
В последние год-два снова набирает силу тенденция обращать самое пристальное внимание на производительность разрабатываемых приложений. Тема на самом деле непростая, поскольку производительность не на пустом месте появляется и требует значительных временных ресурсов и квалификации специалистов. В данной статье обсуждается эффективный способ валидации данных для .NET. Если C# входит в круг ваших интересов, если ваши коллеги обсуждают за кофе Minimal API, эта статья определённо для вас.
Async/Await в C#. Часть 5. Функция-перечисление и цикл через рекурсию, асинхронный вызов без Async/Await
В одной из предыдущих статей, посвященных анализу этого (все того же) Поста, я написал что «не возьмусь переписать всю эту хитрую логику, связанную с формированием последовательности вызовов сгенерированной функции на человеческом языке». Но подробно разбирая 5-ю главу того Поста у меня это вроде бы все-таки получилось сделать. Прошу вас оценить результаты этого труда.
Там где мне придется цитировать (назовем это так) содержание исходного текста в переводе, оно будет выделено подчеркнутым курсивом.В предыдущей статье я попробовал поэкспериментировать с особым форматированием, но это не всегда удобно читателю, на сколько я понимаю.
Еще раз про асинхронную машину состояний и где именно там аллокации
Несмотря на то, что про async/await
уже было сказано много слов и записано множество докладов, тем не менее, в своей практике преподавания и наставничества, я часто сталкиваюсь с недопониманием устройства async/await
даже у разработчиков уровня Middle+. В данной статье мы подробно рассмотрим машину состояний, сгенерированную компилятором из асинхронного метода для понимания принципа работы асинхронности в C#, разберемся где именно там аллокации и порешаем задачи для самопроверки. Если вы уже раз сто видели как выглядит асинхронная машина состояний, но все равно недопонимаете ее, тогда эта статья для вас.
Истории
Выбор игрового ИИ и его «сложность»
Итак, интернет полон туторами по ИИ во всех возможных вариантах: машина состояний, дерево поведений, GOAP и utility AI. Каждое из которых со своей сути лишь определяет алгоритм, по которому сменяются состояния/действия персонажа.
• Для FSM и BT это простые if else с четкими условиями перехода. “Если видим противника, идем к нему. Если подошли, атакуем”.
• Для GOAP мы находим такой “путь” из действий игрока, который приводит к желаемому результату. Как правило, для выбора “пути” используем поиск в ширину, но при большом количестве действий можно рассмотреть варианты использования алгоритмов-“старших братьев” поиска в ширину. Например, A*.
• В Utility AI мы просто выбираем самое “эффективное” действие каким бы то ни было способом. Это можно делать за счет формул расчета, оценки через кривые Безье или через смесь этих способов.
Настройка Elastic Beanstalk для повышения отказоустойчивости и автоматического масштабирования
Всем привет! Сегодняшняя статья, как вы увидели в заголовке, посвящена настройке Elastic Beanstalk, а конкретно - балансировщика AWS и количества инстансов TagretGroup в зависимости от нужных нам условий.
Библиотека контролов для Avalonia UI
Последний год наша команда работала над кроссплатформенной версией САПР Delta Design. В результате этой работы была создана своя библиотека UI контролов для Avalonia, которая поддерживает как ОС Windows, так и ряд систем Linux, включая российские АстраЛинукс, РедОс, а также их модификации под Эльбрус.
Создание единой библиотеки контролов EremexControls.NET позволило компании ЭРЕМЕКС значительно ускорить темпы разработки и показать мультиплатформенную версию САПР Delta Design раньше обещанного срока. Применение готовых типовых блоков дало возможность инженерам фокусироваться на предметной области, не отвлекаясь на другие задачи. Сейчас библиотека контролов используются в трех внутренних проектах компании.
Под катом обзорная статья по новому продукту от компании ЭРЕМЕКС – библиотека компонентов EremexControls.NET для Avalonia UI.
Делаем домашний VPS для тестовых и пет проектов
Привет, Хабр! Меня зовут Васьен, я – .NET backend разработчик. До этого момента я несколько месяцев проходил увлекательней жизненный квест по поиску работы, выполняя одни и те же задания – расскажи рекрутеру кем ты себя видишь через 5 лет, реши тестовое, не получи ответ. И задумавшись о том, как же повысить вероятность попасть на тех собес после решения тестового и выделиться на фоне остальных кандидатов, я пришел к идеи развернуть на компьютере окружение, в котором я смогу его запустить и отправить ссылку для взаимодействия.
Далее вы узнаете, как имея роутер, установленный докер и умение гуглить можно очень легко развернуть на домашнем ПК импровизированный VPS, который позволит разворачивать тестовые и пет проекты, ради которых не хочется заморачиваться с настоящим хостингом.
Обработка ошибок с помощью IExceptionHandler в ASP.NET Core 8.0
Давайте рассмотрим, как вы можете реализовать обработку ошибок, используя IExceptionHandler в .NET Core 8.0. Этот подход следует похожим паттернам предыдущих методов обработки ошибок в ASP.NET Core, но добавляет дополнительную возможность внедрения вашей собственной логики обработки исключений в exception handling middleware.
Фамильный вики-движок Bonsai: 6 лет спустя
Более подробно о его устройстве и истории создания можно почитать в моих предыдущих статьях 3+ годичной давности: раз, два. Изначально я планировал выпускать мажорную версию и писать про нее статью раз в год, но родительство и переезд вносят в планы изрядную долю хаоса. Тем не менее, проект все еще активен и развивается. Сегодня я расскажу о том, что было реализовано и улучшено за последнее время.
Async/Await в C#. Часть 3. Чем Tasks(Задачи) лучше чем IAsyncResult. О чем не написал Stephen Toub
В этот раз я достаточно внимательно прочитал перевод главы про задачи(Tasks) из этого Поста, чтобы выяснить, что он не очень точно передает смысл исходного текста. Я попробую пересказать содержание так, как я его понял, в том числе полагаясь на свой практический опыт программирования многопоточных приложений и embedded приложений с множеством прерываний.
Мне кажется, я придумал хороший формат, чтобы совместить свой пересказ содержания достаточно близко к смыслу исходного текста (надеюсь), с моими комментариями-разъяснениями-догадками.
Пару ссылок на предыдущие работы по этой теме вы тоже найдете под катом.
GRASP. Часть 1 — Информационный эксперт
Привет!
Сегодня я хочу поговорить про GRASP. В то время как многие знакомы с SOLID, GRASP, хотя и известен, мало кто в геймдеве воспринимает его всерьёз (или хотя бы знают о нем). GRASP расшифровывается как общие шаблоны распределения ответственностей. Самые часто упоминаемые принципы GRASP известны гораздо шире, чем сам список, в который они включены. Это знаменитые слова про низкую связность и высокое зацепление.
Сто паттернов для разработки корпоративных программ. Часть 2.1
В этой статье представлены такие паттерны, как Abstract Document, Monad, Object Mother, Object Pool, Step Builder. Примеры приведены на .NET 7 и C#. Приятного чтения.
Продолжение в статье "Сто паттернов для разработки корпоративных программ. Часть 2.2".
Ближайшие события
Включаем Nullable reference types в Unity за несколько минут
🎯 Что такое Nullable reference types?
Nullable reference types
явным образом указывает, должна ли переменная содержать значение или может отсутсвовать.
PowerShell и Selenium. Проще, чем кажется
Всем привет! В продолжении публикации о возможностях PowerShell, упомянул, что выделю в отдельную статью использование библиотеки Selenium с упомянутым языком. Этот небольшой гайд также может подойти для понимания, что из себя представляет данная библиотека и общее представление, как с ней работать, т.к. не зависимо от выбранного вами языка, принцип работы с Selenium одинаковый. Сразу отвечу на вопрос для тех, кто не знает, что это за библиотека или кому она может понадобиться. Selenium в первую очередь инструмент для функционального тестирования, это когда нужно проделать ряд действий имитируя реального пользователя и убедиться, что функционал Web-приложения работает исправно или неисправно. Реже используется для автоматизации различных задач в браузере (вызов JavaScript функций по средствам нажатий кнопок, заполнение форм и т.п.), для которых не предусмотрено API, а в некоторых случаях может выступать более удобной и полноценной альтернативой. Работая системным администратором, мне было удобно автоматизировать действия в панелях управления различных сервисах, или собирать специфические метрики с отправкой в базу данных. Selenium даже может входить в список инструментов DevOps-инженера. На мой взгляд, инструмент очень интересный с точки зрения творческого подхода к решению различных задач.
Постараюсь разложить все по полочкам, от установки всех зависимостей до примера работы с данным инструментом, также продемонстрирую альтернативный инструмент, который использовал до знакомства с Selenium. Специально для статьи подготовил модуль, который позволяет общаться с бесплатной версией ChatGPT из консоли PowerShell, который вы можете установить, используя всего две команды, а так же покажу, как просто создать такой модуль. Хочу заметить, что осознанно выделяю данную статью в средний уровень сложности Habr, по итогам ознакомления, для людей базово знакомых с PowerShell (для этого у меня есть отдельная работа с заметками), порог вхождения будет минимален.
Как на самом деле Async/Await работают в C#. Часть 2 Артефакты от EAP шаблона, SynchronizationContext
Насколько я понял из комментариев к своим предыдущим статьям по этой теме:
1. Часть 1. Проблемы модели асинхронного программирования (APM)
2. Уроки по асинхронному программированию из первой половины работы
3. Параллельные вычисления — Все дело в контексте-синхронизации (SynchronizationContext)
4. Async/Await из C#. Головоломка для разработчиков компилятора и для нас
и по количеству просмотров, тема все еще вызывает интерес, поэтому я хочу попробовать продолжить, но не просто перевод, а перевод С ПОЯСНЕНИЯМИ, хотя и сам перевод тоже должен отличаться от первоначального варианта, поскольку я его не читал, только по результатам, мельком, глянул пару абзацев. К тому же автор того первоначального перевода просил помощи с переводом, поэтому я надеюсь, мой вариант в чем-то сможет помочь в этом смысле или просто будет интересен с точки зрения сравнения.
Потом, мне кажется, что есть несколько читателей, которым будет интересен именно мой вариант перевода, вот для них, в первую очередь, я и продолжаю писать.
Изучаем C# в 2024 году
Если вы собираетесь стать разработчиком С# в 2024 году, вас ждет увлекательное путешествие! Чтобы помочь вам эффективно ориентироваться в этом ландшафте, мы составили подробную дорожную карту, в которой описаны основные скиллы и технологии, которыми вы должны овладеть. Независимо от того, являетесь ли вы новичком в разработке программного обеспечения или переходите с другого технологического стека, эта дорожная карта поможет вам определить ключевые области, на которых следует сосредоточиться.
t.me/csharp_ci – огромное количество гайдов, библиотек и примеров с кодом в моем телеграм канале для C# и .Net разработчиков.
https://t.me/addlist/u15AMycxRMowZmRi – тут я собрал огромную папку каналов C# и .Net программистов.
Сто паттернов для разработки корпоративных программ. Часть первая
В этой статье рассмотрены все паттерны проектирования из "Банды четырёх" с примерами на языке программирования C#. Для самых терпеливых имеются дополнительные паттерны.
Это первая статья из серии "Сто паттернов для разработки корпоративных программ". Следующие статьи будут посвящены паттернам из книг Мартина Фаулера и Роберта Нистрема.
GigaChat API для .NET Core
Всем привет! Если Вы решили подключить в свою разработку на .NET Core поддержку GigaChat, то эта статья для Вас.
В ней расскажу подробнее про то, как пользоваться библиотекой GigaChatAdapter чтобы облегчить разработку под сберовский ИИ чат
Чистая архитектура на примере
Познакомил друга с понятием "Чистая архитектура
" и он стал часто спрашивать меня как лучше сделать то или другое. Хотел дать ему к какому-нибудь туториал, но, к удивлению (плохому), не нашел подходящего.
Поэтому выкладываю небольшой обзор:
1.. Что такое чистая архитектура;
2.. Как можно реализовать;
3.. Мои мысли.
Вклад авторов
-
sidristij 3013.4 -
XaocCPS 1863.6 -
sahsAGU 1303.2 -
olegchir 1250.6 -
mezastel 1199.6 -
SergeyT 1140.6 -
SergVasiliev 1121.0 -
phillennium 1062.6 -
marshinov 888.2 -
chernikov 822.0