Ruby on Rails - Generierung etwas.ly Stil uuids
Ich versuche, die UUIDs mit dem gleichen Stil wie bit.ly urls wie:
http://bit.ly/aUekJP
oder cloudapp lieben:
http://cl.ly/1hVU
die sind sogar noch kleiner
wie kann ich es tun?
Ich bin jetzt mit UUID gem für ruby, aber ich bin mir nicht sicher, ob es möglich ist, limitate die Länge und bekommen so etwas wie dieses.
Ich bin derzeit mit diesem:
UUID.generate.split("-")[0] => b9386070
Aber ich möchte, um noch kleinere und wissen, dass es einzigartig sein wird.
Jede Hilfe wäre so ziemlich geschätzt 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du verwechselst zwei verschiedene Dinge hier. Eine UUID ein universally unique identifier. Es hat eine sehr hohe Wahrscheinlichkeit des seins einzigartig, auch wenn Millionen von Ihnen entstanden auf der ganzen Welt zur gleichen Zeit. Es ist in der Regel angezeigt, als eine 36-stellige Zeichenfolge. Sie können nicht hacken off die ersten 8 Zeichen und erwarten, dass es eindeutig sein.
Bitly, tinyurl et-al-store-links und generieren einen kurzen code zu erklären, dass link. Sie nicht rekonstruieren Sie die URL aus dem code sehen Sie es in einem Daten-store und die Rückgabe der entsprechenden URL. Diese sind nicht UUIDS.
Ohne zu wissen, Ihre Anwendung ist es schwer zu beraten, welche Methode Sie verwenden sollten, aber Sie speichern könnte, was auch immer Sie zeigen auf, in einem Daten-store mit einem numerischen Schlüssel und dann rebase der Schlüssel zu base32 mit den 10 Ziffern und 22 Kleinbuchstaben, vielleicht die Vermeidung der offensichtlichen Tippfehler Probleme wie 'o', 'i' 'l' etc
BEARBEITEN
Auf die weitere Untersuchung es ist ein Ruby - base32 gem zur Verfügung, die Douglas Crockford ' s Base-32-Implementierung
5 Zeichen Base32-string repräsentieren mehr als 33 Millionen Ganzzahlen und eine 6-stellige Zeichenfolge über eine Milliarde.
Wenn Sie mit zahlen gearbeitet, können Sie mit der eingebauten ruby-Methoden
zurück
So dass Sie nicht haben, für etwas zu speichern, können Sie immer entschlüsseln einer eingehenden short_code.
Diese funktioniert ok für proof-of-concept, aber Sie sind nicht in der Lage zu vermeiden, mehrdeutige Zeichen wie: 1lji0o. Wenn Sie gerade suchen, um den code zu verschleiern Datenbank-Datensatz-IDs, das wird gut funktionieren. Im Allgemeinen, kurz-codes sollen leicht zu merken sein und der transfer von einem medium in ein anderes, wie das Lesen es auf einer Folie, oder hören es über das Telefon. Wenn Sie brauchen, um zu vermeiden, dass Sie Zeichen sind schwer zu Lesen oder schwer zu 'hören', müssen Sie möglicherweise zu wechseln, um einen Prozess, wo Sie generieren eine akzeptable code, und speichern Sie es.
to_i
akzeptiert ein radix so hoch wie 36, so dass Sie Verpacken können, noch mehr Informationen in ein paar Zeichen.Fand ich das zu kurz und zuverlässig:
Dieser spuckt eindeutige Schlüssel, die wie folgt Aussehen: '3qaishe3gpp07w2m'
Reduzieren Sie die 'jitter' Größe zu reduzieren die Größe Schlüssel.
Einschränkung:
Ist dies nicht gewährleistet einzigartige (verwenden Sie SecureRandom.uuid dafür), aber es ist sehr zuverlässig:
Der einzige Weg, um zu garantieren Einzigartigkeit zu halten, ist ein globaler Zähler und Schrittweite es für jeden Einsatz:
0000
,0001
usw.