Музей-скансен эпохи Средневековья в Дании в режиме обычной работы (слева) ставит целью воссоздать повседневную жизнь города на стыке XIV и XV веков. Для съёмок фильма (справа) он «погрязнел»

Для киносъёмок в музей под открытым небом Middelaldercentret внесли несколько изменений. Вместо аккуратной каменной улицы развели неприятную кашицу из грязи, не самые роскошные стеклянные окна прикрыли досками и развесили везде выцветшее тряпьё. Здания как следует измазали чем-то коричневым, кое-где зачем-то перемешав субстанцию с соломой. В случайное здание воткнули факел, а не попытались изобразить лучину или фонарь.

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

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

Попытки собрать заблуждения про время и часовые пояса на Хабре уже были шесть и десять лет назад. Но без контрпримеров не так интересно.

Заблуждение 1. В сутках 24 часа или 86 400 секунд


Иногда и кое-где стрелки часов переводят, создавая сутки длиной в 23 и 25 часов — всё очевидно. Будет неплохо углубиться в случаи поэкзотичней.

Наша планета совершает полный оборот вокруг своей оси за примерно 23 часа 56 минут 4 секунды (звёздные сутки, относительно удалённых звёзд) или за 24 часа, если выбирать в качестве точки отсчёта центр Солнца. Разница в 3 минуты 56 секунд случается потому, что Земля совершает полный оборот вокруг Солнца за то время, что ей нужно совершить около 366,25 оборотов вокруг своей оси.

Скорость вращения варьируется день ото дня: влияют циклы приливов и отливов и вообще гравитационное воздействие Луны, изменения погоды и климата, передвижения материи на поверхности Земли и в её ядре. За сутки набегают доли миллисекунды разницы. К примеру, самый короткий день 2022 года — 29 июня, когда сутки продлились на 1,59 миллисекунды меньше, самый длинный — 5 ноября, когда у Земли ушло на свой оборот на 1,01 миллисекунды больше обычных 24 часов.

Международная служба вращения Земли отслеживает по вращению нашей планеты всемирное универсальное время UT1, которое постепенно уходит от UTC (Coordinated Universal Time, всемирное координированное время). Живём нашу повседневную жизнь мы по UTC, нисколько не задумываясь о вопросах астрономической важности. Но если разница между UTC и UT1 составляет больше 0,9 с, принимается решение о введении високосной секунды. Такое случается примерно раз в полтора года.


Високосные секунды с 1972 года

Високосные секунды добавляют обычно 30 июня или 31 декабря, в последние дни этих месяцев. В этом случае в полночь на секунду появляется необычная комбинация 23:59:60.

Совсем недавно, 18 ноября, дополнительные секунды решили отменить. Новых високосных секунд не будет уже после 2035 года. Делегаты от России просили сдвинуть дату на 2040 год или позднее, чтобы успеть разобраться со спутниками и наземными станциями ГЛОНАСС. Дело в том, что ГЛОНАСС високосные секунды поддерживает. Представители Канады, США и Франции напротив предлагали отказаться раньше 2035 года: в GPS и многих других системах високосные секунды игнорируются.

Впрочем, чувствительны к таким простым вопросам не только спутниковые системы навигации. С облегчением выдохнули SRE-инженеры высоконагруженных систем, которые потеряли достаточно нервов из-за этих секунд.


График нагрузки на один из пострадавших серверов в 2012 году, блог компании Anchor

Десятилетие назад високосная секунда массово заставляла падать серверы на Linux: демон ntpd запускал вызов adjtimex(2) с запросом для ядра вставить високосную секунду, что приводило к лайвлоку. Повышенное энергопотребление из-за 100-процентной нагрузки на процессор отмечали многие хостинг-компании. Шесть лет назад високосная секунда вызвала сбой в DNS у Cloudflare.

Заблуждение 2. Високосные секунды больше не важны. История не играет роли


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

Вообще, исторических казусов предостаточно.

Пользователь системы с часовым поясом Asia/Shanghai однажды пожаловался на следующий код на Java:

public static void main(String[] args) throws ParseException {
    SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
    String str3 = "1927-12-31 23:54:07";  
    String str4 = "1927-12-31 23:54:08";  
    Date sDt3 = sf.parse(str3);  
    Date sDt4 = sf.parse(str4);  
    long ld3 = sDt3.getTime() /1000;  
    long ld4 = sDt4.getTime() /1000;
    System.out.println(ld4-ld3);
}

Кажется, что между 23:54:07 31 декабря 1927 года и 23:54:08 того же дня секунда разницы. В реальности программа показывала 6 минут: в TZDB версии 2013a выводится 358 секунд, в 2014f — 344 секунды.

Происходит так, потому что 1927 год для Шанхая был богат на события. Город попал под контроль Национального правительства Китайской Республики, которое 12 апреля запретило коммунистическую партию и устроило резню. Шанхай объявили частью Китайской Республики и поменяли часовой пояс на GMT+8 вместо особого местного, чтобы показать единство Китая. В полночь с 31 декабря 1927 года по 1 января 1928 года стрелки часов перевели на 5 минут 52 секунды назад.

Понятно, что почти всегда в сутках ровно 24 часа. Но возможны неожиданности любого размера: от целого числа часов до произвольного числа секунд и минут.

Заблуждение 3. В месяце 30 дней


Грубые ошибки случаются даже в мелочах.

В 2017 году выяснилось, что минтруда штата Вермонт собрало лишних $26 тыс. на пособия по безработице из-за бага округления в своей системе. Систему написали в 2008 году и лишь при модернизации заметили ошибку.

По закону Вермонта министерство труда получает с работодателя пеню 1,5 % в месяц за неоплаченные взносы. Если в месяце 30 дней, то система корректно считала 1,5 %, но в 31-дневных, коих в году 7 штук, взимала больше положенного. В реальных суммах ошибка была не настолько фатальной, почему, наверное, и продержалась так долго. За $1000 задолженности за год набегало лишних $2,5.

Другой очевидный исторический пример — это сентябрь 1752 года, который даже отражён в руководстве операционной системы Plan 9 рекомендацией попробовать в утилите cal команду cal sep 1752. В ответ программа выдаст что-то неожиданное.



Чаще всего датой перехода на григорианский календарь называют 15 октября 1582 года, когда его впервые ввёл римский папа Григорий XIII в католических странах. В григорианском календаре средняя длина года составляет не 365,25 дня, как это было ранее в юлианском, а 365,2425, на 10 минут 48 секунд короче. Достигается это коррекциями алгоритма выбора високосных годов.

Из-за протестантской Реформации на новый календарь даже западноевропейские страны перешли не сразу.

cal — это утилита для Unix-подобных систем, она выводит в терминал календарь любого месяца или года. Программа корректно отображает 1752 год с точки зрения Британской империи, частью которой на тот момент были поселения в Северной Америке. В сентябре того года для будущих США после среды, 2 сентября, наступил четверг, 14 сентября — произошла коррекция в 11 дней.

Россия перешла на григорианский календарь в 1918 году с прыжком в 13 дней: после 31 января сразу наступило 14 февраля. Жить с разницей в почти две недели с остальной Европой было неудобно. Например, в 1908 году из-за разницы в календарях сборная Российской империи опоздала на олимпиаду в Лондоне, и соревнования стрелков уже успели закончиться.

Разные страны переходили на григорианский календарь в разное время. Вопрос касается не только отдалённых веков, которые учитывать не придётся. Саудовская Аравия перешла (для повседневных целей) на григорианское летоисчисление всего шесть лет назад. После 28 дня месяца зу-ль-хиджа 1437 года у Саудитов наступило 1 октября 2016.

По юлианскому календарю продолжают жить монастыри горы Афон. Иногда происходил обратный процесс: с григорианского календаря страна переходила обратно на юлианский, создавая месяцы длиннее 30 дней. К примеру, Литовская губерния в 1800 году после 11 января вернулась в 1 января. Сможет ли любая система корректно сказать, в какой день недели родился человек из той эпохи?

Наконец, каждый год случается 28- или 29-дневный февраль.

Заблуждение 4. За сутки сменится 24 различных значения часа, каждый — один раз


Очевидно, что в день с переводом стрелок на летнее или зимнее время на часах случится странное: вместо двух часов ночи сразу наступит три или промежуток с 1:59 по 3:00 мир якобы проживёт дважды. Во сколько нужно разбудить человека, если он ставит будильник на полтретьего?

Выбор времени перевода стрелок не универсален. Например, в Чили и Иране переход происходит в полночь: после 23:59:59 наступает 1:00:00. Также подобная схема применялась в Румынии по 1996 год или в Бразилии по 2018.

Часто именно к 00:00:00 привязывают многие события обозначения наступления нового дня, поэтому нужно быть готовым к тому, что полночь (или любой другой час дня) не наступит никогда. NSDateFormatter в iOS не позднее версии 6 знает, что полночь в Бразилии в один день года не существует.

Заблуждение 5: Структура недели универсальна


Неделя начинается с понедельника в большинстве европейских стран, многих странах Азии и островных государствах Тихого океана. Именно с понедельника неделя начинается в стандарте ISO 8601. С воскресенья неделя начинается в Америках, Японии и Филиппинах. Часть Ближнего Востока считает началом недели субботу.


День начала недели в разных странах: понедельник (персиковый), пятница (пурпурный), суббота (зелёный), воскресенье (синий). Saeed.gnu

Перевес вовсе не за понедельниками. 67 стран мира с населением около 4 млрд человек начинают неделю с воскресенья, 160 стран и 3,3 млрд — с понедельника. Случаются исключения для конкретных применений. Хотя в остальном в США неделя начинается с воскресенья, календарь для вещания радиопередач стандартизирован для работы с понедельника.

Структура выходных также отличается в зависимости от страны и религии. Если христиане посещают церковь в воскресенье, то шестьдесят вторая сура Корана предписывает собираться на джума-намаз в пятничный день. Соответственно, многие мусульманские страны в качестве выходного дня задали четверг и пятницу. Часть из них (к примеру, Саудовская Аравия в 2013 году) постепенно сдвинула выходные на пятницу и субботу, чтобы лучше координировать работу финансовых сервисов с остальным миром.


Рабочая неделя в разных странах мира: понедельник – пятница (серо-синий), понедельник – суббота (оранжевый), воскресенье – четверг (серый), суббота – четверг (красный), воскресенье – пятница (светло-красный), понедельник – четверг и суббота (фуксия, это Бруней и не выделенная на карте провинция Ачех Индонезии), смешанно (циановый, Малайзия). QuickQuills

Выходные и рабочая неделя могут прерываться. К примеру, в Брунее работают с понедельника по четверг и в субботу, а отдыхают в пятницу и воскресенье.

К счастью, на данный момент неделя везде семидневная.

Впрочем, каких-то двести лет назад французские апологеты республиканского календаря не без энтузиазма продвигали идею о неделях-декадах, чтобы навсегда забыть настолько противное прошлое старого порядка. Три декады образовывали месяц, 12 месяцев — год, лишние 5–6 дней добавляли к концу года. Необычный календарь приняли 24 октября 1793 года, 1 января 1806 года Франция вернулась на григорианский с 7-дневными неделями. Но и в те недолгие 12 лет декады во многом игнорировали и продолжали следовать привычным христианским традициям.

Заблуждение 6: Структура месяца универсальна


Чаще всего (в том числе в исламском лунном календаре) месяц длится от 28 до 31 дня. Исключение: 5–6 дневный месяц Пикучи-Набот в коптском календаре, который использует Коптская православная церковь, наиболее распространённая в Египте.

Для возделывания земли исламский календарь не годится: он оторван от астрономических сезонов и ежегодно смещается относительно солнечного года на 10–11 дней, поскольку основан на наблюдениях за луной. Месяц длится 29 или 30 дней. Традиционно если вечером 29-го дня Луна видна на небе, то следующие сутки будут началом нового месяца. Если нет, то это будет 30-й день.

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

Не у всех мусульман Рамадан начинается и заканчивается в один и тот же день, и влияет это не только на религиозные события. Каждый год Марокко отказывается от летнего времени, когда начинается Рамадан, и возвращается к нему, когда пост заканчивается. Поскольку священный месяц идёт по специальному календарю, добавляется ещё один уровень сложности.

