Разработчики Pokemon Go рассказали о том, сколько стоят спонсорские локации

Несмотря на то, что игра Pokemon Go потеряла часть игроков, которые зарегистрировались сразу после релиза, она все еще популярна, сейчас ежемесячная аудитория игры составляет 65 млн. Зная об этой популярности, некоторые компании соглашаются платить за размещение каких-либо игровых бонусов или покемонов в принадлежащих таким компаниям зданиях, офисах и т.п. Это может быть, например, пиццерия, куда посетители стекаются в поисках редких трофеев или кинотеатр.

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

Представитель Niantic расказал Techrunch о том, что рекламодатели платят не менее $0.50 за приход участника программы. Это не так много, хотя сложно предположить, что любой охотник за покемонами, зашедший в кафе, участвующее в программе, согласится платить довольно чувствительную сумму за право поймать скрывающегося покемона.

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

Один из наиболее крупных рекламодателей в Pokemon Go — McDonalds. Эта сеть заведений быстрого питания использует рекламу такого рода для привлечения посетителей во все свои 3000 точек в Японии. Если в среднем точка получает 2000 посетителей в день (а так оно и есть), то McDonalds, получается, платит Niantic около $3 млн в день за право получить виртуальный бонус, привлекающий посетителей. Это, конечно, справедливо в том случае, если оплата за визит действительно составляет 50 центов. Может быть, у McDonalds есть скидка, поскольку это оптовый рекламодатель. Но все равно, становится ясно, что Niantic получает неплохие деньги за спонсорские локации. Идея себя оправдала, так что пока есть интерес к Pokemon Go — разработчики этой игры будут зарабатывать.

Всего, по словам руководства Niantic, игра привлекла в спонсорские локации около 500 миллионов человек. Партнером игры являются как операторы связи, например, Sprint, так и компании из сферы общепита, включая уже названный выше McDonalds и Starbucks. Что касается последней, то в программе участвует 7800 точек. Пока что Niantic не раскрывает общую сумму, полученную от Pokemon Go, но она явно немаленькая.
ссылка на оригинал статьи https://geektimes.ru/post/289721/

DataArt и Glück Games разработали уникальную игру

The Lotto Machine, созданная DataArt и ведущим производителем игр из Германии, сочетает элементы лото и классической слот-машины.

Впервые Glück Games представили лото-машину на лондонской конференции ICE VOX — крупнейшей в индустрии iGaming. Там ее признали лучшей в номинации “Game to Watch”, где традиционно отмечают самые инновационные игры. Игровая механика The Lotto Machine не имеет аналогов: быстрый результат, привычный для игровых автоматов, при сумме потенциального выигрыша, достигающей 1,5 млн фунтов, — характерной скорее для лотереи.

Игорь Кожуренко, лидер iGaming практики DataArt: «Мы занялись самостоятельным созданием игр два года назад и быстро выработали собственный подход к их разработке. То, что The Lotto Machine принесла успех нашим партнерам из Glück Games, доказывает: мы обладаем разносторонней экспертизой и действительно представляем ценность для своих заказчиков. Вместе с Glück Games наша команда не только решила UX-задачу и разработала новый пользовательский интерфейс, но и представила новаторскую концепцию самой игры. В основе механики, разработанной специально для The Lotto Machine, лежит совмещение принципов лото и слот-машины, совершенно новое для индустрии в целом».

Роберт Ленцхофер, генеральный директор, Glück Games: «Наша задача состояла в том, чтобы смешать лото и слот-машину, создав игру для любителей мгновенных лотерей. Вместе с DataArt, взявшим на себя всю фронтенд-разработку, мы создали новый вид азартной игры. Ничего подобного раньше на рынке не было. Игра внешне напоминает лото со свободным выбором номеров для ставки, однако в ней гораздо больше способов выиграть. Она дополнена бонусными играми, включая мгновенную лотерею и 50/50, а выигрыш некоторых произвольно выбранных игроков может быть увеличен в несколько раз».

The Lotto Machine будет распространяться в Европе с помощью собственного проекта Glück Games RGCS (Remote Gaming & Commerce Server).

Принципиально новые игры в iGaming появляются редко, поскольку индустрия существует в жестких законодательных рамках и находится под постоянным контролем. Создатели продукта, механика которого отличается от привычной, обязаны доказать регулятором прозрачность алгоритма работы своей игры. DataArt и Glück Games это удалось.

