Все потоки
Поиск
Написать публикацию
Обновить
265.08

C# *

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

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

Top-down шутер с элементами тактики: опыт solo-разработки на Unity

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


Привет, Хабр! Хочу поделиться своим опытом и рассказать о проекте, над которым работаю в одиночку – это top-down шутер с элементами тактики, вдохновленный такими играми, как Door Kickers, Ready or Not и Rainbow 6 Siege.

Пока что проект находится на стадии раннего проектирования. В игре ещё нет играбельной версии, но я активно работаю над её созданием, используя Unity и C#.

Читать далее

Медленная сборка кода с .NET Roslyn: как найти и устранить причину

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

.NET разработчики знают, что такое ждать сборки кода. Работать при этом невозможно: пока не увидишь, как обновится приложение, — не перейдешь к следующему шагу. А переключиться на другую задачу за это время не успеешь. Получается, если в день переписать код 5 раз, можно потерять полчаса при сборке, а то и больше.

Теперь на примере платформы автоматизации маркетинга Mindbox. Основное программное решение — это монолит на C#: несколько миллионов строк, 50 проектов, над которыми одновременно работают десятки команд. Даже сэкономленная при сборке минута выливается в кучу продуктивных человеко-часов. Поэтому, когда речь зашла о переходе всей компании на MacBook в будущем, мы решили выяснить, как это отразится на производительности.

Читать далее

Вашим играм не нужна State Machine

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

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

Читать далее

Ускоряем Dictionary в C# при помощи структур и CollectionsMarshal

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

Если вы C# разработчик, то наверняка вам знаком класс Dictionary. В качестве значений вы, скорее всего, использовали классы. Но что если я скажу, что в Dictionary можно использовать структуры? Не стоит бояться того, что структуры копируются при передаче в метод или возврате из него. Есть способ этого избежать, и это работает быстро.

Узнать как

Фреймворк DBGridChart и OLAP-приложение Экспресс_обработка.exe для ведения баз данных и анализа данных

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

