Сегодня в очередной раз обратил внимание на счетчик обрабатываемых русскоязычных страниц, показываемый в поисковике Nigma. Количество страниц бодренько нарастает, вот и стало интересно, как это реализуется.
Код разочаровал, если честно. Просто прибавление числа 57 к текущему значению счетчика каждую секунду:
function countit () { var tmp = parseInt(document.getElementById("doccounter").innerHTML.split('`').join('')) + 57; tmp = tmp.toString(); document.getElementById("doccounter").innerHTML = tmp.substr(0,1) + '`' + tmp.substr(1,3) + '`' + tmp.substr(4,3) + '`' + tmp.substr(7,3); setTimeout("countit();", 1000); } |
Из принципа решил сравнить с механизмом Google (наверняка видели, как на главной странице почтовика бегают цифры доступного места в ящике). Там все оказалось несколько сложнее. Для начала загружается переменная с данными о доступном пространстве на определенные моменты времени:
// Оценки nanite хранения поколения с течением времени. var CP = [ [ 1199433600000, 6283 ], [ 1224486000000, 7254 ], [ 2144908800000, 10996 ], [ 2147328000000, 43008 ], [ 46893711600000, Number.MAX_VALUE ] ]; |
Как видно, только первые два замера являются реальными, 10Гб пространства нас ждут только в конце 2037 года. Зато еще через месяц вместо 10 станет аж 43Гб (интересно, откуда такие цифры у Гугла?). Ну и напоследок формула, по которой расчитывается пространство:
function updateQuota() { //... // i хранит номер строки ближайшей к текущему времени метки времени в массиве CP var ts = CP[i - 1][0]; var bs = CP[i - 1][1]; quota.innerHTML = format(((now-ts) / (CP[i][0]-ts) * (CP[i][1]-bs)) + bs); setTimeout(updateQuota, 1000); //... } |
В общем, любопытно. Вспомнился пост на Хабре о расчете времени подачи такси.
Хорошая интригующая и разоблачающая статья))