Как стать автором
Обновить
0
0

Пользователь

Отправить сообщение

Ход конём по битам. Шахматный Bitboard

Время на прочтение3 мин
Количество просмотров13K
Добрый день. Эту статью я написал специально для студентов курса «Алгоритмы для разработчиков» в OTUS и сегодня хочу поделиться ею со всеми читателями нашего блога.

Шахматный конь стоит на шахматной доске и задумчиво смотрит в шахматную даль.
Сколько разных ходов он может сделать?

image

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

Так как же быстро найти количество ходов шахматного коня, используя эту идею?
Читать дальше →
Всего голосов 45: ↑43 и ↓2+41
Комментарии19

Писатели про… Писатели про… Писатели прод, или Как в России вымерли и возродились фантасты

Время на прочтение8 мин
Количество просмотров34K
В Хеллоуин положено говорить о страшном, поэтому сегодняшний наш блог – о современной российской фантастике.

Профессиональные писатели-фантасты, как известно, вымерли в России где-то во второй половине 2011 года, когда в издательствах все начало сыпаться к чертям собачьим. Продажи «художки» тогда резко просели, причем практически по всем позициям, за исключением детской литературы. Издатели схватились сначала за голову, потом за карман, и, неоптимистично позвенев мелочью, обратились к народу.

Большинству издаваемых ими авторов они сказали примерно то же самое, что заявил один вредный дед своему популярному впоследствии внучку: «Ну, Лексей, ты — не медаль, на шее у меня — не место тебе, а иди-ка ты в люди…».

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

Русская фантастика, безусловно, не умерла – ее и дустом вывести непросто, — но писательство перестало быть профессией, став чистой воды хобби.

image

Однако не прошло и пяти лет, как вымершая было популяция была восстановлена: фантасты-профессионалы воскресли в лучших традициях фениксов и ренессансов. Воскресило их магическое слово «прода».
Читать дальше →
Всего голосов 100: ↑83 и ↓17+66
Комментарии500

Создание шейдера травы в движке Unity

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

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

Статья описывает поэтапный процесс написания шейдера травы в Unity. Шейдер получает входящий меш, и из каждой вершины меша генерирует при помощи геометрического шейдера травинку. Ради интереса и реализма травинки будут иметь рандомизированные размеры и поворот, а ещё на них будет влиять ветер. Чтобы управлять плотностью травы, мы используем тесселяцию для разделения входящего меша. Трава сможет и отбрасывать, и получать тени.

Готовый проект выложен в конце статьи. В созданном файле шейдера содержится большое количество комментариев, упрощающих понимание.
Всего голосов 53: ↑50 и ↓3+47
Комментарии5

6 полезных ресурсов и сервисов для потенциальных эмигрантов в США, Германию и Канаду

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


С недавних пор я активно заинтересовался темой переезда за границу, и в связи с этим изучил существующие сейчас сервисы, которые оказывают помощь в переезде ИТ-специалистам. К моему удивлению, далеко не так много проектов помогают потенциальным иммигрантам. Пока что я отобрал шесть сайтов, которые показались мне интересными.
Читать дальше →
Всего голосов 55: ↑46 и ↓9+37
Комментарии34

Неожиданная эффективность квазислучайных последовательностей

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


Рисунок 1. Сравнение различных квазислучайных последовательностей с низким расхождением. Заметьте, что предлагаемая мной $R$-последовательность создаёт более равномерно распределённые точки, чем все остальные методы. Более того, все остальные методы требуют тщательного подбора базовых параметров, а в случае неправильного подбора приводят к вырожденности (например справа вверху)

Рассматриваемые в статье темы

  • Последовательности с низким расхождением в одном измерении
  • Методы с низким расхождением в двух измерениях
  • Расстояние упаковки
  • Множества с многоклассовым низким расхождением
  • Квазислучайные последовательности на поверхности сферы
  • Квазипериодический тайлинг плоскости
  • Маски дизеринга в компьютерной графике

Какое-то время назад этот пост был выложен на главной странице Hacker News. Можете прочитать там его обсуждение.
Всего голосов 90: ↑90 и ↓0+90
Комментарии8

Самый маленький компьютер

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

Игровой.
Но это не точно


