TGViewer
BASCODE BASCODE @bascodech · 140 subscribers
Post #74 144
Читаемость UUID, миф или реальность?

Смотрю на UUID в URL и морщусь: 36 символов с дефисами, красота и уродство.
/orders/550e8400-e29b-41d4-a716-446655440000


В феврале услышал в подкасте про Base32 и залип на пару вечеров. Думал, дело на пять минут: перекодировал те же 128 бит в другой алфавит, и вот тебе короткий id. Те же 16 байт, ничего не сжимается, коллизии те же. Просто другое представление.

И правда красиво выходит, 26 символов вместо 36:
/orders/AM788072KD0X99RP8HK5AH0000


Берешь Crockford-алфавит (автор который придумал JSON), а он выкинул I L O U, чтобы не путать с единицей и нулем и не собирать случайные матерные слова. Такой ID не стыдно продиктовать по телефону.

А дальше я наступил на грабли. Думал, Base32 он и есть Base32. Ага... Конечно...

Взял стандартный RFC4648 (A-Z2-7) и сломал сортировку. Значение 25 это Z, 26 это 2, а в ASCII 2 идет раньше Z. Для UUIDv7, где время в старших битах, это больно: вроде сортируешь по времени, а строки разъезжаются как попало.

Лечится сменой алфавита: Crockford или base32hex (0-9A-V), и порядок строк снова совпадает с хронологией.
Собственно, в ULID ровно так и сделано: 128 бит, 26 символов, Crockford, сортировка по времени из коробки.

Что в итоге: в стандартной либе Go этого нет, нужен свой кодек, и БД такой ID за UUID не примет. Так что либо берешь готовый ULID, либо пишешь Encode/Decode сам и не путаешь алфавиты, как я :-)

Ответ на заданный в заголовке вопрос: Скорее миф, чем реальность...
  • 🔥 3
More from @bascodech
  1. Sep 18, 2026Мысли про дебаггинг и IDE в 2026 Вот интересная история... Расс Кокс выложил пять сессий,…
  2. Sep 14, 2026Кодить без AI сейчас как заниматься айкидо. Красиво и глубоко и десять лет до черного пояс…
  3. Sep 7, 2026Выложил свой statusline для claude code в публичный репозиторий. Лимитов у подписки три: п…
  4. Sep 5, 2026Рубрика "лысая мудрость" Как я больше года храбро готовился, но так ничего и не сделал. Вт…
  5. Sep 2, 2026Распаковал 30 релизов Go подряд, 2.9 ГБ исходников. Ради одного вопроса. Вопрос такой: поч…
  6. Aug 29, 2026Сегодня у кого-то будет распаковка :-)
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →