Pull to refresh
42
0
Send message

Линейная алгебра для разработчиков игр

Reading time 19 min
Views 762K
Эта статья является переводом цикла из четырёх статей «Linear algebra for game developers», написанных David Rosen и посвящённых линейной алгебре и её применению в разработке игр. С оригинальными статьями можно ознакомиться тут: часть 1, часть 2, часть 3 и часть 4. Я не стал публиковать переводы отдельными топиками, а объединил все статьи в одну. Думаю, что так будет удобнее воспринимать материал и работать с ним. Итак приступим.
Читать дальше →
Total votes 314: ↑296 and ↓18 +278
Comments 61

Lock-free структуры данных. Concurrent maps: rehash, no rebuild

Reading time 6 min
Views 19K

Пройдем по следам C++ 2015 Russia далее.
В предыдущей статье мы рассмотрели алгоритм для lock-free ordered list и на его основе сделали простейший lock-free hash map. У этого hash map есть недостаток: размер хеш-таблицы постоянен и не может быть изменен в процессе роста числа элементов в контейнере. Это не представляет проблемы, если мы заранее примерно представляем требуемый объем контейнера. А если нет?
Читать дальше →
Total votes 36: ↑35 and ↓1 +34
Comments 8

300 потрясающих бесплатных сервисов

Reading time 11 min
Views 1.6M


Автор оригинальной статьи Ali Mese добавил ещё 100 новых бесплатных сервисов. Все 400 потрясающих сервисов доступны здесь. И еще подборку +500 инструментов от 10 марта 2017 г. смотрите здесь.



A. Бесплатные Веб-Сайты + Логотипы + Хостинг + Выставление Счета

  • HTML5 UP: Адаптивные шаблоны HTML5 и CSS3.
  • Bootswatch: Бесплатные темы для Bootstrap.
  • Templated: Коллекция 845 бесплатных шаблонов CSS и HTML5.
  • Wordpress.org | Wordpress.com: Бесплатное создание веб-сайта.
  • Strikingly.com Domain: Конструктор веб-сайтов.
  • Logaster: Онлайн генератор логотипов и элементов фирменного стиля (new).
  • Withoomph: Мгновенное создание логотипов (англ.).
  • Hipster Logo Generator: Генератор хипстерских логотипов.
  • Squarespace Free Logo: Можно скачать бесплатную версию в маленьком разрешении.
  • Invoice to me: Бесплатный генератор счета.
  • Free Invoice Generator: Альтернативный бесплатный генератор счета.
  • Slimvoice: Невероятно простой счет.

Читать дальше →
Total votes 341: ↑325 and ↓16 +309
Comments 107

Operation Go — игра-боевик для Go-программистов

Reading time 1 min
Views 29K
Сегодня появилась в сети игра для программистов — Operation Go. На мой взгляд, это очень качественно сделанная игра, в которой нужно проходить миссии, понимая, разбирая и дописывая код на Go. Всё это с сюжетом, развитием и фабулой, хорошим саундтреком, интересно и затягивающе. Вы выступаете в роли агента секретной службы, которому регулярно приходится сталкиваться с решением проблем при помощи кода.

Очень круто сделано, правда. Попробуйте и будьте готовы открыть для себя некоторые новые аспекты Go или стандартной библиотеки. В некоторых уровнях нужна математическая соображалка. Ну и английский, само собой.

Я бы такие игрушки на собеседованиях ставил кандидатам и смотрел, как человек решает.



Анонс на reddit: www.reddit.com/r/golang/comments/2veiht/operation_go_a_routine_mission
Автор — Andy Brewer
Total votes 35: ↑33 and ↓2 +31
Comments 48

Борьба с 2D-физикой в Unity на примере бесконечной игры

Reading time 9 min
Views 83K


Мой странный творческий путь занес меня в разработку игр. Благодаря отличной студенческой программе от IT-компании, название которой СостоИт из одной Греческой МАленькой буквы, сотрудничающей с нашим университетом, удалось собрать команду, родить документацию и наладить Agile разработку игры под присмотром высококлассного QA-инженера (здравствуйте, Анна!)

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

