3D-движок, написанный на формулах MS Excel

Автор: admin от Вчера, 13:20, посмотрело: 17

3D-движок, написанный на формулах MS Excel

Скриншот экрана игры



Эта статья посвящена тому, как я смог написать 3D-движок только на формулах Excel. Я реализовал следующий функционал:




  • бесконечная процедурно генерируемая карта лабиринта

  • рендеринг трассировкой лучей в реальном времени

  • вычисление окклюзии

  • рендеринг простейшего освещения

  • шейдер освещения и вычислений

  • движок естественного движения

  • в 3D-движке не используются макросы



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



Можете скачать файл и протестировать его самостоятельно!

Категория: Программирование

 

Краткое руководство: связываем ASP.NET Core Web API + Angular 5

Автор: admin от Вчера, 13:20, посмотрело: 13

История о том, как подружить два отдельных проекта ASP.NET Core Web API и Angular 5, и заставить их работать, как одно целое.

Категория: Программирование

 

Машина времени на Java

Автор: admin от Вчера, 11:45, посмотрело: 14

В мире существует множество клёвых маленьких библиотек, которые как бы и не знаменитые, но очень полезные. Идея в том, чтобы потихоньку знакомить Хабр с такими вещами под тэгом #javalifehacker. Сегодня речь пойдёт о time-test, в котором всего 16 коммитов, но их хватает. Автор библиотеки — Никита Коваль, и это перевод его статьи, изначально написанной для блога Devexperts.



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



Машина времени на Java



Вот простейший метод, считающий количество дней до конца света:



fun daysBeforeDoom() {
    return doomTime - System.currentTimeMillis()) / millisInDay
}

Категория: Программирование » Веб-разработка

 

Immer: новый подход к иммутабельности в JavaScript

Автор: admin от Вчера, 11:45, посмотрело: 16

Иммутабельные структуры данных, реализующие методику совместного использования неизменяемых фрагментов информации (structural sharing), выглядят как отличная технология для хранения состояния приложения. Особенно — в комбинации с архитектурой, основанной на событиях. Однако за всё надо платить. В языке вроде javascript, где возможности по обеспечению иммутабельности не являются стандартными, создание нового состояния из предыдущего — это скучная, шаблонная задача. Для того чтобы осознать масштаб проблемы, и силы, брошенные на её решение, взгляните на эту страницу, где имеется список из 67 пакетов, предназначенных для упрощения работы с иммутабельными структурами данных в Redux.



Immer: новый подход к иммутабельности в JavaScript



К сожалению, все эти библиотеки не решают основную проблему: отсутствие поддержки иммутабельности языком. Например, в то время как update-in — это красивая конструкция языка ClojureScript, любые аналогичные идеи, реализованные на javascript, будут, в основном, полагаться на неудобные строковые пути. Такой подход подвержен ошибкам, он усложняет проверку типов и требует изучения особого API.



Как решить проблему иммутабельности в javascript? Пожалуй, стоит прекратить сражаться с языком, воспользовавшись вместо этого его возможностями. Такой подход позволит не терять удобство и простоту, которые дают стандартные структуры данных. Собственно говоря, библиотека immer, о которой мы сегодня поговорим, направлена то, чтобы использовать стандартные средства JS при работе с иммутабельными состояниями.

Категория: Программирование » Веб-разработка

 

Как мы настроили Docker и Kubernetes в TFS

Автор: admin от Вчера, 10:45, посмотрело: 15

Мы продолжаем наш путь к continuous integration (CD) и high availability (HA), основанной на избыточности. В предыдущей серии мы перевели API для мобильного приложения на .NET Core. Следующий логичный шаг для достижения CD — настроить сборку в Docker-контейнер.



Сегодня поделимся нашим getting-started гайдом по настройке сборки docker-образов и деплоя в Kubernetes в TFS для разработчиков .NET.



(Предполагается, что к этому моменту вы уже мигрировали ваше ASP.NET приложение на ASP.NET Core, а если нет, читайте нашу прошлую статью).



Как мы настроили Docker и Kubernetes в TFS

Категория: Программирование

 

Ускоряем метод Виолы-Джонса (Viola-Jones)

Автор: admin от Вчера, 10:25, посмотрело: 42

В последнее время метод Виолы-Джонса, который долгое время был основным способом детектирования объектов на изображении, отступает под натиском более новых и совершенных алгоритмов. Тем не менее, актуальность этого метода еще сохраняется и в настоящем времени.



Да, каскадный классификатор основанный на признаках Хаара (метод Виолы-Джонса) уступает в скорости работы каскадному LBP классификатору. Он менее точен, чем детектор, основанный на HOG признаках, и тем более детектор, базирующийся на сверточных нейронных сетях. И все же у него есть определенная ниша, когда требуется точность выше, чем у LBP каскада, но скорость работы более точных детекторов недостаточна высока. Не менее важным фактором является то, что для каскадного Хаар классификатора существует большое количество уже обученных каскадов, в том числе в стандартной поставке библиотеки OpenCV. Поэтому скорость работы этого алгоритма весьма важна. Что и побудило автора в свое время занятся его оптимизацией.



Ускоряем метод Виолы-Джонса (Viola-Jones)


Ну и какая статья об детектировании лиц, может обойтись без фотографии Лены?

Категория: Программирование » Веб-разработка

 

Браузер != Браузерный движок

Автор: admin от Вчера, 10:25, посмотрело: 14

Браузер != Браузерный движок

Всем привет!



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



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

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



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

Приступим!

Категория: Программирование » Веб-разработка

 

tdlib-ruby: как сделать Telegram-клиент на Ruby

Автор: admin от Вчера, 10:25, посмотрело: 13

tdlib-ruby: как сделать Telegram-клиент на Ruby

Одна из особенностей мессенджера Telegram — широкие возможности API (Bot API и Telegram API). Команда Telegram пошла ещё дальше и выпустила библиотеку TDLib (Telegram Database Library), позволяющую разрабатывать альтернативные клиенты Telegram и не задумываться о низкоуровневых деталях реализации (работа с сетью, шифрование и локальное хранение данных).?



TDLib работает на Android, iOS, Windows, macOS, Linux, Windows Phone, WebAssembly, watchOS, tvOS, Tizen, Cygwin и других *nix системах, а так же интегрируется с любым языком программирования, поддерживающим выполнение C-функций.



В этой статье мы рассмотрим использование TDLib в Ruby и создание gem'а для взаимодействия с JSON-интерфейсом библиотеки.

Категория: Программирование » Веб-разработка

 

Санаторий для мозга: как не заставлять пользователя напрягаться

Автор: admin от Вчера, 09:20, посмотрело: 20

Санаторий для мозга: как не заставлять пользователя напрягаться

© The Awkward Yeti



Говорят, лень — двигатель прогресса. Это неправда. Лень ничего не двигает, потому что ей лень.

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



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

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



Давайте разбираться, как этого достичь.

Категория: Программирование

 

Создание игры на Lua и LOVE — 1

Автор: admin от Вчера, 09:20, посмотрело: 13

Создание игры на Lua и LOVE — 1


Введение



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



Создаваемая нами игра будет сочетанием Bit Blaster XL и дерева пассивных навыков Path of Exile. Она достаточно проста, чтобы можно было рассмотреть её в нескольких статьях, не очень больших по объёму, но содержащих слишком большой объём знаний для новичка.



[spoiler=GIF]Создание игры на Lua и LOVE — 1

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



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

Категория: Программирование