January 31st, 2012

Смерть разнообразию!

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

В этот раз хочу сообщить, что все региональные стандарты должны сдохнуть. Только десятичная точка, только отсутствие разделителей между тройками разрядов, только лексикографически сортируемый человеко-читаемый формат даты (т.е. ГГГГ.ММ.ДД чч:мм:сс, где часы принимают значения от 00 до 23, а секунды от 00 до 60, и никак по другому (ну или ГГГГ-ММ-ДДTчч:мм:сс, как в ISO 8601))! Аналогично должны сдохнуть все «летние времена», как нарушающие биекцию между временем и его строковым представлением. Никаких «287 до н.э.», только −286!

Кроме региональных стандартов на представление чисел и дат сдохнуть должны региональные единицы измерения, оставшиеся, если верить Википедии, в Либерии, Мьянме и США. Только СИ! Если вы вдруг еще не в курсе, теперь точно зафиксированы не только секунда и скорость света, но и постоянная Планка, Больцмана, Авогадро и заряд электрона. Остался только пи :)

Дополнить хочу рацпредложением, касающимся двух последних символов BASE64. 62 символа это цифры, маленькие и большие латинские буквы, но в качестве двух последних пальцесосатели, писавшие RFC 1421, взяли + и /, которые ни в путь не засунешь, ни в URL. Именно urlencode накладывает самые суровые требования к набору символов, оставляя всего один вариант: - и _. Такой немного модифицированный вариант называется в RFC 4648 Base64 with URL and Filename Safe Alphabet (или просто base64url). Везде используйте только его!

И, похоже, никого не затруднит в этот раз новая задача для телепатов. Мой товарищ в процессе обучения программированию писал программу на Си для перевода из дюймов в сантиметры. Каково же было его удивление, когда она сказала, что 2 дюйма это не 5, а 10 сантиметров. Но телепаты не удивятся, а напишут в комментах «Очевидно, что ошибка в ...» :)