О Gluck Games:
Glück Games создает азартные игры, доступные широкому кругу пользователей. Компания отличается высоким уровнем дизайнерских и инженерных решений, принятых при разработке оригинальных игр и бэкенд-продуктов для казино и лотерей.
ссылка на оригинал статьи https://geektimes.ru/post/289719/

В третий раз зарегистрированы гравитационные волны: что мы можем узнать о Вселенной?

Сегодня международная коллаборация LIGO-Virgo объявила о регистрации гравитационных волн в третий раз в истории. Источником, как и в предыдущие два раза, являлась пара черных дыр. О результатах исследования опубликована статья в Physical Review Letters.


О сигнале GW170104

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

Во время второго рабочего цикла обсерваторий Advanced LIGO был зарегистрирован сигнал, который с большой достоверностью вызван гравитационными волнами — ошибочно такой сигнал может появиться раз в 70.000 лет постоянных наблюдений (соотношение сигнал-шум 13 и достоверность больше 5σ).


Сигналы на двух детекторах, время по оси х, частота по оси y

Черные дыры массой в ~20 и 30 солнечных слились в одну большую, испуская при этом гравитационные волны общей энергией около двух солнечных масс. Сам процесс слияния занял меньше секунды, а в момент слияния ЧД разогнались до 60% от скорости света!

Сигнал шел до нас около несколько миллиардов лет (источник на расстоянии около 1000МПк), и был зарегистрирован двумя детекторами LIGO в США 4 января 2017 года

Какие знания мы получаем о Вселенной?

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

Скорость гравитации

Самый частый вопрос про гравитационные волны — о скорости их распространения. В Общей Теории Относительности (ОТО) эта скорость равна скорости света. Эксперимент LIGO подтверждает это с большой точностью: гравитационная волна приходит на два детектора LIGO, расположенных в разных частях США на расстоянии нескольких тысяч километров, с некоторой задержкой, и зная расстояние между детекторами и эту задержку можно дать оценку на скорость распространения. И с точностью до двадцатого знака после запятой эта скорость равна скорости света.

Тесты ОТО

В более общем смысле, мы можем проверять, насколько наши модели черных дыр подходят под экспериментальные данные. Пока все совпадает:

Хотя для описания пары черных дыр достаточно всего нескольких параметров, аналитическое решение уравнений Эйнштейна для их слияния практически невозможно. Поэтому ученые используют численные расчеты для получения реальных моделей. А где численные расчеты, там и всевозможные приближения, поэтому совпадение полученной модели с экспериментом так важно — это позволяет нам сказать, насколько верны наши представления об ОТО.

Конечно, возможна и проверка на всевозможные модификации ОТО. Некоторые из них могут быть уже исключены — они, например, требуют дисперсии ГВ или превышение скорости света. Другие — ждут увеличение чувствительности детекторов для проверки.
А третьи, как, например, память пространства о волнах, можно проверять уже сейчас.
В общем, увлекательное время предстоит астрофизикам!

Возникновение звезд

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

Интересные выводы можно сделать о возрасте систем ЧД. Чем раньше с начала Вселенной образовалась звезда, тем меньше вещества предыдущих звезд в ней — меньше содержание металлов. С другой стороны, масса ЧД зависит от количества металлов в ней, поэтому по измеренным массам ЧД можно сказать, насколько молоды были звезды, из которых они образовались. Из этого следует любопытное заключение, что парные ЧД могут образовываться как в звездных кластерах (если окружение достаточно молодое), так и изолированно, что раньше известно не было. Наблюдая за параметрами ЧД, можно сказать как эти дыры были образованы — изолированно или нет.

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

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

Дополнительные материалы и ссылки

1. Что такое гравитационные волны?

2. На официальном сайте LIGO много интересных материалов: и видео, и статейки всякие.
3. Присоединяйтесь к народному поиску гравитационных волн через распределенные вычисления на Einstein@Home.
4. А еще у коллаборации есть всякие медиа, где постоянно публикуются интересные материалы: Twitter, Facebook и Youtube.
ссылка на оригинал статьи https://geektimes.ru/post/289629/

В Эфиопии на время экзаменов отключили Интернет

