Flash_4ever писал(а):Ну как сказать
, кстати Убунту ты как програмист можешь мне подсказать
, там на главной странице вконтакта есть такой счетчик который считает сколько людей зарегалсоь .... это реальная програма или развод для ло*ов ?
Счётчик устроен следующим образом:
В скрипте задано две переменные, открыв исходный код страницы можно увидеть примерно следующее:
- Код: Выделить всё
<script type="text/javascript">
var memCount = 13291690;
var memPerSec = 0.473196768265;
function updateCount() {
next = -(1000 / memPerSec)*Math.log(Math.random());
memCountString = '' + memCount;
len = memCountString.length;
memCountString = memCountString.substr(0,len-6)+" "+memCountString.substr(len-6,3)+" "+memCountString.substr(len-3,3);
ge('memCount').innerHTML = memCountString;
memCount = memCount + 1;
setTimeout(updateCount, next);
}
Здесь задаются две переменные, первая -- число пользователей на данный момент, второе -- скорость регистрации новых пользователей. Скорость регистрации периодически высчитывается и сохраняется в кеше, то же самое с числом пользователей. Затем при загрузке страницы определяется число пользователей на данный момент, вероятно по формуле users + users_speed*(current_time - time_count) и скорость (из кеша). Эти две переменные попадают в страницу где уже твой браузер начинает периодически выполнять функцию для добавлению человека к счётчику. Причём это функция выполняется каждые -(1000 / memPerSec)*Math.log(Math.random()); секунд. Область значений функции random от 0 до 1, как поведёт себя -log([0..1]) можно посмотреть на графике приведённом ниже:
Значения для приведённого выше числа будут примерно такими: 4581.00463453829
4163.95399744316
1250.87272278767
1710.95729097018
2804.84249717621
9664.53459948969
Именно раз в столько миллисекнуд будет добавляться один пользователь к счётчику. Вероятно это формула взята из матстатистики и она эмулирует случайный рост величины с определённой скоростью.
Почему же не загружается настоящее значение из базы? Потому что она очень большая и запрос количества каждую секунду со всех посетителей просто положит её (да и запрос к серверу каждую секунду нежелателен для пользователей с медленным и дорогим интернетом).
Правильно ли указано число пользователей? Это невозможно проверить, однако можно зарегистрировать нового пользователя. Зарегистрируем двух пользователей с интервалом 60 сек (засеку на секундомере)
Первому пользователю дали номер 14418477, второму 14418538. Разность -- 61, т.е. за минуту зарегистрировалось 60 пользователей. Хотя возможно и за 50 секунд, поскольку первому письмо пришло через 18 секунд, а второму через 8. В то же время на счетчике написано var memPerSec = 0.503115243876. Возможно они себя недооценили, или я выбрал неправильное время? Или же пользователям кто не получил письмо даётся номер, но он не считается зарегистрированным?
Поскольку номера выдаются по порядку то значит было создано 14.4 миллиона пользователей. Счётчик говорит что создано 13.2 миллиона пользователей. Возможно что удалено всего миллион ложных пользователей, однако я думаю что очень много ботов и виртуалов по прежнему не удалено. При регистрации нет никакой капчи, поэтому зарегистрировать много ботов не представляет труда. Я знаю сообщества где тысячи людей сидят из-под виртуалов. Также существует много людей занимающихся спамом на этом ресурсе, они тоже создают ботов. В битве за красивый номер, вероятно, создаётся не менее 1000 ложных регистраций. Сможет ли администрация отследить их всех? Нет. Я думаю удаляются только очень агрессивные спамеры и виртуалы очень сильно нарушающие правила (реально ты можешь материть всех из под виртуалов, загружать порнографические фотографии в группы, и вероятность что тебя удалят мнинимальна).