Душераздирающее зрелище

Не могу молчать, хочу писать.

Случившийся давеча бунт гаджетов (и сервисов) наводит на меня тоску:

  1. Сюрпризом для меня оказалось количество мест, дублирующих TZ database: операционная система (про которую было известно заранее), PHP, PostgreSQL (в ветке 8.x база TZ старая), Java - это только то, про что я сам знаю. А реально мест - существенно больше.
  2. Таким же сюрпризом оказалось то, что сервисы надо перестартовывать, просто апдейта TZdb и /etc/localtime - недостаточно.
  3. Владельцам продвинутых гаджетов веселухи добавила продвинутая автоматика, вроде установки времени "от GSM-сети" (а сети все проэтосамое, а может просто побоялись свитчи обновлять ради такой мелочи) или, еще веселее, установки таймзоны по GPS-координатам, как это во многих навигаторах сделано (проверил, в моем Garmin 62s просто нельзя поставить offset в часах, только по имени города).
  4. На этом фоне сообщение РЖД о том, что в ж/д сообщении с Украиной будет бардак до 3 декабря, а дальше будет видно - уже не вызывает удивления, хоть и вызвано это не IT-бардаком, а законодательными инициативами у братского народа: сначала отменой перехода на зимнее время (в сентябре, по мне так безумно поздно), а затем отменой отмены (в октябре, еще веселее).

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

Что делать - более-менее тоже понятно:

  • Устранить дублирование TZdb в продуктах: во всех ОС сервисы достаточные, а дублирование происходит от лени, проще всосать базу и код для работы с ней из одной ОС, чем делать отдельный код для Unix, отдельный - для Win32 и так далее.
  • Сжиться с мыслью, что правила могут меняться по ходу работы приложения и соответствующим образом поправить системную libc (скажем, перечитывать /etc/localtime раз в час).
  • Какой-то сервис, раздающий актуальную TZdb (по координатам или по названию) в реалтайме (а не в виде архива с файликами) тоже был бы полезен.
Хотя ни одно из этих решений не полечило бы GPS-приемники, да. Ну и никому не надо, в момент когда внезапно принимают решение о смене TZ в конкретной стране - метаться в поисках глобальных решений поздно, запатчить все и забыть.

Вся инфраструктура в очередной раз показала себя хрупкой: все более-менее работает до первого существенного изменения.

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

Comments

Постгрес умеет использовать системные таймзоны: --with-system-tzdata при сборке.

Ну вот теперь я знаю.

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

Тем более, что конкретно меня постгрес не поимел.

А я всё-таки сделал себе-будущему такой подарок, пересобрал. Мало ли что следующему медвепуту в голову стукнет.

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

Кстати, спасибо за напоминание про Гармин, пойду переставлять время на 705-ом.

>а смена правил происходит настолько редко в рамках конкретной страны
а вот интересно бы посмотреть на статистику. имхо, не так уж и редко. я так понимаю в США отдельные штаты сами себе время устанавливают, например.

да что там время - новые страны регулярно появляются и исчезают. не так давно мне где-то в интернетах попался выбор "USSR" в списке стран...