Школьники и студенты списывают повсеместно — это хорошо известно всем, поскольку все мы были (или являемся) школьниками и студентами. Даже, когда уверен в своих знаниях, что-то стараешься где-то записать: формулу, или список констант, или еще что-то. Ну так, на всякий случай. За последние несколько лет нужда в бумажных шпаргалках почти отпала, поскольку в интернете есть все необходимое, а доступом к сети сейчас оснащено огромное количество различных устройств.

В России раньше (как сейчас, точно неизвестно) школьники, сдавшие экзамены раньше других, фотографировали задания и выкладывали в Сеть, так что решениями к заданиям могли воспользоваться школьники из других часовых поясов. Примерно тем же занимаются учащиеся и других стран. Плюс ко всему, в интернет сейчас можно зайти даже с умных часов, и узнать все, что нужно. К решению этого вопроса в некоторых странах подошли «творчески». Например, в Ираке в прошлом году решили просто отключить Сеть по всей стране на несколько дней в мае, когда наступает пора выпускных экзаменов.

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

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

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

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

Стоит отметить, что кроме Ирака и Эфиопии аналогичный пусть борьбы с интернет-списыванием выбрал и Алжир. В прошлом году, в июне, эта страна тоже отключилась от Всемирной паутины. Цель была той же, что и у «коллег» — не допустить списывания.
ссылка на оригинал статьи https://geektimes.ru/post/289715/

Понимание Array.prototype.reduce() и рекурсии на примере яблочного пирога

У меня были проблемы с пониманием reduce( ) и рекурсии в JavaScript, так что я написал эту статью чтобы объяснить их в первую очередь себе (эй, смотрите, это же рекурсия!). Эти концепции имеют некоторые сходства с приготовление яблочного пирога. Я очень надеюсь вы сочтёте мои примеры как полезными так и аппетитными.

image


Дан массив содержащий вложенныу массивы:

var arr = [1, [2], [3, [[4]]]]

Как результат мы хотим получить:

var flat = [1, 2, 3, 4]

Использование цикла for и оператора if.

Если мы знаем максимальное количество вложенных массивов, с которыми нам предстоит работать (в примере их 4), то нам вполне подойдёт цикл for для итерации по каждому элементу массива, а затем оператор if, чтобы проверить является ли этот элемент самим массивом, и так далее…

function flatten() {     var flat = [];     for (var i=0; i<arr.length; i++) {     if (Array.isArray(arr[i])) {         for (var ii=0; ii<arr[i].length; ii++) {         if (Array.isArray(arr[i][ii])) {             for (var iii=0; iii<arr[i][ii].length; iii++) {             for (var iiii=0; iiii<arr[i][ii][iii].length; iiii++) {                 if (Array.isArray(arr[i][ii][iii])) {                 flat.push(arr[i][ii][iii][iiii]);                 } else {                 flat.push(arr[i][ii][iii]);                 }             }             }         } else {             flat.push(arr[i][ii]);         }         }     } else {     flat.push(arr[i]);     }     } }  // [1, 2, 3, 4] 

Что в принципе работает, но тяжело как для чтения, так и для понимания. Более того это работает только в случае, когда известно количество вложенных массивов. И вы вообще можете вообразить каково дебажить весь это бардак (даже сейчас кажется что я где-то лишнее i поставил).

Использование reduce.

К счастью у JavaScript есть пару методов для того чтобы сделать наш код понятнее и проще. Один из таких методов reduce( ). И выглядеть это всё будет вот так:

var flat = arr.reduce(function(done,curr){     return done.concat(curr); }, []);  // [ 1, 2, 3, [ [ 4 ] ] ]  

Получилось куда меньше кода, но мы пропускаем некоторые (в нашем примере один) вложенные массивы. Давайте вместе пошагово разберём как работает reduce ( ) и посмотрим что же он всё-таки делает, чтобы исправить это.

Array.prototype.reduce()

Метод reduce() применяет функцию к аккумулятору и каждому значению массива (слева-направо), сводя его к одному значению. (MDN)

Это не так сложно, как кажется. Давайте поговорим о reduce ( ) как о чём-то вне работы разработчика. Знакомьтесь, это Адам. Основная функция Адама состоит в том, чтобы взять яблоки из кучи, помыть их, а затем поместить одно за другим в корзину. Эта корзина блестящих яблок предназначена для того, чтобы стать вкусными яблочными пирогами. Это очень важная работа.
image
Яблоки + Человеческие усилия = Пирог. Не путайте формулу с рецептом яблоко-человеческого пирога, он не столь вкусны.