Он, конечно, не претендует на звание «самого», но явно компактнее собратьев.

Представляю вам пошаговую инструкцию +заметки для сборки вполне себе компактного игрового ПК. Сразу говорю, что понятие «игровой» широкое, а я не богатый, так что тут не будет Core i9 и GTX 1080Ti, я собрал довольно скромную систему, впрочем, она мощнее, тише и меньше старой раз в 10.

Вместо вступления


У меня был средненький 7-летний компьютер, и в какой-то момент он перестал мне нравиться, тогда я решил собрать новый. С удивлением обнаружил, что вышли новые камни у обоих производителей и решил: «наконец-то соберу mini-ITX.» И собрал. Немного заморочившись с питанием (относительно, конечно, но по меркам сборки ПК, где «купил и поставил», заморочился) получил очень компактный ПК. Сами посудите: 210*170*95 мм.
Читать дальше →
Всего голосов 164: ↑160 и ↓4+156
Комментарии217

Курс MIT «Безопасность компьютерных систем». Лекция 19: «Анонимные сети», часть 3 (лекция от создателя сети Tor)

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

Массачусетский Технологический институт. Курс лекций #6.858. «Безопасность компьютерных систем». Николай Зельдович, Джеймс Микенс. 2014 год


Computer Systems Security — это курс о разработке и внедрении защищенных компьютерных систем. Лекции охватывают модели угроз, атаки, которые ставят под угрозу безопасность, и методы обеспечения безопасности на основе последних научных работ. Темы включают в себя безопасность операционной системы (ОС), возможности, управление потоками информации, языковую безопасность, сетевые протоколы, аппаратную защиту и безопасность в веб-приложениях.

Лекция 1: «Вступление: модели угроз» Часть 1 / Часть 2 / Часть 3
Лекция 2: «Контроль хакерских атак» Часть 1 / Часть 2 / Часть 3
Лекция 3: «Переполнение буфера: эксплойты и защита» Часть 1 / Часть 2 / Часть 3
Лекция 4: «Разделение привилегий» Часть 1 / Часть 2 / Часть 3
Лекция 5: «Откуда берутся ошибки систем безопасности» Часть 1 / Часть 2
Лекция 6: «Возможности» Часть 1 / Часть 2 / Часть 3
Лекция 7: «Песочница Native Client» Часть 1 / Часть 2 / Часть 3
Лекция 8: «Модель сетевой безопасности» Часть 1 / Часть 2 / Часть 3
Лекция 9: «Безопасность Web-приложений» Часть 1 / Часть 2 / Часть 3
Лекция 10: «Символьное выполнение» Часть 1 / Часть 2 / Часть 3
Лекция 11: «Язык программирования Ur/Web» Часть 1 / Часть 2 / Часть 3
Лекция 12: «Сетевая безопасность» Часть 1 / Часть 2 / Часть 3
Лекция 13: «Сетевые протоколы» Часть 1 / Часть 2 / Часть 3
Лекция 14: «SSL и HTTPS» Часть 1 / Часть 2 / Часть 3
Лекция 15: «Медицинское программное обеспечение» Часть 1 / Часть 2 / Часть 3
Лекция 16: «Атаки через побочный канал» Часть 1 / Часть 2 / Часть 3
Лекция 17: «Аутентификация пользователя» Часть 1 / Часть 2 / Часть 3
Лекция 18: «Частный просмотр интернета» Часть 1 / Часть 2 / Часть 3
Лекция 19: «Анонимные сети» Часть 1 / Часть 2 / Часть 3
Всего голосов 16: ↑16 и ↓0+16
Комментарии0

Иллюзия пространства: как новый Spiderman рендерит помещения без геометрии

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

В недавно выпущенной игре Marvel's Spider-Man во многих зданиях за окнами есть интерьеры. Они выглядят замечательно, но похоже, что их реализовали с помощью хитрого рендеринга — геометрии интерьеров на самом деле не существует и она сгенерирована шейдером. Я не видел никаких официальных заявлений Insomniac о том, как они это сделали, но исходя из того, как выглядит эффект, здесь с большой вероятностью реализована техника interior mapping, которую я придумал в 2007 году в процессе работы над диссертацией. Раньше я не писал о ней в блоге, поэтому сейчас подходящий момент для объяснения любопытного небольшого шейдера, который я придумал.

