Был тихий осенний вечер. Ничто не предвещало беды. Смеркалось. Я заканчивал плановый upgrade компьютера, в процессе которого по затерявшимся уже в истории причинам понадобилось сбросить BIOS. Дело не хитрое. Расположение батарейки и перемычки Reset на материнской плате известны – вперед! После включения и загрузки Windows 7 мне в ультимативном порядке было заявлено, что на дворе далекое будущее, а именно – 14201-ый год.
Приключения только начинались…
Преамбула
Собственно говоря, перевод времени при сбросе BIOS – не сюрприз. Меня и раньше бросало на годик туда-сюда. Но тут – сразу на 12 тысяч лет! Нечто из ряда вон. Взглянув на
Лирическое отступление
В разные времена разные околокомпьютерные СМИ, программисты и прочие эксперты предполагали глобальный апокалипсис ввиду невозможности компьютером обработать верно некую дату. В большинстве своем люди ошибались. Хотя и не всегда. Наиболее обсуждаемые даты:
- 2000 год или Y2K – написано уже масса текста, добро пожаловать на википедию, повторяться не хочу.
- 2011 или Y1C — локальная проблема Тайваня, Северное Кореи и может быть кого-нибудь еще, ведущего летоисчисление от разных нестандартных событий.
- 2036 год – конец 64-битного времени в протоколе NTP. Создатели протокола клянутся , что по целому ряду причин ничего плохого не случится, но они вполне могут недооценивать креативную мощь индийской школы программирования.
- 2038 год или Y2K38 – конец 32-битного времени. Всякие программы, использующие time_t, многие функции time.h и считающие летоисчисление от 1970 года заворожено наблюдают за пролетающей мимо розовой птицей Обломинго.
- 10000 год – переход с 4-значных годов на пятизначные. Казалось бы – во-первых, откуда бы взяться глюку? А во-вторых – нам же все равно, не доживем ведь. Ан нет. Уже сегодня работает некоторое количество программ моделирования, расчетов и предсказаний, которым такие даты нужны. А на той же википедии уже сейчас есть примеры неверного вывода и расчета пятизначных дат даже в таких серьезных программах как Microsoft Office и OpenOffice. Кроме того, 31.12.9999 – это максимально возможное значение для .NET-овского класса DateTime в последней версии .NET. Поставьте себе в телефон напоминалку – «до 9999 года перейти на следующую версию .NET».
- 30827 – последний год для виндовой структуры SYSTEMTIME и функций, её использующих (GetLocalTime, GetSystemTimе)
- 292 277 026 596 год – конец 64-битного времени. Так чтобы сориентироваться – Земля упадет на Солнце всего через 7 500 000 000 лет (в 38 раз меньше времени). Число привел просто ради масштаба.
Ассистент, скальпель!
Итак, на дворе 14201 год. В аккурат между весьма близкими и реальными Y2K38\10000 и задолго до маловероятных 30827\много_миллиардов. Удобно усевшись в
- Зеленая – самая неинтересная и самая вызывающая уважение к её создателям. Программы, которые запустились и продолжили стабильно работать в полном функционале. Браво, снимаем шляпу.
- Желтая – программы, запустившиеся и в основном заработавшие, выдающие, однако, предупреждения или неверно рассчитывающие временные интервалы.
- Оранжевая – программы, которые запустились, но упали при обращении к некоторым функциям, связанными с датой и временем.
- Красная – программы, упавшие при старте или выдавшие сообщение в духе «работать не могу» и закрывшиеся.
- Mspaint – заработал отлично. А чего ему сделается
- Блокнот — работает, включая функцию вставки даты по F5
- Doctor Web – запустился и сказал, что у меня закончилась лицензия. Собственно говоря, к 14201 году и правда закончится. Поведение верное
- Killcopy (это такая утилита для копирования файлов) – заработала верно, включая функции измерения скорости копирования, прошедшего и оставшегося времени копирования
- Media Player Classic — работает, включая все функции по отображению длительности файла и времени воспроизведения
- Microsoft Outlook — работает корректно, включая прием и рассылку писем, отображения даты их прихода\ухода, сортировку по дате
- Tortoise Svn — работает без ошибок
Браво, зеленая группа!
- ОС Windows 7 в целом – запустилась и заработала. Все основные функции работы с файловой системой, сетью, драйверами, апплетами панели управления, администрирования и т.д. работают верно. Часики на панели задач вообще рассчитаны на 6-значные числа годов. Две мелочи – календарь не показывает даты больше 2099 и не синхронизируется время с Интернетом. Но об этом выдаются понятные сообщения и в целом общее впечатление эти факты не портят.
- Калькулятор ОС Windows – работает, но странно отображает окно выбора дат
- Microsoft Word и Excel — заработали, включая функцию вставки даты и времени (вставляет как текущую дату 1/28/1913, не падает)
- Far — запускается и работает. В качестве даты вновь созданных файлов показывает 28.01.1420 года (Far просто потерял последнюю единичку в номере года)
- Putty — сама программа запускается, однако коннекты по ssh срываются. Телнет — работает
- Firefox — запустился, работает. На все абсолютно соединения по https отвечает, что они не доверены и предлагает согласиться с риском или уйти. После согласия с риском — работает. Прикольный момент, вот сколько места на диске предлагает мне Gmail ( может быть это переполнение типа даты-времени в Javascript – я не силен в нем, а может быть у Google и вправду такие планы)
- Internet Explorer 9 — абсолютно аналогично Firefox
- 7 zip — работает. Даты вновь созданных файлов отображает как 31 декабря 2107 года
- Windows Explorer – запустился и заработал, однако стабильно падал при попытке вызвать контекстное меню. Не знаю, его ли это вина – в контекстное меню у меня интегрировано с пяток пунктов разных программ (SVN, Notepad++, Winamp и т.д.), возможно креш вызван кем-то из них
- Keepass — запустился, основные функции работали хорошо. Нарисовал все значки крестиками, при выборе даты упал
- Планировщик Windows — запускается и пишет ошибку о невозможности создать оснастку. Не падает, но и не работает
- Dropbox — запустился, но пишет «can't establish secure connection»
- GoogleTalk — падение с ошибкой
- Skype — падение с ошибкой
- Qip — падает
- Visual Studio 2010 — не запускается
- Adobe Reader — падает с ошибкой
- Notepad++ — падает с ошибкой
- DownloadMaster — падает с ошибкой
Выводы
- Ни разу не волнуйтесь. Мы все до этих глюков не доживем. К тому же их к тому времени исправят. Эксперимент чисто условный.
- И так не все так плохо. Красная группа не так уж велика, а с программами из остальных вполне можно работать.
- На удивление хорошее качество продуктов Microsoft – большинство программ запустилось и заработало.
- Ни один из сегодняшних мессенджеров не планирует жить долго. Надежда, видимо, в том, что к 14201-му году наука уже точно изобретет магию и мы все будем общаться телепатически.
- Ошибки браузеров, Dropbox и Putty скорее всего вызваны одной и той же причиной – чем-то связанным с временем действия SSL-сертификатов и т.д. Тем не менее, я отнес их всех в желтую группу, так как Tortoise Svn в той же ситуации корректно заработал и получил код по https как из нашего локального репозитория, так и из нескольких в Интернете.
P.S.
К окончанию экспериментов за окном
Перед самым возвращением из 14201-го успел глянуть в Google Bing результаты ЧМ 2018. Вы не поверите…