В приведённом выше примере куча яблок — это наш массив arr. Корзина — это переменная done, аккумулятор. Начальным значением done является пустой массив, который мы видим как [] последним параметром нашего reduce( ). Яблоко, которое Адам в данный момент моет — это curr (от current). Как только Адам заканчивает мыть текущее яблоко он кладёт его в корзину (мы делаем это с помощью .concat( ) ). Когда гора яблок заканчивается Адам отдаёт корзину с чистыми яблоками нам и идёт домой к своему коту.

Использование reduce( ) рекурсивно для обращения к вложенным массивам.

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

image
Прелестные, слегка перекошенные яблоки просто хотят быть любимыми / съеденными.

Вот что мы хотим от нашей яблоко-обрабатывающей функции/Адама:

  1. Если куча яблок это куча яблок, то возьми яблоко из кучи.
  2. Если то что ты взял — это яблоко, то мой его и клади в корзину.
  3. Если то что ты взял — коробка, то открой коробку. Если в коробке яблоко иди к шагу 2.
  4. Если же в коробке другая коробка, то иди к шагу 3.
  5. Когда от кучи яблок не осталось и следа отдай нам корзину.
  6. Если куча яблок совсем не куча яблок, то отдай это, чем бы они ни было.

Рекурсивная функция с reduce( ) будет выглядеть так:

function flatten(arr) {   if (Array.isArray(arr)) {   return arr.reduce(function(done,curr){     return done.concat(flatten(curr));     }, []);   } else {     return arr;   } }  // [ 1, 2, 3, 4 ]

Терпение и я всё объясню.

Рекурсия

Действия функции сопровождающееся вызовом самой себя. Рекурсия используется для решения проблем, которые содержат более мелкие проблемы. Рекурсивная функция, как правило, принимает два атрибуита: базовый регистр (конец рекурсии) или рекурсивный регистр (продолжается рекурсия). (MDN)

Если вы посмотрите на наш код выше, вы увидите, что flatten () появляется дважды. В первый раз, когда он появляется, он говорит Адаму, что делать с кучей яблок. Во второй раз он рассказывает ему, что делать с тем, что он сейчас держит, давая указания в случае, если это яблоко и в случае, если это не яблоко. Следует отметить, что эти инструкции являются повторением первоначальных инструкций, с которых мы начали — и это рекурсия.

Для ясности разберём всё строчка за строчкой:

  1. function flatten(arr) { — мы называем нашу общую функцию и указываем что она примет аргумент arr.
  2. if (Array.isArray(arr)) { — мы проверяем является ли полученное массивом.
  3. return arr.reduce(function(done,curr){ — если предыдущая строка возвращает true и аргумент является массивом вы передаём его в reduce ( ) — это наш рекурсивный регистр.
  4. return done.concat(flatten(curr)); — неожиданный поворот сюжета! Функция, которую мы вызываем — это та самая функция в которой мы находимся сейчас. Вкратце: начинайте заново с самого верха.
  5. }, []); — мы говорим нашей функции reduce начинать с пустого аккумулятора (done) и помещать то, что вернёт функция именно в него.
  6. } else { — это разрешает те случае когда строка 2 возвращает false, то есть когда аргумент не является массивом.
  7. return arr; — вернуть то, чему бы arr не было бы равно (предположительно чистому яблоку). Это уже на базовый регистр, который выводит нас из рекурсии.
  8. } — завершение блока else.
  9. } — завершение общей функции.

И мы закончили! Мы перешли от 24-строкового, 4-слойного-вложенного цикла for к более сжатому и лаконичному 9-строчному рекурсивному решению. Reduce и рекурсия могут поначалу показаться сложными для понимания, но это ценные инструменты которые в будущем сэкономят вам множество усилий как только вы их поймёте.

И не беспокойтесь об Адаме, нашем неработающем разработчике. Он получил так много внимания после этой статьи, что он открыл свою собственную фабрику яблочных пирогов, управляемую AI. Он очень доволен.
image
+1 вам, если ожидали шутку про Адамово Яблоко.


Данная статья рискует констатировать очевидные вещи. Но следует задать вопрос: «Очевидные для кого?».

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

ссылка на оригинал статьи https://habrahabr.ru/post/330006/