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

    • Перевод


    Перед вами введение в программирование на языке Data Parallel C++ или, коротко, DPC++. DPC++ основан на Khronos SYCL — это означает, что перед нами модель современного параллельного программирования. Новейшим текущим стандартом Khronos является SYCL 1.2.1, хотя предварительная спецификация SYCL 2020 уже доступна для изучения. Intel и другие участники рабочей группы SYCL в настоящее время занимаются финализацией следующей версии спецификации. DPC++ содержит расширения, которые облегчают использование SYCL, при этом многие из них, как ожидается, войдут в состав SYCL 2020. Внедрение таких расширений в компилятор DPC++ помогает сообществу оценить их эффективность заранее перед стандартизацией.
    Читать дальше →
  • Поиск, устранение и предупреждение утечек памяти в C# .NET: 8 лучших практик

    • Перевод

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

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

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

      Привет, %username%!



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

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

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

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

      Поехали.
      Читать дальше →
    • Машинное обучение агентов в Unity

      • Перевод
      • Tutorial
      image

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

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

      В этой статье я познакомлю вас с инструментами и SDK для создания агентов DRL в играх и симуляциях. Несмотря на новизну и мощь этого инструмента, его легко использовать и он имеет вспомогательные инструменты, позволяющие осваивать концепции машинного обучения на ходу. Для работы с туториалом необходимо установить движок Unity.
      Читать дальше →
      • +14
      • 8,1k
      • 3
    • Массовый исход браузерных игр

      • Перевод
      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 мы потеряем эту историю и средства, необходимые для её сохранения.
      Читать дальше →
    • Веб-разработчики пишут небезопасный код по умолчанию

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



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

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

        Новое исследование из Университета Бонна (Германия) показывает, что разработчики-фрилансеры по умолчанию придерживаются исключительно небезопасных практик, если только заказчик не требует большего.
        Читать дальше →
      • Скрытая сложность видеоигр слотов

        • Перевод

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


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

        Все игры в казино имеют определенный процент отдачи слота игроку (RTP), поэтому то, как игроки выигрывают и как часто они это делают, становится важным дифференцирующим фактором. Как еще отдельные игры становятся популярнее других? За счет волатильности и распределения выплат — базовых математических терминов, использующихся при разработке слотов.
        Читать дальше →
        • +6
        • 10,9k
        • 1
      • Дизайн декбилдинга в видеоиграх

        • Перевод
        image

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

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

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


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

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

        При создании карт для SteamWorld Quest дизайнеры стремятся сделать их легко узнаваемыми, даже если игрок пока не знает подробно об их свойствах. Если игрок увидит карту с названием «Героический удар» (Heroic Strike) с изображением делающего взмах меча, он скорее всего поймёт, что она делает. Но в то же время Питер и Роберт заявляются, что для подобных игр одним из важнейших элементов является постепенность. Важно знать, когда настало время вводить новые карты, чтобы сразу же не перегружать игрока.
        Читать дальше →
        • +20
        • 3,6k
        • 9
      • Криптография после высадки инопланетян

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

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

        Именно поэтому криптографы сейчас усиленно разрабатывают и анализируют «квантово-устойчивые» алгоритмы с открытым ключом. В настоящее время квантовые вычисления пока не готовы для нормальной оценки: что безопасно, а что нет. Но если предположить, что инопланетяне разработали технологию в полном объёме, то квантовые вычисления — не конец света для криптографии. Для симметричной криптографии квантово-устойчивость обеспечить элементарно, а сейчас мы ищем квантово-стойкие алгоритмы шифрования с открытым ключом. Если криптография с открытым ключом окажется временной аномалией, которая существует благодаря пробелам в наших математических знаниях и вычислительных способностях, мы всё равно выживем. И если какая-то немыслимая инопланетная технология сломает всю криптографию, у нас останется секретность, основанная на теории информации, пусть и со значительными потерями возможностей.
        Читать дальше →
      • Разбираемся с российской криптографической нормативкой… на примере ареста наркобарона

        • Tutorial

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

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

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

        Представили? А теперь разберем, какими законами и как регулировалось бы применение криптозащиты в данном фантасмагорическом случае.
        Читать дальше →
      • Как добиться того, чтобы обучение в играх не раздражало

        • Перевод
        image

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

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

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

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

        Когда я говорю об обучении в видеоиграх, то стремлюсь свести всё к очень простой идее, которая, как мне кажется, отлично реализована в лучших играх: если создать очень умный дизайн уровней, то можно обучать игроков просто… дав им играть.
        Читать дальше →
      • Знай сложности алгоритмов

        • Перевод
        Эта статья рассказывает о времени выполнения и о расходе памяти большинства алгоритмов используемых в информатике. В прошлом, когда я готовился к прохождению собеседования я потратил много времени исследуя интернет для поиска информации о лучшем, среднем и худшем случае работы алгоритмов поиска и сортировки, чтобы заданный вопрос на собеседовании не поставил меня в тупик. За последние несколько лет я проходил интервью в нескольких стартапах из Силиконовой долины, а также в некоторых крупных компаниях таких как Yahoo, eBay, LinkedIn и Google и каждый раз, когда я готовился к интервью, я подумал: «Почему никто не создал хорошую шпаргалку по асимптотической сложности алгоритмов? ». Чтобы сохранить ваше время я создал такую шпаргалку. Наслаждайтесь!
        Читать дальше →
      • Эффективное использование Github


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

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


          Содержание



          Читать дальше →
        • Линейная алгебра для разработчиков игр

          • Перевод
          • Tutorial
          Эта статья является переводом цикла из четырёх статей «Linear algebra for game developers», написанных David Rosen и посвящённых линейной алгебре и её применению в разработке игр. С оригинальными статьями можно ознакомиться тут: часть 1, часть 2, часть 3 и часть 4. Я не стал публиковать переводы отдельными топиками, а объединил все статьи в одну. Думаю, что так будет удобнее воспринимать материал и работать с ним. Итак приступим.
          Читать дальше →
        • Попытки сделать изучение алгоритмов поиска пути проще

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

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

          image
          Читать дальше →
        • Что нового в C# 6.0?

          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";
          Читать дальше →
        • Пишем игровую логику на C#. Часть 1/2

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

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




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

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

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

          Кого заинтересовало узнать, что за игра — внизу есть видео и ссылка на бесплатное скачивание.
          Читать дальше →
        • Создание искусственного интеллекта для игр — от проектирования до оптимизации

          • Перевод

          Сегодня – первое сентября. А значит, многие читатели хабры начинают прохождение нового уровня одной древней известной игры – той самой, в которой требуется прокачать интеллект, и, в итоге, получить магический артефакт – аттестат или диплом, подтверждающий ваше образование. К этому дню мы сделали реферативный перевод статьи про реализацию искусственного интеллекта (ИИ) для игр – от его проектирования до оптимизации производительности. Надеемся, что она будет полезна как начинающим, так и продвинутым разработчикам игр.
          Читать дальше →
          • +40
          • 123k
          • 3
        • Что в имени тебе моем: как качественно «пробить» человека в сети Интернет?

          Мы постоянно встречаемся в своей жизни с новыми людьми, и стоит констатировать, что помимо хороших друзей нам попадаются мутные товарищи, а иногда и отъявленные мошенники. Любовь наших сограждан оставить свой след в интернете и старания наших ИТ-компаний по автоматизации всего и вся позволяют нам довольно оперативно собирать интересующую информацию о конкретных персонах по открытым источникам. Чтобы это делать быстро и качественно, нам нужно владеть простой методологией разведывательной работы и знать, где и какую информацию о человеке можно добыть в интернете.
          Читать дальше →
        • Как «пробить» человека в Интернет: используем операторы Google и логику

          • Tutorial

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


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


          Читать дальше →