Заблуждение 7: RFC 3339 и ISO 8601 — это одно и то же.


Международный стандарт ISO 8601 описывает форматы даты и времени для использования в международном контексте. Это именно тот стандарт, который рекомендует записывать даты как 2022-12-04. Стандарт разработала Международная организация по стандартизации.

Инженерный совет Интернета адаптировал ISO 8601 для использования в протоколах и стандартах Интернета и опубликовал его как RFC 3339. Стандарты схожи, иногда возникают вопросы, насколько сильно они отличаются.

RFC 3339 — это подмножество, профиль ISO 8601 с некоторыми различиями. К примеру, ISO 8601 требует отделять время суток от даты буквой T (2022-12-04T10:00:00Z), а в RFC 3339 допустим пробел (2022-12-04 10:00:00Z). ISO 8601 допускает много опций с припиской «по соглашению», RFC 3339 — это профиль, который ограничивает общий набор до минимума.


ijmacd.github.com

Сравнение двух стандартов умещается в длинную таблицу.

Заблуждение 8: Часовых поясов не больше 24


Часовые пояса обычно представлены как сдвиг в целом числе часов от Гринвича. Москва, к примеру, живёт в часовом поясе MSK или UTC+03:00.


Карта часовых поясов мира, TimeZonesBoy

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

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


Хотелки жителей тихоокеанских островов заставили изогнуться линию перемены дат

Линия перемены дат даёт три лишних часовых пояса. Дело в том, что часть островных государств находится в Западном полушарии, за линией перемены даты, но для простоты хочет оставаться в будущем дне, а не в прошлом. Остров Чатем живёт в UTC+12:45 или UTC+13:45 летом, Токелау — в UTC+13:00. Острова Лайн государства Кирибати живут в часовом поясе UTC+14:00, который с разницей в сутки совпадает с часовым поясом UTC−10:00. Это значит, что на островах Лайн то же время суток, что и на Гавайских, просто там уже следующий день.


В островном государстве Самоа с его часовым поясом UTC+13:00 возможно встретить Новый год, затем доплыть до Американского Самоа и отпраздновать ещё раз — на этой американской территории часовой пояс UTC−11:00, ровно в сутки разницы. Жители Самоа выбрали себе такой часовой пояс, чтобы было удобнее торговать с Австралией

Один и тот же сдвиг означает, что в нём могут находиться разные административные часовые пояса. Зимой YEKT (Екатеринбург, UTC+05:00) совпадает по времени со следующими поясами:

  • AQTT, Актобе, Казахстан.
  • MAWT, Моусон, Антарктида.
  • MHT, Мальдивы.
  • ORAT, Уральск, Казахстан.
  • PKT, Pakistan Standard Time, Пакистан.
  • TFT, французский южный и антарктический часовой пояс.
  • TJT, Таджикистан.
  • TMT, Туркмения.
  • UZT, Узбекистан.
  • E, часовой пояс эхо, общее обозначение UTC+05.

Часовые пояса регулярно добавляются. В России в 2016 году появился отдельный Asia/Tomsk. Часовые пояса часто меняют сдвиг относительно UTC, в 2016 году, например, было 8 случаев.

Часовых поясов больше, чем стран на планете. В списке сайта timeanddate.com 244 штуки. В версии 2022g базы данных TZDB перечислены 352 часовых пояса.

Заблуждение 9: Часовые пояса предсказуемы


Полуофициальный стандарт всё же существует — это база данных Time Zone Database или TZDB. Чаще всего в ней пояс назван по имени крупного города или целой страны. Понятно, что по политическим причинам некоторые не захотят произносить вслух Israel Standard Time.

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


Безопаснее всего предложить пользователю выбрать населённый пункт, как это сделано в Ubuntu

Часть поясов имеет закрепившиеся названия в английском языке, которые легко могут совпадать. К примеру, американский Eastern Standard Time — это часовой пояс UTC−05:00, в котором живёт Нью-Йорк и Онтарио. Но восток есть у всех, а не только у США. Австралийцы называют свой часовой пояс со сдвигом UTC+10:00 тем же именем Eastern Standard Time.

Часто аббревиатуры названий часовых поясов одинаковы. Что такое CST: Central Standard Time в США, China Standard Time в Китае или кубинское Cuba Standard Time?

Когда территория живёт по летнему времени, технически она меняет свой часовой пояс. К примеру, Техас живёт по Central Standard Time зимой, а летом переключается на Central Daylight Time. Часто пользователи не помнят правильное название или вовсе не задумываются и выбирают CST даже летом. Информационной системе придётся подобное учесть.

При этом ей также придётся не забыть, что провинция Саскачеван в Канаде тоже живёт по Central Standard Time, но на летнее время не переходит. И не вся провинция, а только часть.

Консорциум Всемирной паутины рекомендует не мучиться и хранить часовой пояс как отклонение от UTC. В любом случае разработчику иногда придётся сопоставлять населённый пункт или название часового пояса с отклонением от Гринвича.

И текст лучше всё же сохранить: установить название часового пояса по строке вида Sat, 27 Oct 2012 23:47:57 -0700 невозможно.

Заблуждение 10: Переход на летнее время происходит везде одинаково


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

Расположенные даже в одном полушарии страны не договорились переводить часы в один и тот же день. В Евросоюзе на зимнее время переходят в 01:00 последнего воскресенья октября, в США — в первое воскресенье ноября в 02:00.

Переход на зимнее и летнее время везде означает сдвиг на час. Исключение: австралийский остров Лорд-Хау с населением 382 человека. Обычно остров живёт в UTC+10:30. Но губернатор острова зачем-то захотел хоть на полгодика жить в одном с штатом Новый Южный Уэльс часовом поясе UTC+11:00.


Синим и оранжевым выделены страны или регионы, которые переводят стрелки часов на лето, серым — которые от практики отказались, чёрным — которые не переводили никогда. TimeZonesBoy

Не все страны или их части переводят часы на лето. К примеру, штат Аризона от этой практики отказался в 1968, хотя остальные материковые США сохраняют традицию.

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

А ещё решения бывают стремительными: в 2016 году Египет сначала решил ввести переход, а потом, 3 недели спустя, внезапно отказался за три дня до перевода стрелок. Успеет ли любая система обновиться?

По материалам yourcalendarfallacies.com, оригинальных постов Ноа Сассмана (1, 2) и блога Заина Ризви.

Комментарии (247)


  1. abutorin
    04.12.2022 16:07
    +23

    1. mapron
      04.12.2022 16:40
      +1

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


      1. atomlib Автор
        04.12.2022 17:38
        +23

        Мой пост — не перевод. Ну и изложены в нём не самые тривиальные факты.

        Если бы вы прочитали мой пост, вопросы бы сразу отпали. Эти списки сами по себе — набор утверждений. Куда интереснее, когда к ним приведены контрпримеры и вообще случаи багов, которые могут из-за них возникать.


        1. mrkaban
          06.12.2022 13:28

          интересный пост, спасибо


        1. mrkaban
          06.12.2022 13:30

          Прочитав исходную статью понял о чем вы, действительно с контрпримерами весьма интересно.


      1. GraDea
        04.12.2022 20:50
        +10

        У нас на географии не рассказывали про особенности мусульманских календарей. Да и переход на зимнее/летнее время казался таким же неизбежным как и Новый год)


      1. vassabi
        05.12.2022 01:31

        про дни недели, и рабочие дни - тут интереснее написано


  1. osipov_dv
    04.12.2022 16:56
    +2

    вот этот ролик, в свое время очень по-радовал https://youtu.be/-5wpm-gesOY


  1. Myclass
    04.12.2022 17:31
    +1

    365,25 дня, как это было ранее в юлианском, а 365,2425, на 10 минут 48 минут короче.

    Вы хотели сказать 48 секунд.


    1. atomlib Автор
      04.12.2022 17:39

      Поправил, спасибо.


  1. boojum
    04.12.2022 17:41
    +3

    Заблуждение 1. В сутках 24 часа или 86 400 секунд

    Тем не менее в питоне timedelta(days=1) == timedelta(seconds=86400)


  1. perfect_genius
    04.12.2022 19:19
    +9

    Заблуждение о цветах: все русскоговорящие знают слово "фуксия".


    Будет ли заблуждением считать, что кто-то где-то в интернете "задротливо" учитывает весь этот ужас и вовремя подправляет в своей библиотеке на ГитХабе?


    1. avaava
      05.12.2022 10:32
      +4

      Прошу прощения, но квантор общности споткнулся на мне.

      Есть ли где-нибудь доходчивое описание цветов? А то я не могу представить себе персиковый, мадженту, асфальт и прочие цвета из новояза. Я вообще RGB-цветный (радуга и семь цветов, остальное не назову). Понимаю, что вопрос сложный и у разных народов свои названия (японцы вообще зеленый и синий путают, там даже есть светофоры с синим светом), но все же.


      1. Myclass
        05.12.2022 11:26
        +1

        Есть ли где-нибудь доходчивое описание цветов?

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

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


        1. zuek
          05.12.2022 12:06
          +6

          ни персика, ни свинца, ни апельсина, ни граната

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

          ...хотя и крайности про семь базовых цветов - перебор (ну, хотя бы "салатовый" и "сиреневый" - точно не "новояз")...

          Классика же:


          1. Myclass
            05.12.2022 13:23

            Продавцы жёлтых и белых персиков, красных апельсинов и белых гранатов смотрят на Вас неодобрительно..

            И что, на них надо равняться? Если кто бананы выведет синим цветом? Тоже возьмём это за основу? Или на общепринятые представления будем ориентироваться?!


            1. Kanut
              05.12.2022 15:29
              +1

              Ну например в куче стран используется "таблица наименований цветов по ÆМ". Даже если не все знают что это такое. Подозреваю что и вы с этим в своей жизни сталкивались если где-то видели вот такие карточки:


              ÆМ

              image


          1. perfect_genius
            06.12.2022 01:12
            +2

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


          1. Nikeware
            06.12.2022 15:12
            +2

            - А почему у вас чёрная смородина такая красная?
            - Потому что ещё зелёная!


        1. Sergey_zx
          05.12.2022 13:07

          Эмоции определяются химией мозга.

          Уровень счастья определяется дофамином. А его количество можно описать численно.


          1. Myclass
            05.12.2022 13:25

            Можете мне формулу счастья скинуть пожалуйста.


            1. BugM
              05.12.2022 13:26
              +4

              Легко: C17H21NO4


              1. xenon
                06.12.2022 14:44
                +2

                Но что-то как-то на практике сложно.... Это примерно как ботан-биохимик может все объяснить про эндорфин, дофамин, окситоцин, но при походе в бар, все эти знания помогают ему только чтобы потом объяснить, почему девушка не дала (потому что окситоцину мало было). А сельскому балагуру-баянисту все дают, и у всех окситоцин как надо повышается, хотя он это слово даже и не знает.

                Возможно, где-то в женском организме происходит необычная хим. реакция и 22см превращаются в C17H21NO4, но не каждый химик способен эту реакцию провести.


                1. Myclass
                  07.12.2022 00:06

                  На этом целое театральное представление можно сделать или по крайней мере сцену для Comedy..класс!


            1. Persik1
              06.12.2022 06:23
              +1

              Боюсь её нет и никогда не будет. Точнее формулы для достижения счастья.


          1. sasha_semen
            05.12.2022 13:57
            +1

            Дофаминовые рецепторы с вами не согласны.


          1. drafterleo
            05.12.2022 14:52

            Уровень счастья определяется дофамином.

            Дофамин, серотонин и окситоцин обиделись такому принижению их роли в человеческом счастье.


            1. Sergey_zx
              05.12.2022 14:56
              +1

              Я не биолог, по сему конечно же изложил все грубо и не точно.

              Общая же идея такова, что как можно передавать числовое значение цвета в RGB пространстве зная характеристики цветовых рецепторов, так и можно передавать эмоции в N-мерном пространстве химических рецепторов.


              1. Myclass
                05.12.2022 18:59
                +1

                Не совсем с вашими словами согласен. Но мне кажется вы увели в другую сторону. Критика первого комментария заключалась в том что мол многим людям неподьёмны современные названия цветов. Типа плиз универсальную систему подавай. А вы приводите как раз реальное положение вещей, что такой универсальной системы нет, и скорее всего и не будет.


                1. Ded_Banzai
                  06.12.2022 10:01

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


                  1. Kanut
                    06.12.2022 10:03
                    +1

                    Ну я вполне себе могу предположить что вы действительно не можете отличать друг от друга цвета, которые другие спокойно отличают.

                    Примерно как с музыкальным слухом. У кого-то есть, у кого-то нет.


                    1. Balling
                      06.12.2022 10:41
                      +2

                      У кого-то есть тетрахроматия, у кого-то нет.


                    1. Ded_Banzai
                      06.12.2022 13:06
                      +1

                      Я могу отличить один цвет от другого. Я не могу ориентироваться в этих названиях, типа альмандиновый, виардо или там мардоре.


                      1. vconst
                        06.12.2022 19:03

                        Потому что для этого нужна практика

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

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

                        Будете много рисовать — научитесь различать десятки оттенков по названиям


                      1. Ded_Banzai
                        07.12.2022 04:50

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


                  1. Myclass
                    06.12.2022 10:56

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

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


                    1. Kanut
                      06.12.2022 11:10

                      Со вторым примером насчёт апельсина могу согласится.

                      Для прикола загуглил. Если поставить их рядом, то я разницу вижу. Если показывать мне рэндомно только один, то в жизни не скажу какой из них какой :)


                    1. valery1707
                      06.12.2022 11:24
                      +2

                      Но пример с асфальтом - это какое-то занудство.

                      Какой из представленных на картинке "цветов асфальта" - "асфальтовый"?

                      Напрашивается "все", но ведь это уже тогда не будет какой-то конкретный цвет, да?


                      1. Kanut
                        06.12.2022 11:29

                        Для разговора на бытовом уровне все эти цвета подойдут. Конкретный цвет это например "цвет мокрого асфальта", он же "#505050".


                      1. Cerberuser
                        06.12.2022 12:03
                        +1

                        Для разговора на бытовом уровне все эти цвета - серые. Ну, кроме тех, которые скорее чёрные.


                      1. Kanut
                        06.12.2022 12:05
                        +1

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


                        Вот "фуксия" лично для меня проблема. Потому что лично мне уже надо гуглить что это такое :)


                      1. Cerberuser
                        06.12.2022 12:09

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


                      1. Kanut
                        06.12.2022 12:16
                        +1

                        Асфальтовый это какое-то подмножество серого.


                        "Цвет мокрого асфальта" или "апельсиновый" это конкретный цвет в таблице цветов от какого-то там товарища из Швейцарии.


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


                      1. Myclass
                        06.12.2022 12:22

                        Асфальтовый - не просто серый, а конкретный серый. Апельсиновый - не просто оранжевый, а конкретный оранжевый, возможно, ещё и с оттенком. 

                        Да что вы говорите?! Вы вот так с людьми разговариваете? И на белую машине говорите, что она не белая, а #F8F8F8. В нормальной жизни люди используют цвета как ориентировку. Потому что цвет апельсина может варьироваться от спелости и от времени суток и освещения. Абсолютный подход - это просто неправильно. Ухудшает стиль разговора. Не понимаю такой подход.


                      1. Kanut
                        06.12.2022 12:27

                        Да что вы говорите?! Вы вот так с людьми разговариваете?

                        Это зависит от того в каком контексте вы разговариваете с людьми.


                        Если вы говорите своей жене "Где мои джинсы асфальтового цвета?", то это один контекст. И точный цвет роли не играет.


                        Если вы говорите продавцу в магазине "Мне нужна краска с цветом 'мокрый асфальт'", то это другой контекст. И вы имеете ввиду конкретно "#505050".


                      1. mayorovp
                        06.12.2022 12:47

                        Строго говоря, цвета красок не находятся в пространстве RGB...


                      1. Ded_Banzai
                        06.12.2022 13:07

                        Отлично. А теперь попытайтесь объяснить это, например, продавцу обоев, что, мол, вам нужны обои цвета асфальта. Сколько рулонов вам придется перебрать?


                      1. Kanut
                        06.12.2022 13:14

                        Не особо много. Потому что во первых продавцы обоев вполне себе понимают что под этим подразумевается. А во вторых потому что обоев в примерно этой цветовой категории не особо много. И это я вам говорю как человек недавно делавший ремонт и искавший серые обои :)


                      1. Myclass
                        06.12.2022 14:36

                        И это я вам говорю как человек недавно делавший ремонт и искавший серые обои :)

                        ..и искавший серые асфальтовые обои :) :) :)
                        У меня просто картина перед глазами, как на вас продавец смотрел-бы, если-бы вы с этих "козырей" зашли-бы.Боюсь подумать какие у авторов выше-стоящих коментариев ассоциации с коричневым цветом и как они его описывают это продавцам, когда не используют коричневый цвет, а именно как...


                      1. Kanut
                        06.12.2022 14:42

                        и искавший серые асфальтовые обои :) :) :)

                        Ну словосочетание "мокрый асфальт" вполне себе проскакивало.


                        У меня просто картина перед глазами, как на вас продавец смотрел-бы, если-бы вы с этих "козырей" зашли-бы

                        Нормально смотрел бы. По крайней мере у нас это не то чтобы сильная редкость. Более того этот же продавец часто занимается и красками. И у него у самого есть набор табличек с цветами, которые можно намешать. И я готов спорить что среди часто предлагаемых/спрашиваемых оттенков серого "мокрый алфальт" вполне себе встречается.


                      1. transcengopher
                        06.12.2022 16:24

                        У меня просто картина перед глазами, как на вас продавец смотрел-бы, если-бы вы с этих "козырей" зашли-бы.

                        Опытный продавец обоев поймёт даже "заходы" в духе "на полтора тона светлее мокрого асфальта". Потому что они-то как раз по специфике профессии с такими запросами встречаются постоянно.
                        Конечно, это не означает, что любой продавец обоев будет опытным. Особенно это видно становится если обои подбирать не в специализированных магазинах, а в огромных гипермаркетах направленности "что-то про ремонт", типа OBI или Leroy Merlin.


                      1. vconst
                        06.12.2022 19:05

                        «Асфальтовый» — это просто название переменной, содержащей определенное значение.

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


            1. Persik1
              06.12.2022 06:31
              -1

              Обидчивые какие...


      1. vadimr
        05.12.2022 13:23
        -1

        Либо RGB, либо радуга и семь цветов. Фиолетовый цвет радуги непредставим в RGB. Вместо него рисуется лиловый.

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


        1. sdore
          05.12.2022 20:21
          +1

          Давайте будем пунктуальны: фиолетовый цвет непредставим в sRGB gamut, а сама размерность цветового пространства не имеет к этому никакого отношения.


          1. vadimr
            05.12.2022 20:48

            Так и есть. Я, вроде, ничего другого не писал.


            1. Fodin
              06.12.2022 01:34

              Так-то, фиолетовый цвет радуги вполне себе представим в модели RGB, только не в цветовом пространстве sRGB.


              1. vadimr
                06.12.2022 08:32

                Модель RGB так называется, потому что состоит из красного, зелёного и синего цветов. Никак их синтезом невозможно получить фиолетовый, находящийся за синим.


                1. mayorovp
                  06.12.2022 11:52

                  В глазу стандартного человека всего три вида цветовых рецепторов. Относительное значение частоты/длины волны спектрального цвета тут ни при чём, имеют значения лишь величины откликов.


                  1. vadimr
                    06.12.2022 13:00

                    Ну так фиолетовый цвет - это такой, который не формирует значительного отклика в красном рецепторе.

                    Хотя там сложные кривые отклика на самом деле.


                    1. mayorovp
                      06.12.2022 13:32

                      Ну да, так и есть. Поэтому фиолетовому соответствует много синего и немного красного.


                      1. vadimr
                        06.12.2022 13:45

                        Это лиловый. В фиолетовом нет красного.


                      1. inkelyad
                        06.12.2022 13:56

                        Если фиолетовая длина волны действует на 'красные' колбочки - то есть.


                      1. vadimr
                        06.12.2022 15:23
                        -1

                        Давайте не подменять понятия. Нет никаких “красных” колбочек. Есть три вида рецепторов со сложной спектральной характеристикой (которые, кстати, обрабатываются четырьмя каналами в мозгу). Фиолетовая длина волны, допустим, действует, на “красные” колбочки, но не действует на “зелёные” колбочки, на которые действует красная длина волны.

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


                      1. ksbes
                        06.12.2022 15:37

                        иолетовая длина волны, допустим, действует, на “красные” колбочки, но не действует на “зелёные” колбочки

                        Там все волны действуют на все колбочки: у них очень сильно перекрываются спектры поглощения. Только отклик разный по интенсивности.
                        И если «натуральный» фиолетовый цвет вызывает отклик в «красной» колбочке 0,5, в «зелёной» 0.1, в «синей» 0,5. То и светодиодики в мониторе, которые смогут вызвать такойже отклик вызовут тоже ощущение цвета. Хотя да, формально спектр — совсем другой.
                        Но видеть фиолетовый цвет на (очень хорошем) мониторе вы будете так же как в реальности.
                        Другое дело — цветовое пространство RGB — оно действительно убого просто по построению, но это не в прямую яркости светодиодиков в мониторе. Лучше Lab какой-нибудь или что-то ещё более специализированное.


                      1. vadimr
                        06.12.2022 15:41
                        -1

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

                        Объясняю эффект на пальцах: допустим, каждый из светодиодов R, G и B вызывает отклик в красном (или, к примеру, зелёном) рецепторе глаза, а фиолетовый цвет не вызывает. Может такое быть математически? Да запросто.

                        Цвета R, G и B не ортогональны друг другу в математическом смысле. Их просто выбрали, как простой способ покрыть достаточно большое цветовое пространство.


                      1. ksbes
                        06.12.2022 16:06

                        Объясняю эффект на пальцах: допустим, каждый из светодиодов R, G и B вызывает отклик в красном (или, к примеру, зелёном) рецепторе глаза, а фиолетовый цвет не вызывает. Может такое быть математически? Да запросто.
                        Ну так наверное умные дяди могут так выбрать светодиодики, чтоб такого математически не было?


                      1. vadimr
                        06.12.2022 16:08

                        Нет, умные дяди так выбрали светодиодики, чтобы было дёшево.


                1. Fodin
                  06.12.2022 13:08

                  Модель RGB состоит из "красного", "зеленого" и "синего" стимулов, преимущественно воздействующие на L, M, S-чувствительные колбочки сетчатки. А цвет - это ощущение человека, возникающее в его голове, в том числе в результате воздействия на колбочки. Если человек может видеть какой-то цвет, то его можно воспроизвести соответствующими стимулами. И RGB модель для этого прекрасно подходит.
                  Спектр тут ну практически совсем ни при чем.


                  1. vadimr
                    06.12.2022 13:20

                    В первой части вы правы. Но проблема в том, что светодиоды R, G и B имеют совсем не такие спектры излучения, как стимулы L, M, S. Поэтому во второй части вы неправы, нельзя с помощью RGB взвесить любой стимул, который может получить глаз.

                    Да что мы спорим, у вас квалиа цветов-то есть, наверное? Неужели на глаз не заметно, что в RGB далеко не все видимые цвета?

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


                    1. mayorovp
                      06.12.2022 13:42

                      Но проблема в том, что светодиоды R, G и B имеют совсем не такие спектры излучения, как стимулы L, M, S.

                      Это проблемы светодиодов, а не цветового пространства.


                      Идеальные R, G и B являются монохроматическими, и тот монохроматический лазерный зелёный — это как раз G.


                      1. vadimr
                        06.12.2022 15:25

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


                      1. mayorovp
                        06.12.2022 15:40

                        Во-первых, разные частоты не дадут интерференции.


                        Во-вторых, монохроматичность ещё не означает когерентности.


                      1. vadimr
                        06.12.2022 15:42

                        Это называется “биения”.


                      1. mayorovp
                        06.12.2022 16:01

                        Формально — да, но там полуразность частот измеряется в терагерцах. Мы не увидим это как биение.


                      1. vadimr
                        06.12.2022 16:04
                        +1

                        Увидим как радужное переливание, знакомое нам по голографическим наклейкам. Будет формироваться новая частота из двух старых, но не по принципу цветовой аддитивности, а по принципу интерференции сигналов.


                      1. mayorovp
                        06.12.2022 16:21

                        Да, вы правы. Но пункт "во-вторых" всё ещё в силе.


              1. Balling
                06.12.2022 10:40

                Нет, для этого нужен CMYKOGV. V и есть фиолетовый.


                1. Fodin
                  06.12.2022 13:12

                  KOGV используются в печати, т.к. реальных красителей CMY недостаточно и для расширения цветового охвата. Немного странно объяснять аддитивную RGB в терминах производной от нее субстрактивной CMY.


                  1. vconst
                    06.12.2022 19:13

                    Немного странно объяснять аддитивную RGB в терминах производной от нее субстрактивной CMY
                    Не просто странно — физически невозможно и не нужно


                  1. vadimr
                    07.12.2022 08:32

                    Nikon в своё время выпускал матрицы для фотоаппаратов с аддитивной матрицей CMYG. У меня был такой, Coolpix 5700. Субтрактивность к цветам CMY гвоздями не прибита.


                1. vconst
                  06.12.2022 19:13

                  Это в принципе другая модель цвета и она не предназначена для экранов и всего того, о чем идет речь. И да, она наследует все проблемы обычного цмик, в том числе и куцый цветовой охват


          1. Balling
            06.12.2022 10:43

            *монохроматический фиолетовый.


          1. vconst
            06.12.2022 19:09

            фиолетовый цвет непредставим в sRGB gamut
            В данном случае — RGBэто не конкретный цветовой профиль — а абсрактный способ кодирования цвета, на основе чувствительности клеток сетчатки. Интуитивно он не очень понятен, зато легко согласуется в физиологией


        1. vconst
          06.12.2022 19:07

          Фиолетовый цвет радуги непредставим в RGB
          А розовый непредставим в радуге :)


      1. tchkEn
        05.12.2022 15:32
        +2

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


        1. vconst
          06.12.2022 19:15

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


          1. konst90
            06.12.2022 19:42

            Глаза тоже бывают разные, см. Дальтонизм. И мозг разный - в смысле, опыт. По автомобилям такое можно сказать - там, где рядовой водитель (или покупатель) не увидит разницы в окраске, опытный маляр или подборщик скажет: о, да тут дверь крашеная.


            1. vconst
              06.12.2022 19:57

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

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


              1. konst90
                06.12.2022 20:09
                +2

                А пример с маляром прямо говорит — что дело в опыте, а не глазах

                А вот кстати не факт. Может так оказаться, что люди с глазами "не той системы" на маляра выучиться не могут, потому что не видят разницы в оттенках.


                1. vconst
                  06.12.2022 21:06
                  +1

                  Еще раз — глаза и зрительный анализатор у всех устроены одинаково.

                  Если отклонений нет — то в норме, человек способен видеть и различать оттенки. Просто некоторые натренированы, потому что сначала учились в техникуме или как это сейчас называется, а потом долго работали. А другие «пришли с улицы» и сильно отстают от первых

                  Я ни за что не скажу, какой из цветов как называется, но могу точно определить, что «сюда немного мадженты надо добавить», что звучит абсолютной дикостью для человека с художественным образованием, например


                  1. konst90
                    06.12.2022 21:36
                    +1

                    "Человек в принципе способен" и "Человек способен сделать это прямо сейчас" - не очень тождественные понятия. Я вот, например, в принципе способен управлять самолётом. Но не очень натренирован, и самолёт уроню, если меня сейчас в кресло пилота посадить.


                    1. vconst
                      06.12.2022 21:46

                      Умение управлять самолетом не дается от рождения


                      1. mayorovp
                        06.12.2022 22:12
                        +1

                        Зрение тоже не полностью от рождения доступно, различать объекты приходится учиться. Я вот, к примеру, не способен различать иероглифы. Понятное дело, я их отличу если дать две крупные картинки и полчаса на игру "найти 10 отличий", но вот просто посмотрев на них — ни за что не скажу одинаковые они или разные. Почему с цветами не может быть так же?


                      1. vconst
                        06.12.2022 22:19
                        -2

                        Ой не надо…
                        Я сегодня так обсмеялся утверждению, что знание языка и грамматики это инстинкт, что исчерпал ресурс на шутки


                      1. khajiit
                        06.12.2022 23:03
                        +1

                        Но вы все равно не совсем правы.
                        Глаза устроены по одному приципу, потому как он записан в ДНК.


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


                      1. vconst
                        06.12.2022 23:15
                        -1

                        Не настолько, чтобы они не различали оттенки, которые умеют различать художники. Потому что их не настолько уж много


                      1. Kanut
                        06.12.2022 23:36
                        +1

                        А как быть например с людьми у которых разное "цветовое восприятие" у разных глаз? Начиная от того что картинка у одного глаза "теплее". И кончая действительно тем что смотря на один и тот же предмет разными глазами люди видят разные цвета?


                      1. vconst
                        06.12.2022 23:51
                        -2

                        А, вы в своем репертуаре. Спасибо за внимание — но мне хватило нелепых страшилок про микропластик


                      1. Kanut
                        06.12.2022 23:54

                        То есть если что-то не вписывается в вашу личную картину мира, то это можно просто игнорировать? Ну ок...


                      1. vconst
                        07.12.2022 00:00
                        -1

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

                        Вы делаете это не настолько ярко и задорно, как Аста, когда он безапелляционно заявляет, к примеру, что знания языка и грамматики — это инстинкты


                      1. Kanut
                        07.12.2022 00:08
                        +1

                        Ну так что я могу поделать если вы не умеете нормально объяснять? Да ещё и каждый раз прекращаете дискуссию или пытаетесь уйти в сторону когда вам нечего сказать?

                        П.С. И я там может что-то делаю не особо ярко и задорно. Но вот я вас с "Астой" одно время постоянно путал :)


                      1. vconst
                        07.12.2022 00:20
                        -2

                        Да-да, все виноваты кроме вас. Обьясняют не так
                        Дальше вы соло


                      1. Kanut
                        07.12.2022 00:25
                        +1

                        Вот где вы увидели про "все"? Про всех я ничего не писал :)


                      1. vconst
                        06.12.2022 23:57

                        //вздыхает

                        Ну ок

                        Самый адовый набор цветных карандашей — это жалкие 500 оттенков. Нет никаких сложностей, чтобы отличить их один от другого. Базовых пигментов, которые используются в живописи — всего несколько десятков. Остальное многообразие — получается смешением их с белилами или сажей, иногда друг с другом

                        Что там можно не различить - это я просто не понимаю
                        image


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


                      1. inkelyad
                        07.12.2022 00:04
                        +1

                        А в живописи все совсем не так трагично — заучить полсотни наименований и соответствующий цвет

                        Мне кажется, в этой дискуссии не различаются "отличить" в смысле 'вот рядом лежат и видно, что они не совпадают' и "отличить" в смысле 'увидеть цвет и сразу правильно его назвать'.

                        Я вот сильно не уверен, что без длительной тренировки можно добиться второго. Точно так же, как без достаточно длительной тренировки нельзя научиться сразу называть услышанную ноту -- хотя их тоже не так уж и много.


                      1. vconst
                        07.12.2022 00:16

                        А я о чем говорю???
                        О том же самом — эти оттенки способен различить любой человек, а для точного названия каждого в отдельности — надо тренироваться. Я как раз с этого и начал


                      1. inkelyad
                        07.12.2022 00:31

                        Хм. Пожалуй, нужен еще один случай. Промежуточный между этими двумя.

                        Когда тебе показывают цвет, убирают, ждут достаточное время, показывают тот же или слегка отличающийся и спрашивают 'тот же цвет был?'.

                        Есть подозрение, что количество цветов, который человек может различить во всех этих трех случаях - несколько не одно и то же без специальных тренировок.


                      1. Myclass
                        07.12.2022 02:35
                        +4

                        Зачем пытаться придумывать сложное, если есть и простые правила, как обвести человеческое восприятие вокруг пальца. Наши глаза не сенсоры, которые воспринимают цвет как что-то абсолютное. Окружающие предметы, подсветка или как в этом случае ассоциация в нашей голове, что темные поля всегда темнее светлых - обманывают нас при интерпритации цветов. А вы - показать/спрятать/спросить итд.


                      1. mayorovp
                        07.12.2022 08:28
                        +1

                        Зря вы именно эту картинку привели. В целом-то я с вами согласен, но вот на этой картинке клетки A и B имеют различную окраску если тень — настоящая, а не нарисованная.


                      1. konst90
                        07.12.2022 09:22
                        +3

                        Но тут-то она нарисованная. И в контексте живописи и карандашей тоже будет нарисованная.


          1. tchkEn
            06.12.2022 21:28
            +2

            Различать могут все — глаза у всех одинаковые

            С одной стороны принцип устройства глаз у всех одинаковый, но с другой количество клеток в сетчатки глаза, отвечающих за цветовосприятие, может варьироваться от человека к человеку. Вот и получаем что есть среднестатистическое цветовосприятие, но далеко не все могут видеть отличия в определенных оттенках даже без патологий зрения (дальтонизма).


            1. vconst
              06.12.2022 21:32
              -1

              //устало

              Нет, не так


          1. tvr
            07.12.2022 12:38
            +2

            Различать могут все — глаза у всех одинаковые.

            Вспомнилось мне одно небезызвестное платьице.


            1. vconst
              07.12.2022 12:52
              -1

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


      1. SerjV
        06.12.2022 03:17

        Я вообще RGB-цветный (радуга и семь цветов, остальное не назову)

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


        1. vconst
          06.12.2022 19:16
          -1

          Технически — цвет это квантовый процесс, а значит он дискретизирован )


      1. mayorovp
        06.12.2022 11:47

        Маджента — это как раз вполне себе RGB-цвет, красный с синим.


  1. Mingun
    04.12.2022 19:19
    +6

    По юлианскому календарю продолжают жить монастыри горы Афон. Иногда происходил обратный процесс: с григорианского календаря страна переходила обратно на юлианский, создавая месяцы длиннее 30 дней. К примеру, Литовская губерния в 1800 году после 11 января вернулась в 1 января. Сможет ли любая система корректно сказать, в какой день недели родился человек из той эпохи?

    Бессмысленный вопрос. Это разные календари, и путаница может быть только когда время выводится текстом, т.к. нет практики указывать, какой календарь используется. Проблема же с программой cal в том, что она зачем-то решила вывести 2 календаря одновременно, совершенно от балды выбрав день, когда заканчивается один и начинается другой.


  1. lxsmkv
    04.12.2022 19:43
    +5

    Стараешься не вникать в счет времени пока тебя это не коснется в работе. Но тогда уже как правило поздно (прошу прощения за каламбур).
    To же самое с представлением чисел с плавающей точкой в компьютере. Ты знаешь, что там есть свои особенности, но не вникаешь в них пока тебя это не коснется в работе.
    Спасибо за материал!


  1. 0x1A4
    04.12.2022 20:17
    +8

    Россия перешла на григорианский календарь в 1918 году с прыжком в 13 дней
    Не вся, РПЦ до сих пор не перешла. Рождество в России отмечается 25 декабря по юлианскому календарю, по григорианскому это 7 января следующего года.
    Заблуждение 3. В месяце 30 дней
    Заблуждение 8: Часовых поясов не больше 24
    Это заблуждения тех, кто в школе не учился?


    1. mrsantak
      05.12.2022 00:40
      +3

      Это заблуждения тех, кто в школе не учился?

      Ну я вот тоже так думал. Я потом наткнулся в одном проекте, что месяц принимался за 30.5 дней. В биллинге, блин. Конечно же, нафига в биллинге точность выше чем плюс-минус день?.. И эта погань там проросла везде, как же я в своё время задолбался это вычищать. И ведь написал это сеньорный сеньор.


      1. funca
        05.12.2022 01:04
        +3

        У сеньера были свои счёты со временем.


      1. 0x1A4
        05.12.2022 02:38
        +15

        В биллинге, блин.
        У Мегафона есть тарифы, в которых плата за интернет списывается раз в 28 дней, то есть 13 раз за год. Вот он прогрессивный взгляд на время =)


        1. mikelavr
          05.12.2022 08:02
          +11

          Я как то это объяснял девочке в салоне Мегафона. Она утверждала, что "платить раз в 4 недели очень удобно!". Я возражал, что зарплату почему то платят по другому графику - немного реже.


          1. Layan
            05.12.2022 15:48

            Я возражал, что зарплату почему то платят по другому графику - немного реже.

            А ведь есть и "тарифы зарплат", где платят и по такому графику, и по более частому.


        1. PuerteMuerte
          05.12.2022 18:40
          +4

          Вот он прогрессивный взгляд на время =)

          Здесь дело не совсем во времени, просто тарифный план в Мегафоне придумывали те же люди, у которых в пакете молока 900 мл, а в упаковке яиц 9 штук.


        1. xenon
          06.12.2022 15:06

          Я бешусь, что Scaleway не пишет помесячные цены за свои виртуалки, а пишет вроде 0.0001/час. Причем за диск, IP адрес и прочие неотъемлимые вещи - отдельно еще. Так что, фиг посчитаешь, сколько тебе выйдет в месяц. А если даже посчитаешь и посчитаешь правильно - не будет уверенности, что точно правильно посчитал.

          И в биллинг захожу, у меня за скромненьку VPS снимается то 2.20, то 2.27. Думаю, что за чертовщина! А потом понял, что это же 30-31 день. Отчасти логично - день - штука достаточно объективная, а вот месяц - то 28, то 31.

          Надеюсь, для честности, високосную секунду включать в счет не будут....


          1. Ndochp
            06.12.2022 17:23
            +1

            С меня билайн за 2 минуты межгорода снял 20 руб 29коп. Девочка в техподдержке на голубом глазу объясняла, что несмотря на то, что в прайсе написано 10р14коп то, что они внутри вычисляют все с точностью до 4 знаков после запятой приводит к нечетной сумме при умножении на 2.
            (не, я догадываюсь, что эти умники со времен УЕ не поменяли софт, а зафиксировали курс и 10.14 это не 10.14, а сколько-то уе умноженное на курс и округленное до двух знаков, но тем не менее… Оно же в прайсе в РФ. Нельзя было целое число копеек в цену поставить?)


          1. vconst
            06.12.2022 19:18

            Я бешусь, что Scaleway не пишет помесячные цены за свои виртуалки, а пишет вроде 0.0001/час.
            Ээээээ…
            Если они не поменяли интерфейс от того, который я помню — там есть здоровенный переключатель «час-месяц». Дернешь его — и все сразу понятно. Калькулятор там тоже все правильно считает и раскладывает отдельно каждый айпишник и любой другой параметр, суммируя сколько будет, можно поиграться галочками и прикинуть — надо оно тебе или нет за такие деньги


            1. xenon
              06.12.2022 21:03
              +1

              Может я чего не вижу? Вот мне интересны позиции Dev1-s и Startdust1-s.
              Вот прайс: https://www.scaleway.com/en/pricing/ , огромный переключатель вроде есть.
              Если переключиться в раздел Compute - то там будут dev/stardust, но с почасовой ценой, а переключалки уже нет. В разделе All я их не вижу. По фильтрам если выбирать, они есть, но показывается только часовая. Попробуйте сами, как у вас будет?


              1. vconst
                06.12.2022 21:11
                +1

                Да… Дизайн здорово поменялся. Этот отвратительный оранжевый…

                Может, если залогиниться и перейти на страницу заказа — появится переключатель на этих позициях?


      1. bogolt
        05.12.2022 15:39

        Я на днях писал функцию для подсчета количества месяцев между двумя датами на го. Скажу что первое решение тоже было умножить дни на 30.5 но я решил вначале проверить точность этого решения.
        Оказалось что на 10 годах ошибка в месяц, на сотне в три ( считал с 1900 по 2000 ).
        Я решил поиграть с коэффициентами и пришел к такой формуле:

        func GetAverageMonthsBetween(start, end time.Time) int {
        	return int(float64(end.Sub(start).Hours()) / (24.0 * 30.4298))
        }
        

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

        Я разумеется выбросил этот код и сделал по-человечески, однако прежде я погуглил и что бы вы думали по запросу «difference between two dates in months golang» выводит как раз решения в стиле
         fmt.Printf("months: %f\n", diff.Hours() / 24 / 30)
        


        Короче один написал и даже не протестировал, другой взял чужой кусок кода…


        1. konst90
          05.12.2022 15:51

          Эм, а разве нельзя умножить разницу в годах на 12 и прибавить разницу в номере месяца? Даты-то уже есть, значит в них есть год и месяц.


          1. bogolt
            05.12.2022 16:40
            +1

            Да именно так и сделал, там еще нужно учесть день на случай если месяцы равны. Просто указываю что очевидное, простое и легко гуглящееся решение оказалось очень плохим.


            1. Ndochp
              06.12.2022 17:29

              Ох уж эти месяцы… Плюс месяц к 28 февраля это 28 марта или 31?
              А 31 марта минус месяц, а потом плюс месяц как считать? (желательно чтобы не совпало с 30 марта)


              1. Rsa97
                06.12.2022 17:33

                А 29 февраля плюс один год?


              1. konst90
                06.12.2022 19:46
                +2

                А мы покупаем или продаем?)


    1. BMXer_V
      05.12.2022 01:26
      +3

      Если РПЦ протянет до 2101го, будет интересно посмотреть, что они будут делать и когда будут праздновать своё Рождество начиная с этого года!


      1. me21
        05.12.2022 08:17

        Как вариант, всегда можно перейти на свой календарь.


      1. maxcob
        05.12.2022 12:47
        +1

        Планировать посмотреть что будет после 2100 - это очень оптимистично.


        1. BMXer_V
          05.12.2022 12:59

          Понятно, что смотреть буду не я! Но хотелось бы.


    1. dom1n1k
      05.12.2022 04:55
      +1

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


  1. dmitryvolochaev
    04.12.2022 20:50
    +8

    Говоря об исключениях для конкретных применений, стоит вспомнить телепрограмму, где граница суток - это 6 утра, а не полночь


    1. konst90
      04.12.2022 21:55
      +9

      Хотелось бы видеть подобное исключение для голосовых помощников. Или хотя бы уточнение.

      А то попросишь, например, Алису в 0:02 поставить будильник на завтра - получишь не то, чего хотел


      1. ghostiam
        06.12.2022 10:08
        +2

        Сири спрашивает, что вы имеете ввиду, сегодня (такая дата) или завтра (такая дата)


    1. BogdanPetrov
      04.12.2022 22:08
      +2

      Точно, есть такое. Приходилось работать с такими данными, там время так и указывалось, например, "27:13:45". Для удобства переводил в обычный вид. Только почему-то запомнилось, что не 6 утра, а сутки с 5 часов до 29 часов.


      1. roofcat
        05.12.2022 14:33

        5-29 раньше было стандартом для всяких телевизионных отчетов, рейтинги, доля, вот это вот все. Во времена, когда TNS еще был Гэллапом, до того, как он стал Медиаскопом :)


    1. abutorin
      04.12.2022 22:39
      +1

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


      1. NP447
        05.12.2022 04:27
        +1

        Это скорее всего либо московское/местное время, либо момент сезонного перевода часов. Либо поезда, ходящие через день (по четным и нечетным числам) и соответственно стык 31 и 1 числа месяца.


        1. ksbes
          05.12.2022 11:05
          +3

          В РЖД сутки меняются в полночь. Это я хорошо помню. У меня поезд к родственикам в час ночи отходит — я один раз его пропускал и они два раза у меня так задерживались: поезд, скажем, 5-го числа и, соответсвенно, 5го вечером они и собирались :)


          1. funca
            05.12.2022 11:25

            В полночь по местному времени или по Москве?


            1. ksbes
              05.12.2022 12:56
              +2

              В моём случае — одно и тоже.


      1. xenon
        06.12.2022 16:26

        Вроде с ЖД это все и началось. Что такое полдень - это понятно и легко установить по тени от палочки или колокольни. Но в каждом городе свой полдень, по чуть-чуть отличается. И важно как-то планировать, чтобы время было единым на всей дороге, а то поезд, который в 00:00 по одному времени столкнется с поездом, который там же в 00:10 но по другому времени. В итоге, время на ЖД вроде починили, зато полдни поломали....


        1. mayorovp
          06.12.2022 16:49

          От столкновения поезда защищает совсем другая система, а точное время нужно для планирования.


    1. dom1n1k
      05.12.2022 04:59
      +2

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


      1. BogdanPetrov
        05.12.2022 13:07
        +1

        Да, с этим сразу сталкиваешься, если попытаться самостоятельно агрегировать данные с метеостанции, например получить среднюю или минимальную температуру (и сверить с какими-то другими результатами).

        Немного подробностей есть тут: http://pogodaiklimat.ru/faq.php


        1. dom1n1k
          05.12.2022 20:00

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


          1. konst90
            06.12.2022 10:14

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


    1. mayorovp
      06.12.2022 12:07

      Такое происходит довольно часто.


      Скажем, на одном из проектов где я участвовал, границей суток считалось 8 утра по Московскому времени — именно с 8 до 8 формировались все суточные отчёты.


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


      Ещё, как я слышал, в розничной торговле "кассовые сутки" заканчиваются с окончанием смены — то есть где-то в 10-11 часов по местному времени (а ещё если касса закрывается вручную — сутки выходят переменной длины).


  1. Yuribtr
    04.12.2022 21:52
    +1

    Почему бы учитывая все эти сложности не хранить даты по возможности в timestamp формате? Есть какие нибудь минусы этого подхода, кроме того что этот формат не человекочитаемый?


    1. BugM
      05.12.2022 00:00
      +3

      Хранить-то можно. Проблемы возникают при взаимодействии с внешним миром. Который хочет даты в человекопонятном формате. И в своей таймзоне заодно.

      Типовое хранение GMT + TZ в среднем удобнее с учетом необходимости взаимодействия с людьми.


      1. asergrisa
        05.12.2022 03:04
        -1

        Удобнее как раз хранить в Unix time, т.е. в количестве секунд от 1970 года. А вот людям уже выдавать как нормально отформатированую дату в их календаре с их часовым поясом.


        1. BugM
          05.12.2022 03:14
          +8

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

          Если ваш язык позволяет напрочь запретить так делать я рад. Типовые языки увы так не позволяют. А на ревью все такое отслеживать муторно и черевато пропусками.

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


          1. barker
            05.12.2022 09:53
            +4

            прибавить 3600 и думать

            Именно тут какие подводные камни кроме високосных секунд? Которые и так идут вне равномерности юниксайма и прочих tzdata? Это ведь будет действительно через час, различия могут быть только при форматировании времени (т.е с учётом конкретной tz), нет?


            1. mrsantak
              05.12.2022 10:54
              +2

              А попробуйте прибавить к timestamp уже не час, а месяц. Я чуть выше писал про месяц в 30.5 дней. Такая срань как раз и возникла, потому что дата в timestamp хранилась.


              1. Mingun
                05.12.2022 16:44

                Все-таки час — это вполне однозначная мера промежутка, а вот месяц — плавающее значение. Естественно, если к числу прибавляем UNKNOWN то получим UNKNOWN.


                1. BugM
                  05.12.2022 17:40

                  Час превращается в любую другую величину при доработке через какое-то время. Не надо зацикливаться именно на нем. Я про идею почему timestamp плох.


                1. mrsantak
                  06.12.2022 13:18
                  +1

                  Все-таки час — это вполне однозначная мера промежутка

                  Вы статью-то читали? Перевод часов выпавший на ваш час превратит его в иинтервал отличный от 3600 секунд.


                  1. Mingun
                    06.12.2022 15:01
                    +1

                    Вы не путайте промежуток и две отсечки на шкале времени. Час определяется, как 3600 секунд. Чего не скажешь о месяце, который то 30, то 31, а то и вовсе 28 или 29 дней.


                    1. BugM
                      06.12.2022 15:32
                      +1

                      Пользовательские сценарии и алгоритмы их обработки бывают разными.

                      Сценарий «поставь будильник через час» реализованный через сложение секунд в таймстемпах и поставку крона на получившееся время в момент перевода часов может дать интересный результат.

                      Такие мелочи важны. Именно они дают пользователям радость или ненависть ко всем этим вашим технологиям.


                      1. Rsa97
                        06.12.2022 16:11

                        Сценарий «поставь будильник через час» реализованный через сложение секунд в таймстемпах и поставку крона на получившееся время в момент перевода часов может дать интересный результат.

                        Берём текущий таймстамп, прибавляем к нему 3600, переводим в локальное время. Если за этот час будет перевод часов, то и локальное время мы получим уже с коррекцией. В результате будильник разбудит нас ровно через час, как заказывали.
                        Если говорим «поставь будильник на 02:30», а этого момента не будет, (01:59:59 -> 03:00:00) то попытка перевести указанное время в таймстамп должна выдавать ошибку и потребуется разъяснение пользователя, что же именно он имел в виду.


                      1. BugM
                        07.12.2022 00:17

                        Хорошая теория. А теперь я покажу код. Talk is cheap. Show me the code.

                        Java 17, самый современный способ работы со временем в Джаве. Язык на котором пишут бизнес логику. Никаких проблем.

                        Timestamp timestamp1 = new Timestamp(1667095200000L-2*3600*1000L+ 100000);
                        LocalDateTime localDateTime1 = LocalDateTime.ofInstant(timestamp1.toInstant(), ZoneId.of("Europe/London"));
                        System.out.println(localDateTime1);
                        
                        Timestamp timestamp2 = new Timestamp(timestamp1.getTime() + 3600*1000L - 10000);
                        LocalDateTime localDateTime2 = LocalDateTime.ofInstant(timestamp2.toInstant(), ZoneId.of("Europe/London"));
                        System.out.println(localDateTime2);
                        
                        Ой
                        2022-10-30T01:01:40
                        2022-10-30T01:01:30

                        А вот так на правильных типах:

                        Timestamp timestampNormal = new Timestamp(1667095200000L-2*3600*1000L + 100000 - 10000);
                        LocalDateTime localDateTimeNormal = LocalDateTime.ofInstant(timestampNormal.toInstant(), ZoneId.of("Europe/London"));
                        System.out.println(localDateTimeNormal);
                        
                        LocalDateTime localDateTimeNormal2 = localDateTimeNormal.plusHours(1).minusMinutes(1);
                        System.out.println(localDateTimeNormal2);
                        
                        Вроде получше
                        2022-10-30T01:01:30
                        2022-10-30T02:00:30

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


                      1. Rsa97
                        07.12.2022 01:54
                        +2

                        В первом варианте логика правильная. Когда в Лондоне первый раз наступит 2022-10-30T01:01:40, то через 59:50 часы будут показывать 2022-10-30T01:01:30.
                        Если речь о голосовом помощнике, то ему нет смысла переводить таймстамп обратно в дату. То есть, для него «через час» — когда таймстамп будет равен текущему плюс 3600 секунд. А если попросить его поставить будильник на 2022-10-30T01:30:00, то он, по хорошему, должен уточнить, какие именно 01:30 имеются в виду, первые или вторые и соответственно выставить таймстамп будильника.
                        Если надо выставить время в кроне, то однозначного решения для локального времени всё равно нет. Событие, выставленное на интервал перевода времени на час назад отработает дважды. Выставленное на интервал перевода времени на час вперёд не отработает ни раза.


                      1. Rsa97
                        07.12.2022 07:34
                        +1

                        Да, и попробуйте свой второй способ с таймстампом 1648342200. Получите время 2022-03-27T01:49:00, которого вообще не существовало в Лондоне.


            1. funca
              05.12.2022 11:11
              +3

              https://man7.org/linux/man-pages/man2/clock_gettime.2.html

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


            1. konst90
              05.12.2022 13:04
              +3

              Именно тут какие подводные камни кроме високосных секунд?

              Перевод часов? Прибавили к 1:30:00 час, получили 2:30:00, а оно не наступило, потому что после 1:59:59 сразу идёт 3:00:00.


              1. Rsa97
                05.12.2022 13:59
                +2

                Взяли 2010-03-28T01:30:00MSK (GMT+03:00), перевели в timestamp, получили 1269729000.
                Прибавили 3600, получили 1269732600.
                Перевели в локальное время, получили 2010-03-28T03:30:00MSK (GMT+04:00).
                Никаких проблем.


                1. inkelyad
                  05.12.2022 14:05
                  +4

                  Проблема в том, что не указано, какое именно 'через час' хотелось. То, которое 'по прошествии указанного количество времени' или то, которое 'циферблат часов должен показывать на единицу часов больше'.

                  Вот если нам нужно было было второе - то расчет неправильный. Потому что 2:30 действительно не наступило и этого события не было.


                  1. Mingun
                    05.12.2022 16:46
                    +2

                    ИМХО, про второй случай говорить "через час" вообще неправильно. "В такой-то час" (с дробями) еще можно...


              1. barker
                06.12.2022 10:43

                Ну, при переводе часов unixtime не меняется же, он идёт дальше как и шел равномерно и прямолинейно. Через час (=60 минут, и 60*60 секунд) при любых переводах часов и обнаружении себя в любой точке мира будет +3600 к текущему значению unixtime без вариантов. Где там не наступило 2:30 это вопрос исключительно локального времени, в конкретной tz, о чём я и написал ..


                1. konst90
                  06.12.2022 11:02
                  +1

                  Где там не наступило 2:30 это вопрос исключительно локального времени

                  Да, но люди-то с локальным временем работают.

                  Вот например у человека самолёт в 6 утра. И, чтобы успеть, ему надо выйти из дома в 2:30, т.е. за 3.5 часа до рейса. А про перевод времени он забыл. Он в 0:30 просит Алису напомнить ему о необходимости выхода из дома в 2:30, вы это обрабатываете как timestamp (закономерно посчитав, что 2:30 будет через 7200 секунд после 0:30), и... во сколько сработает уведомление и успеет ли человек на самолёт?

                  Ещё интереснее, боюсь, может получиться с будильником на 2:30 - он сработает через сутки после необходимого, когда 2:30 наконец наступит.

                  Я не уверен, что тут в принципе возможна хорошая универсальная обработка.


                  1. khajiit
                    06.12.2022 11:22

                    Тут явное нарушение: или говоришь что сделать, или как, но не оба сразу.
                    В данном случае задача выйти из дома за 3.5 часа до рейса, а не выйти из дома в 2:30.


                    1. konst90
                      06.12.2022 11:29
                      +2

                       задача выйти из дома за 3.5 часа до рейса, а не выйти из дома в 2:30.

                      Для пользователя в 99% случаев (вернее, в 363/365) эти задачи идентичны, и проговаривать "поставь уведомление за 3.5 часа до 6:00" он не будет, потому что может посчитать это в уме (а время рейса Алиса может не знать). И проблем с обработкой не будет, что характерно. А вот два дня в году эта схема даст сбой, и именно в таких случаях нужно правильно обработать ситуацию, чтобы помочь человеку успеть на самолёт.


                      1. khajiit
                        06.12.2022 11:50
                        -2

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


                        Оба этих случая ваше решение не покрывает, в то время как правильная формулировка покрывает не только эти случаи.


                      1. konst90
                        06.12.2022 12:05
                        +2

                        правильная формулировка покрывает не только эти случаи.

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

                        Поэтому отработка события, установленного пользователем на 2:30, может (если мы хотим помочь человеку, а не как-формально выполнить команду) быть, в зависимости от задачи, выполнена в 1:30 (если это напоминание о самолёте), в 3:30 (если он в 0:30 поставил таймер, чтобы мясо готовилось 120 минут) или не выполнена вообще (редкий случай - нам, скажем, нужна ночная фотография часов на Спасской башне со стрелками на 2:30).


                      1. khajiit
                        06.12.2022 12:10
                        +1

                        они же в конце концов позиционируются как помощники, а не как тупые исполнители

                        именно поэтому надо быстро, решительно забыть про императивные формулировки.


                        выполнена в 1:30 (если это напоминание о самолёте), в 3:30 (если он в 0:30 поставил таймер, чтобы мясо готовилось 120 минут

                        Так помощник или гадалка? )
                        Ни одна из этих задач не должна быть выполнена таким образом.


                      1. konst90
                        06.12.2022 12:23

                        Так помощник или гадалка?

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

                        Но мысль, которую я хочу донести, не меняется: в одном случае решение "прибавить 7200 к текущему таймштампу" позволит получить результат, нужный пользователю, а в другом - всплывёт подводный камень в виде опоздания на самолёт (и, опционально - в виде орущего на весь дом помощника следующей ночью).


                      1. khajiit
                        06.12.2022 12:45
                        -1

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


                        Помощнику нужно сформулировать задачу и снабдить достаточным набором информации для её решения — и все.


                        Для того, чтобы выключить мясо через два часа не нужно ставить будильник, нужно ставить таймер.
                        Чтобы успеть к самолету — не нужно выйти ровно за 3,5 часа до вылета, а нужно учесть массу факторов: от очереди на регистрацию/досмотр и пробок до ЖД-станции под аэропортом и смены часовых поясов.


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


                      1. konst90
                        06.12.2022 13:05
                        +1

                        Для того, чтобы выключить мясо через два часа не нужно ставить будильник, нужно ставить таймер.

                        Что ставит пользователь и что делает программа - не обязательно одно и то же. Если пользователь поставил таймер на два часа - под капотом там вполне может быть "озвучить уведомление в [нынешний таймштамп плюс 7200]". И тут у нас всё корректно, уведомление сработает вовремя.

                        к которому вы еще предлагаете добавить неопределенность в виде угадайки

                        Нет. Я предлагаю переспросить, если возможна неопределенность или неверное исполнение.

                        Когда пользователь просит озвучить уведомление сегодня в 2:30, а оно не случится из-за перевода часов - вот тут надо уточнить у него, что он имеет в виду, а не искать ближайшие 2:30 (следующие сутки), не считать разницу между нынешним 0:30 и абстрактным 2:30 (7200, уведомление сработает в 3:30) и не озвучивать уведомление в 3:00 со словами "уведомляю с опозданием на полчаса, в 2:30 не получилось по техническим причинам", и не промолчать, потому что уведомить в 2:30 сегодня технически невозможно.

                        А как, во-вашему, должна быть обработана императивная команда "озвучить уведомление сегодня в 2:30", если после 1:59:59 сразу наступит 3:00:00?


                      1. khajiit
                        06.12.2022 20:06

                        Если пользователь поставил таймер на два часа — под капотом там вполне может быть "озвучить уведомление в [нынешний таймштамп плюс 7200]"

                        Так это одно и то же =)
                        Более того, именно этот вариант и должен использоваться: мясу и духовке все равно на отображение даты, а ошибка чревата или горячее — сырым! или суп, который ты варил, дожарился и высох в угли.


                        Я предлагаю переспросить, если возможна неопределенность или неверное исполнение

                        И что можно неверно исполнить в абсолютно корректном императиве установи уведомление сегодня на 2:30? Время корректное, дата и действие тоже.


                        а оно не случится из-за перевода часов

                        Ага, так бывает, если вместо решения задачи сперва страдать фигней, доказывая машине кто здесь хозяин, а потом требовать от нее манкипатчинга с телепатией.


                        озвучивать уведомление в 3:00 со словами "уведомляю с опозданием на полчаса, в 2:30 не получилось по техническим причинам"

                        Кстати, это будет с опережением


                        А как, во-вашему, должна быть обработана императивная команда

                        Она вообще не должна возникнуть в рассматриваемом случае.
                        Есть задача, задача перемещения тушки к условленному моменту в определенное место. ВСЁ. Не надо показывать, кто тут круче и делать за машину ее работу (через одо место и даже не на половину) — у нее мозги железные, она пусть и считает.


                      1. konst90
                        06.12.2022 20:32
                        +1

                        И что можно неверно исполнить в абсолютно корректном императиве установи уведомление сегодня на 2:30? Время корректное, дата и действие тоже.

                        В том и проблема, что раз в год это сочетание даты и времени будет некорректным. В смысле - что времени 2:30 в этих сутках нет. Так во сколько должно звучать уведомление после корректного императива?

                        Кстати, это будет с опережением

                        Это зависит от задачи. В случае с аэропортом - с опозданием, в случае с мясом - с опережением.

                        Она вообще не должна возникнуть в рассматриваемом случае.

                        Повторюсь - проблема в том, что голосовые помощники создаются не строго для тех, кто может формулировать точные ТЗ с учётом редких факторов, а для рядовых пользователей. Пользователь по каким-то своим соображениям попросил уведомить его в 2:30. Он забыл, что 2:30 в этих сутках нет, потому что ситуация эта - редкая. Помощник в этой ситуации должен помочь пользователю. А подумать, как обработать некорректное сочетание даты и времени, должен программист этого помощника - а не надеяться, что таймштамп с тупым прибавлением секунд может обработать любую ситуацию.

                        У вас, простите, какой-то айтишный снобизм, что рядовой пользователь должен быть умнее машины, а машина должна тупо исполнять команды. Но это время закончилось довольно давно - и сейчас пользователем может быть трехлетний ребенок, домохозяйка или слесарь пенсионного возраста (при всём моём уважении к слесарям - с IT у них порой не очень хорошо), у которых в принципе нет опыта общения с программами, зато есть красивая колонка, которая умеет понимать голос и выполнять команды. И если техподдержка на претензию "Почему уведомление на 2:30 не сработало и я опоздал в аэропорт" ответит из той же колонки (потому что по-другому наш слесарь не умеет) не "извините, наш помощник туповат, но мы учтём и исправим, вот вам промокод", а "не надо показывать, кто тут круче" - высока вероятность, что колонка полетит в стену, подписки не будет, плюс соседи по гаражам точно никогда эту штуку не купят, послушав эту историю.


                      1. khajiit
                        06.12.2022 21:44
                        -1

                        В том и проблема, что раз в год это сочетание даты и времени будет некорректным

                        Этого нельзя утверждать без контретного TZ, а он не указан.
                        Чтобы знать TZ надо иметь актуальные базы и геопозицию.
                        Что приводит нас опять к тому, что надо не умничать самому, а отдать расчеты машине.


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

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


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


                      1. konst90
                        06.12.2022 21:58
                        +3

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

                        Я никого не заставляю считать. Я говорю, что люди могут - по по ошибке, по задумчивости, по неумению давать однозначные формулировки - поставить задачу так, что машина не сможет её решить. И эти случаи нужно обрабатывать, если вы пишите программу для людей, которые прекрасно разбираются в слесарном деле, но голосовой помощник для них - чудо чудесное, к которому нет талмуда на восемьсот страниц "Как правильно формулировать команды". Вы, кстати, так и не ответили на вопрос. Как, во-вашему, должна быть обработана императивная команда голосовому помощнику "озвучить уведомление сегодня в 2:30", если после 1:59:59 сразу наступит 3:00:00? Человек отдал именно такую команду. Что делаем?


                      1. khajiit
                        06.12.2022 23:00
                        -1

                        Я никого не заставляю считать

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


                        Как, во-вашему, должна быть обработана императивная команда голосовому помощнику "озвучить уведомление сегодня в 2:30", если после 1:59:59 сразу наступит 3:00:00?

                        Ответ на этот вопрос был дан несколько раз. Он не изменился.
                        Пользователю нужна другая задача, и именно задачу пользователя надо решить.
                        И вы беретесь за решение задачи пользователя не с того конца вообще.


                        Человек отдал именно такую команду. Что делаем?

                        Люди и команду Алисе выпить йаду отдавали, и заигрывали. И что?
                        К решению этого вопроса отношения ни то, ни другое, ни третье не имеют.
                        Озвученная вами задача — успеть на самолет, ее и надо решать. А вместо решения задачи пользователя вы занимаетесь демагогией..


                      1. BugM
                        06.12.2022 23:05
                        +3

                        Я так и не понял что вы хотите от пользователя? Он вам не расскажет всю свою историю и все свои планы, а если и расскажет вы не поймете. Пользователь просто простит поставить будильник на 2:30, которых не сущесвует.

                        Чтобы успешно продавать помощников надо уметь такие задачи решать хорошо.


                      1. khajiit
                        06.12.2022 23:28

                        От пользователя?
                        Ничего сверхестественно, просто чтобы он сказхал словами через рот когда и где ему надо быть. Это же не сложно?
                        А вычислениями должна заниматься машина, они для этого предназначены и делают это гораздо лучше мясных мешков.


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


                        Этому решительно непонятно, почему вообще данная задача должна намеренно решаться через казуистику.


                      1. BugM
                        06.12.2022 23:40
                        +5

                        Ничего сверхестественно, просто чтобы он сказхал словами через рот когда и где ему надо быть. Это же не сложно?

                        Это настолько сложно что можно считать нерешаемой задачей.

                        Пользователь скажет что он хочет, а не что вам надо. Попытка заставить пользователя говорить что вам надо приведет к тому что вы ни одного помощника не продадите.

                        У него же билет есть, в нем все написано: название аэропорта, время вылета.

                        У него есть, а у вас нет. И надо с этим работать.

                        У ассистента есть текущая геопозиция и средства для построения маршрутов — на этом необходимый и достаточный набор данных в принципе заканчивается.

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


                      1. khajiit
                        07.12.2022 00:06

                        Ну, если словами через рот — задача не решаемая, то каджиту стоит умыть руки.


                        Однако, никаких примеров нерешаемого вы не привели.


                        Пользователь скажет что он хочет

                        Так это и требуется. Без пересчетов, умничания и попыток создать себе на ровном месте проблем.


                        У него есть, а у вас нет. И надо с этим работать

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


                        Может он три часа по дьютифри ходить собирается?

                        Но он-то об этом знает и сказать может?
                        Потому что если нет, то проблема глубже серьезнее и вообще в другой области лежит.


                        Или у него такие чемоданы что он через любые пробки поедет только на такси.

                        То же самое.


                        И не знаете что там в аэропорту. Может очередное обострение и надо приежать за 5 часов?

                        Каджиту об этом знать и не надо. Более того, это форс-мажор, его невозможно учесть.
                        Но! Об этом, учитывая что билеты берутся сильно заранее, как правило, может знать ассистент — если аэропорт предоставляет данные, конечно. И тогда тем более надо не выделываться, а поручить работу машины — машине.


                        Ассистенты гугла и яндекса уже давно умеют сообщать о событиях, прокладывать маршруты и заказывать такси, разве нет?


                        Просто поставьте будильник на указанное время или уточните что именно хочет пользователь если время неоднозначно.

                        Да, это то, к чем пытался подменить свою же задачу оппонент.
                        Задача, между тем, все еще вовремя добраться до аэропорта, а не проверить, валидно ли желаемое время…


                      1. BugM
                        07.12.2022 00:20
                        +1

                        Вы хотите сделать живого секретаря и у вас это не получится по объективным причинам. Значит вы не сделаете ничего. Продукта нет, рынка нет, денег нет.

                        При этом я сделаю нормальное решение с которым пользователь может взаимодействовать и не расстраиваться. У меня есть продукт, рынок и деньги.

                        Вроде очевидно что лучше? Если жить не в мире розовых пони, а в реальном мире.


                      1. Mingun
                        07.12.2022 07:57

                        Ну, если словами через рот — задача не решаемая, то каджиту стоит умыть руки.

                        Классический пример:


                        Каджит перестал пить коньяк по утрам? Да или нет?

                        Пожалуйста, озвучьте словами через рот. Это же ведь так просто, да?


                      1. konst90
                        06.12.2022 23:20
                        +2

                        Это значит, что вы уже заставили его считать.

                        Нет. У него дома появился голосовой помощник без инструкции - какие команды ему давать можно, а какие нельзя. Он и даёт команды, голосом. Конкретно в этот день он дал команду - "Алиса, поставь уведомление на 2:30". Где-то в инструкции к Алисе написано, что так делать нельзя? Я не видел.

                        Ещё раз: условие задачи - человек, который поставил уведомление на 2:30. А не человек, про которого программе достоверно известно, что у него самолёт в 6:00. И программисту надо отработать задачу "Человек поставил уведомление на 2:30". Варианты отработки - на самом деле это 3:30, на самом деле это 1:30, переносим на следующие сутки, переспрашиваем человека, [вписать своё].

                        Пользователю нужна другая задача

                        То есть - голосовой помощник должен сказать: пользователь, тебе нужна другая задача, эту я выполнить не могу. Согласны? А для этого простой арифметики с timestamp недостаточно. Нужно ещё проверять само наличие указанного пользователем времени, как минимум.


                      1. khajiit
                        06.12.2022 23:41
                        +1

                        Каджит вам ссылку на ваш же коммент дал, где вы описывали совершенно другую задачу, которую вы пытаетесь безальтернативно решить наиболее проблемным путем.


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


                        голосовой помощник должен сказать

                        Это его возможностей по анализу сильно зависит.


                      1. Cerberuser
                        07.12.2022 05:41
                        +2

                        она решается проще, и, главное, без мыслительных усилий со стороны человека

                        То есть, мыслительные усилия на то, чтобы сформулировать задачу в терминах "что я хочу в принципе", а не "что я хочу конкретно от помощника", не считаются? А на то, чтобы вообще догадаться, что помощнику нужен полный контекст, а не только задача, которую ожидают конкретно от него? А на то, чтобы понять, какой контекст здесь считается полным (а то некоторые могут и полчаса рассказывать, что им на самом деле нужно)?


                      1. konst90
                        07.12.2022 08:19
                        +4

                         где вы описывали совершенно другую задачу

                        Идём по ссылке и читаем задачу:

                        Он в 0:30 просит Алису напомнить ему о необходимости выхода из дома в 2:30

                        Вот это и есть та задача, которую попросил решить пользователь: напоминание в 2:30. Решайте эту задачу, а не рассказывайте пользователю, что он дурак и делает что-то через жопу. Потому что иначе он сочтёт, что он действительно дурак и недостоин пользоваться вашим гениальным изобретением, и вы останетесь без клиента.

                        она решается проще

                        Серьёзно? Человек пенсионного возраста без опыта в IT может сделать две вещи. Первое - посчитать в уме (чем он всю жизнь занимался) "так, до гаража полчаса, до дочки пятнадцать минут, в аэропорт ехать столько-то, запас времени такой-то", получить 3.5 часа, вычесть их из шесть утра, получить 2:30 (ошибся старый человек, забыл про перевод времени, бывает) и попросить поставить уведомление на это время. Вы так и не придумали, как обработать эту довольно простую просьбу.

                        Либо - вам нужно обработать фразу "Алиса, мне нужно быть в аэропорте в 6 утра, а перед этим дойти до гаража по адресу такому-то, потом заехать по адресу такому-то и оттуда в аэропорт". Удачи вам научить нейросеть это кушать и объяснить человеку, что говорить надо именно так и нигде не ошибиться. Это ведь проще, чем проверить в календаре наличие сочетания даты и времени.


                      1. mayorovp
                        07.12.2022 08:36
                        +3

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

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


    1. KivApple
      05.12.2022 02:07
      +2

      В какой-то момент их захочется показать пользователю. И пользователь хочет что-то более удобное, чем одно длинное число. Более того, пользователь хочет что-то, что он сможет соотнести со своими часами на стене. Также бизнес-логика приложения может включать в себя понятия типа "каждый день", "каждый месяц" (например, списание оплаты за услугу) и т. п. А этих понятий принципиально нет в timestamp. И что делать?


    1. avaava
      05.12.2022 10:41
      +1

      А в чем проблема хранить и передавать время в UTC? Я вот действительно не понимаю. Ну будем вставать в условном Урюжопинске не в 8:00, а в 13:00? Так и рабочие часы организаций можно указывать не с 9:00-18:00, а 14:00-23:00. Привыкнуть можно. Зато везде и одинаково. Что б не будить никого в Хабаровске просто потому, что на сайте не написано где у них офис (почти реальный случай у меня, там был не Хабаровск, а поближе).


      1. BugM
        05.12.2022 11:42
        +1

        Китай так и живет. В принципе можно. Но нужен глобальный консенсус для этого. А это невозможно.


      1. vadimr
        05.12.2022 13:30
        +3

        Неудобно, когда дата меняется посреди рабочего дня.


      1. funca
        05.12.2022 13:56

        Если глобализация все же продолжится, то со временем к чему-то такому и придем. Я работаю с распределенными командами. Для коротких интервалов удобно использовать относительное время (собираемся через 30 минут, а не во столько-то часов, что каждый будет трактовать по-своему). Для чего-то регулярного или глобального наружу используется UTC.


  1. threepointsix
    04.12.2022 22:13
    +13

    Забыли про заблуждение, что время придумали часовые компании, чтобы продавать больше часов


  1. flass
    04.12.2022 23:27
    -2

    Чем древнее, тем говнее! (с) Клим Александрович Жуков


    1. ishtan
      05.12.2022 11:00

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


  1. vadimr
    04.12.2022 23:34
    +8

    Недели не везде семидневные, в Мьянме неделя восьмидневная, из уважения к священности числа 8 в буддизме. Но не в том смысле, что дни отсчитываются по восемь, а просто среда до полудня и после полудня – два разных дня. Зато при этом начинающаяся с воскресенья неделя делится на две равные части.


    1. LIJaMaH
      05.12.2022 10:23
      +15

      Хорошо, что оба выходных дня на среду не приходятся...


      1. StjarnornasFred
        05.12.2022 23:13

        Простите, а вы точно министр экономического развития?


  1. konst90
    05.12.2022 00:01
    +26

    Зато представьте - как нам повезло хотя бы в том, что секунда у всех одинаковая. Нет никакой имперской секунды или дошедшего до наших дней и стандартизованного "удара сердца самурая", которым бы пользовались где-нибудь в Японии.


  1. serginho
    05.12.2022 00:30
    +3

    Unix timestamp везде одинаковый ))


    1. Elmot
      05.12.2022 03:41
      +1

      Unix timestamp от рождения был 32-битный, соответственно зацикливался на датах до 1901-12-13 и после 2038-01-19.
      Вроде бы везде переделали на 64 бита, но кто знает...


  1. Daddy_Cool
    05.12.2022 01:45

    Уф. Как всё сложно-то! Спасибо за стать, очень интересно.


  1. emaxx
    05.12.2022 03:25
    +2

    Заблуждение 3. В месяце 30 дней

    В немецкой финансовой сфере это "заблуждение" вполне в ходу и не считается ошибкой (по крайней мере в определённых сферах). Называют "методом 30/360": https://de.wikipedia.org/wiki/Zinsberechnungsmethode#30/360_–_deutsche_(kaufmännische)_Zinsmethode


    1. Lissov
      07.12.2022 01:45
      +1

      Как и говорит название Kaufmännische - торговый - это применимо и очень удобно в банковской сфере и торговле. Точность до дня там не играет никакой роли вообще, потому что важно как договорились, а не как оно "теоретически могло бы быть". А вот расчёты сильно упрощаются.

      Собственно потому этот метод и возник. Например, кредит на 20 лет как 240 равных 30-дневных месяцев можно один раз расчитать аналитически, и он остается верным для выбранной ставки. А по act/act (точный учёт дней) нужно пересчитывать на каждый день отдельно. Потому в докомпьютерное время этот метод и возник, а сейчас по инерции используется.


  1. Elmot
    05.12.2022 03:37
    +4

    Еще одно заблуждение в копилку.
    Эра - это долго, как минимум больше ста лет. И кратна году. Солнечному или лунному. Ну пожалуйста.

    Но не в Японии. Японская эра привязана к периоду царствования очередного императора.
    Эра Хэйсэй (平成) — длилась с 8 января 1989 года по 30 апреля 2019 года.
    Текущая эра Рэйва (令和) началась на следующий день. Когда закончится - никто не знает, царствующему императору Нарухито 62 года, искренне желаю ему многая лета.

    В связи с наступлением новой эры был введен новый иероглиф “㋿” (U+32FF) и новый стандарт Unicode 12.1. Потом каскадно обновлялись программы и фреймворки, например JDK 8 update 211.


  1. NP447
    05.12.2022 04:11
    +3

    часть островных государств находится в Южном полушарии, за линией перемены даты

    Может всё-таки в Западном?


  1. abak
    05.12.2022 10:07
    +3

    Заблуждение 3. В месяце 30 дней

    У некоторых финансистов так и есть. Конвенция 30/360 по-прежнему встречается на рынках облигаций и деривативов на процентные ставки. Это довольно удобно для устного счёта: если годовая ставка 6%, то за любой календарный месяц кредит зарабатывает 6%/12 = 0.5%, а за любые полгода 3%, и не надо высчитывать количество дней в месяцах и вспоминать, високосный ли февраль. Опять-же, топ-менеджмент банка не прибегает к программистам в панике в начале марта из-за того, что в феврале процентный доход банка уменьшился по сравнению с январём на 10% (28 / 31 - 1 = -9.6%).

    https://en.wikipedia.org/wiki/Day_count_convention#30/360_methods


    1. vadimr
      05.12.2022 10:26

      Я думаю, топ-менеджмент банка получше программистов в курсе про процентный доход :)


    1. Lissov
      07.12.2022 01:49
      +2

      Я выше ответил - если Вы представите как только расчитать аннуитет на 20 лет до изобретения программистов, Вы легко поймёте в чем реальный смысл 30/360.

      А вот сейчас уже часто встречается учёт реальных дней, менеджеры понимают.


  1. eungenue
    05.12.2022 12:32
    +3

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

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

    Имхо, время в GPS, лишенное високосных секунд - пример более удачного подхода. А вот Глонасс с високосными - неудачный. Теперь одним можно ничего не делать, а другим придется переписывать.


    1. vadimr
      05.12.2022 13:34
      +1

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

      Что касается физической модели, с ней тоже не всё гладко. Например, задают такой вопрос: что было в первую секунду после Большого Взрыва? В ответ на это логично спросить, а что в данном случае вкладывается в понятие “секунда”? Если 9 миллиардов колебаний возбуждённого атома цезия, как пишут в физическом справочнике, то никакого цезия тогда не было. Вот и что делать с этим?


      1. vassabi
        05.12.2022 14:42

         Вот и что делать с этим?

        пересчитывать на то что было в то время - время осцилляций каких-нить кварков или нейтрино


        1. vadimr
          05.12.2022 14:44
          +1

          Никто ж не знает, как они тогда осциллировали.


      1. eungenue
        05.12.2022 15:20

        Ведь время - относительно - это то вы понимаете? (С)

        В любой процессорной технике время - непрерывно и монотонно. Да и у людей и вообще чего угодно. Это свойство вселенной. Пока мы договорились измерять атомами цезия. И по своей сути это счетчик, непрерывный и монотонный.

        а вот мыслим мы традиционно в контексте календарей, хотя называем это тоже «временем».

        Задачи поиска точек во времени звучат обычно так - «через неделю», или «1 числа каждого месяца» или «ежедневно в 00:05». Между тем всё это отсылка к календарям. А таймер на железе должен сработать в непрерывной и монотонной системе. Перевод из системы в систему требуется неизбежно. Но в силу вот этой языковой вольности очень часто ускользает от разработчика.


        1. chabapok
          06.12.2022 16:47

          В любой процессорной технике время - непрерывно и монотонно.

          вот как раз нет. И особенно нет в х86


        1. BugM
          06.12.2022 18:18

          В любой процессорной технике время - непрерывно и монотонно

          Пока не пришел пользователь и не поменял время из каких-то свих соображений.

          В распределенных системах все еще веселее. На разных узлах время может быть произвольным. Прям вообще произвольным. А в самых запущенных случаях оно еще и идет с разной скоростью.


    1. vadimr
      05.12.2022 13:43

      Имхо, время в GPS, лишенное високосных секунд - пример более удачного подхода. А вот Глонасс с високосными - неудачный. Теперь одним можно ничего не делать, а другим придется переписывать.

      Не так. В ГЛОНАСС придётся переписывать борт, а в GPS – все приёмники.


      1. inkelyad
        05.12.2022 13:51

        Я несколько не понимаю, где там (что там, что там) вообще високосную секунду можно воткнуть. 'Прошло xyz.abcd мегасекунд от сотворения мира (c учетом поправок теории относительности - говорят, там это уже нужно учитывать)' - ну и пусть тикает монотонно. А то что на циферблате показывается - как-нибудь потом пересчитаем, оно для расчета координат вроде бы не должно быть нужно.


        1. vadimr
          05.12.2022 13:54
          +1

          Для расчёта координат оно не нужно, но это не единственная функция ГНСС. Нужно для определения текущего календарного времени у потребителя.

          ГЛОНАСС передаёт фактическое время, а GPS – такое, каким оно было бы, если бы с 1970 года не было високосных секунд.


    1. StjarnornasFred
      06.12.2022 15:02

      Ещё точнее - проблема в том, что "в быту" для измерения времени исторически прижились несколько взаимно некратных величин (сутки, год), от которых по странным схемам пошло формирование кратных:

      • Час, минута, секунда - 1/N доля от суток. А почему не 1/М?

      • Месяц - примерно 1/12 от года, т. е. примерно 30 суток. А почему не 1/13?

      • Неделя - 7 суток. А почему не 8 и не 6?

      • Век - 100 лет, ну тут хотя бы понятно почему.

      В итоге у нас неделя не совпадает с годом и месяцем, сутки не совпадают с годом и нужно городить костыли, цифры везде какие-то непонятные, в секунде не 60 миллисекунд...

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


      1. ksbes
        06.12.2022 15:47
        +1

        Час, минута, секунда — 1/N доля от суток. А почему не 1/М?
        По арифметичко-астрономическим причинам. У 60 делители — 2,3,4,5,6. Это очень удобно, если вы не можете в дроби, но делить хотите. И к тому же в году примерно 60*6 = 360 дней. Очень очевидный и удобный выбор!
        Месяц — примерно 1/12 от года, т. е. примерно 30 суток. А почему не 1/13
        тупо Луна. Её цикл в среднем ближе к 1/12. Ну и женский цикл… Ну и опять-таки 12 — делить удобно (симестр/триместр/квартал)
        Неделя — 7 суток. А почему не 8 и не 6?
        Четверть лунного месяца. Почему четверть? — потому что по четвертям фазы луны отслеживать легко. Даже считать дни не надо!

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


  1. amuralex
    05.12.2022 15:02
    +4

    Меня больше всего удивляет перевод времени из 24 часового формата в 12 часовой: между 11:58 am 11:59 am всего 1 минута, а между 11:59 am и 12:00 am полдня, а точнее 11 часов и 59 минут.


    1. eurol
      05.12.2022 16:39

      Это смотря в какую сторону...

      Ведь от Пасхи до Рождества и от Рождества до Пасхи не одно и то же число дней! Не говоря уже, что Пасха в разные дни отмечается.


    1. Mingun
      05.12.2022 16:49
      +1

      Все логично, если вспомнить, что 12 часовой формат использовался на круглом циферблате и начало там помечено не цифрой 0, а цифрой 12


  1. astenix
    05.12.2022 22:05
    +1

    Оказывается, в репозиториях Debian 11.5 «bullseye» нет cal

    Есть ccal.

    Команду ccal sep 1752 утилита отрабатывает без интересующих нас искажений.


  1. perfect_genius
    06.12.2022 01:14

    Кто-то где-то в интернете "задротливо" учитывает весь этот ужас и вовремя подправляет в своей библиотеке на ГитХабе?


    Также значит, что можно лишь усмехнуться от очередного гения/таланта на ТВ, который может назвать день недели по любой дате, которую ему назовут, да?


  1. Persik1
    06.12.2022 06:06

    Был в этом музее, безумные впечатления оставил


  1. Fedorkov
    06.12.2022 09:10
    +4

    Не все страны или их части переводят часы на лето. К примеру, штат Аризона от этой практики отказался в 1968, хотя остальные материковые США сохраняют традицию.

    За исключением резервации Навахо, где часы переводят (как в остальных штатах); но в ней есть резервация-анклав Хопи, где перевод часов отменили (как в остальной Аризоне).