Хабрахабр

32 января

Астрономы занялись обычной работой. Праздничное настроение отгудело.

Что это было так никто и не понял, потому что появилось и исчезло космическое тело ровно из ниоткуда. 13 января 2020 года мимо Земли пролетает огромное космическое тело размером с Нептун. Уфологи выдвигали идеи о том, что некий космический корабль пришельцев совершил гиперпрыжок в пространство возле Земли, понял, что промахнулся и лететь нужно дальше и провёл гиперпрыжок снова. Уфологи, физики и астрономы долго спорили о природе возникшего явления. Физики и астрономы пытались оспорить мнение, указывая на сильные пульсации, зафиксированные приборами. В пользу этой теории говорили записи с некоторых устройств, записывающих радиоэфир. С Земли его видно не было. К тому же, корабли подобного размера построить просто немыслимо. Да и вряд ли бы успел. Фотографий из космоса сделать никто не смог. Приборы конечно отработали мгновенно, но вот люди не сразу сообразили что происходит и куда смотреть. Тело возле Земли появилось всего на 10 минут. Обозвали странное тело "Чеширским котом".

Обычные футболки, джинсы. В кафе сидели два небритых мужика. По телевизору крутили репортажи о произошедшем явлении. На глазах очки. Идеи по большей части сводились к домыслам. У учёных брали интервью.

Андрей направил палец в ближайший монитор. Адрей и Сергей потягивали пиво после успешно закрытого проекта по внедрению новой SCADA.

Инопланетяне? — Михалыч, как думаешь?

Не похоже. — Нет, Андрюха. Мне кажется это какой-то разрыв в пространстве-времени. Пересмотрели фильмов Диснеевских. Оказалась рядом с Землей какая-нибудь черная дыра и начало затягивать.

— Ну дык Землю затянуло бы, не?

Чёрт его знает почему. — А потом разрыв закрылся. Создали прибор, открыли червоточину, ресурсов хватило на 10 минут. Впрочем, почему бы и не инопланетяне. Червоточина закрылась.

День ещё такой дурацкий. — Да уж. 13 числа.

Ты бы астрологов мнения ещё спросил. — Ты в магию чисел веришь что ли?

— Ой да ладно.

Под действием гравитации "Чеширского кота" орбита Земли чуть-чуть сместилась на более длинную и стала ровно на 24 часа длиннее.

Через пару часов жарких дискуссий у экспертов возникла пара решений. Международная служба вращения Земли стала рассуждать, как вписать в календарь образовавшееся дополнительное время в году.

Получается, что каждые 4 года потребуется добавлять ещё один день, а 30 февраля добавлять в високосные года. Первым предложением было официально утвердить 29 февраля обычным днем. 2020 год уже високосный. Но вот незадача. Придётся добавлять тогда 30 и 31 февраля?

Раз инцидент произошел в январе, то и время прибавлять надо в январе. Второе предложение выдвинул австралийский представитель. Идея нашла поклонников. Добавить 32 число, а остальные месяцы не трогать.

Вспомнили забытые идеи о введении постоянных календарей Конта и Армелина, 13-месячного календаря.

Эксперты надеялись, что у нового руководства не возникнет желания добавить день максимально близко к инциденту. Самые смелые календари энтузиастов не нашли, ведь придётся вносить множество изменений во все сферы жизни, переучивать стариков. К сожалению, новое руководство было не слишком дальновидно и голосованием выбрало второй вариант.

Было решено добавить именно 32 января.

Возмущению программистов не было предела. СМИ мгновенно распространили новость. Правительства крупных стран пытались предложить другие форматы решения проблемы. Решение подвергли жесткой критике.

Но на текущий год решение было уже принято, а новое вступит в силу только в 2021 году. Под давлением общества и крупных инвесторов удалось отстоять первый вариант решения проблемы.

Отсчет идёт в секундах с 1970 года, так что синхронизация пройдёт. Службы NTP не напряглись. Остаётся вопрос в отображении и вводе дат на уровне приложений. Опыт ввода дополнительной секунды уже был обкатан.

Времени очень мало. Технические директора крупных вендоров ПО поняли, что придётся выкатить патчи для своих библиотек. Придется обновить версии библиотек. Нужно сделать апдейт версий баз данных. Для всех версий старого ПО апдейтов не будет.

