16.11.2013 09:12
 0просмотров 58 7

Исключение удалённых и заблокированных персонажей.

Недавно, решил собрать некоторую информацию о персонажах ГВД. Частично из любопытства, частично от нечем себя занять. Казалось, дел на 2-3 часа плюс время сканирования. Но почему-то захотелось сделать как надо, а не по быстрому. А значит, было необходимо сделать рефакторинг и решить некоторые глобальные проблемы.

Одна из самых неприятных проблем, которые встают перед любым желающим посканировать персонажей, это количество этих самых персонажей. Да, нижеприведённый бот умеет работать в нескольких потоках, но при большом их количестве он забьёт канал так быстро, что не успеете сказать "мама". А с моим вай фаем через пару секунд роутер отваливается и сеть в принципе падает. Если вы найдёте единомышленников, вполне возможно с разных компов это дело провернуть довольно быстро. Ну, или если вы магистральный провайдер ;)
Краудсорсинг, это, конечно, хорошо. Но не для повседневного использования. Поэтому я решил сделать список исключений - заблокированных и удалённых персонажей. Причём раздельно. Заблокированные ещё могут вернуться к жизни, а вот удалённых можно забыть (запомнить в списке) раз и навсегда.
Как гласит программистская мудрость, если нужно что-то сделать, сначала проверь, не сделал ли кто-то это до тебя. Тем более, что я наверняка знал, что сделали. Статистика гильдии героев обладает нужной мне информацией. Но вот беда - тот, кто мог бы её выгрузить, в игре не появлялся давно. Проведя небольшой опрос, я выяснил, что больше мне никто помочь не сможет. Обидно, досадно, но ладно. Мы и сами с усами, в конце концов.
Пол часа кодирования, пол часа тестов, и передо мной был новый бот, готовый провести перепись населения. Исходников этого товарища я выкладывать не буду, он внутри проще одноклеточного и смотреть там не на что. Зато выложу то, ради чего он создавался - результаты переписи населения.
Результаты хранятся в текстовых файликах. В этих файликах указаны id игроков, по одному на строку. Если указан просто id игрока, то он заблокирован на момент сбора информации. Если перед id стоит знак минус, то информация о игроке с этим id удалена.
Ссылка на результат:
https://docs.google.com/file/d/0B1xWFGdbJfDBMFBsV1d4NHdEVkU/edit

Что хотелось бы добавить. После сбора всей этой инфы, я прогнал бота ещё раз, уже с исключениями. Нашлись новые, заблокированные и удалённые после переписи. Часть заблокированных (очень малая часть) разблокированы. Это нормальная ситуация, и это придётся учитывать. Но более 3-х миллионов удалённых персонажей проверять не придётся никогда.
Комментарии
1 / 17.11.2013 22:07 / Немезида [16] ?
Прогоняй бота раз в месяц и сравнивай.
Моё ИМХО - первые 20к не трогают, а остальных чистят изредка.
2 / 18.11.2013 06:55 / FireSwarm [11] ?
Интересно, с чем связана цифра 20к?
Не знаю как нижний предел, а верхний предел есть точно. После 5,2кк не было ни одного удалённого персонажа. При том, что до этой границы процент удалённых очень большой.
3 / 18.11.2013 17:15 / Немезида [16] ?
Цифра - с моим ИД :)

давно просто приметила, что мы (до 20к) не уменьшаемся.
Есть куча персов, которые с 2007 не играет - и их не удаляют.
4 / 21.11.2013 17:48 / келл [10] ?
а сколько по времени собиралась статистика?
5 / 21.11.2013 18:44 / FireSwarm [11] ?
Диапазон в миллион id запускался на ночь, за глаза хватало.
6 / 22.02.2015 01:07 / ULTRA_XEROX [9] ?
Цитата: FireSwarm
Диапазон в миллион id запускался на ночь, за глаза хватало.
1 миллион ссылок за ночь (8 часов)? это же какая мега-скорость интернета !
пользуюсь программой HHTRACK (скачивает хтмл файлы): 300.000 ссылок = 14 часов (DSL6000)
сам анализ данных длится макс 30 минут. Если сканировать артефакты, то можно время анализа данных (на жёстком диске) урезать до одной-двух минут (!!! 300к html файлов) - т.е. через размер хтмл файлов
7 / 01.11.2015 17:21 / Коллекционер [13] ?
Цитата: FireSwarm
Диапазон в миллион id запускался на ночь
В народе это DDoS-атака называется  

Возможность комментировать доступна после регистрации