Давайте начнём с просмотра геймплея Marvel's Spider-Man. Игра выглядит просто потрясающе. Сайт Kotaku записал отдельный ролик, посвящённый окнам:


Как можно заметить примерно на 40 секунде видео, в самом деле комнаты не являются частью геометрии: там где очевидно должно быть окно, находится дверь. Кроме того, глядя в одну комнату с разных углов здания, мы видим разный интерьер. В некоторых случаях за углом здания даже находится стена. Всё это даёт нам понять, что комнаты имитируются. Тем не менее, с точки зрения перспективы они отображаются правильно и обладают реальной глубиной.
Всего голосов 90: ↑89 и ↓1+88
Комментарии38

Эмиграция и всё о ней в телеграм-блогах

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

«Хорошо там, где нас нет» — думают многие и годами живут на одном и том же месте. Но мир слишком разнообразен, чтобы всю жизнь провести в одной стране.


image

Карта каналов об эмиграции


На помощь приходит Telegram, где в последние годы появилось уникальное сообщество авторов жанра «я — эмигрант».


Каждый день очередной эмигрант решает вещать из своей страны и заводит канал в телеграме. Ребята (а 90% из них работают в IT или около IT индустрии) делятся полезными советами, общаются с читателями в чатах, пропагандируют свободу перемещения, рассказывают о плюсах и минусах эмигрантской жизни, честно и без прикрас выдают информацию, которую не найти в поисковиках.


Какие на самом деле жители выбранной ими страны? Как найти жилье? Как устроится на работу? В чем отличия менталитета? Или даже Как проходят свидания? Как строится личная жизнь в другой стране? Такого нет в Google! :)


Я собрал максимально большой список таких блогов, отсортировал по странам и делюсь с вами.

Читать далее
Всего голосов 49: ↑44 и ↓5+39
Комментарии57

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

Время на прочтение6 мин
Количество просмотров26K
Когда моему первому сыну было всего два, он уже любил машины, знал все марки и модели (даже больше, чем я, благодаря моим друзьям), мог их распознавать по небольшой части изображения. Все говорили: гений. Хотя и отмечали полную бесполезность этих знаний. А сын тем временем спал с ними, катал их, расставлял ровно в ряд или квадратиком.

Мальчик любит машинки
Читать дальше →
Всего голосов 67: ↑66 и ↓1+65
Комментарии80

Где мои деньги, чувак: о чем молчит Steam

Время на прочтение8 мин
Количество просмотров89K
Это первая из шести статей, в которых я хочу рассмотреть весь процесс паблишинга игр на ПК от начала и до конца. Оставим за скобками разработку — помимо неё вас ждут много других приключений. Выбор издателя или самостоятельное издание, локализация и адаптация игры, маркетинг и PR, выбор цен и планирование скидок, работа с издателями, дистрибьюторами и посредниками.



Мы много будем говорить о Steam, самой крупной открытой платформе для игр, потом посмотрим на 3rd-party дистрибуцию и альтернативные варианты продаж. До того, как вы найдете свои собственные ответы — давайте трезво посмотрим на то, как маховик издания игр работает сейчас.

Простите, ребята, но это будет очень меркантильная статья с цифрами и процентами — я считаю, что если создание игр ваша страсть и ремесло, без них сложно уверенно идти вперёд. Начнём с цен, скидок и того, как работает список желаемого в Steam.
Читать дальше →
Всего голосов 122: ↑120 и ↓2+118
Комментарии182

Когда расходы — это не расходы, как верно понимать финансовые данные по компании

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

В финансах существует большая разница между “расходами” в финансовом смысле и “расходами” в бытовом. Финансисты разделяют понятия расходов и расходования денежных средств. Расходами называются события, которые:


  1. Являются тратой денег или у вас появляются обязательства по их уплате.
  2. Относятся к текущему финансовому периоду.
  3. Относятся к использованию ресурсов компанией.

