Люди думают, что костыли при работе с датами изобрели инженеры, но это совсем не так
Взять хотя бы високосный год:
У древних римлян (до VII века до н. э.), в календаре было 10 месяцев (промежуток с марта по декабрь — только июль и август назывались иначе), а вместо двух оставшихся была дыра))0))
каждый год древние римляне заканчивали отсчет на декабре и ждали пока запахнет весной, чтобы начать отсчитывать даты заново.
со временем на модуль «календарь» стали завязываться всякие важные подсистемы (налоговая например) и где-то в VI веке до нашей эры римский царь Нума Помпилий затеял рефакторинг календаря, чтобы устранить дыры в абстракции
при Нуме Помпилии в римском календаре стало 7 месяцев по 29 дней, 4 по 31 и 1 по 28 (февраль), что в сумме дает… 355 дней
то есть лет за 20 жизни по такому календарю июнь менялся местами с январем и юзеры начинали люто-бешено репортить баги про снег
происходило это в самом деле или нет, мы не знаем, но знаем что в админке для понтифика добавили бэкдор и понтифик рандомно раз в несколько лет вручную добавлял в календарь еще один месяц из 27/28 дней, чтобы не отставать от астрономического года
гай юлий цезарь в ходе очередного римфакторинга решил покончить с этим легаси и наконец спроектировать нормальный календарь, где не нужно было бы править таблички на проде
придворные астрономы насчитали, что в среднем астрономический год длится 365 дней 6 часов. то есть за четыре года по 365 набегают ровно сутки (кажется кто-то подгонял) отставания — так получилась формула юлианского календаря: три года по 365 дней и один по 366
так появился високосный год, костыли убрали, математика сошлась и все стало классно
… пока в 16 веке у христиан не потекла Пасха.
церковь отталкивалась от дня весеннего равноденствия при проведении своих праздников, а он каждый год почему-то наступал все раньше
(вряд ли римляне при проектировании календаря закладывали такие юзкейсы)
правда в том, что в астрономическом году не 365 дней 6 часов, а 365 дней 5 часов 49 минут и костыль Цезаря с високосными годами не работал long term: каждый юлианский год длится на 11 минут меньше астрономического, а за 16 веков набежало почти две недели разницы!
в 1582 году папа римский Григорий XIII выпустил хотфикс календаря (обратную совместимость сохранили) в котором выпилил високосный год в годах кратных 100 (но оставил в годах кратных 400)
финальная версия алгоритма високосных годов:
1. год номер которого кратен 400 — високосный
2. номера кратные 100 — невисокосные
3. номера кратные 4 — високосные
релиз назвали в честь автора крайнего коммита григорианским и именно этим календарем мы и пользуемся сегодня :)
Дмитрий Тусаев
@tusaeff
·
28 мая
Source: https://ru.wikipedia.org/wiki/%D0%92%D0%B8%D1%81%D0%BE%D0%BA%D0%BE%D1%81%D0%BD%D1%8B%D0%B9_%D0%B3%D0%BE%D0%B4
Если что то непонятно (ну вдруг))) есть некоторые пояснения от людей «в теме»:
Дата — данные
Рефакторинг — контролируемый процесс улучшения кода, без написания новой функциональности.
Юзеры — пользователи.
Репортить баги — создавать задачу с описанием ситуации или последовательности действий, приведшей к некорректной работе объекта тестирования.
Бэкдор — дефект алгоритма, который намеренно встраивается в него разработчиком для различных целей.
Легаси — код доставшийся в наследство от предыдущих разработчиков.
Прод — основная рабочая версия сайта, программы.
Юзкейс — перечень действий, сценарий по которому пользователь взаимодействует с объектом для выполнения какого-либо действия для достижения конкретной цели.
Long term — долгосрочный процесс.
Хотфикс — срочное исправление критической ошибки или уязвимости в программе.
Релиз — стабильная версия программы, прошедшая все предыдущие стадии, в которых исправлены основные ошибки.
Коммит — сохранение, фиксация (в архиве, репозитории и др.) изменений в программном коде.
Всего несколько месяцев назад ChatGPT стал реальностью. Это очень короткий срок, учитывая то влияние, которое…
Недавно житель США занял первое место на конкурсе изобразительного искусства , используя произведение искусства, сгенерированное…
США - это общество потребителей, а экономика основана в первую очередь на потребительских расходах. Поэтому…
Проблема загрязнения окружающей среды не то что бы не решается, а наоборот только ухудшается. Недавняя…
Если вы поклонник фильмов "Матрица", вы наверняка помните классический момент, когда Нео замечает дважды проходящую…
Каждый день мы так, или иначе сталкиваемся со стрессом. Мы можем осознавать его, или нет.…