Search
Write a publication
Pull to refresh

Дело было в XX-том году (или Уникальный ID по-шумеро-вавилонски)

Не приходилось ли вам сочинять какие-нибудь «уникальные идентификаторы», желательно — понеповторимее, покороче и чтоб глазом были вполне читаемы? Думаю, многие сталкивались с такой задачкой. Стандартные функции (типа GUID) — это скучно и очень «длинно». Отметаем сразу. Часто для уникальности берутся (как один из компонентов) дата и время. Попробуем и мы их использовать. И чтоб покомпактнее было, возьмем шумеро-вавилонскую 60-ричную систему счисления (что применительно к единицам времени будет довольно естественно). Как и в случае с 16-ричной системой, дополним обычные цифры буквами: 0-9, A-Z, a-x — ровно 10+26+24=60 знаков. Заметим, что кодировка MIME Base64 использует похожий набор «цифр», но в другом порядке: A-Z, a-z, 0-9, а также + и /.
По-моему, данный порядок не вполне удобен, т.к. нарушается привычная лексикографическая упорядоченность.

Сначала займемся временем. Для минут и секунд потребуется ровно по одной нашей «цифре». Для часов — тем паче, одного знака хватит. Возьмем еще и «терции» (=1/60 сек). Итого — четыре знака. Компактно, достаточно (для многих применений) уникально, читабельно и даже… понимабельно: DC9x = 13:12′09″59 = 13 час 12 мин 09 сек 59 терций. Можно ещё и слегка огрублённые «кварты» справа добавить; у меня (в Visual FoxPro) функция seconds() выдаёт время с точностью до 0.001 сек, считая от полуночи. Проверено, точность соблюдается. Но мне не очень надо.

Теперь дата. Месяц и день — две цифры: 9N = 23 сентября. Год от Р.Х. — тоже две. Хватит до 3599 года (xx-ного «по-нашему»). Если кто надеется дожить до 3600-го (т.е., 100-го в нашей системе), пусть добавит слева ещё один разряд. А мне пока и двух хватит.

Давайте, из любопытства посмотрим, в каком году мы сейчас живём. Делим 2013 на 60 с остатком, получаем два разряда: (33,33). Чёрт побери, неожиданно красиво! А как это будет в 60-ричной записи? А вот так: XX. Т.е., получается, что хотя до года с номером xx мы и не доживём, зато в году XX живём прямо сегодня. (Учтя завтрашнюю дату, XX41, можно заметить, что нынешний год XX — явно «женский», а следующий будет «мужским», XY. Такая вот шумеро-вавилонская магия чисел...)

Date/Time stamp of the post = XX3VHFx3
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.