В статье рассматриваются назначение, основные особенности и возможности Фреймворка “DBGridChart”  и OLAP – приложения “Экспресс_обработка.exe” (разработчик – Плещев В.В., http://vipuskniki.usue.ru/Docum.html - DLL, исходные тексты, описание и демонстрационные примеры).

Фреймворк ориентирован на автоматизацию разработки программ на C# по формированию входных табличных и ленточных документов для ведения баз данных c СУБД SQL Server, PostgeSQL, MySQL, Access  в режиме непостоянного соединения ADO .NET и немедленного (без промежуточного накопления изменений) добавления, удаления или изменения записей с соблюдением целостности базы данных, а также для формирования заранее нерегламентированных аналитических таблиц и диаграмм для анализа данных, по унифицированной технологии (с использованием управляющих элементов  dataGridView и Chart в C#) с много функциональным, унифицированным, адаптивным и комфортным для пользователей готовым интерфейсом.

OLAP-приложение  “Экспресс_обработка.exe” позволяет: вынести описания запросов  Select из исходных текстов программ в отдельный текстовый файл, что исключает необходимость в разработке оригинальных программ для ведения баз данных с различными СУБД и формирования аналитических таблиц и диаграмм. Для формирования запросов разработан специальный визуальный конструктор.

Информация о таблицах, запросах Select и их полях берется автоматически конструктором из базы данных. Не выходя из приложения, пользователь может оперативно визуальным конструктором запросов формировать, сохранять и использовать запросы  для анализа данных и ведения базы данных. Само приложение реализовано средствами Фреймворка “DBGridChart”. 

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

Читать далее

C# Тренажер

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

Хочу представить вашему вниманию бесплатный курс C# Тренажер, который недавно опубликовал на платформе Stepik.

Курс включает в себя множество практических задач по программированию на языке C#, которые способствуют повышению вашего уровня навыков в этой области. В ходе обучения вы столкнетесь с разнообразными заданиями, включая как классические, так и те, которые часто встречаются на собеседованиях в ведущих компаниях, таких как Microsoft, EA, Intel, Amazon, Uber и Unity. Это обеспечит разностороннее развитие ваших навыков работы с переменными, типами данных, операторами, циклами, функциями и алгоритмами. 

Читать далее

Как не стоит делать игры на Unity

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

Много статей написано про хороший и плохой код, но статей с разборами проблем реального кода очень мало (за исключением багов в open source проектах), поэтому решил показать проблемы в реальной игре на Unity.

Читать далее

Базовый вариант использования Task Unwrap

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

Недавно, после нескольких месяцев отсутствия использования .Net/C#, я улучшал существующее приложение .Net/C# WPF, используя .Net Task Parallel Library (TPL).

Но, наивно применяя шаблоны обещаний JavaScript, которые я использовал в предыдущие месяцы, я столкнулся со странной проблемой, которая заставила меня использовать довольно экзотический метод расширения Unwrap.

В этой статье описывается проблема, объясняется ее причина, предлагается исправление с помощью Unwrap и, наконец, представлена ​​более современная версия с парадигмой async/await C# 5.0.

Простой рабочий процесс в JavaScript с Promises

Вот JavaScript-реализация простого рабочего процесса, состоящего из трех шагов, второй из которых имитирует отложенную обработку с помощью setTimeout с использованием Promise API:

Читать далее

Распознаем голосовые сообщения Telegram без СМС и пересылок ботам

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

Как всем известно, люди делятся на две категории:

1. Те, кто любит отправлять голосовые сообщения

2. Те, кто кто надеются, что для первых приготовлен отдельный котел

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

Читать далее

Business Intelligence — быстрый старт

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

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

В этой статье мы создадим .NET приложение для визуализации исторических реальных BI данных компании IBM о стоимости акций на нью-йоркской бирже за последние дни, код примера.

С учетом опыта над зарубежными (MercerInsight) и отечественными (Visiology) BI продуктами, а также над оригинальными BI системами для крупных отечественных IT компаний, у меня, честно говоря, сложилось впечатление, что популярным решением для визуализации и чуть ли не стандартом де-факто являются HighCharts. Безусловно, есть альтернативы (даже условно CrystalReports, DevExpress и т.д.), в этой статье будут использованы именно HighCharts, мы увидим их особенности и преимущества. Также для простоты будет просто обычный JS, но обычно в реальных проектах используются HighCharts в связке с одним из TypeScript фронтендным фреймворком.

Создадим новый MVC .NET проект (например, .NET 8) из .NET CLI и добавим dev HTTPS сертификаты:

Читать далее

Чему могут научить пул реквесты в чужие проекты

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

Привет. Гоу разберем почему вам может быть полезно вносить вклад в сообщество программистов. Речь пойдет про запросы на внесение изменений через форк проекта.

Читать далее

Алгоритм ESG (Evolution of Social Groups). C#

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

Представляю вашему вниманию статью, посвященную авторскому алгоритму «Evolution of Social Groups» (ESG) C#. Этот уникальный метод оптимизации, основанный на взаимодействии социальных групп, открывает новые горизонты в области метаэвристики. В статье подробно рассматриваются основные принципы работы алгоритма, его преимущества и области применения. Присоединяйтесь, чтобы узнать больше о мире оптимизации и возможностях, которые он открывает. Поехали…

Читать далее

Быстро и легко ищем баги в играх на Unity (для C# разработчиков)

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

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

Читать далее

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

KatWalk C2: ч.4: поиграемся с прошивкой

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

Для тех, кто только подключился -- я рассказываю про платформу для VR игр, как с ней интегрироваться и как добраться до ее сенсоров напрямую.

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

Давайте что-нибудь в нём пропатчим!

[1 апреля] Масштабные изменения в C# 14.x и дальнейшие планы развития .NET

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

Масштабные изменения в C# 14.x и дальнейшие планы развития .NET

Пока разработка .NET 9 идет полным ходом, Microsoft приоткрыла нам завесу дальнейших будущих масштабных изменений в экосистеме .NET. Компания поделилась своим видением развития новой версии платформы .NET и C# в частности, которые мы обсудим в данной статье.

Читать далее

Как правильно замерить скорость работы кода в .NET

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

Поговорим о бенчмаркинге кода: о том, что это такое и для чего нужно. А также покажем, как на основе результатов бенчмаркинга оценить производительность кода в проекте, написанном на C#.

Читать далее

Между строк: Создание элементов интерфейса через VectorApi Unity UI Toolkit

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

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

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

Рассмотрим, как работает painter2D, какими функциями обладает и зачем оно может вам пригодиться.

Создать элементы

Async/await. Куда делся thread.  Инверсия асинхронности. Разоблачение мистификации

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

В прошлый раз мы разобрали пример, когда асинхронная операция использует дополнительный поток. Этот пример многим показался провокационным и даже вредным, что для меня выглядит достаточно странным. Насколько я понял основной претензией является то, что этот пример для многих как бы отрицает «экономное использование потоков», как это сформулировано например здесь-«metanit: Асинхронное программирование» .

Конечно, многие обиделись на меня за то, что я посмел возражать признанному авторитету, который вынес в заголовок своей очень известной работы фразу There is no thread (Там нет потока) ведь хорошо известно, что: «нет пророка в своем отечестве», и, видимо, быть не должно, но это все эмоции.

Давайте я покажу, как преобразовать мой пример, чтобы он продемонстрировал не только то самое «экономное использование потоков», но и откуда оно берется.

Читать далее

Нейрогенератор игровых миров: рассказ о моём интригующем пет проекте

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

Представьте себе игру с полностью открытым и бесконечным миром, этот мир живет своей жизнью, и игрок полностью свободен делать всё, что заблагорассудиться, а игра просимулирует результаты его действий. Такой, open world со своей уникальной вселенной. Интересная такая идея для петпроекта, не правда ли? В этой статье я расскажу о своей попытке реализовать подобную игру, по крайней мере её фундамент.

Читать далее

Битва фреймворков: сравнение высокопроизводительных HTTP-библиотек

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

Мир веб-разработки предлагает бесконечное количество вариантов HTTP-фреймворков для разных языков программирования. Но как разработчикам понять, какие из них обеспечивают действительно высокую производительность? Под катом команда блога CodeReliant* проводит прямое сравнение некоторых из лучших претендентов на быстродействие. Рассматривает популярные варианты на Javascript/Bun, Java, C#, Go и Rust, проводит бенчмаркинг, оценивает их пропускную способность и время отклика при тестировании.

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

*Обращаем ваше внимание, что позиция автора может не всегда совпадать с мнением МойОфис.

Читать далее

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