При этом расходом денежных средств является фактическая операция списания средств со счета или кассы. И такое списание не всегда может означать расходы(в обозначенном смысле) для компании. Например:


  1. Вы дали в долг. Списание есть, это не расход (у вас не появилось обязательств, наоборот, должны вам), а превращение денег в актив — долг, который должны вернуть.
  2. Вы купили сервер. Т.к. Сервер штука долгосрочного функционирования, то расходы на него нельзя отнести только к текущему финансовому периоду, поэтому сумма расходов на сервер не является полностью расходами этого периода. Расходы на сервер считаются в составе т.н. амортизации — оценки износа оборудования, степени, с который вы “употребили” сервер в текущем периоде.
Читать дальше →
Всего голосов 11: ↑9 и ↓2+7
Комментарии16

Путеводитель по Швейцарии

Время на прочтение42 мин
Количество просмотров90K
Приветствую, товарищи!

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

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

Я решил не делить его на отдельные куски — так информацию искать будет проще. Надеюсь что не сильно нарушу тематику ресурса, пусть НЛО нас рассудит.


Flumserberg. Здесь и далее — обычно мои фотографии, которые мне показались более или менее приличными :)
Читать дальше →
Всего голосов 170: ↑167 и ↓3+164
Комментарии327

Создание разрушаемых мешей

Время на прочтение11 мин
Количество просмотров25K
image

Часть 1. Знакомство с Marching cubes


Как создать меш из любого хаоса
В Minecraft мы можем копать в любом направлении, убирая за раз по одному блоку с чётко заданными краями. Но в других играх разработчикам удаётся разрушать рельеф плавно, без кубичности Minecraft.

Вот пример из No Man’s Sky: видео.

Аналогичная техника применяется для отображения изображений с МРТ, metaball-ов и для вокселизации рельефа.

В этой части я расскажу о технике создания разрушаемого рельефа Marching Cubes, а в более общем применении — для создания плавного граничного меша твёрдого объекта. В этой статье мы начнём с рассмотрения двухмерной техники, затем трёхмерной, а в третьей части рассмотрим Dual Contouring. Dual Contouring — это более совершенная техника, создающая тот же эффект.
Всего голосов 30: ↑30 и ↓0+30
Комментарии3

Шаблон проектирования Entity-Component-System — реализация и пример игры

Время на прочтение22 мин
Количество просмотров80K
image


В этой статье я хочу обсудить шаблон проектирования «сущность-компонент-система» (Entity-Component-System, ECS). По этой теме можно найти много информации в Интернете, поэтому я не буду глубоко вдаваться в объяснения, а больше расскажу о моей собственной реализации.

Часть 1: Реализация шаблона Entity-Component-System на C++


Начнём сначала. Полный исходный код моей реализации ECS можно найти в репозитории на github.

Entity-Component-System, в основном используемый в играх — это шаблон проектирования, обеспечивающий огромную гибкость в проектировании общей архитектуры программного обеспечения[1]. Такие большие компании, как Unity, Epic или Crytek используют этот шаблон в своих фреймворках, чтобы предоставить разработчикам очень богатый возможностями инструмент, с помощью которого они могут разрабатывать собственное ПО. Прочитать более широкое обсуждение по этой тематике можно в этих постах [2,3,4,5].
Всего голосов 15: ↑15 и ↓0+15
Комментарии6

Как мы замахнулись на мобильный fast paced шутер: технологии и подходы

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


Год назад у нас в компании был один проект — мобильный шутер War Robots с относительно медленными, но красочными и напряженными боями. Игра продолжает развиваться, у нее десятки миллионов установок и игроков по всему миру, постоянно выходят апдейты. В какой-то момент мы захотели сделать динамичный шутер на Unity со скоростями, сравнимыми с Overwatch, CS:GO или Quake. Но реализовать задуманное для мобильных платформ (в первую очередь iOS и Android) на основе War Robots при текущих архитектуре и подходах было практически нереально.

Мы понимали, как это сделать в теории — есть много статей, презентаций на YouTube, детально рассказывающих о том, как написать шутер, как работать с сетью, какие возникают проблемы и как их решать. Здесь нет Rocket Science, все эти подходы придумали еще 30 лет назад и за это время они особо не поменялись. НО: у нас не было практики.

