UUIDを作るとき、色んな方法があるとは思いますが、備忘録です。
UUIDとは
- Universally Unique Identifier
- 汎用一意識別子
一意に特定可能な識別子。
16バイトの数値で表される。
例: a7c4eab7-1540-47bd-9302-7fda5df5c54e
UNIXコマンド
uuidgen
$ uuidgen -r
$ uuidgen -t
-r (デフォルト)
乱数を使って UUID を生成
-t
現在時刻とMACアドレスを元に生成
プログラム
Perlだとこんな感じ。
InstallLibrary
$ sudo perl -MCAPN -e 'install Data::UUID'
UUID
use Data::UUID;
my $gen_uuid = Data::UUID->new()->create_str();
とか
namespace
use Data::UUID qw(NameSpace_URL);
my $gen_uuid = Data::UUID->new->create_from_name_str(NameSpace_URL, "hoge.hoge.jp")
とか。
ちなみにRubyだとこうらしい。
uuidtools
require 'uuidtools'
p UUIDTools::UUID.ramdom_create.to_s
で、中身はと言うと、だいたいこんな感じかな?
現在の時間を取得
↓
すごい難しい乱数作成
で、sha1と現在時刻を使うらしいのでこんな感じかなぁって書いてみた。
SHA1&Time
use Digest::SHA1 qw(sha1_hex);
use Time::HiRes qw(gettimeofday);
sub _tsuskuruzo {
略
my $uuid = substr( sha1_hex( gettimeofday . $hoge ), 0, $byte_num);
}