Рубрика «C#»

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

В этот раз мне понадобилось понять, как создаются пользовательские объекты в NanoCAD с помощью MultiCAD.NET API. В блоге компании Нанософт есть статья от 2013 года, в которой объясняются базовые вопросы создания пользовательских примитивов. Но согласитесь было бы не интересно, просто воспроизвести эту статью, поэтому мы ее немного дополним.

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

Под понятием «псевдо-3D» в данном случае я имею ввиду, что наши объекты не будут обладать свойствами модели твёрдого тела, то есть это будет просто набор связанных геометрических примитивов в трёхмерной системе координат. Может это не совсем корректный термин, но я пока лучше ничего не подобрал.

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

Так или иначе если вы интересуетесь: проектированием, САПР, NanoCAD, разработкой под .NET и в частности на C#, а также овцами и Улицей Сезам, то возможно эта статья как раз для вас.

Вам тоже интересно причем тут овцы и Улица Сезам? Тогда милости прошу под кат.

«Как баран на новые ворота» или пользовательские «псевдо-3D» объекты в NanoCAD с помощью MultiCAD.NET API - 1
Читать полностью »

Всем привет! Давно уже хотел написать статью о UniRx на Unity3d. Начнем с небольшой философии RX программирования. Например, разрабатывая игру, мы создаем кнопку, наблюдаем событие клика этой кнопки и реагируем на это каким нибудь кодом.

Реактивное программирование — это всё то же самое, только на стероидах, то есть мы можем создавать потоки данных всего. И также наблюдать за ними и реагировать. Update, OnCollisionEnter, Coroutine, Event, Mouse input, Keyboard input, Joystick input — все это потоки.
Все что нас окружает это потоки.

image

Читать полностью »

В прошлом году я написал пост о своей игре Chronicles of cyberpunk, находящейся в разработке. С тех пор было сделано немало и игра наконец-то готова. Хочу рассказать, что сделал и с какими трудностями столкнулся.

image

Об игре

Если коротко, то Chronicles of cyberpunk — это игра об Большом Брате, который с помощью суперкомпьютера контролирует жизнь людей в городе. Но однажды суперкомпьютер получает способность мыслить и главный герой должен остановить его, пока еще не слишком поздно. Геймплей включает в себя разговоры с основными и второстепенными персонажами, поиск кодов и предметов, а так же мини-битвы с боссами. Главный упор сделан на атмосферу и сюжет.

Читать полностью »

Волею судеб сложилось так, что для одного из моих хобби, мне понадобилось ковыряться в API к отечественной САПР Nanocad, при этом, не имея каких-то практических навыков в разработке для САПР.

И если пару лет назад в аналогичной ситуации, когда я чисто ради любопытства решил посмотреть API для Revit, проблем вообще никаких не возникало, то с Нанокадом было всё не так просто.

В память и со всем уважением к Михаилу Николаевичу, можно сказать: «Наберите воздуха в грудь…» эти американцы разместили у себя на сайте в открытом доступе… инструкцию по началу работы! Какие же они там все ту… в общем вы поняли, это вам не «лук в колготках хранить».

Но мы с вами как порядочные люди не будем ругать людей, которые дали нам бесплатно вполне вменяемый продукт и доступ к средствам разработки, просто попробуем им немножко помочь, тем более что последняя публикация по MultiCad. NET API была в блоге Nanosoft на Хабре, почти два года назад и надо немного заполнить вакуум.

К сожалению, как полный новичок в этом вопросе я не смогу дать вам материал действительно достойного качества, но по крайней мере мы рассмотрим те вопросы, на которых у меня сразу случился «затык». Получится, как и в прошлом цикле по Data Science статья от новичка – новичкам.

План примерно такой: пару слов о Нанокад, немного в целом о программировании под Нанокад и в конце написание примитивной команды с помощью MultiCAD .NET API 7 (для Nanocad 8.X).

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

«Лицо без шрама» или первые шаги в Multicad.NET API 7 (для Nanocad 8.1) - 1
Читать полностью »

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

Симулятор машинок Брайтенберга - 1

Итак, что же это такое?

(Осторожно, в статье чрезвычайно много картинок и анимаций!)

Читать полностью »

Говорят, бесконечно можно смотреть на три вещи: как горит огонь, как течет вода и как работают другие люди. То есть, идеальный объект для наблюдений — прямая трансляция большой конференции.

И кстати, у нас есть для вас одна такая. В это воскресенье и понедельник проходит DotNext 2017 Moscow — крупнейшая в России конференция, посвященная разработке на платформе .NET. Три десятка спикеров выступят с докладами о настоящем и будущем платформы .NET, об оптимизации производительности и многопоточности, о внутреннем устройстве платформы .NET и CLR, о профилировании и отладке .NET-кода, и так далее.

И у вас есть возможность поучаствовать в этом — без необходимости куда-то лететь или ехать через полгорода, на YouTube, бесплатно. Как именно — читайте дальше.

Бесплатная YouTube-трансляция DotNext 2017 Moscow: Перформанс .NET, AI, микросервисы и немного F# - 1

Читать полностью »

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

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

Читать полностью »

С этой статьей я начинаю публиковать целую серию статей, результатом которой будет книга по работе .NET CLR, и .NET в целом. Тема IDisposable была выбрана в качестве разгона, пробы пера. Вся книга будет доступна на GitHub: DotNetBook. Так что Issues и Pull Requests приветствуются :)

Disposing (Disposable Design Principle)

Сейчас, наверное, практически любой программист, который разрабатывает на платформе .NET скажет что ничего проще этого паттерна нет. Что это известный из известнейших шаблонов, которые применяются на платформе. Однако даже в самой простой и известнейшей проблемной области всегда найдется второе дно, а за ним еще ряд скрытых кармашков, в которые вы никогда не заглядывали. Однако, как для тех кто смотрит тему впервые, так и для всех прочих (просто для того чтобы каждый из вас вспомнил основы (не пропускайте эти абзацы (я слежу!))) — опишем все от самого начала и до самого конца.

IDisposable

Если спросить, что такое IDisposable, вы наверняка ответите что это.

public interface IDisposable 
{
    void Dispose();
} 

Для чего же создан интерфейс? Ведь если у нас есть умный Garbage Collector, который за нас чистит всю память, делает так чтобы мы вообще не задумывались о том, как чистить память, то становится не совсем понятно зачем ее вообще чистить. Однако есть нюансы.Читать полностью »

Вступление

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

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

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

В данной статье я опишу разработку простого плагина для локализации UI Text-компонентов с возможностью динамической смены языка и редактирования текста в редакторе.
Читать полностью »