Да, чтение src/share/zoneinfo/* - увлекательное занятие:

# On September 20 [1979]...DOT...officials decreed that on April 27,
# 1980, Juneau and other nearby communities would move to Yukon Time.
# Sitka, Petersburg, Wrangell, and Ketchikan, however, would remain on
# Pacific Time.
#
# ...on September 22, 1980, DOT Secretary Neil E. Goldschmidt rescinded the
# Department's September 1979 decision. Juneau and other communities in
# northern Southeast reverted to Pacific Time on October 26.

Но преимущественно там речь об отдельных колхозах (county).

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

>Но таки да, иметь это место централизованно
я думаю, что ты очень верно подметил, что это никому не надо.

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

я вот считаю, решение президента -- ужасно, по крайней мере для москвы. два часа опережения декретного времени над истинным - для меня, совы, травма и насилие над организмом. в четыре или пять пополудни темнеет - мне на важно (а кому важно?) ибо рабочий день все равно дольше. а вот что рассветает в 9..10 - кошмар. вот в школе мы читали про то, как деревенские жители вставали ни свет ни заря и т.п., я вот думал - ну какие герои-труженники - в 5..6 утра вставать, а оказывается мы (в москве по крайней мере) такие же, ибо наши 8 это их 6.

Проще всего проиллюстрировать на примере равноденствия.
Рассвет в 5 (за час до восхода, который в 6), темнеет в 19 (через час после заката в 18). Час накинут "примерно", реально может минут 40, но смысл не меняется.

Ну и кому нахрен нужна такая симметрия, если в 5 утра в Москве просто пусто? И в 7 - еще пусто, движуха начинается около 8 (за исключением магистралей из области), а в 19 - самый пик на улицах, то то счастья в сумерках.

Сдвигаем на 2 часа и получаем световое время с 7 до 21. Очень даже в самый раз, захватываются и вечерний и утренний часы пик (автомобильные).
Укорачиваем на два часа световой день, получаем с 8 до 19. Это лучше, чем с 6 до 17.

А в декабре - палюбому жопа. И в Москве еще кое-как, реальная жесть в Питере (понятно, есть еще Мурманск, но их эти расклады парят только в районе равноденствия, там производная длины светового дня по времени - безумная).

Обсчитался для "укорачиваем на 2 часа".
Для 12-часового светового дня
- астрономически: с 6 до 18
- декретно: с 8 до 20
Второе - сильно лучше.

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

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

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

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

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

Вечером свет офигенно нужен тем кто за рулем.
Утром тоже, но вечером больше машин и плотнее пробки.

Ну не знаю, я не чувствую потребности в солнечном свете вечером за рулем, именно из-за того что машин много и пробки. И для меня вечером пробки не плотнее, я уже еду когда они проходят пик.
Вот если наоборот - машин мало, скорости большие тогда наверное.
Ну или если в разные места надо ездить. А как я - по одной дороге каждый день, так и пофик светло вечером или темно. А вот утром [мне] хочется видеть солнце, или хотя бы светлое небо (ибо солнечных дней в Москве зимой раз два и обчелся, все время облачность, подозреваю что антропогенного характера).

>Укорачиваем на два часа световой день, получаем с 8 до 19. Это лучше, чем с 6 до 17
Мне пофик - у меня рабочий день с 10 до 19, так что вечером я по-любому еду в темноте.

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

>А в декабре - палюбому жопа.
А вот и нет. Пусть сдвинут на два часа, на истинное время, чтобы вставать когда светло или хотя бы уже утренние сумерки, а не ночью! Ну может это мои личные тараканы потому что я сова.

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

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

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

У меня трое - и статистики больше :)

Итого 2 месяца добавилось к этому ухудшению вставания, зато все 5 месяцев к улучшению гуляния :)

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

уроки начинаются в 8:30, допусти даже 5 уроков плюс четыре перемены и полчаса завтрак\обед, в 14:00 уроки заканчиваются. после школы, т.е. после 14:00, даже плюс обед, после 15:00 достаточно света для погулять хоть по летнему хоть по зимнему времени.

но в принципе, аргумент понятен.

По факту, у дочки-первокласницы два раза в неделю заканчивается в 15, один раз - в 16 (кружки, да), два раза - в 13, один раз в 12.
И то что в 16 поедем домой по свету - большой плюс.

>И то что в 16 поедем домой по свету - большой плюс.

Один раз в неделю. Но все пять раз утром - по темноте. Не перевешивает?

Еще два раза - после 15. Доехать, перекусить и гулять.

Ну вот я заглянул в .reg для винды, который из KB2570791 так вот там с момента выхода WinXP SP3 (потому что он post-SP3) аж 116 ключей Time Zones меняется, а в каждом еще и не одна запись может быть. Примеры:

Аравия:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\Arabic Standard Time\Dynamic DST]
"2006"=hex:4c,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,01,00,04,00,\
00,00,00,00,00,00,00,00,04,00,00,00,01,00,03,00,00,00,00,00,00,00
"2007"=hex:4c,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,01,00,01,00,04,00,\
00,00,00,00,00,00,00,00,04,00,00,00,01,00,03,00,00,00,00,00,00,00
"2008"=hex:4c,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00

Аргентина:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\Argentina Standard Time\Dynamic DST]
"2006"=hex:b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
"2007"=hex:b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,01,00,01,00,01,00,00,00,\
00,00,00,00,00,00,00,00,0c,00,00,00,05,00,00,00,00,00,00,00,00,00
"2008"=hex:b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,03,00,00,00,03,00,00,00,\
00,00,00,00,00,00,00,00,0a,00,06,00,03,00,17,00,3b,00,3b,00,e7,03
"2009"=hex:b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,03,00,06,00,02,00,17,00,\
3b,00,3b,00,e7,03,00,00,01,00,04,00,01,00,00,00,00,00,00,00,00,00
"2010"=hex:b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00

вообще ситуация со временем немного напоминают ситуацию с кодировками текста. вроде сейчас же везде юникод и все такое, ан нет. только сегодня получил письмо из аутлука в аутулук в пределах одного exchange-а в KOI-8

У приятеля: "Нокия при синхре с аутлуком попросила удалить
с себя 470 записей Синхрилка не умеет показывать, что именно будет удалять
Спасибо Медведеву!

В новых гарминах есть файлик-карта, gmaptz.img, где сия зависимость прописана. Однако обновить эту штуку пока не почесались.
Что касается операторов связи - у меня нокия на S40, проставил там GMT+4, но sms приходят со сдвинутой датой отправки аж на два часа вперед (билайн) от людей, у которых телефон тоже показывает правильное время (что у них в таймзоне прописано - не в курсе). При этом я знаю, что старые смартфоны Самсунг (которые на их самостийной ОС) глючат со списком смс, когда их время отправки кажется им странным.

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

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

А будильник в телефоне - это тоже проблема отображения? Задумался. Видимо да.

Чисто для поддержания дискуссии: будильник в (моем) телефоне срабатывает, когда на экране ОТОБРАЗЯТСЯ цифры 6:45 (или 7:15, в зависимости от дня недели). То есть да, отображения.

Совершенно отдельный класс проблем - это проблемы "умолчания", вот текущие 19:25 должны бы восприниматься как 19:25 +0400, а необновленные программы воспринимают как +0300 и переводят в неправильное время по гринвичу. И с разбором аббревиатуры MSK у них тоже проблемы (если кто разбирает в таком формате).

И в этом смысле будильник (который вы устанавливаете без таймзоны) - это проблема интерпетации вашего ввода времени, конечно же. Потому что ВЫ ввели его в таком двусмысленном формате.

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

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

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

А почему нельзя просто спрашивать всем время на каком-нибудь сервере, которому все доверяют? Есть же NTP и всякие другие умные слова...

Я вот уже давно привык просто набирать time.is в браузере в случае сомнений.

Или проблема, что не все еще в одном большом интернете?

2:5049/97.3

NTP отдает время в гринвиче (UTC). А какая у вас (спрашивающего) временная зона - не знает. Это вы должны знать (или вам скажут снаружи, из GSM-сети или GPS-приемник по вашим координатам)

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

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

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

2:5049/97.3

Да, я примерно это и "предлагаю" в исходном тексте.

На практике, с сожалению, это не получается столь радужно. GSM-сети, скажем, умеют отдавать время (или что-то в этом духе) клиентам - и вчера Билайн и Мегафон (как пишут в комментариях в соседнем посте) делали это неправильно.

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

Да кошмар вообще. У меня ощущение, что единственное место, где не было больщих проблем - это корпоративные сетки на MS'овских продуктах, админы которых не ленятся ставить и читать обновления.

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

Ну тогда - удивительно, что все это не напрягло очень сильно. Ведь бунт гаджетов был, очевидно, и тогда.

Юзеры с полей рапортуют, что на некоторых Android-девайсах "перестали ходить" SMS (я думаю что они при получении или оказываются в списке непонятно где, или режектятся), и аналогичная ситуация с некоторыми "обычными" телефонами Samsung. О том, что последние неустойчивы к получению сообщений с неправильной датой, я знаю уже давно - если послать на такой Samsung backdated-сообщение, вручную установив дату на своем телефоне назад, оповещение о приходе SMS не выдается, а сообщение оказывается где-то в заднице архива. Подозреваю, что у таких самсунгов сигнал о приходе SMS выдается в момент появления новой первой записи в стеке. Куда деваются сообщения с опережающей датой - не в курсе. :)