zan*_*ona 5 url uuid ruby-on-rails short
我正在尝试使用与bit.ly网址相同的样式生成UUID:
http://bit.ly/aUekJP
Run Code Online (Sandbox Code Playgroud)
或cloudapp:
http://cl.ly/1hVU
Run Code Online (Sandbox Code Playgroud)
哪个甚至更小
我该怎么做?我现在正在使用UUID gem作为ruby,但我不确定是否可以限制长度并得到类似的东西.我目前正在使用这个:
UUID.generate.split("-")[0] => b9386070
Run Code Online (Sandbox Code Playgroud)
但我想要更小,知道它将是独一无二的.
任何帮助将非常感激:)
Ste*_*eet 14
你在这里混淆了两件不同的事情.UUID是一种通用唯一标识符.即使在世界各地同时创建了数百万个,它也很有可能是独一无二的.它通常显示为36位数字符串.你不能砍掉前8个字符并期望它是独一无二的.
Bitly,tinyurl等人存储链接并生成表示该链接的简短代码.他们不会从他们在数据存储中查找的代码重建URL并返回相应的URL.这些不是UUIDS.
在不知道您的应用程序的情况下,很难建议您应该使用什么方法,但是您可以使用数字键将您指向的任何内容存储在数据存储中,然后使用10位数字和22个小写字母将键重新键入base32,也许避免像'o''我''等明显的拼写错误问题
编辑
在进一步研究中,有一个Ruby base32 gem可用于实现Douglas Crockford的Base 32实现
一个5字符的Base32字符串可以表示超过3300万个整数和一个超过10亿的6位字符串.
J_M*_*rey 10
如果您正在使用数字,则可以使用内置的ruby方法
6175601989.to_s(30)
=> "8e45ttj"
Run Code Online (Sandbox Code Playgroud)
回去
"8e45ttj".to_i(30)
=>6175601989
Run Code Online (Sandbox Code Playgroud)
因此,您不必存储任何内容,您始终可以解码传入的short_code.
这适用于概念证明,但您无法避免模糊的字符,如:1lji0o.如果您只是想使用代码来混淆数据库记录ID,这将正常工作.通常,短代码应该易于记忆并从一种介质转移到另一种介质,例如在某人的演示幻灯片上阅读,或通过电话听到它.如果您需要避免难以阅读或难以"听到"的字符,您可能需要切换到生成可接受代码并存储它的过程.
| 归档时间: |
|
| 查看次数: |
5543 次 |
| 最近记录: |