![Game Engine своими руками на с++. Часть 1 (Вступление) - 1 image](https://www.pvsm.ru/images/2017/07/28/Game-Engine-svoimi-rukami-na-s-chast-1-vstuplenie.jpg)
Game Engine
Проектируем, пишем, думаем рассуждаем, читаем и многое другое
Внимание: статьи содержат много костылей!
Читать полностью »
Game Engine
Проектируем, пишем, думаем рассуждаем, читаем и многое другое
Внимание: статьи содержат много костылей!
Читать полностью »
При решении задач электроники все методы хороши, если они устраивают ТЗ, бюджет и разработчика. Linux был мне неизвестен, но вместе с задачами, которые решаешь, растешь и сам. Этот пост расскажет о том, как применить компьютер с Ubuntu для связи большого компьютера с контроллером в соответствии со схемой:
Статья описывает практику применения описанной техники и не ставит целью охватить все глубины и возможности современной аппаратуры. Это один из вариантов решения поставленной задачи.
Читать полностью »
При заходе в метод мы часто выполняемым проверку на null. Кто-то выносит проверку в отдельный метод, что бы код выглядел чище, и получается что то такое:
public void ThrowIfNull(object obj)
{
if(obj == null)
{
throw new ArgumentNullException();
}
}
И что интересно при такой проверке, я массово вижу использование именно object атрибута, можно ведь воспользоватся generic-ом. Давайте попробуем заменить наш метод на generic и сравнить производительность.
Как определить, какое животное китайского кругового календаря соответствует любому году? Для начала, обнаружим некоторые закономерности.
Пусть М = некоему набору исторических годов:
int[] M = { 1905,1917,1941,1953,1989,2001,2013,2025,2241 };
Тогда, для него справедлив следующий тест:
//((1))
// Набор специальных исторических годов M
static int[] GetSpecialHistoryYears() {
int[] M = { 1905,1917,1941,1953, 1989,2001,2013,2025, 2241 };
return M;
}
//((2))
// Проверяем математические закономерности годов M
[Test]
protected void SpecialHistoryYearsMath() {
int[] M = GetSpecialHistoryYears();
// A и B - индексы массива
// вкладывая A в B мы получаем возможность брать любую пару в массиве M.
for( int A = 0; A < M.Length; A++ ) {
for( int B = 0; B < M.Length; B++ ) {
// разница любой пары в наборе кратна 12
Assert.AreEqual( 0, Math.Abs(M[A]-M[B]) % 12,
"Expected 12x differrence" );
}
}
}
Всем привет! Я часто ищу в просторах интернета «идеальную архитектуру» и несколько месяцев назад наткнулся на интересную реализацию и хотел бы поделится немного дополнив его.
Немного модернизации и я получил вполне универсальный рабочий шаблон.
Для всех, кто не знаком с DDD можно начать с wiki.
В конце мы получим связку с DDD + CQRS + Entity Framework + OData + WebApi + Log4Net + Castle Windsor + Kendo UI.
Читать полностью »
Доброго времени суток всем тем кто читает эту статью. Мы будем говорить об Arduino Uno и я проведу маленький урок на примере одного «устройства» — полоска с мигающими светодиодами (два разных алгоритма). Сразу скажу, кто не знал, программировать на Arduino надо на С++ (Cpp).
Настройка проекта
В этой статье рассказ пойдет о создании окна и подключение SharpDX-библиотек. Мы будем использовать одну из библиотек SharpDX, а именно SharpDX.Window.
Читать полностью »
Поскольку в Unity операции создания и удаления объектов являются затратными и при их использовании могут появляться микрофризы, по крайней мере, на мобильных устройствах, то желательно создавать объекты заранее и уже потом манипулировать менее дорогостоящими операциями. В данном примере будет описан простейший пул без подгрузки элементов при их нехватке, нехватка компенсируется созданием заранее достаточно большого количества объектов. Таким образом, мы избавляется от микрофризов ценой дольшей загрузки в начале и большего потребления памяти.Читать полностью »
В данной статье я описываю платформу для анализа финансовых рынков, которую разрабатываю. Я назвал ее MarketLab. Почему я решил ее создать, в чем ее особенности и конечная цель. Возможно, кому-то будет интересно присоединиться к проекту.
Читать полностью »
Долго ли, коротко ли, вместе с новой Visual Studio 2017 в релиз вышел ASP.NET Core. Тулинг лишился приставки preview, как и все инфраструктурные сборки, поставляемые Microsoft'ом. На мой взгляд, фреймворк получился отличным, а история с cjproj=>xproj=>project.json=>csproj и поломанная совместимость при переходе с RC1 на RC2 — это всё же разумная плата за скорость развития. Ну да ладно, опустим дела минувших дней, и вернёмся к текущим реалиям.
А реалии таковы, что есть задачи, и есть инструменты которые их решают. В частности, передо мной встала задача генерирования PDF-документов средствами ASP.NET Core. «Хмм… Наверняка уже есть что-то готовое...», — подумал я. Как бы не так. Вернее готовые библиотеки для этого есть, но платные, а вот чего-то OpenSource'ного нет. «А как же iText?», — спросите вы. «AGPL», — ответит вам страничка с лицензией на гитхабе. Для OpenSource проектов бесплатно, а для коммерческого использования, извольте заплатить. Ну что ж, раз нет инструмента, решающего мою задачу, значит я сделаю его сам.
Читать полностью »