Музей-скансен эпохи Средневековья в Дании в режиме обычной работы (слева) ставит целью воссоздать повседневную жизнь города на стыке 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)
osipov_dv
04.12.2022 16:56+2вот этот ролик, в свое время очень по-радовал https://youtu.be/-5wpm-gesOY
boojum
04.12.2022 17:41+3Заблуждение 1. В сутках 24 часа или 86 400 секунд
Тем не менее в питоне
timedelta(days=1) == timedelta(seconds=86400)
perfect_genius
04.12.2022 19:19+9Заблуждение о цветах: все русскоговорящие знают слово "фуксия".
Будет ли заблуждением считать, что кто-то где-то в интернете "задротливо" учитывает весь этот ужас и вовремя подправляет в своей библиотеке на ГитХабе?
avaava
05.12.2022 10:32+4Прошу прощения, но квантор общности споткнулся на мне.
Есть ли где-нибудь доходчивое описание цветов? А то я не могу представить себе персиковый, мадженту, асфальт и прочие цвета из новояза. Я вообще RGB-цветный (радуга и семь цветов, остальное не назову). Понимаю, что вопрос сложный и у разных народов свои названия (японцы вообще зеленый и синий путают, там даже есть светофоры с синим светом), но все же.
Myclass
05.12.2022 11:26+1Есть ли где-нибудь доходчивое описание цветов?
доходчивое для кого? Слепого человека, человека, страдающего дальтонизмом или никогда в жизни не видившего ни асфальта, ни персика, ни свинца, ни апельсина, ни граната, ни клюквы итд. - для кого? Привидите пример как вы на пальцах сможете рубиновый цвет описать, который за долго до rgb был известен?
Ну ладно с цветами, а как у вас с чувствами, эмоциями или описаниями с помощью слов - прилагательных? Ведь как вам объяснить значения эмоций - радости, счастья, страдания или горя? Или таких прилагательных как современный, насыщенный, признательный, и миллионы других. Ведь для всего этого нет ни каталога сравнений, да и пощупать значение этих слов невозможно. А особенно всяких новых как - быть в тренде, хайповать, чилить, шазамить, юзать, хейтить, свайпить или описание состояния как криндж или изи.
zuek
05.12.2022 12:06+6ни персика, ни свинца, ни апельсина, ни граната
Продавцы жёлтых и белых персиков, красных апельсинов и белых гранатов смотрят на Вас неодобрительно, равно как и "разглядыватели цветов побежалости" на свинце различной степени окисленности.
...хотя и крайности про семь базовых цветов - перебор (ну, хотя бы "салатовый" и "сиреневый" - точно не "новояз")...
Классика же:
Myclass
05.12.2022 13:23Продавцы жёлтых и белых персиков, красных апельсинов и белых гранатов смотрят на Вас неодобрительно..
И что, на них надо равняться? Если кто бананы выведет синим цветом? Тоже возьмём это за основу? Или на общепринятые представления будем ориентироваться?!
perfect_genius
06.12.2022 01:12+2Я и моё окружение всю жизнь вполне комфортно живёт с цветами, которые знает мужик на первой картинке. Проблемы бывают только когда кто-то начинает выпендриваться как женщина на той-же картинке, но это редкость.
Nikeware
06.12.2022 15:12+2- А почему у вас чёрная смородина такая красная?
- Потому что ещё зелёная!
Sergey_zx
05.12.2022 13:07Эмоции определяются химией мозга.
Уровень счастья определяется дофамином. А его количество можно описать численно.
Myclass
05.12.2022 13:25Можете мне формулу счастья скинуть пожалуйста.
BugM
05.12.2022 13:26+4Легко: C17H21NO4
xenon
06.12.2022 14:44+2Но что-то как-то на практике сложно.... Это примерно как ботан-биохимик может все объяснить про эндорфин, дофамин, окситоцин, но при походе в бар, все эти знания помогают ему только чтобы потом объяснить, почему девушка не дала (потому что окситоцину мало было). А сельскому балагуру-баянисту все дают, и у всех окситоцин как надо повышается, хотя он это слово даже и не знает.
Возможно, где-то в женском организме происходит необычная хим. реакция и 22см превращаются в C17H21NO4, но не каждый химик способен эту реакцию провести.
Myclass
07.12.2022 00:06На этом целое театральное представление можно сделать или по крайней мере сцену для Comedy..класс!
drafterleo
05.12.2022 14:52Уровень счастья определяется дофамином.
Дофамин, серотонин и окситоцин обиделись такому принижению их роли в человеческом счастье.
Sergey_zx
05.12.2022 14:56+1Я не биолог, по сему конечно же изложил все грубо и не точно.
Общая же идея такова, что как можно передавать числовое значение цвета в RGB пространстве зная характеристики цветовых рецепторов, так и можно передавать эмоции в N-мерном пространстве химических рецепторов.
Myclass
05.12.2022 18:59+1Не совсем с вашими словами согласен. Но мне кажется вы увели в другую сторону. Критика первого комментария заключалась в том что мол многим людям неподьёмны современные названия цветов. Типа плиз универсальную систему подавай. А вы приводите как раз реальное положение вещей, что такой универсальной системы нет, и скорее всего и не будет.
Ded_Banzai
06.12.2022 10:01Да, непонятны. Когда мне говорят, что цвет асфальтовый, приходится просить показать фотографию. И я не понимаю, чем оранжевый отличается от апельсинового. А эти ваши мадженты, хаки, асфальты и прочее вообще не укладываются в цветовой гамме
Kanut
06.12.2022 10:03+1Ну я вполне себе могу предположить что вы действительно не можете отличать друг от друга цвета, которые другие спокойно отличают.
Примерно как с музыкальным слухом. У кого-то есть, у кого-то нет.
Ded_Banzai
06.12.2022 13:06+1Я могу отличить один цвет от другого. Я не могу ориентироваться в этих названиях, типа альмандиновый, виардо или там мардоре.
vconst
06.12.2022 19:03Потому что для этого нужна практика
Художники знают и отличают все эти охры жженые потому, что это реальные пигменты и они каждый день ими пользуются.
Одна моя бабушка занималась рукоделием, в частности — вышивала нитками мулине. Она могла посмотреть дома на два близких голубых оттенка, потом прийти в магазин и купить третий — точно между ними. Приходила домой, сравнивала — все точно
Будете много рисовать — научитесь различать десятки оттенков по названиям
Ded_Banzai
07.12.2022 04:50Но я не художник, как и большинство людей. Поэтому мне непонятны такие слова. Я догадываюсь, что они обозначают определенный оттенок какого-нибудь цвета, но не понимаю, какой. В обыденной речи сложно такое воспринимать.
Myclass
06.12.2022 10:56Да, непонятны. Когда мне говорят, что цвет асфальтовый, приходится просить показать фотографию. И я не понимаю, чем оранжевый отличается от апельсинового. А эти ваши мадженты, хаки, асфальты и прочее вообще не укладываются в цветовой гамме
Со вторым примером насчёт апельсина могу согласится. Но пример с асфальтом - это какое-то занудство. Вы что асфальт никогда не видели? Конечно видели. те. цвет асфальта можете себе представить, даже если вы его зелёного дерева не можете отличить. То, что у человека могут быть проблемы с цветами и оттенками - это понятно. Но когда такой человек, видя вокруг себя боольшее количество людей, которые с этим не имеют проблем - хочет ставить свой недостаток в основу системы - это что-то новое в науке.
Kanut
06.12.2022 11:10Со вторым примером насчёт апельсина могу согласится.
Для прикола загуглил. Если поставить их рядом, то я разницу вижу. Если показывать мне рэндомно только один, то в жизни не скажу какой из них какой :)
valery1707
06.12.2022 11:24+2Но пример с асфальтом - это какое-то занудство.
Какой из представленных на картинке "цветов асфальта" - "асфальтовый"?
Напрашивается "все", но ведь это уже тогда не будет какой-то конкретный цвет, да?
Kanut
06.12.2022 11:29Для разговора на бытовом уровне все эти цвета подойдут. Конкретный цвет это например "цвет мокрого асфальта", он же "#505050".
Cerberuser
06.12.2022 12:03+1Для разговора на бытовом уровне все эти цвета - серые. Ну, кроме тех, которые скорее чёрные.
Kanut
06.12.2022 12:05+1Ну это вполне себе может зависеть от окружения.В любом случае не вижу особой проблемы в том чтобы понять что примерно подразумевают когда говорят "цвет асфальта" или там "апельсиновый".
Вот "фуксия" лично для меня проблема. Потому что лично мне уже надо гуглить что это такое :)
Cerberuser
06.12.2022 12:09Так вопрос-то не в этом, а в том, что наличие отдельного понятия подразумевает наличие отдельного смысла. Асфальтовый - не просто серый, а конкретный серый. Апельсиновый - не просто оранжевый, а конкретный оранжевый, возможно, ещё и с оттенком. И большинство людей этой "конкретики", скорее всего, не знают.
Kanut
06.12.2022 12:16+1Асфальтовый это какое-то подмножество серого.
"Цвет мокрого асфальта" или "апельсиновый" это конкретный цвет в таблице цветов от какого-то там товарища из Швейцарии.
Ну и да, большинство людей с этой конкретикой сталкиваются только в случае если выбирают цвет в магазине по каким-то там карточкам. Кто-то из них потом использует это и в быту.
Myclass
06.12.2022 12:22Асфальтовый - не просто серый, а конкретный серый. Апельсиновый - не просто оранжевый, а конкретный оранжевый, возможно, ещё и с оттенком.
Да что вы говорите?! Вы вот так с людьми разговариваете? И на белую машине говорите, что она не белая, а #F8F8F8. В нормальной жизни люди используют цвета как ориентировку. Потому что цвет апельсина может варьироваться от спелости и от времени суток и освещения. Абсолютный подход - это просто неправильно. Ухудшает стиль разговора. Не понимаю такой подход.
Kanut
06.12.2022 12:27Да что вы говорите?! Вы вот так с людьми разговариваете?
Это зависит от того в каком контексте вы разговариваете с людьми.
Если вы говорите своей жене "Где мои джинсы асфальтового цвета?", то это один контекст. И точный цвет роли не играет.
Если вы говорите продавцу в магазине "Мне нужна краска с цветом 'мокрый асфальт'", то это другой контекст. И вы имеете ввиду конкретно "#505050".
Ded_Banzai
06.12.2022 13:07Отлично. А теперь попытайтесь объяснить это, например, продавцу обоев, что, мол, вам нужны обои цвета асфальта. Сколько рулонов вам придется перебрать?
Kanut
06.12.2022 13:14Не особо много. Потому что во первых продавцы обоев вполне себе понимают что под этим подразумевается. А во вторых потому что обоев в примерно этой цветовой категории не особо много. И это я вам говорю как человек недавно делавший ремонт и искавший серые обои :)
Myclass
06.12.2022 14:36И это я вам говорю как человек недавно делавший ремонт и искавший серые обои :)
..и искавший
серыеасфальтовые обои :) :) :)
У меня просто картина перед глазами, как на вас продавец смотрел-бы, если-бы вы с этих "козырей" зашли-бы.Боюсь подумать какие у авторов выше-стоящих коментариев ассоциации с коричневым цветом и как они его описывают это продавцам, когда не используют коричневый цвет, а именно как...
Kanut
06.12.2022 14:42и искавший серые асфальтовые обои :) :) :)
Ну словосочетание "мокрый асфальт" вполне себе проскакивало.
У меня просто картина перед глазами, как на вас продавец смотрел-бы, если-бы вы с этих "козырей" зашли-бы
Нормально смотрел бы. По крайней мере у нас это не то чтобы сильная редкость. Более того этот же продавец часто занимается и красками. И у него у самого есть набор табличек с цветами, которые можно намешать. И я готов спорить что среди часто предлагаемых/спрашиваемых оттенков серого "мокрый алфальт" вполне себе встречается.
transcengopher
06.12.2022 16:24У меня просто картина перед глазами, как на вас продавец смотрел-бы, если-бы вы с этих "козырей" зашли-бы.
Опытный продавец обоев поймёт даже "заходы" в духе "на полтора тона светлее мокрого асфальта". Потому что они-то как раз по специфике профессии с такими запросами встречаются постоянно.
Конечно, это не означает, что любой продавец обоев будет опытным. Особенно это видно становится если обои подбирать не в специализированных магазинах, а в огромных гипермаркетах направленности "что-то про ремонт", типа OBI или Leroy Merlin.
vconst
06.12.2022 19:05«Асфальтовый» — это просто название переменной, содержащей определенное значение.
Надо было как-то обозвать несколько оттенков темно-серого — вот придумали, что один из них будет так называться. К реальному цвету какого то асфальта это название не имеет отношения
vadimr
05.12.2022 13:23-1Либо RGB, либо радуга и семь цветов. Фиолетовый цвет радуги непредставим в RGB. Вместо него рисуется лиловый.
По сути вопроса: набрав в яндексе название цвета, увидите его в ответе. С точностью до возможностей и калибровки вашего монитора.
sdore
05.12.2022 20:21+1Давайте будем пунктуальны: фиолетовый цвет непредставим в sRGB gamut, а сама размерность цветового пространства не имеет к этому никакого отношения.
vadimr
05.12.2022 20:48Так и есть. Я, вроде, ничего другого не писал.
Fodin
06.12.2022 01:34Так-то, фиолетовый цвет радуги вполне себе представим в модели RGB, только не в цветовом пространстве sRGB.
vadimr
06.12.2022 08:32Модель RGB так называется, потому что состоит из красного, зелёного и синего цветов. Никак их синтезом невозможно получить фиолетовый, находящийся за синим.
mayorovp
06.12.2022 11:52В глазу стандартного человека всего три вида цветовых рецепторов. Относительное значение частоты/длины волны спектрального цвета тут ни при чём, имеют значения лишь величины откликов.
vadimr
06.12.2022 13:00Ну так фиолетовый цвет - это такой, который не формирует значительного отклика в красном рецепторе.
Хотя там сложные кривые отклика на самом деле.
mayorovp
06.12.2022 13:32Ну да, так и есть. Поэтому фиолетовому соответствует много синего и немного красного.
vadimr
06.12.2022 15:23-1Давайте не подменять понятия. Нет никаких “красных” колбочек. Есть три вида рецепторов со сложной спектральной характеристикой (которые, кстати, обрабатываются четырьмя каналами в мозгу). Фиолетовая длина волны, допустим, действует, на “красные” колбочки, но не действует на “зелёные” колбочки, на которые действует красная длина волны.
В общем-то мне не очень понятно, почему приходится спорить по визуально совершенно очевидному (в буквальном смысле) факту, что натуральный фиолетовый цвет не соответствует никакому из отображаемых монитором.
ksbes
06.12.2022 15:37иолетовая длина волны, допустим, действует, на “красные” колбочки, но не действует на “зелёные” колбочки
Там все волны действуют на все колбочки: у них очень сильно перекрываются спектры поглощения. Только отклик разный по интенсивности.
И если «натуральный» фиолетовый цвет вызывает отклик в «красной» колбочке 0,5, в «зелёной» 0.1, в «синей» 0,5. То и светодиодики в мониторе, которые смогут вызвать такойже отклик вызовут тоже ощущение цвета. Хотя да, формально спектр — совсем другой.
Но видеть фиолетовый цвет на (очень хорошем) мониторе вы будете так же как в реальности.
Другое дело — цветовое пространство RGB — оно действительно убого просто по построению, но это не в прямую яркости светодиодиков в мониторе. Лучше Lab какой-нибудь или что-то ещё более специализированное.
vadimr
06.12.2022 15:41-1Да не смогут светодиодики в мониторе вызвать такой же отклик, как натуральный фиолетовый цвет, потому что он не является их линейной комбинацией в базисе откликов рецепторов.
Объясняю эффект на пальцах: допустим, каждый из светодиодов R, G и B вызывает отклик в красном (или, к примеру, зелёном) рецепторе глаза, а фиолетовый цвет не вызывает. Может такое быть математически? Да запросто.
Цвета R, G и B не ортогональны друг другу в математическом смысле. Их просто выбрали, как простой способ покрыть достаточно большое цветовое пространство.
ksbes
06.12.2022 16:06Объясняю эффект на пальцах: допустим, каждый из светодиодов R, G и B вызывает отклик в красном (или, к примеру, зелёном) рецепторе глаза, а фиолетовый цвет не вызывает. Может такое быть математически? Да запросто.
Ну так наверное умные дяди могут так выбрать светодиодики, чтоб такого математически не было?
Fodin
06.12.2022 13:08Модель RGB состоит из "красного", "зеленого" и "синего" стимулов, преимущественно воздействующие на L, M, S-чувствительные колбочки сетчатки. А цвет - это ощущение человека, возникающее в его голове, в том числе в результате воздействия на колбочки. Если человек может видеть какой-то цвет, то его можно воспроизвести соответствующими стимулами. И RGB модель для этого прекрасно подходит.
Спектр тут ну практически совсем ни при чем.vadimr
06.12.2022 13:20В первой части вы правы. Но проблема в том, что светодиоды R, G и B имеют совсем не такие спектры излучения, как стимулы L, M, S. Поэтому во второй части вы неправы, нельзя с помощью RGB взвесить любой стимул, который может получить глаз.
Да что мы спорим, у вас квалиа цветов-то есть, наверное? Неужели на глаз не заметно, что в RGB далеко не все видимые цвета?
Что уж там фиолетовый, даже монохроматический лазерный зелёный на экране не передать. Ни в смысле спектра, ни в смысле ощущения.
mayorovp
06.12.2022 13:42Но проблема в том, что светодиоды R, G и B имеют совсем не такие спектры излучения, как стимулы L, M, S.
Это проблемы светодиодов, а не цветового пространства.
Идеальные R, G и B являются монохроматическими, и тот монохроматический лазерный зелёный — это как раз G.
vadimr
06.12.2022 15:25Из идеальных монохроматических излучений вы получите интерференционную картину, а не смешение цветов. Поэтому аддитивная модель не может быть монохроматической.
mayorovp
06.12.2022 15:40Во-первых, разные частоты не дадут интерференции.
Во-вторых, монохроматичность ещё не означает когерентности.
mayorovp
06.12.2022 16:01Формально — да, но там полуразность частот измеряется в терагерцах. Мы не увидим это как биение.
vadimr
06.12.2022 16:04+1Увидим как радужное переливание, знакомое нам по голографическим наклейкам. Будет формироваться новая частота из двух старых, но не по принципу цветовой аддитивности, а по принципу интерференции сигналов.
Balling
06.12.2022 10:40Нет, для этого нужен CMYKOGV. V и есть фиолетовый.
Fodin
06.12.2022 13:12KOGV используются в печати, т.к. реальных красителей CMY недостаточно и для расширения цветового охвата. Немного странно объяснять аддитивную RGB в терминах производной от нее субстрактивной CMY.
vconst
06.12.2022 19:13Немного странно объяснять аддитивную RGB в терминах производной от нее субстрактивной CMY
Не просто странно — физически невозможно и не нужно
vadimr
07.12.2022 08:32Nikon в своё время выпускал матрицы для фотоаппаратов с аддитивной матрицей CMYG. У меня был такой, Coolpix 5700. Субтрактивность к цветам CMY гвоздями не прибита.
vconst
06.12.2022 19:13Это в принципе другая модель цвета и она не предназначена для экранов и всего того, о чем идет речь. И да, она наследует все проблемы обычного цмик, в том числе и куцый цветовой охват
vconst
06.12.2022 19:09фиолетовый цвет непредставим в sRGB gamut
В данном случае — RGBэто не конкретный цветовой профиль — а абсрактный способ кодирования цвета, на основе чувствительности клеток сетчатки. Интуитивно он не очень понятен, зато легко согласуется в физиологией
tchkEn
05.12.2022 15:32+2Скорее всего такого подробного описания нет, так же как и нет константы на базовые цвета, которых ещё относительно недавно насчитывали не семь, а пять. Ну и плюс много завязано на среде, в которой человек рос: к примеру чукчи могут различать около пятидесяти оттенков белого снега, а типичный житель средней полосы нет.
vconst
06.12.2022 19:15к примеру чукчи могут различать около пятидесяти оттенков белого снега, а типичный житель средней полосы нет
Различать могут все — глаза у всех одинаковые. Каждый скажет — этот темнее, этот чуть холоднее и так далее. Но назвать их, по отдельности — не могут, просто потому что нет практикиkonst90
06.12.2022 19:42Глаза тоже бывают разные, см. Дальтонизм. И мозг разный - в смысле, опыт. По автомобилям такое можно сказать - там, где рядовой водитель (или покупатель) не увидит разницы в окраске, опытный маляр или подборщик скажет: о, да тут дверь крашеная.
vconst
06.12.2022 19:57Нет смысла брать крайности и отступления от нормы. А пример с маляром прямо говорит — что дело в опыте, а не глазах
Я могу точно сказать, чем проба отличается от оттиска и какой краски печатнику надо прибавить убавить на прессконтроле. Тоже опыт, глаза как у всехkonst90
06.12.2022 20:09+2А пример с маляром прямо говорит — что дело в опыте, а не глазах
А вот кстати не факт. Может так оказаться, что люди с глазами "не той системы" на маляра выучиться не могут, потому что не видят разницы в оттенках.
vconst
06.12.2022 21:06+1Еще раз — глаза и зрительный анализатор у всех устроены одинаково.
Если отклонений нет — то в норме, человек способен видеть и различать оттенки. Просто некоторые натренированы, потому что сначала учились в техникуме или как это сейчас называется, а потом долго работали. А другие «пришли с улицы» и сильно отстают от первых
Я ни за что не скажу, какой из цветов как называется, но могу точно определить, что «сюда немного мадженты надо добавить», что звучит абсолютной дикостью для человека с художественным образованием, напримерkonst90
06.12.2022 21:36+1"Человек в принципе способен" и "Человек способен сделать это прямо сейчас" - не очень тождественные понятия. Я вот, например, в принципе способен управлять самолётом. Но не очень натренирован, и самолёт уроню, если меня сейчас в кресло пилота посадить.
vconst
06.12.2022 21:46Умение управлять самолетом не дается от рождения
mayorovp
06.12.2022 22:12+1Зрение тоже не полностью от рождения доступно, различать объекты приходится учиться. Я вот, к примеру, не способен различать иероглифы. Понятное дело, я их отличу если дать две крупные картинки и полчаса на игру "найти 10 отличий", но вот просто посмотрев на них — ни за что не скажу одинаковые они или разные. Почему с цветами не может быть так же?
vconst
06.12.2022 22:19-2Ой не надо…
Я сегодня так обсмеялся утверждению, что знание языка и грамматики это инстинкт, что исчерпал ресурс на шутки
khajiit
06.12.2022 23:03+1Но вы все равно не совсем правы.
Глаза устроены по одному приципу, потому как он записан в ДНК.А вот реальные органические глаза довольно сильно различаются даже в пределах одной черепушки, хотя выглядят, при отсутствии совсем уж критичных патологий, одинаково.
vconst
06.12.2022 23:15-1Не настолько, чтобы они не различали оттенки, которые умеют различать художники. Потому что их не настолько уж много
Kanut
06.12.2022 23:36+1А как быть например с людьми у которых разное "цветовое восприятие" у разных глаз? Начиная от того что картинка у одного глаза "теплее". И кончая действительно тем что смотря на один и тот же предмет разными глазами люди видят разные цвета?
vconst
06.12.2022 23:51-2А, вы в своем репертуаре. Спасибо за внимание — но мне хватило нелепых страшилок про микропластик
Kanut
06.12.2022 23:54То есть если что-то не вписывается в вашу личную картину мира, то это можно просто игнорировать? Ну ок...
vconst
07.12.2022 00:00-1Нет, я игнорирую людей, которые даже с десятого раза, когда им несколько человек обьяснили одно и тоже — совершенно не в состоянии понять — о чем идет речь
Вы делаете это не настолько ярко и задорно, как Аста, когда он безапелляционно заявляет, к примеру, что знания языка и грамматики — это инстинкты
Kanut
07.12.2022 00:08+1Ну так что я могу поделать если вы не умеете нормально объяснять? Да ещё и каждый раз прекращаете дискуссию или пытаетесь уйти в сторону когда вам нечего сказать?
П.С. И я там может что-то делаю не особо ярко и задорно. Но вот я вас с "Астой" одно время постоянно путал :)
vconst
06.12.2022 23:57//вздыхает
Ну ок
Самый адовый набор цветных карандашей — это жалкие 500 оттенков. Нет никаких сложностей, чтобы отличить их один от другого. Базовых пигментов, которые используются в живописи — всего несколько десятков. Остальное многообразие — получается смешением их с белилами или сажей, иногда друг с другомЧто там можно не различить - это я просто не понимаю
Другое дело — какие-то очень узко специфичные вещи, типа профессионального теста на цветокоррекцию, когда выдают набор бумажек, которые неподготовленному человеку кажутся вообще одинаковыми, все сразу. А в живописи все совсем не так трагично — заучить полсотни наименований и соответствующий цвет — не требует каких-то сверхьестестенных глаз.
inkelyad
07.12.2022 00:04+1А в живописи все совсем не так трагично — заучить полсотни наименований и соответствующий цвет
Мне кажется, в этой дискуссии не различаются "отличить" в смысле 'вот рядом лежат и видно, что они не совпадают' и "отличить" в смысле 'увидеть цвет и сразу правильно его назвать'.
Я вот сильно не уверен, что без длительной тренировки можно добиться второго. Точно так же, как без достаточно длительной тренировки нельзя научиться сразу называть услышанную ноту -- хотя их тоже не так уж и много.
vconst
07.12.2022 00:16А я о чем говорю???
О том же самом — эти оттенки способен различить любой человек, а для точного названия каждого в отдельности — надо тренироваться. Я как раз с этого и начал
inkelyad
07.12.2022 00:31Хм. Пожалуй, нужен еще один случай. Промежуточный между этими двумя.
Когда тебе показывают цвет, убирают, ждут достаточное время, показывают тот же или слегка отличающийся и спрашивают 'тот же цвет был?'.
Есть подозрение, что количество цветов, который человек может различить во всех этих трех случаях - несколько не одно и то же без специальных тренировок.
Myclass
07.12.2022 02:35+4Зачем пытаться придумывать сложное, если есть и простые правила, как обвести человеческое восприятие вокруг пальца. Наши глаза не сенсоры, которые воспринимают цвет как что-то абсолютное. Окружающие предметы, подсветка или как в этом случае ассоциация в нашей голове, что темные поля всегда темнее светлых - обманывают нас при интерпритации цветов. А вы - показать/спрятать/спросить итд.
mayorovp
07.12.2022 08:28+1Зря вы именно эту картинку привели. В целом-то я с вами согласен, но вот на этой картинке клетки A и B имеют различную окраску если тень — настоящая, а не нарисованная.
konst90
07.12.2022 09:22+3Но тут-то она нарисованная. И в контексте живописи и карандашей тоже будет нарисованная.
tchkEn
06.12.2022 21:28+2Различать могут все — глаза у всех одинаковые
С одной стороны принцип устройства глаз у всех одинаковый, но с другой количество клеток в сетчатки глаза, отвечающих за цветовосприятие, может варьироваться от человека к человеку. Вот и получаем что есть среднестатистическое цветовосприятие, но далеко не все могут видеть отличия в определенных оттенках даже без патологий зрения (дальтонизма).
tvr
07.12.2022 12:38+2Различать могут все — глаза у всех одинаковые.
Вспомнилось мне одно небезызвестное платьице.vconst
07.12.2022 12:52-1У меня, как у профессионала, которому часто приходится обрабатывать снимки с сильно сбитым балансом белого, снятых в сложном освещении, когда с разных сторон люминесцентные лампы с разной цветовой температурой. В таких случаях цвета искажаются довольно характерно и легко возвращаются обратно
SerjV
06.12.2022 03:17Я вообще RGB-цветный (радуга и семь цветов, остальное не назову)
с учётом того, что физически в радуге бесконечно цветов, а конечное число цветов - как количество цветов, так и конкретные цвета в её составе - имеют языковую природу (то есть в разных языках у радуги может быть разное число цветов, и даже если число совпадает - то, например, это могут быть не те же самые цвета, а, например, наши синий и зелёный там будут считаться одним цветом)... Ох, даже с радугой всё непросто, что уж про время-то говорить...
Mingun
04.12.2022 19:19+6По юлианскому календарю продолжают жить монастыри горы Афон. Иногда происходил обратный процесс: с григорианского календаря страна переходила обратно на юлианский, создавая месяцы длиннее 30 дней. К примеру, Литовская губерния в 1800 году после 11 января вернулась в 1 января. Сможет ли любая система корректно сказать, в какой день недели родился человек из той эпохи?
Бессмысленный вопрос. Это разные календари, и путаница может быть только когда время выводится текстом, т.к. нет практики указывать, какой календарь используется. Проблема же с программой
cal
в том, что она зачем-то решила вывести 2 календаря одновременно, совершенно от балды выбрав день, когда заканчивается один и начинается другой.
lxsmkv
04.12.2022 19:43+5Стараешься не вникать в счет времени пока тебя это не коснется в работе. Но тогда уже как правило поздно (прошу прощения за каламбур).
To же самое с представлением чисел с плавающей точкой в компьютере. Ты знаешь, что там есть свои особенности, но не вникаешь в них пока тебя это не коснется в работе.
Спасибо за материал!
0x1A4
04.12.2022 20:17+8Россия перешла на григорианский календарь в 1918 году с прыжком в 13 дней
Не вся, РПЦ до сих пор не перешла. Рождество в России отмечается 25 декабря по юлианскому календарю, по григорианскому это 7 января следующего года.Заблуждение 3. В месяце 30 дней
Это заблуждения тех, кто в школе не учился?
Заблуждение 8: Часовых поясов не больше 24mrsantak
05.12.2022 00:40+3Это заблуждения тех, кто в школе не учился?
Ну я вот тоже так думал. Я потом наткнулся в одном проекте, что месяц принимался за 30.5 дней. В биллинге, блин. Конечно же, нафига в биллинге точность выше чем плюс-минус день?.. И эта погань там проросла везде, как же я в своё время задолбался это вычищать. И ведь написал это сеньорный сеньор.
0x1A4
05.12.2022 02:38+15В биллинге, блин.
У Мегафона есть тарифы, в которых плата за интернет списывается раз в 28 дней, то есть 13 раз за год. Вот он прогрессивный взгляд на время =)mikelavr
05.12.2022 08:02+11Я как то это объяснял девочке в салоне Мегафона. Она утверждала, что "платить раз в 4 недели очень удобно!". Я возражал, что зарплату почему то платят по другому графику - немного реже.
Layan
05.12.2022 15:48Я возражал, что зарплату почему то платят по другому графику - немного реже.
А ведь есть и "тарифы зарплат", где платят и по такому графику, и по более частому.
PuerteMuerte
05.12.2022 18:40+4Вот он прогрессивный взгляд на время =)
Здесь дело не совсем во времени, просто тарифный план в Мегафоне придумывали те же люди, у которых в пакете молока 900 мл, а в упаковке яиц 9 штук.
xenon
06.12.2022 15:06Я бешусь, что Scaleway не пишет помесячные цены за свои виртуалки, а пишет вроде 0.0001/час. Причем за диск, IP адрес и прочие неотъемлимые вещи - отдельно еще. Так что, фиг посчитаешь, сколько тебе выйдет в месяц. А если даже посчитаешь и посчитаешь правильно - не будет уверенности, что точно правильно посчитал.
И в биллинг захожу, у меня за скромненьку VPS снимается то 2.20, то 2.27. Думаю, что за чертовщина! А потом понял, что это же 30-31 день. Отчасти логично - день - штука достаточно объективная, а вот месяц - то 28, то 31.
Надеюсь, для честности, високосную секунду включать в счет не будут....
Ndochp
06.12.2022 17:23+1С меня билайн за 2 минуты межгорода снял 20 руб 29коп. Девочка в техподдержке на голубом глазу объясняла, что несмотря на то, что в прайсе написано 10р14коп то, что они внутри вычисляют все с точностью до 4 знаков после запятой приводит к нечетной сумме при умножении на 2.
(не, я догадываюсь, что эти умники со времен УЕ не поменяли софт, а зафиксировали курс и 10.14 это не 10.14, а сколько-то уе умноженное на курс и округленное до двух знаков, но тем не менее… Оно же в прайсе в РФ. Нельзя было целое число копеек в цену поставить?)
vconst
06.12.2022 19:18Я бешусь, что Scaleway не пишет помесячные цены за свои виртуалки, а пишет вроде 0.0001/час.
Ээээээ…
Если они не поменяли интерфейс от того, который я помню — там есть здоровенный переключатель «час-месяц». Дернешь его — и все сразу понятно. Калькулятор там тоже все правильно считает и раскладывает отдельно каждый айпишник и любой другой параметр, суммируя сколько будет, можно поиграться галочками и прикинуть — надо оно тебе или нет за такие деньгиxenon
06.12.2022 21:03+1Может я чего не вижу? Вот мне интересны позиции Dev1-s и Startdust1-s.
Вот прайс: https://www.scaleway.com/en/pricing/ , огромный переключатель вроде есть.
Если переключиться в раздел Compute - то там будут dev/stardust, но с почасовой ценой, а переключалки уже нет. В разделе All я их не вижу. По фильтрам если выбирать, они есть, но показывается только часовая. Попробуйте сами, как у вас будет?vconst
06.12.2022 21:11+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)
Короче один написал и даже не протестировал, другой взял чужой кусок кода…konst90
05.12.2022 15:51Эм, а разве нельзя умножить разницу в годах на 12 и прибавить разницу в номере месяца? Даты-то уже есть, значит в них есть год и месяц.
bogolt
05.12.2022 16:40+1Да именно так и сделал, там еще нужно учесть день на случай если месяцы равны. Просто указываю что очевидное, простое и легко гуглящееся решение оказалось очень плохим.
BMXer_V
05.12.2022 01:26+3Если РПЦ протянет до 2101го, будет интересно посмотреть, что они будут делать и когда будут праздновать своё Рождество начиная с этого года!
dom1n1k
05.12.2022 04:55+1Это заблуждения тех, кто в школе не учился?
Имеется в виду, что программист при написании кода может делать неявные предположения о предметной области. А проще говоря — элементарно «не подумал», не обработал ситуацию.
dmitryvolochaev
04.12.2022 20:50+8Говоря об исключениях для конкретных применений, стоит вспомнить телепрограмму, где граница суток - это 6 утра, а не полночь
konst90
04.12.2022 21:55+9Хотелось бы видеть подобное исключение для голосовых помощников. Или хотя бы уточнение.
А то попросишь, например, Алису в 0:02 поставить будильник на завтра - получишь не то, чего хотел
ghostiam
06.12.2022 10:08+2Сири спрашивает, что вы имеете ввиду, сегодня (такая дата) или завтра (такая дата)
BogdanPetrov
04.12.2022 22:08+2Точно, есть такое. Приходилось работать с такими данными, там время так и указывалось, например, "27:13:45". Для удобства переводил в обычный вид. Только почему-то запомнилось, что не 6 утра, а сутки с 5 часов до 29 часов.
roofcat
05.12.2022 14:335-29 раньше было стандартом для всяких телевизионных отчетов, рейтинги, доля, вот это вот все. Во времена, когда TNS еще был Гэллапом, до того, как он стал Медиаскопом :)
abutorin
04.12.2022 22:39+1Вроде как на ЖД раньше был какой-то нюанс с началом суток. Был случай у меня, как-то давно родственники должны были приехать ночью, как раз в период этого "нюанса". В результате они приехали на 1 день раньше, пришлось им "под дверью" сидеть.
NP447
05.12.2022 04:27+1Это скорее всего либо московское/местное время, либо момент сезонного перевода часов. Либо поезда, ходящие через день (по четным и нечетным числам) и соответственно стык 31 и 1 числа месяца.
ksbes
05.12.2022 11:05+3В РЖД сутки меняются в полночь. Это я хорошо помню. У меня поезд к родственикам в час ночи отходит — я один раз его пропускал и они два раза у меня так задерживались: поезд, скажем, 5-го числа и, соответсвенно, 5го вечером они и собирались :)
xenon
06.12.2022 16:26Вроде с ЖД это все и началось. Что такое полдень - это понятно и легко установить по тени от палочки или колокольни. Но в каждом городе свой полдень, по чуть-чуть отличается. И важно как-то планировать, чтобы время было единым на всей дороге, а то поезд, который в 00:00 по одному времени столкнется с поездом, который там же в 00:10 но по другому времени. В итоге, время на ЖД вроде починили, зато полдни поломали....
mayorovp
06.12.2022 16:49От столкновения поезда защищает совсем другая система, а точное время нужно для планирования.
dom1n1k
05.12.2022 04:59+2Кстати, есть ещё такое понятие, как метеорологические сутки. И метеостатистика обычно привязана к ним (во всяком случае раньше так было, сейчас может что-то поменялось).
Всех деталей не помню, но что-то типа метеорологические полночи идут через 3 часа — типа три соседних часовых пояса как бы склеивается в один.BogdanPetrov
05.12.2022 13:07+1Да, с этим сразу сталкиваешься, если попытаться самостоятельно агрегировать данные с метеостанции, например получить среднюю или минимальную температуру (и сверить с какими-то другими результатами).
Немного подробностей есть тут: http://pogodaiklimat.ru/faq.php
dom1n1k
05.12.2022 20:00Выглядит, честно говоря, как атавизм из эпохи бумажных журналов и логарифмических линеек. Зачем это нужно в 21 веке, кроме мифической обратной совместимости, я не понимаю.
konst90
06.12.2022 10:14Она не мифическая. Я как-то беседовал с синоптиками - у них многое до сих пор на Фортране крутится, потому что написано огромное множество кода, и переписать всё это плюс проверить на отсутствие багов (а могут быть такие, которые с первого взгляда не видно, но результаты оно исказит) - банально нет денег.
mayorovp
06.12.2022 12:07Такое происходит довольно часто.
Скажем, на одном из проектов где я участвовал, границей суток считалось 8 утра по Московскому времени — именно с 8 до 8 формировались все суточные отчёты.
А прямо сейчас на проекте есть подсчёт числа незакрытых вчерашних заказов, и что-то мне подсказывает что однажды заказчик тоже попросит границу суток передвинуть.
Ещё, как я слышал, в розничной торговле "кассовые сутки" заканчиваются с окончанием смены — то есть где-то в 10-11 часов по местному времени (а ещё если касса закрывается вручную — сутки выходят переменной длины).
Yuribtr
04.12.2022 21:52+1Почему бы учитывая все эти сложности не хранить даты по возможности в timestamp формате? Есть какие нибудь минусы этого подхода, кроме того что этот формат не человекочитаемый?
BugM
05.12.2022 00:00+3Хранить-то можно. Проблемы возникают при взаимодействии с внешним миром. Который хочет даты в человекопонятном формате. И в своей таймзоне заодно.
Типовое хранение GMT + TZ в среднем удобнее с учетом необходимости взаимодействия с людьми.
asergrisa
05.12.2022 03:04-1Удобнее как раз хранить в Unix time, т.е. в количестве секунд от 1970 года. А вот людям уже выдавать как нормально отформатированую дату в их календаре с их часовым поясом.
BugM
05.12.2022 03:14+8timestamp вызывает у программистов непреодолимое желание обращаться с ним неправильно. Например, прибавить 3600 и думать что это будет через час. Или еще море подобных неверных штук.
Если ваш язык позволяет напрочь запретить так делать я рад. Типовые языки увы так не позволяют. А на ревью все такое отслеживать муторно и черевато пропусками.
Значит используем подходящий тип данных, который своим видом и своими свойствами заставит программистов правильно с ним обращаться и не совершать таких глупых ошибок.
barker
05.12.2022 09:53+4прибавить 3600 и думать
Именно тут какие подводные камни кроме високосных секунд? Которые и так идут вне равномерности юниксайма и прочих tzdata? Это ведь будет действительно через час, различия могут быть только при форматировании времени (т.е с учётом конкретной tz), нет?
mrsantak
05.12.2022 10:54+2А попробуйте прибавить к timestamp уже не час, а месяц. Я чуть выше писал про месяц в 30.5 дней. Такая срань как раз и возникла, потому что дата в timestamp хранилась.
Mingun
05.12.2022 16:44Все-таки час — это вполне однозначная мера промежутка, а вот месяц — плавающее значение. Естественно, если к числу прибавляем UNKNOWN то получим UNKNOWN.
BugM
05.12.2022 17:40Час превращается в любую другую величину при доработке через какое-то время. Не надо зацикливаться именно на нем. Я про идею почему timestamp плох.
mrsantak
06.12.2022 13:18+1Все-таки час — это вполне однозначная мера промежутка
Вы статью-то читали? Перевод часов выпавший на ваш час превратит его в иинтервал отличный от 3600 секунд.
Mingun
06.12.2022 15:01+1Вы не путайте промежуток и две отсечки на шкале времени. Час определяется, как 3600 секунд. Чего не скажешь о месяце, который то 30, то 31, а то и вовсе 28 или 29 дней.
BugM
06.12.2022 15:32+1Пользовательские сценарии и алгоритмы их обработки бывают разными.
Сценарий «поставь будильник через час» реализованный через сложение секунд в таймстемпах и поставку крона на получившееся время в момент перевода часов может дать интересный результат.
Такие мелочи важны. Именно они дают пользователям радость или ненависть ко всем этим вашим технологиям.
Rsa97
06.12.2022 16:11Сценарий «поставь будильник через час» реализованный через сложение секунд в таймстемпах и поставку крона на получившееся время в момент перевода часов может дать интересный результат.
Берём текущий таймстамп, прибавляем к нему 3600, переводим в локальное время. Если за этот час будет перевод часов, то и локальное время мы получим уже с коррекцией. В результате будильник разбудит нас ровно через час, как заказывали.
Если говорим «поставь будильник на 02:30», а этого момента не будет, (01:59:59 -> 03:00:00) то попытка перевести указанное время в таймстамп должна выдавать ошибку и потребуется разъяснение пользователя, что же именно он имел в виду.
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
С правильностью второго поведения можно спорить, но первое точно неверное. У вас вся логика основанная на "случится после" отработает неверно. Допустим клинер уже прошедших событий удалит запись о будильнике.
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 имеются в виду, первые или вторые и соответственно выставить таймстамп будильника.
Если надо выставить время в кроне, то однозначного решения для локального времени всё равно нет. Событие, выставленное на интервал перевода времени на час назад отработает дважды. Выставленное на интервал перевода времени на час вперёд не отработает ни раза.
Rsa97
07.12.2022 07:34+1Да, и попробуйте свой второй способ с таймстампом 1648342200. Получите время 2022-03-27T01:49:00, которого вообще не существовало в Лондоне.
funca
05.12.2022 11:11+3https://man7.org/linux/man-pages/man2/clock_gettime.2.html
Технически, каждый хост живёт в некотором своем текущем времени. В линуксах есть уже почти десяток констант, сильно меняющих представление о нем, в зависимости от вопроса. 3600 это 3600 секунд, а что такое через час и во сколько это будет - уже вопросы консенсуса. Причем часто ответа в рамках хоста не достаточно - нужен глобальный консенсус (в рамках всей вашей системы).
konst90
05.12.2022 13:04+3Именно тут какие подводные камни кроме високосных секунд?
Перевод часов? Прибавили к 1:30:00 час, получили 2:30:00, а оно не наступило, потому что после 1:59:59 сразу идёт 3:00:00.
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).
Никаких проблем.inkelyad
05.12.2022 14:05+4Проблема в том, что не указано, какое именно 'через час' хотелось. То, которое 'по прошествии указанного количество времени' или то, которое 'циферблат часов должен показывать на единицу часов больше'.
Вот если нам нужно было было второе - то расчет неправильный. Потому что 2:30 действительно не наступило и этого события не было.
Mingun
05.12.2022 16:46+2ИМХО, про второй случай говорить "через час" вообще неправильно. "В такой-то час" (с дробями) еще можно...
barker
06.12.2022 10:43Ну, при переводе часов unixtime не меняется же, он идёт дальше как и шел равномерно и прямолинейно. Через час (=60 минут, и 60*60 секунд) при любых переводах часов и обнаружении себя в любой точке мира будет +3600 к текущему значению unixtime без вариантов. Где там не наступило 2:30 это вопрос исключительно локального времени, в конкретной tz, о чём я и написал ..
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 наконец наступит.
Я не уверен, что тут в принципе возможна хорошая универсальная обработка.
khajiit
06.12.2022 11:22Тут явное нарушение: или говоришь что сделать, или как, но не оба сразу.
В данном случае задача выйти из дома за 3.5 часа до рейса, а не выйти из дома в 2:30.konst90
06.12.2022 11:29+2задача выйти из дома за 3.5 часа до рейса, а не выйти из дома в 2:30.
Для пользователя в 99% случаев (вернее, в 363/365) эти задачи идентичны, и проговаривать "поставь уведомление за 3.5 часа до 6:00" он не будет, потому что может посчитать это в уме (а время рейса Алиса может не знать). И проблем с обработкой не будет, что характерно. А вот два дня в году эта схема даст сбой, и именно в таких случаях нужно правильно обработать ситуацию, чтобы помочь человеку успеть на самолёт.
khajiit
06.12.2022 11:50-2Ваше решение покрывает только случай перевода стрелок вперед, в случае перевода назад будет два 2:30, это раз.
Аэропорт может находиться физически рядом, но в другом часовом поясе или часовой пояс может смениться для аэропорта иначе, чем для путешественника, это два.Оба этих случая ваше решение не покрывает, в то время как правильная формулировка покрывает не только эти случаи.
konst90
06.12.2022 12:05+2правильная формулировка покрывает не только эти случаи.
Проблема в том, что голосовые помощники создаются не строго для тех, кто может формулировать точные ТЗ с учётом редких факторов, а для рядовых пользователей. И именно поэтому они должны уметь отрабатывать ситуации, которые пользователь может забыть или упустить - они же в конце концов позиционируются как помощники, а не как тупые исполнители.
Поэтому отработка события, установленного пользователем на 2:30, может (если мы хотим помочь человеку, а не как-формально выполнить команду) быть, в зависимости от задачи, выполнена в 1:30 (если это напоминание о самолёте), в 3:30 (если он в 0:30 поставил таймер, чтобы мясо готовилось 120 минут) или не выполнена вообще (редкий случай - нам, скажем, нужна ночная фотография часов на Спасской башне со стрелками на 2:30).
khajiit
06.12.2022 12:10+1они же в конце концов позиционируются как помощники, а не как тупые исполнители
именно поэтому надо быстро, решительно забыть про императивные формулировки.
выполнена в 1:30 (если это напоминание о самолёте), в 3:30 (если он в 0:30 поставил таймер, чтобы мясо готовилось 120 минут
Так помощник или гадалка? )
Ни одна из этих задач не должна быть выполнена таким образом.
konst90
06.12.2022 12:23Так помощник или гадалка?
Помощники - живые, по крайней мере - умеют переспрашивать, если задача в текущей формулировке может быть выполнена не так, как ожидает отдающий команду. Проблема в том, что для ожиданий нужен интеллект, а не тупое следование формальным правилам.
Но мысль, которую я хочу донести, не меняется: в одном случае решение "прибавить 7200 к текущему таймштампу" позволит получить результат, нужный пользователю, а в другом - всплывёт подводный камень в виде опоздания на самолёт (и, опционально - в виде орущего на весь дом помощника следующей ночью).
khajiit
06.12.2022 12:45-1Вы одновременно наделяете помощник сверхинтеллектом, предполагая, что он способен задавать уточняющие вопросы до полного выяснения задачи, тут же превращаетет его в тупого исполнителя, формулируя задачу императивно.
При этом совершенно игнорируете тот факт, что императивно сформулированная задача не требует уточнений.Помощнику нужно сформулировать задачу и снабдить достаточным набором информации для её решения — и все.
Для того, чтобы выключить мясо через два часа не нужно ставить будильник, нужно ставить таймер.
Чтобы успеть к самолету — не нужно выйти ровно за 3,5 часа до вылета, а нужно учесть массу факторов: от очереди на регистрацию/досмотр и пробок до ЖД-станции под аэропортом и смены часовых поясов.При этом желание пользователя, раз он пользуется помощником, — исключить человеческий фактор, а императивная формулировка прямо ограничивает снизу пространство для ошибок — человеческим фактором, к которому вы еще предлагаете добавить неопределенность в виде угадайки.
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?
khajiit
06.12.2022 20:06Если пользователь поставил таймер на два часа — под капотом там вполне может быть "озвучить уведомление в [нынешний таймштамп плюс 7200]"
Так это одно и то же =)
Более того, именно этот вариант и должен использоваться: мясу и духовке все равно на отображение даты, а ошибка чревата или горячее — сырым! или суп, который ты варил, дожарился и высох в угли.Я предлагаю переспросить, если возможна неопределенность или неверное исполнение
И что можно неверно исполнить в абсолютно корректном императиве установи уведомление сегодня на 2:30? Время корректное, дата и действие тоже.
а оно не случится из-за перевода часов
Ага, так бывает, если вместо решения задачи сперва страдать фигней, доказывая машине кто здесь хозяин, а потом требовать от нее манкипатчинга с телепатией.
озвучивать уведомление в 3:00 со словами "уведомляю с опозданием на полчаса, в 2:30 не получилось по техническим причинам"
Кстати, это будет с опережением
А как, во-вашему, должна быть обработана императивная команда
Она вообще не должна возникнуть в рассматриваемом случае.
Есть задача, задача перемещения тушки к условленному моменту в определенное место. ВСЁ. Не надо показывать, кто тут круче и делать за машину ее работу (через одо место и даже не на половину) — у нее мозги железные, она пусть и считает.
konst90
06.12.2022 20:32+1И что можно неверно исполнить в абсолютно корректном императиве установи уведомление сегодня на 2:30? Время корректное, дата и действие тоже.
В том и проблема, что раз в год это сочетание даты и времени будет некорректным. В смысле - что времени 2:30 в этих сутках нет. Так во сколько должно звучать уведомление после корректного императива?
Кстати, это будет с опережением
Это зависит от задачи. В случае с аэропортом - с опозданием, в случае с мясом - с опережением.
Она вообще не должна возникнуть в рассматриваемом случае.
Повторюсь - проблема в том, что голосовые помощники создаются не строго для тех, кто может формулировать точные ТЗ с учётом редких факторов, а для рядовых пользователей. Пользователь по каким-то своим соображениям попросил уведомить его в 2:30. Он забыл, что 2:30 в этих сутках нет, потому что ситуация эта - редкая. Помощник в этой ситуации должен помочь пользователю. А подумать, как обработать некорректное сочетание даты и времени, должен программист этого помощника - а не надеяться, что таймштамп с тупым прибавлением секунд может обработать любую ситуацию.
У вас, простите, какой-то айтишный снобизм, что рядовой пользователь должен быть умнее машины, а машина должна тупо исполнять команды. Но это время закончилось довольно давно - и сейчас пользователем может быть трехлетний ребенок, домохозяйка или слесарь пенсионного возраста (при всём моём уважении к слесарям - с IT у них порой не очень хорошо), у которых в принципе нет опыта общения с программами, зато есть красивая колонка, которая умеет понимать голос и выполнять команды. И если техподдержка на претензию "Почему уведомление на 2:30 не сработало и я опоздал в аэропорт" ответит из той же колонки (потому что по-другому наш слесарь не умеет) не "извините, наш помощник туповат, но мы учтём и исправим, вот вам промокод", а "не надо показывать, кто тут круче" - высока вероятность, что колонка полетит в стену, подписки не будет, плюс соседи по гаражам точно никогда эту штуку не купят, послушав эту историю.
khajiit
06.12.2022 21:44-1В том и проблема, что раз в год это сочетание даты и времени будет некорректным
Этого нельзя утверждать без контретного TZ, а он не указан.
Чтобы знать TZ надо иметь актуальные базы и геопозицию.
Что приводит нас опять к тому, что надо не умничать самому, а отдать расчеты машине.проблема в том, что голосовые помощники создаются не строго для тех, кто может формулировать точные ТЗ с учётом редких факторов, а для рядовых пользователей
И-мен-но!
И надо решать задачу пользователя, а не пытаться угадать почему же занавески синие, тем более — не перекладывать на пользователя работу машины, и уж подавно — не усложнять задачу, заранее сделав неправильно часть работы машины за машину.
Задача пользователя — попасть на посадку вовремя. Если известно, что формальности занимают от одного до двух часов — значит задача сводится к доставке тушки в аэропорт в известной локации к известному времени. Человеку надо какое-то время, чтобы собраться — значит, надоминание должно прозвучать за некоторое время до отправки.
Итого задача, которая должна быть поставлена перед ассистентом: напомни мне за полчаса до выхода, что скоро пора — а потом еще за пятнадцать и пять минут.
И эта задача для тех для рядовых пользователей — звучит гораздо естественнее и формируется в любом состоянии не требуя никаких расчетов.Вы это игнорируете, заставляя рядовых пользователей считать с риском ошибиться, но виноват вам в этом каджит, и снобизм, вдруг, у каджита.
При этом практически все ваши аргументы либо повторяют типичные ошибки айтишного снобизма, включая перечисленные в посте, и лично вами, либо просто требуют невозможного.
Но виноват каджит, ага.
konst90
06.12.2022 21:58+3Вы это игнорируете, заставляя рядовых пользователей считать с риском ошибиться
Я никого не заставляю считать. Я говорю, что люди могут - по по ошибке, по задумчивости, по неумению давать однозначные формулировки - поставить задачу так, что машина не сможет её решить. И эти случаи нужно обрабатывать, если вы пишите программу для людей, которые прекрасно разбираются в слесарном деле, но голосовой помощник для них - чудо чудесное, к которому нет талмуда на восемьсот страниц "Как правильно формулировать команды". Вы, кстати, так и не ответили на вопрос. Как, во-вашему, должна быть обработана императивная команда голосовому помощнику "озвучить уведомление сегодня в 2:30", если после 1:59:59 сразу наступит 3:00:00? Человек отдал именно такую команду. Что делаем?
khajiit
06.12.2022 23:00-1Я никого не заставляю считать
У вас человек из людей, которые прекрасно разбираются в слесарном деле, но голосовой помощник для них — чудо чудесное высчитывает время.
Это значит, что вы уже заставили его считать. Вместо того, чтобы просто озвучить свою задачу.Как, во-вашему, должна быть обработана императивная команда голосовому помощнику "озвучить уведомление сегодня в 2:30", если после 1:59:59 сразу наступит 3:00:00?
Ответ на этот вопрос был дан несколько раз. Он не изменился.
Пользователю нужна другая задача, и именно задачу пользователя надо решить.
И вы беретесь за решение задачи пользователя не с того конца вообще.Человек отдал именно такую команду. Что делаем?
Люди и команду Алисе выпить йаду отдавали, и заигрывали. И что?
К решению этого вопроса отношения ни то, ни другое, ни третье не имеют.
Озвученная вами задача — успеть на самолет, ее и надо решать. А вместо решения задачи пользователя вы занимаетесь демагогией..
BugM
06.12.2022 23:05+3Я так и не понял что вы хотите от пользователя? Он вам не расскажет всю свою историю и все свои планы, а если и расскажет вы не поймете. Пользователь просто простит поставить будильник на 2:30, которых не сущесвует.
Чтобы успешно продавать помощников надо уметь такие задачи решать хорошо.
khajiit
06.12.2022 23:28От пользователя?
Ничего сверхестественно, просто чтобы он сказхал словами через рот когда и где ему надо быть. Это же не сложно?
А вычислениями должна заниматься машина, они для этого предназначены и делают это гораздо лучше мясных мешков.У него же билет есть, в нем все написано: название аэропорта, время вылета. У ассистента есть текущая геопозиция и средства для построения маршрутов — на этом необходимый и достаточный набор данных в принципе заканчивается.
Этому решительно непонятно, почему вообще данная задача должна намеренно решаться через казуистику.
BugM
06.12.2022 23:40+5Ничего сверхестественно, просто чтобы он сказхал словами через рот когда и где ему надо быть. Это же не сложно?
Это настолько сложно что можно считать нерешаемой задачей.
Пользователь скажет что он хочет, а не что вам надо. Попытка заставить пользователя говорить что вам надо приведет к тому что вы ни одного помощника не продадите.
У него же билет есть, в нем все написано: название аэропорта, время вылета.
У него есть, а у вас нет. И надо с этим работать.
У ассистента есть текущая геопозиция и средства для построения маршрутов — на этом необходимый и достаточный набор данных в принципе заканчивается.
Вы не знаете как пользователь хочет ехать и какие у него планы. Может он три часа по дьютифри ходить собирается? Или у него такие чемоданы что он через любые пробки поедет только на такси. И вы не знаете что там в аэропорту. Может очередное обострение и надо приежать за 5 часов? Не пытайте сделать то что невозможно сделать. Просто поставьте будильник на указанное время или уточните что именно хочет пользователь если время неоднозначно. Эта задача проще и ее точно можно решить.
khajiit
07.12.2022 00:06Ну, если словами через рот — задача не решаемая, то каджиту стоит умыть руки.
Однако, никаких примеров нерешаемого вы не привели.
Пользователь скажет что он хочет
Так это и требуется. Без пересчетов, умничания и попыток создать себе на ровном месте проблем.
У него есть, а у вас нет. И надо с этим работать
У каджита и не должно быть, и работать с этим каджит и не должен.
И вообще, может, этот что-то пропустил, но, вроде бы, нигде не было озвучено, что билет не был куплен не через ассистента.Может он три часа по дьютифри ходить собирается?
Но он-то об этом знает и сказать может?
Потому что если нет, то проблема глубже серьезнее и вообще в другой области лежит.Или у него такие чемоданы что он через любые пробки поедет только на такси.
То же самое.
И не знаете что там в аэропорту. Может очередное обострение и надо приежать за 5 часов?
Каджиту об этом знать и не надо. Более того, это форс-мажор, его невозможно учесть.
Но! Об этом, учитывая что билеты берутся сильно заранее, как правило, может знать ассистент — если аэропорт предоставляет данные, конечно. И тогда тем более надо не выделываться, а поручить работу машины — машине.Ассистенты гугла и яндекса уже давно умеют сообщать о событиях, прокладывать маршруты и заказывать такси, разве нет?
Просто поставьте будильник на указанное время или уточните что именно хочет пользователь если время неоднозначно.
Да, это то, к чем пытался подменить свою же задачу оппонент.
Задача, между тем, все еще вовремя добраться до аэропорта, а не проверить, валидно ли желаемое время…
BugM
07.12.2022 00:20+1Вы хотите сделать живого секретаря и у вас это не получится по объективным причинам. Значит вы не сделаете ничего. Продукта нет, рынка нет, денег нет.
При этом я сделаю нормальное решение с которым пользователь может взаимодействовать и не расстраиваться. У меня есть продукт, рынок и деньги.
Вроде очевидно что лучше? Если жить не в мире розовых пони, а в реальном мире.
Mingun
07.12.2022 07:57Ну, если словами через рот — задача не решаемая, то каджиту стоит умыть руки.
Классический пример:
Каджит перестал пить коньяк по утрам? Да или нет?
Пожалуйста, озвучьте словами через рот. Это же ведь так просто, да?
konst90
06.12.2022 23:20+2Это значит, что вы уже заставили его считать.
Нет. У него дома появился голосовой помощник без инструкции - какие команды ему давать можно, а какие нельзя. Он и даёт команды, голосом. Конкретно в этот день он дал команду - "Алиса, поставь уведомление на 2:30". Где-то в инструкции к Алисе написано, что так делать нельзя? Я не видел.
Ещё раз: условие задачи - человек, который поставил уведомление на 2:30. А не человек, про которого программе достоверно известно, что у него самолёт в 6:00. И программисту надо отработать задачу "Человек поставил уведомление на 2:30". Варианты отработки - на самом деле это 3:30, на самом деле это 1:30, переносим на следующие сутки, переспрашиваем человека, [вписать своё].
Пользователю нужна другая задача
То есть - голосовой помощник должен сказать: пользователь, тебе нужна другая задача, эту я выполнить не могу. Согласны? А для этого простой арифметики с timestamp недостаточно. Нужно ещё проверять само наличие указанного пользователем времени, как минимум.
khajiit
06.12.2022 23:41+1Каджит вам ссылку на ваш же коммент дал, где вы описывали совершенно другую задачу, которую вы пытаетесь безальтернативно решить наиболее проблемным путем.
И этот вам который коммент говорит, что через такую жопу решать данную задачу вообще не нужно, она решается проще, и, главное, без мыслительных усилий со стороны человека, а вы спорите словно сам с собой.
UPD:голосовой помощник должен сказать
Это его возможностей по анализу сильно зависит.
Cerberuser
07.12.2022 05:41+2она решается проще, и, главное, без мыслительных усилий со стороны человека
То есть, мыслительные усилия на то, чтобы сформулировать задачу в терминах "что я хочу в принципе", а не "что я хочу конкретно от помощника", не считаются? А на то, чтобы вообще догадаться, что помощнику нужен полный контекст, а не только задача, которую ожидают конкретно от него? А на то, чтобы понять, какой контекст здесь считается полным (а то некоторые могут и полчаса рассказывать, что им на самом деле нужно)?
konst90
07.12.2022 08:19+4где вы описывали совершенно другую задачу
Идём по ссылке и читаем задачу:
Он в 0:30 просит Алису напомнить ему о необходимости выхода из дома в 2:30
Вот это и есть та задача, которую попросил решить пользователь: напоминание в 2:30. Решайте эту задачу, а не рассказывайте пользователю, что он дурак и делает что-то через жопу. Потому что иначе он сочтёт, что он действительно дурак и недостоин пользоваться вашим гениальным изобретением, и вы останетесь без клиента.
она решается проще
Серьёзно? Человек пенсионного возраста без опыта в IT может сделать две вещи. Первое - посчитать в уме (чем он всю жизнь занимался) "так, до гаража полчаса, до дочки пятнадцать минут, в аэропорт ехать столько-то, запас времени такой-то", получить 3.5 часа, вычесть их из шесть утра, получить 2:30 (ошибся старый человек, забыл про перевод времени, бывает) и попросить поставить уведомление на это время. Вы так и не придумали, как обработать эту довольно простую просьбу.
Либо - вам нужно обработать фразу "Алиса, мне нужно быть в аэропорте в 6 утра, а перед этим дойти до гаража по адресу такому-то, потом заехать по адресу такому-то и оттуда в аэропорт". Удачи вам научить нейросеть это кушать и объяснить человеку, что говорить надо именно так и нигде не ошибиться. Это ведь проще, чем проверить в календаре наличие сочетания даты и времени.
mayorovp
07.12.2022 08:36+3У вас человек из людей, которые прекрасно разбираются в слесарном деле, но голосовой помощник для них — чудо чудесное высчитывает время.
Это значит, что вы уже заставили его считать. Вместо того, чтобы просто озвучить свою задачу.Вы забываете, что этот человек не был воспитан голосовыми помошниками, а купил его недавно. И до этого всю свою жизнь сам считал время, скорее всего даже в уме.
KivApple
05.12.2022 02:07+2В какой-то момент их захочется показать пользователю. И пользователь хочет что-то более удобное, чем одно длинное число. Более того, пользователь хочет что-то, что он сможет соотнести со своими часами на стене. Также бизнес-логика приложения может включать в себя понятия типа "каждый день", "каждый месяц" (например, списание оплаты за услугу) и т. п. А этих понятий принципиально нет в timestamp. И что делать?
avaava
05.12.2022 10:41+1А в чем проблема хранить и передавать время в UTC? Я вот действительно не понимаю. Ну будем вставать в условном Урюжопинске не в 8:00, а в 13:00? Так и рабочие часы организаций можно указывать не с 9:00-18:00, а 14:00-23:00. Привыкнуть можно. Зато везде и одинаково. Что б не будить никого в Хабаровске просто потому, что на сайте не написано где у них офис (почти реальный случай у меня, там был не Хабаровск, а поближе).
BugM
05.12.2022 11:42+1Китай так и живет. В принципе можно. Но нужен глобальный консенсус для этого. А это невозможно.
funca
05.12.2022 13:56Если глобализация все же продолжится, то со временем к чему-то такому и придем. Я работаю с распределенными командами. Для коротких интервалов удобно использовать относительное время (собираемся через 30 минут, а не во столько-то часов, что каждый будет трактовать по-своему). Для чего-то регулярного или глобального наружу используется UTC.
threepointsix
04.12.2022 22:13+13Забыли про заблуждение, что время придумали часовые компании, чтобы продавать больше часов
vadimr
04.12.2022 23:34+8Недели не везде семидневные, в Мьянме неделя восьмидневная, из уважения к священности числа 8 в буддизме. Но не в том смысле, что дни отсчитываются по восемь, а просто среда до полудня и после полудня – два разных дня. Зато при этом начинающаяся с воскресенья неделя делится на две равные части.
konst90
05.12.2022 00:01+26Зато представьте - как нам повезло хотя бы в том, что секунда у всех одинаковая. Нет никакой имперской секунды или дошедшего до наших дней и стандартизованного "удара сердца самурая", которым бы пользовались где-нибудь в Японии.
emaxx
05.12.2022 03:25+2Заблуждение 3. В месяце 30 дней
В немецкой финансовой сфере это "заблуждение" вполне в ходу и не считается ошибкой (по крайней мере в определённых сферах). Называют "методом 30/360": https://de.wikipedia.org/wiki/Zinsberechnungsmethode#30/360_–_deutsche_(kaufmännische)_Zinsmethode
Lissov
07.12.2022 01:45+1Как и говорит название Kaufmännische - торговый - это применимо и очень удобно в банковской сфере и торговле. Точность до дня там не играет никакой роли вообще, потому что важно как договорились, а не как оно "теоретически могло бы быть". А вот расчёты сильно упрощаются.
Собственно потому этот метод и возник. Например, кредит на 20 лет как 240 равных 30-дневных месяцев можно один раз расчитать аналитически, и он остается верным для выбранной ставки. А по act/act (точный учёт дней) нужно пересчитывать на каждый день отдельно. Потому в докомпьютерное время этот метод и возник, а сейчас по инерции используется.
Elmot
05.12.2022 03:37+4Еще одно заблуждение в копилку.
Эра - это долго, как минимум больше ста лет. И кратна году. Солнечному или лунному. Ну пожалуйста.
Но не в Японии. Японская эра привязана к периоду царствования очередного императора.
Эра Хэйсэй (平成) — длилась с 8 января 1989 года по 30 апреля 2019 года.
Текущая эра Рэйва (令和) началась на следующий день. Когда закончится - никто не знает, царствующему императору Нарухито 62 года, искренне желаю ему многая лета.
В связи с наступлением новой эры был введен новый иероглиф “㋿” (U+32FF) и новый стандарт Unicode 12.1. Потом каскадно обновлялись программы и фреймворки, например JDK 8 update 211.
NP447
05.12.2022 04:11+3часть островных государств находится в Южном полушарии, за линией перемены даты
Может всё-таки в Западном?
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_methodsvadimr
05.12.2022 10:26Я думаю, топ-менеджмент банка получше программистов в курсе про процентный доход :)
Lissov
07.12.2022 01:49+2Я выше ответил - если Вы представите как только расчитать аннуитет на 20 лет до изобретения программистов, Вы легко поймёте в чем реальный смысл 30/360.
А вот сейчас уже часто встречается учёт реальных дней, менеджеры понимают.
eungenue
05.12.2022 12:32+3Большинство проблем от того, что в человеческой культуре слова «время» и «календарь» используются не вполне точно. Время, как непрерывная и монотонная величина, измеряется только секундой, ну или любой другой величиной. А всё остальное - это календари в самом широком смысле. С календарями человек делает что угодно - переводит время скачками, на лето, еще куда-то. Имеет право, да, но изначальное понимание о фундаментальном различии времени и календарей должно заставить думать о переводе одного в другое.
А високосные секунды и, как следствие, неравномерность time_t - хороший пример того, как это заблуждение о времени и календарях прорастает даже в самых умных головах.
Имхо, время в GPS, лишенное високосных секунд - пример более удачного подхода. А вот Глонасс с високосными - неудачный. Теперь одним можно ничего не делать, а другим придется переписывать.
vadimr
05.12.2022 13:34+1Время, как непрерывная и монотонная величина – тоже концепция, привязанная к определённой культуре, либо к определённой физической модели. Традиционное для человеческой истории понятие времени как раз циклическое, связанное с чередованием дня и ночи, сельскохозяйственных сезонов и так далее. Это ещё кто-то для начала должен был додуматься до концепции интервалов времени больше года и их измерения.
Что касается физической модели, с ней тоже не всё гладко. Например, задают такой вопрос: что было в первую секунду после Большого Взрыва? В ответ на это логично спросить, а что в данном случае вкладывается в понятие “секунда”? Если 9 миллиардов колебаний возбуждённого атома цезия, как пишут в физическом справочнике, то никакого цезия тогда не было. Вот и что делать с этим?
eungenue
05.12.2022 15:20Ведь время - относительно - это то вы понимаете? (С)
В любой процессорной технике время - непрерывно и монотонно. Да и у людей и вообще чего угодно. Это свойство вселенной. Пока мы договорились измерять атомами цезия. И по своей сути это счетчик, непрерывный и монотонный.
а вот мыслим мы традиционно в контексте календарей, хотя называем это тоже «временем».
Задачи поиска точек во времени звучат обычно так - «через неделю», или «1 числа каждого месяца» или «ежедневно в 00:05». Между тем всё это отсылка к календарям. А таймер на железе должен сработать в непрерывной и монотонной системе. Перевод из системы в систему требуется неизбежно. Но в силу вот этой языковой вольности очень часто ускользает от разработчика.
chabapok
06.12.2022 16:47В любой процессорной технике время - непрерывно и монотонно.
вот как раз нет. И особенно нет в х86
BugM
06.12.2022 18:18В любой процессорной технике время - непрерывно и монотонно
Пока не пришел пользователь и не поменял время из каких-то свих соображений.
В распределенных системах все еще веселее. На разных узлах время может быть произвольным. Прям вообще произвольным. А в самых запущенных случаях оно еще и идет с разной скоростью.
vadimr
05.12.2022 13:43Имхо, время в GPS, лишенное високосных секунд - пример более удачного подхода. А вот Глонасс с високосными - неудачный. Теперь одним можно ничего не делать, а другим придется переписывать.
Не так. В ГЛОНАСС придётся переписывать борт, а в GPS – все приёмники.
inkelyad
05.12.2022 13:51Я несколько не понимаю, где там (что там, что там) вообще високосную секунду можно воткнуть. 'Прошло xyz.abcd мегасекунд от сотворения мира (c учетом поправок теории относительности - говорят, там это уже нужно учитывать)' - ну и пусть тикает монотонно. А то что на циферблате показывается - как-нибудь потом пересчитаем, оно для расчета координат вроде бы не должно быть нужно.
vadimr
05.12.2022 13:54+1Для расчёта координат оно не нужно, но это не единственная функция ГНСС. Нужно для определения текущего календарного времени у потребителя.
ГЛОНАСС передаёт фактическое время, а GPS – такое, каким оно было бы, если бы с 1970 года не было високосных секунд.
StjarnornasFred
06.12.2022 15:02Ещё точнее - проблема в том, что "в быту" для измерения времени исторически прижились несколько взаимно некратных величин (сутки, год), от которых по странным схемам пошло формирование кратных:
Час, минута, секунда - 1/N доля от суток. А почему не 1/М?
Месяц - примерно 1/12 от года, т. е. примерно 30 суток. А почему не 1/13?
Неделя - 7 суток. А почему не 8 и не 6?
Век - 100 лет, ну тут хотя бы понятно почему.
В итоге у нас неделя не совпадает с годом и месяцем, сутки не совпадают с годом и нужно городить костыли, цифры везде какие-то непонятные, в секунде не 60 миллисекунд...
Фактически, нужно найти те точки, которые являются объективной реальностью, подружить их, а остальное отдать на откуп математическому удобству.
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?
Четверть лунного месяца. Почему четверть? — потому что по четвертям фазы луны отслеживать легко. Даже считать дни не надо!
Так что всё просто и очевидно! Это как с дюймами и футами, со всякими денежными единицами и т.п.: вроде как бред, но конкретно в тех условиях, когда всё это формировалось это было очень удобно и чуть ли не единственный массово доступный способ измерения.
amuralex
05.12.2022 15:02+4Меня больше всего удивляет перевод времени из 24 часового формата в 12 часовой: между 11:58 am 11:59 am всего 1 минута, а между 11:59 am и 12:00 am полдня, а точнее 11 часов и 59 минут.
eurol
05.12.2022 16:39Это смотря в какую сторону...
Ведь от Пасхи до Рождества и от Рождества до Пасхи не одно и то же число дней! Не говоря уже, что Пасха в разные дни отмечается.
Mingun
05.12.2022 16:49+1Все логично, если вспомнить, что 12 часовой формат использовался на круглом циферблате и начало там помечено не цифрой
0
, а цифрой12
perfect_genius
06.12.2022 01:14Кто-то где-то в интернете "задротливо" учитывает весь этот ужас и вовремя подправляет в своей библиотеке на ГитХабе?
Также значит, что можно лишь усмехнуться от очередного гения/таланта на ТВ, который может назвать день недели по любой дате, которую ему назовут, да?
Fedorkov
06.12.2022 09:10+4Не все страны или их части переводят часы на лето. К примеру, штат Аризона от этой практики отказался в 1968, хотя остальные материковые США сохраняют традицию.
За исключением резервации Навахо, где часы переводят (как в остальных штатах); но в ней есть резервация-анклав Хопи, где перевод часов отменили (как в остальной Аризоне).
abutorin
https://habr.com/ru/post/146109/
mapron
Причем в древнем посте по ссылке как раз есть вещи из серии "нифига себе", а вот в этом посте (я в курсе что это перевод) вещи которые не то что программист, наверное каждый окончивший школу и не прогуливавший географию знает. Ну ладно, исключение про часовой сдвиг в 6 минут в Китае, который практически для разработчика бесполезен.
atomlib Автор
Мой пост — не перевод. Ну и изложены в нём не самые тривиальные факты.
Если бы вы прочитали мой пост, вопросы бы сразу отпали. Эти списки сами по себе — набор утверждений. Куда интереснее, когда к ним приведены контрпримеры и вообще случаи багов, которые могут из-за них возникать.
mrkaban
интересный пост, спасибо
mrkaban
Прочитав исходную статью понял о чем вы, действительно с контрпримерами весьма интересно.
GraDea
У нас на географии не рассказывали про особенности мусульманских календарей. Да и переход на зимнее/летнее время казался таким же неизбежным как и Новый год)
vassabi
про дни недели, и рабочие дни - тут интереснее написано