отсчётов: 0 · 0/с
источник: —
В телефоне есть датчик движения — акселерометр. Он 60 раз в секунду отдаёт три числа: силу давления на телефон по осям X, Y и Z.
Последние цифры этих чисел никогда не стоят на месте — они мелко дрожат от электронного шума. Это чистая случайность, как броски монетки.
«Монетка» делается так: берём живую цифру после запятой — обычно четвёртую (на некоторых телефонах она спит, и программа сама переходит на третью) — и смотрим, куда она сдвинулась по сравнению с прошлым разом. Выросла — записываем 1, упала — 0.
Если шум честный, единиц и нулей должно быть примерно поровну, а закономерностей в их чередовании быть не должно. Именно это и проверяют блоки ниже.
У каждого блока — своя справка с подробностями. Когда убедимся, что шум честный, из него сделаем генератор случайных чисел — это следующий шаг.
Это сам сигнал датчика, до всякой монетки. «Шум» — дрожание крупным планом (отклонение от среднего), «Как есть» — абсолютные значения: на столе видно Z ≈ 9,8 — притяжение Земли.
График стоит сразу после «Пуска» не зря: по нему сразу видно, что запись пошла и телефон отзывается на ваши движения — потрясите его и посмотрите. Диагностика: датчик живой и шум мелко дрожит, а не стоит столбом. На честность монетки он не влияет.
уник. значений за 10 с: —
фиолетовая метка — рабочая цифра (обычно 4-я после запятой): из её движений рождаются биты
Три канала — это три оси акселерометра вашего телефона: X — вдоль, Y — поперёк, Z — из экрана наружу. Когда телефон лежит на столе, Z ≈ 9,8 — это притяжение Земли прижимает его к столу.
Мы опрашиваем датчик 60 раз в секунду. Каждое число похоже на −0,360744: для монетки важно только одно — как дрожит одна из цифр после запятой (в примере это 7, она выделена меткой).
Обычно живее всех 4-я цифра: третья почти не дрожит (шум до неё не достаёт), а пятая и шестая тонут в округлении и «решётке» шагов датчика. Но датчики разные: на части телефонов решётка грубее, 4-я цифра всегда стоит на нуле, а жива только 3-я. Поэтому первые секунды записи программа смотрит, какие цифры реально меняются, и берёт самую мелкую живую: 4-ю, если молчит — 3-ю, потом 2-ю. Метка и подписи перестраиваются сами; если рабочая цифра в середине записи замолчит на 10 секунд, поиск повторится.
Строка «уник. значений за 10 с» — сколько РАЗНЫХ чисел дал канал за 10 секунд. Канал жив, пока числа всё время новые. На столе их около 100 — это норма: полоса шума узкая, и больше разных значений из неё физически не достать. В руке их около 500. Красное — канал залип на нескольких значениях, такому шуму верить нельзя.
Мы следим за рабочей цифрой каждого канала — обычно это четвёртая после запятой, но у части телефонов жива только третья (см. справку в «Цифрах датчиков»). Цифра выросла — ставим светлую клетку, упала — тёмную. Каждая клетка — один бросок «монетки» (один бит).
Свежие клетки дописываются справа; когда поле заполняется, оно уезжает вверх, как бегущая строка. На поле 96×12 = 1152 клетки — это последние секунд двадцать.
Хорошо выглядит ровный «песок»: светлое и тёмное вперемешку, без узоров. Это значит, что в шуме нет заметной структуры.
Плохо было бы увидеть зебру (строгое чередование), длинные полосы одного цвета, пятна, заливки или повторяющиеся узоры. Такое глаз ловит без всякой математики.
это соотношение нулей и единиц · линии должны гулять внутри зелёного коридора · вышли за коридор — в шуме появилась аномалия
за всё время наблюдения (после прогрева окна)
Каждая точка — доля единиц за последние ~9 секунд (окно 512 битов). Зелёная полоса — разрешённый коридор: у честного шума линии гуляют внутри него в 997 случаях из 1000.
Пока окно ещё набирается (первые секунды), коридор шире — так честно: чем меньше данных, тем больше случайный разброс. Потом он сужается до ±6,6.
Вертикальная шкала закреплена на 40–60%: сразу видно, что линии гуляют в середине, а не «от стенки до стенки». Если сдвиг выскочит за 40–60, шкала сама раздвинется ровно настолько, насколько нужно.
Шкала времени — реальные часы телефона: метки одинаковые на всех телефонах, события сверяются по ним («в 18:40 я постучал по столу»).
Палец — прокрутка назад до самого начала измерений, щипок или колесо — масштаб. В памяти 3 часа, дальше старые точки вытесняются. Разрыв линии — пауза в записи. Пока идёт запись, экран не гаснет: уснёт экран — уснёт и сбор.
каждая полоска — доля «вверх» в последних 512 битах (~9 секунд) · середина = поровну · зелёный — обычное случайное гуляние, жёлтый — редкий выброс, красный — стойкий перекос
Полоска уехала вправо — единиц сейчас чуть больше, влево — нулей. Немного уезжать — нормально: даже у идеальной монетки за 512 бросков доля никогда не стоит ровно на 50%.
Насколько можно гулять «по-честному», показывает зелёный коридор на графике ниже — примерно ±6,6 от середины. Полоски почти всё время должны быть внутри такой вилки.
Красная полоска — перекос держится долго и сильно. На ровном столе так не должно: если увидели красное — что-то не так с шумом.
сколько раз какая цифра 0–9 была рабочим знаком за последнюю минуту · в идеале все примерно по 10% · красный столбик — цифра-перебор
Датчик шагает «решёткой»: его значения идут ступеньками, а не плавно. Из-за этого некоторые цифры могут выпадать чаще других.
Если все десять цифр появляются одинаково часто (примерно по 10%), решётка не портит нашу монетку. А заметный перебор одной цифры мог бы перекашивать биты.
Красный столбик — цифра выпадает подозрительно часто. Пока их нет — порядок.
Полосы всех телефонов с общей шкалой времени и масштабом. Жёлтые столбы — выходы за коридор: тусклый — один телефон, яркий — два и больше одновременно. Скачок на одном — локальная тряска, одновременный на нескольких — кандидат в аномалии: ставьте метку и сохраняйте лог. Детали — в справке под графиком.
Каждый телефон с включённым участием раз в 10 секунд отдаёт свой график перекоса (точка раз в полсекунды, ~0,5 КБ за раз). По умолчанию каждый телефон — своя узкая полоса, но шкала времени и масштаб у всех общие: полосы выровнены по вертикали, и излом виден на всех сразу. Селектор AX/AY/AZ выбирает ось, которую сравниваем. Полосы, у которых есть точки в видимой части, идут сверху, молчащие прижаты вниз и сжаты — переключатели «Рабочие сверху» и «По алфавиту» над графиком; стрелками ↑↓ в подписи под графиком можно выставить свой порядок — он сохранится в браузере, кнопка «вернуть авто» вернёт автомат. Кнопки масштаба (10 мин / 30 мин / 2 ч) стоят сразу над графиком.
У каждого телефона в сеансе есть имя и постоянная личность: имя придумывается само («Синий Барс-42»), и его можно поменять на своё в поле рядом с кнопкой участия. Ключ телефона живёт в браузере, поэтому после обновления страницы или короткого выхода телефон возвращается в СОБСТВЕННУЮ полосу — график продолжается после перерыва, полоса не раздваивается. Переименование меняет только подпись у всех, полоса остаётся той же.
Жёлтые столбы — выходы за коридор 43,4–56,6%. Тусклый столб — вышел один телефон, яркий — два и больше в один и тот же момент (и полоска-линейка над дорожками). Настоящая аномалия должна дать яркий столб; скачок только на одном — локальное событие. Важно: телефоны на одном столе связаны механически — шаги и стук дойдут до обоих, для честного опыта держите телефоны в разных местах или на разных опорах.
Сохранялки — на случай аномалии. «Чёрный ящик» каждого телефона ВСЕГДА держит в памяти последние ~2 часа: сырые отсчёты датчика (~60 Гц, все оси), поток битов, историю поправки часов относительно сервера и события (скрытие страницы, потеря сети, смена рабочей цифры, сбои отправки). «Метка аномалии» втыкает красный флажок в общую шкалу (его увидят все зрители) и в лог самого телефона. «Сохранить лог» выгружает этот файл даже без интернета — например, в лесу у аномального места. «Лог на сервер» выкладывает его в общий архив (список под графиком) — скачать чужой лог может любой желающий, ссылка открытая. «Разбор лога» показывает любой из них человеческим языком — файл с телефона (кнопка «Открыть файл лога») или чужой из архива (кнопка «смотреть»): события по минутам, кривая поправки часов с самым большим прыжком, огибающая сэмплов и метки. «Скачать сеанс» — точки всех полос и все метки одним файлом прямо с сервера; этот файл тоже открывается в «Разборе лога»: увидите, кто участвовал, график любой полосы и все метки. При разборе сдвига первая улика — кривая поправки часов (строки «offsets») и расхождение времени телефона с сервером.
Управление: потяните график в сторону — линии едут ЗА ПАЛЬЦЕМ (тот же жест, что на графике перекоса выше) — уйдёте назад во времени (появится кнопка «к сейчас»), щипок или колесо — масштаб. Белая линейка времени постоянно стоит в центре графика и показывает время в центре видимого окна — её не нужно ставить тапом, она всегда на месте. Часы телефонов выравниваются по серверу (поправка видна в подписи), но если телефон давно не сверял время, «одновременность» может врать на минуты — включите интернет перед сеансом.
Режим «Наложить» кладёт все линии на один график — удобно для двух телефонов, на трёх и больше выходит каша. Уходит только перекос осей (числа 40–60%) — сырых данных, координат и личного ничего нет. Участие выключается той же кнопкой, серии сервера живут не больше трёх часов.