Забегая вперед, скажу — нам удалось реализовать задуманное. Мы создали для мобильных платформ динамичный быстрый шутер, который сейчас находится в бета-тестировании и активно дорабатывается. И мне очень хотелось бы всем этим поделиться. Это первая, обзорная статья с перечислением и кратким описанием практически всего того, что мы используем (прошу не путать с другим нашим проектом в разработке, технологии и подходы в котором похожие, но отличаются в деталях).
Читать дальше →
Всего голосов 41: ↑39 и ↓2+37
Комментарии43

Имитация естественного движения: Steering Behaviors

Время на прочтение23 мин
Количество просмотров19K
image

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

Идеи, на которых построены такие поведения, предложены Крейгом Рейндольдсом; они не основаны на сложных стратегиях с использованием планирования пути или глобальных вычислений, а применяют локальную информацию, например, силы соседних объектов. Благодаря этому они просты в понимании и реализации, но в то же время способны создавать очень сложные паттерны движения.
Всего голосов 41: ↑40 и ↓1+39
Комментарии7

Процедурная генерация подземелий в roguelike

Время на прочтение31 мин
Количество просмотров45K
image

Процедурно генерируемые карты — базовая особенность roguelike. Для жанра, который почти является синонимом понятия «случайность» (и на то есть причины), рандомизированные карты стали простейшим способом демонстрации его ключевого элемента, потому что они влияют на многие аспекты геймплея — от стратегии исследования и тактического позиционирования до расположения предметов и врагов.

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

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

Конечно же, преимущества процедурных карт бессмысленны без большой вариативности механик и контента — однообразный hack-and-slash здесь не подойдёт. Поэтому все roguelike, выдержавшие испытание временем, имеют глубокий геймплей.

Этот пост является результатом моей работы над генерацией карт для Cogmind.
Читать дальше →
Всего голосов 41: ↑41 и ↓0+41
Комментарии4

Проект «Морровинд»

Время на прочтение24 мин
Количество просмотров50K
image

Вам нужно сыграть в Morrowind.

(Предупреждение: ниже идут несколько абзацев похвал Морровинду, так что вы можете спокойно пропустить их и переходить к самой сути поста.)

В начале Morrowind вы обычный обалдуй, только что сошедший с тюремного корабля с 87 золотыми в кармане (в этом мире одна буханка хлеба стоит 1 золотой, то есть это примерно 35 фунтов — именно столько вам придётся заплатить за 87 упаковок нарезанного белого хлеба в Tesco). Вашим первым заданием будет получение посылки от человека в другом городе, и вы можете или проехаться на силт страйдере (огромном насекомом с длинными ногами, которым, вероятно, управляет вечно пьяный жуткий водитель — почти как в лондонских автобусах) или прогуляться туда пешком по дикой местности, сражаясь с ордами хищных птиц-переростков железным кинжалом, который вы стянули из бюро переписей. Только ваш кинжал всегда промахивается, потому что, видите ли, создатели боевой системы Morrowind вдохновлялись настольными ролевыми играми, а аниматорам платили не так много, поэтому даже если ваше оружие очевидно вонзается в мясистое тело того, в кого вы, игрок, целитесь, нет никаких гарантий, что вы на самом деле попали.

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

Или вы продолжаете играть и узнаёте о том, как усталость влияет на ваши шансы кого-нибудь ударить (и за кем-нибудь приударить), изучаете игровую механику, покупаете новую мышь, добираетесь до Балморы и погружаетесь в один из самых богатых миров, которые я видел в играх. Вы проживаете сюжет, поднимающий вопросы об организованной религии, ксенофобии, колониализме, племенных легендах, пророчествах, свободе воли и выборе приоритетов между собственными интересами и интересами организации, к которой вы принадлежите.
Читать дальше →
Всего голосов 92: ↑90 и ↓2+88
Комментарии33

Эксперименты на котиках: как увеличить количество покупок в приложении

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


Эксперименты на людях любят не только социологи, но и менеджеры продуктов – особенно, когда это самый эффективный способ узнать, какие «фишки» сработают на твою аудиторию. Мы, в Mobile Dimension, решили проверить, котики или продуманное ценностное предложение увеличит количество in-app покупок, и пришли к любопытным результатам.
Читать дальше →
Всего голосов 17: ↑17 и ↓0+17
Комментарии20
1
23 ...

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность