Ruby on Rails - генерирующий bit.ly разрабатывает uuids

Я пытаюсь генерировать UUID с тем же стилем как bit.ly URL как:

http://bit.ly/aUekJP

или cloudapp:

http://cl.ly/1hVU

которые еще меньше

как я могу сделать это? Я теперь использую драгоценный камень UUID для рубина, но я не уверен, возможно ли это к limitate длина, и получите что-то вроде этого. Я в настоящее время использую это:

UUID.generate.split("-")[0] => b9386070

Но я хотел бы иметь еще меньший и зная, что это будет уникально.

Любая справка в значительной степени ценилась бы :)

5
задан zanona 19 July 2010 в 14:42
поделиться

2 ответа

Вы путаете здесь две разные вещи. UUID - это универсальный уникальный идентификатор.У него очень высокая вероятность быть уникальным, даже если миллионы из них создавались по всему миру одновременно. Обычно он отображается в виде строки из 36 цифр. Вы не можете отрубить первые 8 символов и ожидать, что они будут уникальными.

Bitly, tinyurl и другие хранят ссылки и генерируют короткий код для представления этой ссылки. Они не реконструируют URL-адрес из кода, они ищут его в хранилище данных и возвращают соответствующий URL-адрес. Это не UUIDS.

Не зная свое приложение, трудно посоветовать, какой метод вы должны использовать, однако вы можете сохранить все, что вы указываете, в хранилище данных с помощью числового ключа, а затем переустановить ключ на base32, используя 10 цифр и 22 строчные буквы, возможно, избегая очевидных проблем с опечатками, таких как 'o' 'i' 'l' и т. д.

РЕДАКТИРОВАТЬ

При дальнейшем исследовании доступен гем Ruby base32 , который реализует метод Дугласа Крокфорда Реализация Base 32

Строка Base32 из 5 символов может представлять более 33 миллионов целых чисел, а строка из 6 цифр - более миллиарда.

14
ответ дан 18 December 2019 в 13:10
поделиться

Единственный способ гарантировать уникальность - это вести глобальный счетчик и увеличивать его для каждого использования: 0000, 0001 и т.д.

-10
ответ дан 18 December 2019 в 13:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: