Pull to refresh
2
0

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

Send message

Введение в Data Parallel C++. Пишем первую программу

Reading time 7 min
Views 11K


Перед вами введение в программирование на языке Data Parallel C++ или, коротко, DPC++. DPC++ основан на Khronos SYCL — это означает, что перед нами модель современного параллельного программирования. Новейшим текущим стандартом Khronos является SYCL 1.2.1, хотя предварительная спецификация SYCL 2020 уже доступна для изучения. Intel и другие участники рабочей группы SYCL в настоящее время занимаются финализацией следующей версии спецификации. DPC++ содержит расширения, которые облегчают использование SYCL, при этом многие из них, как ожидается, войдут в состав SYCL 2020. Внедрение таких расширений в компилятор DPC++ помогает сообществу оценить их эффективность заранее перед стандартизацией.
Читать дальше →
Total votes 10: ↑8 and ↓2 +6
Comments 4

Поиск, устранение и предупреждение утечек памяти в C# .NET: 8 лучших практик

Reading time 11 min
Views 31K

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

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

Утечки памяти в .NET
Total votes 22: ↑18 and ↓4 +14
Comments 11

Про ГОСТовский шифр Кузнечик, его SBox и потерянные сиды

Reading time 9 min
Views 37K
Привет, %username%!



Недавно мы вернулись с конференции EuroCrypt 2019, где познакомились с чрезвычайно умными людьми и заодно узнали новые, чрезвычайно обидные факты о ГОСТовском SBox.

Так что, это второй подход к снаряду. Исправленный и дополненный.

В этот раз не будет непонятных красно-синих слайдов, зато будут оригинальные документы из комитета ISO c объяснениями авторов Кузнечика.

И даже челлендж в конце!

Поехали.
Читать дальше →
Total votes 58: ↑55 and ↓3 +52
Comments 141

Машинное обучение агентов в Unity

Reading time 9 min
Views 16K
image

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

Разработчики Unity внедрили поддержку машинного обучения и в частности глубинного обучения с подкреплением ради создания SDK глубинного обучения с подкреплением (deep reinforcement learning, DRL) для разработчиков игр и симуляций. К счастью, команда Unity под руководством Дэнни Лэнджа успешно реализована надёжный и современный движок DRL, способный показывать впечатляющие результаты. В качестве основы движка DRL Unity использует модель proximal policy optimization (PPO); эта модель значительно сложнее и в некоторых аспектах может отличаться.

В этой статье я познакомлю вас с инструментами и SDK для создания агентов DRL в играх и симуляциях. Несмотря на новизну и мощь этого инструмента, его легко использовать и он имеет вспомогательные инструменты, позволяющие осваивать концепции машинного обучения на ходу. Для работы с туториалом необходимо установить движок Unity.
Читать дальше →
Total votes 14: ↑14 and ↓0 +14
Comments 4

Массовый исход браузерных игр

Reading time 6 min
Views 23K
image

Вернёмся 2007 год. В это время появились и получили хорошие отзывы критиков такие игры, как Halo 3, Bioshock, Portal, Call of Duty 4: Modern Warfare и Super Mario Galaxy. В том же году вышло много других выдающихся проектов, поэтому он считается лучшим годом в истории видеоигр. Но не для всех. Некоторым играм требовались достаточно мощные и дорогие компьютеры, а недавно вышедшие консоли продавались по ценам в диапазоне от 249.99 (Nintendo Wii) до 599,99 долларов (PlayStation 3). Для многих игроков возможность поиграть в современные игры была слишком затратной.

Однако в то время рынок видеоигр не заканчивался домашними консолями и мощными компьютерами: с самого зарождения Интернета на сцене стали появляться онлайновые браузерные игры. В такие игры можно было играть на любом компьютере с подключением к Интернету, и большинство из них было бесплатными. В том же 2007 году появились и завоевали популярность такие хорошо известные браузерные игры, как The Last Stand, The Impossible Quiz, Newgrounds Rumble, Pandemic и Trials 2. К сожалению, производитель ПО, необходимого для запуска этих игр, завершил его поддержку. Из-за этого теперь мы не можем играть в сотни и тысячи игр, это уничтожило многие годы разработки игр и игрового контента. Браузерные игры оставили глубокий след в истории видеоигр, но из-за завершения в 2020 году поддержки Flash мы потеряем эту историю и средства, необходимые для её сохранения.
Читать дальше →
Total votes 29: ↑28 and ↓1 +27
Comments 25

Веб-разработчики пишут небезопасный код по умолчанию

Reading time 3 min
Views 26K

«Если хотите, я могу зашифровать пароли»



Некоторые разработчики, которым дали прямое указание применить криптографию, использовали шифрование парольной базы с помощью Base64

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

Новое исследование из Университета Бонна (Германия) показывает, что разработчики-фрилансеры по умолчанию придерживаются исключительно небезопасных практик, если только заказчик не требует большего.
Читать дальше →
Total votes 44: ↑37 and ↓7 +30
Comments 97

Скрытая сложность видеоигр слотов

Reading time 9 min
Views 37K

Игроки в слоты не безрассудны


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

Все игры в казино имеют определенный процент отдачи слота игроку (RTP), поэтому то, как игроки выигрывают и как часто они это делают, становится важным дифференцирующим фактором. Как еще отдельные игры становятся популярнее других? За счет волатильности и распределения выплат — базовых математических терминов, использующихся при разработке слотов.
Читать дальше →
Total votes 20: ↑13 and ↓7 +6
Comments 1

Дизайн декбилдинга в видеоиграх

Reading time 7 min
Views 4.3K
image

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

Мы поговорили с разными разработчиками об их опыте создания дизайна декбилдинга и попросили дать советы тем, кто хочет реализовать такие системы в собственных проектах.

Знакомость элементов как инструмент


Директор игровых проектов Питер Йоханссон и ведущий дизайнер Роберт Олсен из студии Image & Form Games, разрабатывающей игры серии SteamWorld, называют основным источником волшебства и притягательности коллекционных карточных игр традиционные RPG.

«Ощущения, которые мы получаем от игр наподобие Magic: the Gathering, Hearthstone и Netrunner, схожи с ощущениями от классической RPG: мы берём на себя роль героя, экипированного магическими заклинаниями и оружием (или хакерскими инструментами в киберпространстве), чтобы победить могучего врага. Карточные игры берут этот фундаментальный игровой процесс и засовывают его в другую упаковку, меняя перспективу и способы взаимодействия с тем, что уже привычно игрокам».

При создании карт для SteamWorld Quest дизайнеры стремятся сделать их легко узнаваемыми, даже если игрок пока не знает подробно об их свойствах. Если игрок увидит карту с названием «Героический удар» (Heroic Strike) с изображением делающего взмах меча, он скорее всего поймёт, что она делает. Но в то же время Питер и Роберт заявляются, что для подобных игр одним из важнейших элементов является постепенность. Важно знать, когда настало время вводить новые карты, чтобы сразу же не перегружать игрока.
Читать дальше →
Total votes 24: ↑22 and ↓2 +20
Comments 9

Криптография после высадки инопланетян

Reading time 7 min
Views 19K
Автор статьи: Брюс Шнайер — американский криптограф, писатель и специалист по компьютерной безопасности. Автор нескольких книг по безопасности, криптографии и ИБ. Основатель криптографической компании Counterpane Internet Security, Inc., член совета директоров Международной ассоциации криптологических исследований и член консультативного совета Информационного центра электронной приватности.

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

Именно поэтому криптографы сейчас усиленно разрабатывают и анализируют «квантово-устойчивые» алгоритмы с открытым ключом. В настоящее время квантовые вычисления пока не готовы для нормальной оценки: что безопасно, а что нет. Но если предположить, что инопланетяне разработали технологию в полном объёме, то квантовые вычисления — не конец света для криптографии. Для симметричной криптографии квантово-устойчивость обеспечить элементарно, а сейчас мы ищем квантово-стойкие алгоритмы шифрования с открытым ключом. Если криптография с открытым ключом окажется временной аномалией, которая существует благодаря пробелам в наших математических знаниях и вычислительных способностях, мы всё равно выживем. И если какая-то немыслимая инопланетная технология сломает всю криптографию, у нас останется секретность, основанная на теории информации, пусть и со значительными потерями возможностей.
Читать дальше →
Total votes 39: ↑39 and ↓0 +39
Comments 16

Разбираемся с российской криптографической нормативкой… на примере ареста наркобарона

Reading time 9 min
Views 40K

Мексиканский наркобарон Хоакин Гусман Лоэра (Эль Чапо)

Не так давно в СМИ промелькнула статья о том, что мексиканского наркобарона Эль Чапо арестовали из-за того, что его IT-шник слил криптоключи в ФБР, а те в свою очередь смогли расшифровать и прослушать его телефонные переговоры.

Давайте пофантазируем и представим, что наркобарон, IT-шник и все, все, все жили бы в России…

Представили? А теперь разберем, какими законами и как регулировалось бы применение криптозащиты в данном фантасмагорическом случае.
Читать дальше →
Total votes 31: ↑24 and ↓7 +17
Comments 58

Как добиться того, чтобы обучение в играх не раздражало

Reading time 10 min
Views 14K
image

Когда я пишу статьи об обучении в видеоиграх, вокруг них всегда начинаются яростные обсуждения. Люди неизбежно начинают перечисляют все неудачные фрагменты обучения, неуклюжие техники и провалившиеся эксперименты как примеры того, что «обучение — это плохо, лучше бы его вообще не было!».

Если поискать на сайте tvtropes.org (это база данных клише поп-культуры) слово «tutorial», то найдётся больше десяти разных тропов, связанных с тем, что люди ненавидят в процессе обучения видеоигр. Для сравнения: я нашёл всего два обсуждения того, как сильно пользователи ненавидят скачиваемый контент.

Самое печальное в этом то, что когда я пишу об обучении, я имею в виду не такое обучение.

Из-за этого заблуждения я не могу сообщить об обучении то, что хочу.

Когда я говорю об обучении в видеоиграх, то стремлюсь свести всё к очень простой идее, которая, как мне кажется, отлично реализована в лучших играх: если создать очень умный дизайн уровней, то можно обучать игроков просто… дав им играть.
Читать дальше →
Total votes 16: ↑16 and ↓0 +16
Comments 15

Знай сложности алгоритмов

Reading time 2 min
Views 986K
Эта статья рассказывает о времени выполнения и о расходе памяти большинства алгоритмов используемых в информатике. В прошлом, когда я готовился к прохождению собеседования я потратил много времени исследуя интернет для поиска информации о лучшем, среднем и худшем случае работы алгоритмов поиска и сортировки, чтобы заданный вопрос на собеседовании не поставил меня в тупик. За последние несколько лет я проходил интервью в нескольких стартапах из Силиконовой долины, а также в некоторых крупных компаниях таких как Yahoo, eBay, LinkedIn и Google и каждый раз, когда я готовился к интервью, я подумал: «Почему никто не создал хорошую шпаргалку по асимптотической сложности алгоритмов? ». Чтобы сохранить ваше время я создал такую шпаргалку. Наслаждайтесь!
Читать дальше →
Total votes 312: ↑296 and ↓16 +280
Comments 99

Эффективное использование Github

Reading time 13 min
Views 123K

Github — важная часть жизни современного разработчика: он стал стандартом для размещения opensource-проектов. В «2ГИС» мы используем гитхаб для разработки проектов web-отдела и хостинга проектов с открытым кодом.

Хотя большинство из нас пользуются сервисом практически каждый день, не все знают, что у него есть много фишек, помогающих облегчить работу или рутинные операции. Например, получение публичного ключа из URL; отслеживание того, с каких сайтов пользователи приходят в репозиторий; правильный шаринг ссылок на файлы, которые живут в репозиториях гитхаба; горячие клавиши и тому подобное. Цель этой статьи — рассказать о неочевидных вещах и вообще о том, что сделает вашу работу с гитхабом продуктивнее и веселее (я не буду рассматривать здесь работу с API гитхаба, так как эта тема заслуживает отдельной статьи).


Содержание



Читать дальше →
Total votes 149: ↑148 and ↓1 +147
Comments 38

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

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

Попытки сделать изучение алгоритмов поиска пути проще

Reading time 8 min
Views 24K
Алгоритмы поиска пути — неотъемлемая часть разработки игр. А также различных систем навигации, ориентации и много чего ещё. Но мы сосредоточимся на именно игровой индустрии и алгоритмах, которые в ней применяются.

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

image
Читать дальше →
Total votes 46: ↑42 and ↓4 +38
Comments 18

Что нового в C# 6.0?

Reading time 4 min
Views 147K
image

Microsoft выпустила предварительную версию Visual studio 2015 и .Net 4.6 для разработчиков. В новом C# 6.0 несколько новых возможностей, которые могут облегчить кодинг.

В этой статье рассмотрены новые возможности языка C# 6.0. Скачать новую VS можно по ссылке:
Microsoft Visual Studio Ultimate 2015 Preview

Инициализация свойств со значениями


В C# 6.0 мы можем инициализировать свойства со значениями, написав справа от них их значение. Это поможет избежать ошибки с null и пустыми значениями свойства.

Раньше:


public int Id { get; set; }
public string FirstName { get; set; }

Теперь:


public int Id { get; set; } = 1001;
public string FirstName { get; set; } = "Srinivas";
Читать дальше →
Total votes 95: ↑81 and ↓14 +67
Comments 133

Пишем игровую логику на C#. Часть 1/2

Reading time 12 min
Views 93K
Всем привет. В связи с выходом моей игры SpaceLab на GreenLight я решил начать серию статей о разработке игры на C#/Unity. Она будет основываться на реальном опыте её разработки и немного отличаться от стандартных гайдов для новичков:

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




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

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

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

Кого заинтересовало узнать, что за игра — внизу есть видео и ссылка на бесплатное скачивание.
Читать дальше →
Total votes 30: ↑27 and ↓3 +24
Comments 51

Создание искусственного интеллекта для игр — от проектирования до оптимизации

Reading time 32 min
Views 139K

Сегодня – первое сентября. А значит, многие читатели хабры начинают прохождение нового уровня одной древней известной игры – той самой, в которой требуется прокачать интеллект, и, в итоге, получить магический артефакт – аттестат или диплом, подтверждающий ваше образование. К этому дню мы сделали реферативный перевод статьи про реализацию искусственного интеллекта (ИИ) для игр – от его проектирования до оптимизации производительности. Надеемся, что она будет полезна как начинающим, так и продвинутым разработчикам игр.
Читать дальше →
Total votes 44: ↑42 and ↓2 +40
Comments 3

Что в имени тебе моем: как качественно «пробить» человека в сети Интернет?

Reading time 5 min
Views 196K
Мы постоянно встречаемся в своей жизни с новыми людьми, и стоит констатировать, что помимо хороших друзей нам попадаются мутные товарищи, а иногда и отъявленные мошенники. Любовь наших сограждан оставить свой след в интернете и старания наших ИТ-компаний по автоматизации всего и вся позволяют нам довольно оперативно собирать интересующую информацию о конкретных персонах по открытым источникам. Чтобы это делать быстро и качественно, нам нужно владеть простой методологией разведывательной работы и знать, где и какую информацию о человеке можно добыть в интернете.
Читать дальше →
Total votes 90: ↑70 and ↓20 +50
Comments 56

Как «пробить» человека в Интернет: используем операторы Google и логику

Reading time 9 min
Views 928K

В очередной статье нашего цикла публикаций, посвященного интернет-разведке, рассмотрим, как операторы продвинутого поиска Google (advanced search operators) позволяют быстро находить необходимую информацию о конкретном человеке.


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


Читать дальше →
Total votes 122: ↑105 and ↓17 +88
Comments 108
1

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity