Союз Журналистов
 / Новости / 07.09.2001
Нетоскоп
Новости

Новости
АВГУСТ СЕНТЯБРЬ ОКТЯБРЬ
ПН ВТ СР ЧТ ПТ СБ ВС
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
2000 год 2001 2002 год

Союз Журналистов

Разделы

     "Ошибка-2001" сломает скрипты 9 сентября
Алексей Андреев

7.09.2001 20:05

версия для печати

Рано утром 9 сентября в Unix-системах отсчет времени перевалит за миллиардную секунду. Некоторые СМИ уже назвали этот перевальный пункт "проблемой-2001". И даже специалисты расходятся во мнении о том, насколько эта проблема серьезна.

Как заявил в интервью "Нетоскопу" Алексей Выскубов, работающий в исследовательском центре Nokia в Финляндии, проблема является "шуточной". Время в Unix-системах отсчитывается от так называемого Epoch: 00:00 01.01.1970. При этом время считается в секундах, а под счетчик в большинстве систем выделено 4 байта. В байте 8 бит, так что переполнение произойдет, когда число достигнет "2 в степени 32" (то есть на 4294967296-ой секунде), а не в случае "10 в степени 9" (то есть на миллиардной).

"С точки зрения компьютеров число 10 в степени 9 ничем не замечательно", - полагает Алексей Выскубов. Он также рассказал, что новость об этой очередной "ошибке-2000" в качестве шутки запущена в СМИ научным руководителем одного его знакомого, вычислившим эту миллиардную секунду.

Между тем, по данным "Нетоскопа", уже в пятницу некоторые веб-серверы стали испытывать сбои, связанные с "миллиардной секундой". Например, сбои, случившиеся в работе сайта Lenta.ru, выразились в неправильной работе некоторых программ сортировки новостей. И связана эта проблема вовсе не с переполнением счетчика. Вот как комментирует ситуацию программист Максим Мошков:

"Как известно, дата хранится в виде числа секунд, прошедших с 1970-го года. Например, сейчас это 999867871. А послезавтра это число перевалит за 1000000000 и в нем добавится еще один разряд. Ничего криминального в этом нет, но у программистов на Perl в связи с этим может возникнуть неприятность в операциях сравнения времен (например - времени модификации файлов, или даты постинга)".

По мнению Мошкова, ошибка может случиться, например, если в программе стоит списанная с учебника типовая операция сортировки массива по дате:

@FILES=sort{ $FILEtime{$b} cmp $FILEtime{$a}} (@FILES);

В данном определении используется "cmp" - операция символьного сравнения, а не числового. А в символьном сравнении 1000000000 меньше, чем 999867871. Поэтому при такой сортировке результат окажется прямо противоположным ожидаемому.

Естественно, если программист с самого начала использовал корректную сортировку (не "cmp", a "<=>"), то ничего не случится. Но кто может поручиться, что во всех его скриптах повсюду использованы корректные виды сравнений и сортировок?

Как полагает Мошков, проблема является вполне реальной с учетом того, что многие скрипты писались в пору обучения языку Perl, когда разница между "cmp" и "<=>" была просто неизвестна авторам этих скриптов. А многие веб-мастера вообще используют чужие скрипты, сгруженные из Интернета. Поэтому "глюки ожидают нас всех в самых неожиданных местах".

Таким образом, у интернетчиков остались еще сутки для того, чтобы почистить код и встретить 1000000000-ю секунду от 1-го января 1970-го года во всеоружии.

Кроме того, как сообщают источники "Нетоскопа", еще ряд проблем 9 сентября может быть связан с тем, что юниксоидно-настроенные системные администраторы будут активно праздновать "миллиардную секунду" с применением алкоголя.


Союз Журналистов

ПРЕСС-РЕЛИЗЫ
Yellow NewsPillow
Возрождение легендарной NewsPillow

АИСТ
Стартует дилерская программа ASP-сервиса SiteManager для веб-студий

Caravan
Караван отменяет все регистрационные платежи на виртуальном хостинге и на размещение физических серверов (Colocation)

Экспресс-Интернет
Система управления сайтом для Веб-студий, а не для Владельцев сайтов. Экспресс-Интернет.

"Логика Бизнеса"
Мария Каменнова вошла в TOP-100 отечественной ИТ-индустрии

Copyright © 2000-2002 Нетоскоп
Информация о сайте