Наша игра использовала физический движок неожиданным для него способом, что породило множество проблем с производительностью на мобильных платформах. В этой статье, на примере нашей игры, описана моя борьба с физическим движком и все те особенности его работы, которые были замечены на пути к жизнеспособной бета-версии.
Читать дальше →
Total votes 56: ↑49 and ↓7 +42
Comments 32

Padding Oracle Attack или почему криптография пугает

Reading time 7 min
Views 66K
Все мы знаем, что не следует самостоятельно реализовывать криптографические примитивы. Мы также в курсе, что даже если мы хитрым образом развернем порядок букв во всех словах сообщения, сдвинем каждую букву по алфавиту на 5 позиций и разбавим текст случайными фразами, чтобы сбить атакующих с пути, наш замечательный шифр скорее всего вскроет любой мало-мальски знакомый с криптографией человек (а в данном случае с задачей справится и в меру умный 12-летний подросток).

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

Мой посыл не в том, что убедить вас отказаться от самостоятельного использования криптографических средств или пойти и нанять консультанта с зарплатой от $1000 в час всякий раз когда вы задумываетесь о шифровании.
Частично я веду к тому, что вам никогда не следует расслабляться, всегда нужно быть начеку, изыскивая пути, которые злоумышленник может использовать для получения дополнительной информации о вашей системе, а частично к тому, что Padding Oracle Attack является крутой демонстрацией всего этого. Итак, начнем.
Читать дальше →
Total votes 73: ↑70 and ↓3 +67
Comments 61

58 признаков хорошего интерфейса

Reading time 16 min
Views 380K
У хорошего интерфейса пользователя высокая конверсия и его просто использовать. То есть, он хорош и для бизнеса, и для использующих его людей. Вот список опробованных нами идей.

1 Один столбец вместо нескольких


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

image
Читать дальше →
Total votes 226: ↑182 and ↓44 +138
Comments 102

Грязные трюки с макросами C++

Reading time 10 min
Views 148K
В этой статье я хочу сделать две вещи: рассказать, почему макросы — зло и как с этим бороться, а так же продемонстрировать пару используемых мной макросов C++, которые упрощают работу с кодом и улучшают его читаемость. Трюки, на самом деле, не такие уж и грязные:
  • Безопасный вызов метода
  • Неиспользуемые переменные
  • Превращение в строку
  • Запятая в аргументе макроса
  • Бесконечный цикл

Заранее предупреждаю: если Вы думаете увидеть под катом что-то крутое, головоломное и сногсшибательное, то ничего такого в статье нет. Статья про светлую сторону макросов.
Читать дальше →
Total votes 54: ↑45 and ↓9 +36
Comments 60

Играем с генетическими алгоритмами

Reading time 6 min
Views 102K
Одним субботним декабрьским вечером сидел я над книгой The Blind Watchmaker (Слепой Часовщик), как на глаза мне попался невероятно интересный эксперимент: возьмём любое предложение, например Шекспировскую строку: Methinks it is like a weasel и случайную строку такой же длины: wdltmnlt dtjbkwirzrezlmqco p и начнем вносить в неё случайные изменения. Через сколько поколений эта случайная строка превратится в Шекспировскую строку, если выживать будут лишь потомки более похожие на Шекспировскую?

Сегодня мы повторим этот эксперимент, но в уже совершенно другом масштабе.



Структура статьи:
  1. Что такое генетический алгоритм
  2. Почему это работает
  3. Формализуем задачу со случайной строкой
  4. Пример работы алгоритма
  5. Эксперименты с классикой
  6. Код и данные
  7. Выводы

Осторожно трафик!
Читать дальше →
Total votes 59: ↑51 and ↓8 +43
Comments 22

Учебник AngularJS: Всеобъемлющее руководство, часть 1

Reading time 7 min
Views 272K

Содержание


1 Введение в AngularJS
2 Engineering concepts in JavaScript frameworks
3 Modules
4 Understanding $scope
5 Controllers
6 Services and Factories
7 Templating with the Angular core
8 Directives (Core)
9 Directives (Custom)
10 Filters (Core)
11 Filters (Custom)
12 Dynamic routing with $routeProvider
13 Form Validation
14 Server communication with $http and $resource

1 Введение в AngularJS


Angular – MVW-фреймворк для разработки качественных клиентских веб-приложений на JavaScript. Он создан и поддерживается в Google и предлагает взглянуть на будущее веба, на то, какие новые возможности и стандарты он готовит для нас.

MVW означает Model-View-Whatever (модель – вид – что угодно), то есть гибкость в выборе шаблонов проектирования при разработке приложений. Мы можем выбрать модели MVC (Model-View-Controller) или MVVM (Model-View-ViewModel).

Этот обучающий материал задумывался как отправная точка для изучения AngularJS, его концепций и API, чтобы помочь вам создавать великолепные веб-приложения современным способом.
Читать дальше →
Total votes 44: ↑38 and ↓6 +32
Comments 29

Software renderer — 1: матчасть

Reading time 29 min
Views 83K
Программный рендеринг (software rendering) — это процесс построения изображения без помощи GPU. Этот процесс может идти в одном из двух режимов: в реальном времени (вычисление большого числа кадров в секунду — необходимо для интерактивных приложений, например, игр) и в «оффлайн» режиме (при котором время, которое может быть потрачено на вычисление одного кадра, не ограничено настолько строго — вычисления могут длиться часы или даже дни). Я буду рассматривать только режим рендеринга в реальном времени.

У этого подхода существуют как недостатки так и достоинства. Очевидным недостатком является производительность — CPU не в состоянии конкурировать с современными видеокартами в этой области. К достоинствам стоит причислить независимость от видеокарты — именно поэтому он используется как замена аппаратного рендеринга в случаях, когда видеокарта не поддерживает ту или иную возможность (так называемый software fallback). Существуют и проекты, цель которых — полностью заменить аппаратный рендеринг программным, например, WARP, входящий в состав Direct3D 11.

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

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

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

В конце статьи будет ссылка на гитхаб проекта, который можно рассматривать как пример реализации.
Читать дальше →
Total votes 95: ↑90 and ↓5 +85
Comments 51

«Never say never» или Работаем с таймзонами правильно

Reading time 9 min
Views 74K
Эта статья рассказывает о проблемах, которые поджидают программиста, работающего с часовыми поясами. В теории, вроде, всё хорошо, просто и понятно, но жизнь — штука сложная, и на практике, порой, возникают совершенно неожиданные ситуации.

TL;DR: Работа с таймзонами — это боль и унижение. Никогда не работайте с таймзонами!

Итак, все кругом твердят вам, что при получении времени от пользователя нужно сразу же переводить его в UTC, работать со временем нужно только в UTC и хранить время тоже нужно строго в UTC. Совет, на первый взгляд, выглядит разумным, и следование ему делает вашу жизнь проще… Если только ваша программа не предполагает сложной работы с датами. Записать в базу данных дату и время регистрации пользователя на сайте? Сохранить время отправки сообщения или дату создания заказа в интернет-магазине? Вывести сообщение в лог с указанием даты-времени? Используйте UTC и всё будет в порядке, можете даже не читать эту статью дальше. Любое текущее время можно совершенно спокойно конвертировать в UTC и забыть о проблемах. Но что, если мы хотим работать с временем в будущем? Или в прошлом? Например, если мы пишем сервис календаря, или сервис для отложенной отправки сообщений?

Читать дальше →
Total votes 84: ↑79 and ↓5 +74
Comments 103

Mozilla выпустила первый браузер для разработчиков

Reading time 2 min
Views 120K
Как и сообщалось ранее, Mozilla выпустила первый браузер, который создан специально для разработчиков. Несмотря на то, что официальный пресс-релиз о выходе новинки будет доступен 10 ноября, попробовать новый браузер можно уже сейчас.



Стала известна новая информация о Firefox Developer Edition:
Читать дальше →
Total votes 84: ↑75 and ↓9 +66
Comments 48

Светофор в гараже. Настоящий

Reading time 8 min
Views 72K
Шел мелкий и противный дождь. Настроение было гнусным.
Он лежал на обочине и тихо ржавел. Рядом на столбе сверкал огнями молодой собрат.
Я остановился и положил его в багажник.
Я уже не один.
И он не один.
Кому интересно, что было дальше, прошу под кат.
Total votes 88: ↑81 and ↓7 +74
Comments 65

Лучшие плагины для Sublime Text

Reading time 5 min
Views 639K

WebInspector


Мощный инструмент для дебаггинга JavaScript, полноценный инспектор кода для Sublime. Фичи: установка брейкпоинтов прямо в редакторе, показ интерактивной консоли с кликабельными объектами, остановка с показом стек трейса и управление шагами дебаггера. Все это работает на ура! А еще есть Fireplay от Mozilla, который позволяет подключаться к Firefox Developer tools и максимально простой дебаггер JSHint.



Читать дальше →
Total votes 116: ↑114 and ↓2 +112
Comments 101

Первое порно, снятое на Google Glass

Reading time 1 min
Views 416K


Случилось неизбежное: порнозвёзды Джеймс Дин и Энди Сан Димас сняли видео на Google Glass, пишет The Verge. В детальном трейлере (NSFW) пара использовала Google Glass для того, чтобы записать видео и смотреть глазами друг друга. Трейлер является пародией на всё, что вы можете представить про футуристические очки: рентгеновское зрение, случайные запросы в Google и использование базы данных распознавания лиц для поиска анатомических подробностей о случайном прохожем.
Читать дальше →
Total votes 189: ↑154 and ↓35 +119
Comments 63

Большой апдейт программы f.lux

Reading time 1 min
Views 40K
После нескольких лет разработки известная программа f.lux наконец-то обновилась до версии 3.9 (без беты). В ней реализовано большое количество новых функций, некоторых из которых очень не хватало раньше.



Напомним, что f.lux — программа, которая изменяет цветовой профиль монитора, в зависимости от времени суток. Ночью устанавливаются тёплые цветовые тона, которые соответствуют искусственному освещению в квартире, днём — холодные, соответствующие дневному свету. Таким образом, глаза гораздо меньше устают, потому что свечение монитора становится более естественным и соответствует окружающей обстановке.
Читать дальше →
Total votes 37: ↑34 and ↓3 +31
Comments 27

История операционных систем Apple. Часть 3. Поколение NeXT

Reading time 12 min
Views 85K
Первая часть: habrahabr.ru/post/194696
Вторая часть: habrahabr.ru/post/196276
Сегодня будет много текста и мало скриншотов, потому что речь пойдет в основном о не взлетевших проектах и глубоких потрохах ОС

Новая надежда


Windows NT 3.1

Microsoft Windows ветки 3.x быстро получили большое распространение, сразу после выхода в 1990 году. Система нового поколения под кодовым названием “Chicago” планировалась к 1993 году, но вышла под именем Windows 95 понятно когда. Одновременно с этим в 1993 году вышла Windows NT — продвинутая ОС для клиент-серверных применений. Из особенностей можно отметить API Win32, вытесняющую многозадачность с планировщиком, поддержку сети, подсистемы совместимости с OS/2 и POSIX, виртуальные машины для DOS и старых 16-битных приложений Windows, новую файловую систему NTFS и поддержку мультипроцессорности.
image
От Apple явно ожидался ответ, особенно в преддверии выхода Windows 95.
Проекты Pink и Red с этой ролью не справились. Впереди было много попыток создать новую конкурентноспособную ОС.
Читать дальше →
Total votes 80: ↑73 and ↓7 +66
Comments 27

История операционных систем Apple. Часть 4. Новое время

Reading time 7 min
Views 68K
Первая часть: habrahabr.ru/post/194696
Вторая часть: habrahabr.ru/post/196276
Третья часть: habrahabr.ru/post/197160
Сегодня завершаю этот цикл переводов. В четвертой части будет про поздние версии Mac OS Classic, начало Mac OS X и чуть-чуть про некомпьютерные продукты Apple.

Зрелые годы Mac OS


Следующий после покупки NeXT релиз получил номер 7.6. Mac OS 8.0 сначала хотели выпустить как 7.7, но потом передумали и сделали как есть.

Mac OS 8

image
Читать дальше →
Total votes 87: ↑77 and ↓10 +67
Comments 20

Лекция Владимира Пирожкова

Reading time 1 min
Views 12K
Промышленный дизайнер, делал дизайн от Citroen и Toyota до салона космического корабля (а также олимпийского факела), рассказывает о себе, о своём новом проекте принципиально нового транспорта (что-то между автомобилем и вертолётом).
Видео смотрится на одном дыхании.



Читать дальше →
Total votes 32: ↑27 and ↓5 +22
Comments 19

Information

Rating
Does not participate
Registered
Activity