Я пытаюсь генерировать UUID с тем же стилем как bit.ly URL как:
http://bit.ly/aUekJP
или cloudapp:
http://cl.ly/1hVU
которые еще меньше
как я могу сделать это? Я теперь использую драгоценный камень UUID для рубина, но я не уверен, возможно ли это к limitate длина, и получите что-то вроде этого. Я в настоящее время использую это:
UUID.generate.split("-")[0] => b9386070
Но я хотел бы иметь еще меньший и зная, что это будет уникально.
Любая справка в значительной степени ценилась бы :)
Вы путаете здесь две разные вещи. UUID - это универсальный уникальный идентификатор.У него очень высокая вероятность быть уникальным, даже если миллионы из них создавались по всему миру одновременно. Обычно он отображается в виде строки из 36 цифр. Вы не можете отрубить первые 8 символов и ожидать, что они будут уникальными.
Bitly, tinyurl и другие хранят ссылки и генерируют короткий код для представления этой ссылки. Они не реконструируют URL-адрес из кода, они ищут его в хранилище данных и возвращают соответствующий URL-адрес. Это не UUIDS.
Не зная свое приложение, трудно посоветовать, какой метод вы должны использовать, однако вы можете сохранить все, что вы указываете, в хранилище данных с помощью числового ключа, а затем переустановить ключ на base32, используя 10 цифр и 22 строчные буквы, возможно, избегая очевидных проблем с опечатками, таких как 'o' 'i' 'l' и т. д.
РЕДАКТИРОВАТЬ
При дальнейшем исследовании доступен гем Ruby base32 , который реализует метод Дугласа Крокфорда Реализация Base 32
Строка Base32 из 5 символов может представлять более 33 миллионов целых чисел, а строка из 6 цифр - более миллиарда.
Единственный способ гарантировать уникальность - это вести глобальный счетчик и увеличивать его для каждого использования: 0000
, 0001
и т.д.