erlang: генератор uuid - PullRequest
       4

erlang: генератор uuid

9 голосов
/ 01 ноября 2009

Какой модуль / библиотеку вы используете для генерации uuid?

Ответы [ 8 ]

6 голосов
/ 08 июля 2013

Для будущих гуглов, таких как я, erlang-uuid из автобиффа работает очень просто.

5 голосов
/ 01 ноября 2009

от http://github.com/travis/erlang-uuid

-module(uuid).
-export([v4/0, to_string/1, get_parts/1]).
-import(random).

v4() ->
    v4(random:uniform(math:pow(2, 48)) - 1, random:uniform(math:pow(2, 12)) - 1, random:uniform(math:pow(2, 32)) - 1, random:uniform(math:pow(2, 30)) - 1).
v4(R1, R2, R3, R4) ->
    <<R1:48, 4:4, R2:12, 2:2, R3:32, R4: 30>>.
to_string(U) ->
    lists:flatten(io_lib:format("~8.16.0b-~4.16.0b-~4.16.0b-~2.16.0b~2.16.0b-~12.16.0b", get_parts(U))).

get_parts(<<TL:32, TM:16, THV:16, CSR:8, CSL:8, N:48>>) ->
    [TL, TM, THV, CSR, CSL, N].
4 голосов
/ 03 ноября 2009
3 голосов
/ 05 сентября 2012

Я рекомендую использовать привязки ossp-uuid nif для Erlang с поддержкой арматуры https://github.com/yrashk/erlang-ossp-uuid

ossp_uuid:make(v4, text)
2 голосов
/ 02 ноября 2009

Почему вы использовали round(math:pow(2, 48))? Я думаю, что 1 bsl 48 будет работать быстрее, и код не потеряет понимание.

1 голос
/ 18 ноября 2016

Тот, который я написал в качестве примера стиля и документации - основан на миллионах рекомендаций, которые я получил от достаточно любезных, чтобы быть в виду, людей из списка Эрланга.

Библиотека: https://gitlab.com/zxq9/zuuid

Документы: http://zxq9.com/projects/zuuid/docs/

PS: Огромное , благодаря удивительным людям с вопросами об эрланге, которые нашли время, чтобы высказать меня по всем вопросам. Библиотека намного лучше для этого.

1 голос
/ 19 мая 2015

Если вам не нужно следовать RFC 4122 , вы можете использовать now/0 вызов для генерации уникального идентификатора без внешних зависимостей, потому что кортеж, сгенерированный вызовом now, абсолютно уникален внутри ВМ и уникален с большой вероятностью между узлами.

1 голос
/ 03 мая 2013

Попробуйте это: https://github.com/afiskon/erlang-uuid-v4 Самая простая реализация из всех.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...