10
votes

Quel module ou quelle bibliothèque utilisez-vous pour générer un identifiant universellement unique (UUID) dans Erlang?

Quel module ou quelle bibliothèque utilisez-vous pour générer un identifiant universellement unique (UUID)?


1 commentaires

De loin, la plus jolie et la plus complète - complète (mais je suis biaisée): Zuuid


9 Réponses :


6
votes

7 commentaires

Je ne peux pas exécuter v4 (): 2> UUID: V4 (). ** Erreur d'exception: Aucune clause de fonction correspondant au hasard: uniforme (281474976710656.0) en fonction UUID: V4 / 0


Il n'ya pas beaucoup de point dans la recalculition des mathématiques: POW (2, 48) tout le temps de toute façon, il pourrait simplement être remplacé par 16 # FFFFFFFFFFFF. Les autres de la même manière.


@sinnus Découvrez ce commit, c'était rapide Github.com/travis/ erlang-uuid / numéros / # numéro / 1


Merci! Mais j'ai trouvé une autre solution de Couch_DB.


Serait bien si vous le postez ici depuis cette page Tops Google Recherche pour "Erlang uuid"


Générateur UUID ERLANG de CouchDB: svn.apache.org/viewvc/ Couchdb / Trunk / SRC / Couchdb / Couch_uuids. Erl


Pourquoi importerez-vous au hasard si vous utilisez aléatoire: uniforme? Vous n'avez pas besoin de le faire à Erlang.



3
votes

Pourquoi avez-vous utilisé rond (maths: pow (2, 48)) ? Je pense que 1 bsl 48 fonctionnera plus rapidement et le code ne perdra pas la compréhension.


0 commentaires

5
votes

4
votes

Je recommande d'utiliser les liaisons NIF OSP-UUID pour Erlang qui a un support d'armature https://github.com/yrashk/erlang-ossp-uuid xxx


0 commentaires



2
votes

Si vous n'avez pas besoin de suivre RFC 4122 Vous pouvez utiliser maintenant / 0 Appelez pour générer un ID unique sans dépendances externes, car le tuple, généré par appel d'appel est absolument unique à l'intérieur de la machine virtuelle et unique avec de grandes probabilités entre les nœuds de probabilité.


0 commentaires

2
votes

Celui-ci:

bibliothèque: https://gitlab.com/zxq9/zuuid

Docs: http://zxq9.com/projects/zuuid/docs/

C'est la seule implémentation complète de la RFC-4122 UUID à Erlang, je suis au courant des recommandations V1, V2, V3, V4, V5 et V4, et la "V6" mises en œuvre comme "VVI" ainsi qu'un mécanisme de détection de variante pour NFC, Microsoft et quelques autres saveurs non RFC. J'ai écrit cela comme un exemple de style et de documentation - basé sur les recommandations de Zillion que j'ai reçues du genre - suffisamment à être méchants sur la liste Erlang.

PS: énorme grâce aux personnes géniales des questions d'erlang-questions pour prendre le temps de me tirer dessus sur tout. La lib est bien meilleure pour cela.


0 commentaires

1
votes

Ce code génère du code UUID V4

-module(uuid).
-export([uuid_v4/0]).
-define(VARIANT10, 2#10).
-define(UUIDv4, 4).


uuid_v4() ->
    <<U0:32, U1:16, _:4, U2:12, _:2, U3:30, U4:32>> = crypto:strong_rand_bytes(16),
    lists:flatten(io_lib:format("~8.16.0b-~4.16.0b-~4.16.0b-~2.16.0b~2.16.0b-~12.16.0b",get_binary_uuid(<<U0:32, U1:16, ?UUIDv4:4, U2:12, ?VARIANT10:2, U3:30, U4:32>>))).

get_binary_uuid(<<TL:32, TM:16, THV:16, CSR:8, CSL:8, N:48>>) ->
    [TL, TM, THV, CSR, CSL, N].


0 commentaires