Y2K79

«Проблема 2000-го года» — теперь уже история, которую мало кто помнит. Некоторые, вечность назад написанные программы имели только два разряда для хранения года. Считалось, что это может привести к серьёзным неприятностям — ведь и тогда были программы, участвующие в управлении, например, атомными электростанциями или самолётами.

Проблемой (непонятно насколько реальной) тогда озаботились абсолютно все, государства выделяли деньги для её исправления, возможно благодаря этим усилиям ничего страшного не случилось. Я с той проблемой столкнулся минимально, уже постфактум, да и то, только потому что программировал на Перле.

Не знаю как сейчас, а тогда на Перле для получения даты часто использовали функцию localtime, шестой по порядку элемент которого совпадал с двумя последними цифрами года. Обычным способом вывода даты в то время был такой код:

my ($sec, $min, $hour, $mday, $mon, $year) = localtime;
printf "%d-%d-%d\n", $mday, $mon, '19'.$year;

1999-й год был последним, в котором это работало правильно — функция возвращала число 99, программист соединял это значение со строкой '19', получалось '1999', а в 2000-м году неожиданно многие программы стали показывать год как '19100'.

Атомными станциями такие программы, разумеется, не управляли, но править их всё равно пришлось, мы просто заменяли конкатенацию сложением с числом «1900».

Недавно я об этом вспомнил. Мы разбирались с ФИАСом — российской базой данных адресов, там у каждого адреса есть период его существования: начальная дата — когда адрес появился (например, дом построили) и конечная — когда исчез (дом снесли).

И оказалось, что «06.06.2079» в этой базе имеет магическое значение — если конечная дата содержит это значение, считается, что адрес существует. Сейчас все программы, обрабатывающие адреса из ФИАСа используют это значение как признак.

В общем, через 59 лет российских программистов, если таковые будут ещё существовать, ждёт работа по замене этой константы на другое значение, конечно если хоть одна из программ, которые мы сейчас пишем, проживёт столько. Впрочем, если одна-две доживут, я не сильно бы удивился — кое-где до сих пор работают программы, написанные на Коболе и у меня есть приятель, которому лет 10 назад довелось исправлять проблемы в программе на этом языке.

4 комментария

Страничка статистики

Вдруг стало интересно какое количество букв я намолотил в блог за эти годы. Выгрузил эту информацию из базы в виде двух графиков. Если у вас тоже блог на движке «Эгеи», то вы можете сделать то же самое следующим запросом:

SELECT YEAR(FROM_UNIXTIME(Stamp)) AS Year, COUNT(*) Total, SUM(LENGTH(Text)) Size
FROM e2BlogNotes
GROUP BY 1 ORDER BY 1

В статистике пока не участвуют «Дневники жизни» №№2, 5, 6 и 7, я ещё их сюда не перенёс (та ещё будет работка) и нет заметок, которые я писал в блоге на платформе ЖЖ. Кстати, можно будет попробовать их перенести автоматически, надо бы подумать над этим.

Столбчатая диаграмма показывает рост с 1989 по 2020 год: пик в 2001 году (~1 млн), затем снижение, второй пик в 2010–2011 гг. (~850 тыс.), далее колебания до 2020 г. (~100 тыс.).
Совокупное количество символов (включая символы разметки) в заметках по годам

Из графиков можно сделать несколько выводов: по-первых, интенсивность написания заметок в блог с годами у меня падает — это видно по любому из графиков и те данные, которые я ещё не импортировал, тут ничего не изменят.

Во-вторых, переход на «Эгею» в 2018-м немного меня подстегнул, активность превысила показатели четырёх лет до этого, это согласуется с моими внутренними ощущениями — писать стало приятнее.

В-третьих, прошлый год был для меня трудным со всех точек зрения, это остро ощущалось, усталость накопилась просто громадная. По графику это тоже очень хорошо видно.

В-четвёртых, в новом году сил гораздо больше — за первый месяц года я намолотил примерно треть объёма прошлого года, а январь ещё даже не кончился.

Столбчатая диаграмма показывает рост и спад значений с 1989 по 2020 год, с пиком около 700 в 2003 году и вторым пиком около 500 в 2010 году.
Количество заметок по годам

Надеюсь, темпы я не снижу, так как в голове есть огромный объём того, что хочется сюда вынести, правда формализовать это непросто, но я буду пытаться.

Оставить комментарий