Из новостей CTO средней софтверной компании "ProfurTech" Михаил Андреев узнал о новостях.

— "Я календарь переверну и снова 32 января" — хмыкнул себе под нос.

Часть работает на внутренних серверах, к которым есть доступ. Идей сходу не было.
Проекты с кучей легаси. Выкатим патчики, туда-сюда. Ладно, на своих серверах уж что-нибудь придумаем.

Назначил встречу с директорами.

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

— Каких же?

Начиная от операционных систем, заканчивая всем программным обеспечением, которое сейчас функционирует на заводах. — Введение новой даты означает, что наше программное обеспечение будет работать со сбоями.

Когда наступит 32 января, операционные системы начнут думать, что сегодня 1 февраля. — С одной стороны, процессы должны идти гладко. Пользователи не смогут корректно выбрать текущую дату. Данные соответственно тоже будут писаться за 1 февраля. Часть записей будет введена либо как за 31 января, либо как за 1 февраля.

Кое-где должна пройти автоматическая синхронизация с мировыми часами через Интернет. Когда наступит 1 февраля, придется вручную "перещелкнуть" дату на 1 февраля. Но тут у меня пока уверенности нет.

То есть в таблицах будут записи из будущего. Данные от реального 1 февраля начнут дополнять или перезаписывать данные от "нереального" 1 февраля.

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

Сначала нам нужно дождаться патчей от вендоров, потом задеплоить это всё на сервера, проверить регресс. Обновление программ займёт много времени. И это всё равно не гарантирует нам отсутствие ошибок.

Предлагаю выключить серверы на 32 января и запустить их в настоящее 1 февраля. Я перечислил не все возможные проблемы, часть у меня в голове и это только идеи, которые можно проверить только на практике.

Через минуту молчание прервал директор: "Выходит, вы программисты, получаете деньги, а проблему решить не можете?" В зале воцарилось молчание.

Такого же не было никогда в истории. — Я ээээ… тут не виноват.

Сначала программное обеспечение внедрили, а теперь без него ничего не будет работать! — Так как ты хочешь, чтобы мы останавливали производство на заводах? Мы поставляем контроллеры в энергетику и в медицину. Сейчас ты мне заявляешь, что один чёртов день в году заводы гарантированно будет работать со сбоями. Бизнес потеряет несколько миллионов. Люди будут замерзать и умирать?

Михаил понял, к чему идёт дело, склонил голову и выдохнул.

— Мы постараемся сделать всё, что сможем.

Только придумаешь решение к одной проблеме, как тут же приходит новая волна интуитивных выводов. Мысли к Мише после речи начали подкатывать волнами.

Net Framework 3. — Тааак, что в части проектов используют . Это значит, что Microsoft не выпустит обновления. 5. Ладно, сервисы вроде не так уж сильно критичны, тут наверно сможем уговорить руководство выключить на день.

7. — Скрипты у нас на Python 2. С 2020 версии 2.* перестали поддерживать.

Базы просто так не обновить. — Старые и новые проекты используют старенький MS SQL Server.

Нашу АСОДУ с наскоку ещё можно пропатчить. — Как будут обновляться наши клиенты? Тем более они ломаные. А вот программки от Schneider Electric и ABB обновить не выйдет.

1С сойдёт с ума? — Бухгалтерия наверно с ума сойдёт, потому что не сможет правильно вводить данные и подготовить отчеты.

Эээх, ничему опыт не учит. — Мы же хотели вводить свою абстракцию работы с датами в 2015. Остальное ПО вокруг бы всё равно работало не так, как надо. Хотя, это бы помогло только нашим самописным программам.

Чуть-чуть заранее, чтобы самолет точно долетел. Миша понял, что сделать с проблемами ничего не сможет, руководство не переубедить, собрал вещички и купил билеты на 29 января на Мальдивы.

От автора:

Как трагически падают приложения, а программисты подхачивают на лету. Я честно долго пытался придумать продолжение истории. С интересом почитаю ваши идеи в комментариях. Но не удалось придумать достаточно интересных идей, как можно разрулить такую ситуацию и как красиво преподнести в форме истории.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть