Ruby on Rails - 生成 bit.ly 样式标识符

2023-12-27

我正在尝试生成与 bit.ly url 样式相同的 UUID,例如:

http://bit [dot] ly/aUekJP

或 cloudapp 的:

http://cl [dot] ly/1hVU

甚至更小

我该怎么做? 我现在正在为 ruby​​ 使用 UUID gem,但我不确定是否可以限制长度并得到类似的东西。 我目前正在使用这个:

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

但我想要更小的,并且知道它将是独一无二的。

任何帮助将非常感激:)


编辑说明:用点字母替换[dot]的解决方法禁止短链接 https://meta.stackoverflow.com/questions/313621/blacklist-the-use-of-common-link-shorteners-in-posts


您在这里混淆了两种不同的事物。 UUID 是通用唯一标识符。即使世界各地同时创建了数百万个,它也很有可能是独一无二的。它通常显示为 36 位数字的字符串。您不能砍掉前 8 个字符并期望它是唯一的。

Bitly、tinyurl 等人存储链接并生成一个短代码来表示该链接。他们不会根据在数据存储中查找的代码重建 URL 并返回相应的 URL。这些不是 UUID。

在不了解您的应用程序的情况下,很难建议您应该使用哪种方法,但是您可以使用数字键将您指向的任何内容存储在数据存储中,然后使用 10 个数字和 22 个小写字母将密钥重新设置为 base32,也许可以避免明显的拼写错误问题,例如“o”“i”“l”等

EDIT

经过进一步调查,有一个 RubyBase32 宝石 http://github.com/levinalex/base32可以实现 Douglas Crockford 的Base 32 实施 http://www.crockford.com/wrmg/base32.html

5 个字符的 Base32 字符串可以表示超过 3300 万个整数,而 6 位数字的字符串可以表示超过 10 亿个整数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ruby on Rails - 生成 bit.ly 样式标识符 的相关文章

随机推荐

  • Python ctypes:传递字符串数组

    我在 Python 2 7 中有一个字符串数组 我想通过它传递给 C 函数ctypes unsigned int SetParams unsigned int count const char params 所以我可以在python中定义参
  • NPM Run Build 总是构建生产而不是开发

    在我继承的项目中 我试图获取构建命令来构建除Production 我试图更改别名script部分在package json传递额外的变量 例如 dev and configuration dev无济于事 该项目有以下 json 数据文件 e
  • zabbix UserParameter返回2个或多个值

    i use UserParameter Firebird F tools zabbix agent firebird Firebird bat 1 如何在 1 次运行的 bat 文件中获取两个或更多值 您正在寻找https www zabb
  • 实体框架CTP4:SetInitializer放在哪里?

    我正在尝试使用 CTP4 预览将实体框架 首先是代码 添加到使用测试数据运行的 MVC 应用程序 我目前收到此错误 自创建数据库以来 支持 SchedulerContext 上下文的模型已发生变化 手动删除 更新数据库 或使用 IDatab
  • 我是否需要为每个新的 .swift 文件创建一个新的 SpriteKit 关卡编辑器文件?

    我正在尝试熟悉 Sprite Kit 关卡编辑器 默认情况下 有一个 gamescene sks 文件附加到 gamescene swift 例如 如果我正在制作 gameoverscene 或 playscene 如果我想在关卡编辑器中使
  • 将列从 varchar(8000) 更改为 varchar(max) 是否存在任何隐藏的陷阱?

    我有很多 超过一千个地方 的遗产T SQL代码只使INSERT变成一个varchar 8000 实用程序表中的列 我们的需求发生了变化 现在该列需要能够处理更大的值 结果我需要制作该专栏varchar max 这只是一个纯数据列 没有对其执
  • hibernate标准查询时间戳

    我有一个表 其中有一列 Submitted date 没有时区的时间戳 我需要列出表中具有特定日期作为提交日期的所有记录 但不考虑数据库中的时间 我通过使用条件查询和休眠来检索记录 怎么忽略这里的时间呢 实际上 我从客户端传递了一个日期 并
  • 如何在 Meteor 中从服务器调用客户端方法?

    使用 Meteor 方法可以轻松完成相反的操作 从客户端调用服务器端 假设您想要从服务器直接运行客户端方法或作为回调运行客户端方法 一个例子是用户在您的网站上注册 在服务器上注册成功后 会弹出一个模式窗口 提醒他们注册已成功 我们试图追求单
  • 在复杂条件下使用 JPA 实体图

    我有一个基于 Spring MVC JPA Hibernate 构建的项目 我使用实体图 JPA 2 1 来定义从数据库中获取哪些数据 如下例所示 EntityGraph
  • 动态 PHP ZIP 文件

    从服务器上的文件夹中压缩 例如 2 个 文件并强制下载的最简单方法是什么 无需将 zip 保存到服务器 zip new ZipArchive the string file1 is the name we re assigning the
  • 使小部件在 Qt 布局中部分重叠

    我正在尝试使小部件在 Qt 布局中部分重叠 我当前的布局如下 通过QVBox布局 http doc qt io qt 4 8 qVboxlayout html含有四个QHBox布局 http doc qt io qt 4 8 qhboxla
  • 如何检测 Windows 10 是否处于平板电脑模式

    我正在尝试找到一种方法来检测 Windows 10 是否处于平板电脑模式 请注意 这不是查询用户是否有平板电脑 这可以通过以下方式解决GetSystemMetrics SM CONVERTIBLESLATEMODE 就我而言 无论 Win1
  • 从一组给定的数字中生成选择的最佳方法是什么?

    例如 如果要求在 1 到 5 之间做出所有选择 答案如下所示 1 2 3 4 5 1 2 1 3 1 4 1 5 2 3 2 4 2 5 3 4 3 5 4 5 1 2 3 1 2 4 1 2 5 1 3 4 1 2 3 4 5 谁能建议一
  • YAML 中的单个感叹号有什么作用?

    我正在与YamlDotNet http sourceforge net projects yamldotnet 库 加载 YAML 文件时出现此错误 解析标签时 未找到预期的标签 URI YAML 文件应该是格式良好的 因为它来自直接从 R
  • 正文中的邮件链接和换行符

    In a mailto链接 我正在尝试使用换行符 但我失败了 我尝试过 n n br 并尝试搜索 Enter 的 ascii 值 但我没有得到我想要的内容 a href Mail me a 你们能帮忙吗 Use 0D 0A body Hel
  • 参数类型中的这三个点是什么[重复]

    这个问题在这里已经有答案了 可能的重复 该方法签名中的省略号代表什么 https stackoverflow com questions 2367398 what is the ellipsis for in this method sig
  • 如何使 QListWidget 项目可编辑

    我是 PyQt 的新手 我首先在Qt Designer中制作了一个对话框 并在QListWidget中实现了简单的添加 删除 向上 向下操作 除了编辑之外的所有操作都很有效 所以我做了很多关于如何使项目可编辑的搜索 但结果并不令人满意 我能
  • Imageview 不显示圆角

    我试图使我的布局像这样 但我无法使我的图像视图像这样带有圆角 它在 Android studio 的布局编辑器中完美显示 但在真实设备中我得到的是平角 我厌倦了 XML 和代码 但没有一个对我有用 请帮助我使我的布局像这个示例图像一样 我的
  • Python:基于 Pandas 中的 2 列进行分箱

    寻找一种基于 Pandas 中的 2 列的快速而优雅的分类方式 这是我的数据框 filename height width 0 shopfronts 23092017 3 285 jpg 750 0 560 0 1 shopfronts 2
  • Ruby on Rails - 生成 bit.ly 样式标识符

    我正在尝试生成与 bit ly url 样式相同的 UUID 例如 http bit dot ly aUekJP 或 cloudapp 的 http cl dot ly 1hVU 甚至更小 我该怎么做 我现在正在为 ruby 使用 UUID