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