Вот вам карты «возможного» местоположения разработчиков Telegram и React для затравки.
Параметры:
-
масштаб +/- страна;
-
промах до тыс. км.;
-
вероятность ошибки, по ощущениям, пока ~20%;
Факты:
-
время коммита сохраняется с timezone пользователя;
-
мы можем извлечь историю коммитов вызывав
git log
;
Текущий алгоритм:
-
смотрим часовой пояс в метке времени коммита;
-
в некоторых часовых поясах расположен лишь один крупный город (например: +4:30 Кабул, +5:45 Катманду, +10:30 Аделаида);
-
в некоторых часовых поясах расположена лишь одна страна (например: +05:30 Индия, +12:00/+13:00 Новая Зеландия);
-
имея зону с N странами учитываем только те, где большая вероятность IT (например: в зоне Буркина Фасо / Великобритания исключаем Буркина Фасо)
-
проверяем домен первого уровня у почтового ящика (например: mil в основном используют военные США);
-
проверяем почтовый сервер (например: китайцы предпочитают qq.com)
-
проверяем уникальные символы в текстах коммитов (например: ł для Польши, ß для Германии, ñ для Испании);
-
проверяем популярные фамилии (например: Ким и Пак это ~15 млн. корейцев из зоны Корея/Япония, а Судзуки и Сато ~4 млн. японцев)
Что можно ещё:
-
сохранить ТОП 100 IT-компаний и их адресов. Из email узнать компанию (например: для ivan@luxoft.com это, скорее всего, Luxoft). Сопоставить почту, офисы и текущий диапазон стран.
-
если человек долго и много коммитил, можно составить гистограмму и сопоставить провалы в ней с гос. праздниками (например: рождество у католиков, фиеста и сиеста у испанцев, день независимости в Папуа — Новая Гвинея).
-
сопоставить местоположение с другими метриками и выделить на карте работающих и уволенных (или основной состав). Далее корректировать местоположение отдельных ребят по позиции большинства.
Минусы:
-
много мест с «если», поэтому будут ошибки. Моя задача угадать не 100% случаев, а верно предположить «для большинства».
-
алгоритм легко обмануть, но «для большинства» это бессмысленная задача.
Да, метод не самый точный. Но текущая реализация (с багами) уже неплохо угадывает, а если добавить правильные переходы на летнее и зимнее время, а также расширить метрики, станет ещё лучше. Исходники тут, онлайн демо тут.
Пакеты для Python, Ruby, JS, PHP, Docker
Python:
установка:pipx install assayo
создать отчёт:assayo
Ruby:
установка:gem install assayo
создать отчёт:assayo
JS:
создать отчёт:npx assayo
PHP:
установка:composer require bakhirev/assayo
создать отчёт:vendor/bin/assayo
Docker:
образ: https://hub.docker.com/r/bakhirev/assayo
P.S.: Когда я писал это, новости про Linux ещё не было. А теперь как-то странно выходит, ведь это потенциально можно использовать для массовых баннов. Но с другой стороны, причина банов не в инструменте составления списков. Странно будет удалять это.
Автор: bakhirev