- PVSM.RU - https://www.pvsm.ru -

Определяем местоположение по коммитам в git

Вот вам карты «возможного» местоположения разработчиков Telegram и React для затравки.

Telegram Desktop. Всего 205 человек. Из них 3 основные. Два (работают с 2014 и 2019) в районе Самара-Кавказ (Армения, Грузия, Азербайджан) и один (работает с 2018) вероятно в Турции.

Telegram Desktop. Всего 205 человек. Из них 3 основные. Два (работают с 2014 и 2019) в районе Самара-Кавказ (Армения, Грузия, Азербайджан) и один (работает с 2018) вероятно в Турции.
ReactJS. Всего 1854 человек. Основной состав: 14 работает, 26 уволилось. Примерно 50/50 сидят на восточном и западном побережье США.

ReactJS. Всего 1854 человек. Основной состав: 14 работает, 26 уволилось. Примерно 50/50 сидят на восточном и западном побережье США.

Параметры:

  • масштаб +/- страна;

  • промах до тыс. км.;

  • вероятность ошибки, по ощущениям, пока ~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 [1] это, скорее всего, Luxoft). Сопоставить почту, офисы и текущий диапазон стран.

  • если человек долго и много коммитил, можно составить гистограмму и сопоставить провалы в ней с гос. праздниками (например: рождество у католиков, фиеста и сиеста у испанцев, день независимости в Папуа — Новая Гвинея).

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

Минусы:

  • много мест с «если», поэтому будут ошибки. Моя задача угадать не 100% случаев, а верно предположить «для большинства».

  • алгоритм легко обмануть, но «для большинства» это бессмысленная задача.

Да, метод не самый точный. Но текущая реализация (с багами) уже неплохо угадывает, а если добавить правильные переходы на летнее и зимнее время, а также расширить метрики, станет ещё лучше. Исходники тут [2], онлайн демо тут [3].

Пакеты для 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 [4]

P.S.: Когда я писал это, новости про Linux ещё не было. А теперь как-то странно выходит, ведь это потенциально можно использовать для массовых баннов. Но с другой стороны, причина банов не в инструменте составления списков. Странно будет удалять это.

UPD: Снял лог [5] c Linux [6]:

~4850 компаний (из них 8% Intel, 4% AMD, 3% RedHat) ~26780 программистов (из них 498 "основных"). 756 человек, скорее всего, из РФ (это 3%). Для сравнения 1664 из Индии (6%). По одному человеку от Аляски, Непала и Вьетнама.

~4850 компаний (из них 8% Intel, 4% AMD, 3% RedHat) ~26780 программистов (из них 498 "основных"). 756 человек, скорее всего, из РФ (это 3%). Для сравнения 1664 из Индии (6%). По одному человеку от Аляски, Непала и Вьетнама.

Автор: bakhirev

Источник [7]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/bezopasnost/400484

Ссылки в тексте:

[1] ivan@luxoft.com: mailto:ivan@luxoft.com

[2] тут: https://github.com/bakhirev/assayo

[3] тут: https://assayo.online/demo/

[4] https://hub.docker.com/r/bakhirev/assayo: https://hub.docker.com/r/bakhirev/assayo

[5] лог: https://disk.yandex.ru/d/MCszAW2hA50J3Q

[6] Linux: https://github.com/torvalds/linux

[7] Источник: https://habr.com/ru/articles/852782/?utm_source=habrahabr&utm_medium=rss&utm_campaign=852782