UUID๋ Universally Unique IDentifier์ ์ฝ์๋ก, ์ ์ธ๊ณ์ ํ๋๋ฐ์ ์๋ ID๋ผ๋ ๋ป์ ๋๋ค. ์ด๋ฐ ID๋ ๊ณ ์ ํ๊ธฐ ๋๋ฌธ์ ์๋ฒ์์ ์ฌ์ฉ์๋ค์ UUID๋ฅผ ๋ถ์ฌ์ ๊ตฌ๋ถํ๋ ๋ฑ ์ฌ๋ฌ ๋ฐฉ๋ฉด์์ ์ ์ฉํ๊ฒ ์ฐ์ผ ์ ์์ต๋๋ค.
์ค์น
$ npm install uuid
uuid ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ install ํฉ๋๋ค.
์ข ๋ฅ
UUID๋ ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ์์ผ๋ก ์์ฑ ๊ฐ๋ฅํฉ๋๋ค.
v1: ํ์์คํฌํ(์๊ฐ) ๊ธฐ์ค์ผ๋ก ์์ฑ
v3: MD5 ํด์ ๊ธฐ์ค์ผ๋ก ์์ฑ
v4: ๋๋ค๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก ์์ฑ
v5: SHA-1 ํด์ ๊ธฐ์ค์ผ๋ก ์์ฑ
v1 (ํ์์คํฌํ ๊ธฐ๋ฐ) UUID ์์ฑ
v1 ๊ฐ์ ๊ฒฝ์ฐ ํ์ฌ ์๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก uuid ๊ฐ์ ์์ฑํ๋๋ฐ uuid๊ฐ ์์ฑ๋ ์๊ฐ๊ณผ MAC์ฃผ์๋ก uuid๋ฅผ ์ ์ถํ ์ ์๊ธฐ ๋๋ฌธ์ ์์ ํ์ง ์๋ค๊ณ ํฉ๋๋ค.
import { v1 } from 'uuid';
//๊ธฐ๋ณธ ์ค์ ์ผ๋ก ์์ฑ
console.log(v1());
//์ค์ ์ ๋ถ์ฌ์ ์์ฑ
let options = {
node: // ๋ฐ์ดํธ๊ฐ 6๊ฐ
clockseq: // ํด๋ญ ์ํ์ค (0 - 0x3fff ์ฌ์ด ๊ฐ)
msecs: // ๋ฐ๋ฆฌ์ด
nsecs: // ๋๋
ธ์ด
random: // 16๊ฐ์ ๋๋ค ๋ฐ์ดํธ๊ฐ
rng: // random ๋ณ์๋ฅผ ๋์ฒดํ 16๊ฐ์ ๋๋ค ๋ฐ์ดํธ๊ฐ์ ๋ฐํํ๋ ํจ์
}
console.log(v1(options));
v3 (MD5 ๊ธฐ๋ฐ) UUID ์์ฑ
RFC ํ์ค์ ๋ฐ๋ฅด๋ฉด ํ์ํธํ ๊ฐ์ ์ฌ์ ๊ฐ ์๋๋ผ๋ฉด v3๋ณด๋ค๋ v5๋ฅผ ์ถ์ฒํ๋ค๊ณ ํฉ๋๋ค.
import { v3 } from 'uuid';
//v5๋ ๋ค์์คํ์ด์ค๋ผ๋ ๊ฐ๊ณผ ํด์ฑํ ๊ฐ์ผ๋ก UUID๋ฅผ ๋ง๋ ๋ค.
//๊ทธ๋์ ๋ค์์คํ์ด์ค๋ก ์ฌ์ฉํ UUID ๊ฐ์ด ํ์ํ๋ค.
console.log(v3('ํด์ฑํ ๊ฐ', '1a30bae5-e589-47b1-9e77-a7da2cdbc2b8'));
//ํด์ฑํ ๊ฐ์ด URL์ด๋ ๋๋ฉ์ธ์ธ ๊ฒฝ์ฐ ๋ฏธ๋ฆฌ ๋ง๋ค์ด์ง ๋ค์์คํ์ด์ค๋ฅผ ํ์ฉํ๋ฉด ๋๋ค.
//ํด์ฑํ ๊ฐ์ด ๋๋ฉ์ธ์ธ ๊ฒฝ์ฐ
console.log(v3('www.google.com'), v3.DNS);
//ํด์ฑํ ๊ฐ์ด URL์ธ ๊ฒฝ์ฐ
console.log(v3('https://www.google.com'), v3.URL);
v4 (๋๋ค๊ฐ ๊ธฐ๋ฐ) UUID ์์ฑ
import { v4 } from 'uuid';
//๊ธฐ๋ณธ ์ค์ ์ผ๋ก ์์ฑ
console.log(v4());
//์ค์ ์ ๋ถ์ฌ์ ์์ฑ
let options = {
random: // 16๊ฐ์ ๋๋ค ๋ฐ์ดํธ๊ฐ
rng: // random ๋ณ์๋ฅผ ๋์ฒดํ 16๊ฐ์ ๋๋ค ๋ฐ์ดํธ๊ฐ์ ๋ฐํํ๋ ํจ์
}
console.log(v4(options));
v5 (SHA-1 ๊ธฐ๋ฐ) UUID ์์ฑ
import { v5 } from 'uuid';
//v5๋ ๋ค์์คํ์ด์ค๋ผ๋ ๊ฐ๊ณผ ํด์ฑํ ๊ฐ์ผ๋ก UUID๋ฅผ ๋ง๋ ๋ค.
//๊ทธ๋์ ๋ค์์คํ์ด์ค๋ก ์ฌ์ฉํ UUID ๊ฐ์ด ํ์ํ๋ค.
console.log(v5('ํด์ฑํ ๊ฐ', '1a30bae5-e589-47b1-9e77-a7da2cdbc2b8'));
//ํด์ฑํ ๊ฐ์ด URL์ด๋ ๋๋ฉ์ธ์ธ ๊ฒฝ์ฐ ๋ฏธ๋ฆฌ ๋ง๋ค์ด์ง ๋ค์์คํ์ด์ค๋ฅผ ํ์ฉํ๋ฉด ๋๋ค.
//ํด์ฑํ ๊ฐ์ด ๋๋ฉ์ธ์ธ ๊ฒฝ์ฐ
console.log(v5('www.google.com'), v5.DNS);
//ํด์ฑํ ๊ฐ์ด URL์ธ ๊ฒฝ์ฐ
console.log(v5('https://www.google.com'), v5.URL);
'...' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[OS] ๋ ์ด์ ์ด๋ฒ๋ฒํ์ง๋ง์!! ์ค๋ ๋์ ํ๋ก์ธ์ค (13) | 2021.04.26 |
---|---|
[Python] list(๋ฆฌ์คํธ)์ ์์ ๋ณต์ฌ์ ๊น์ ๋ณต์ฌ (0) | 2021.04.25 |
Node.js์ ๊ดํ 10๊ฐ์ง ํํ - ๋ผ์ด์ธ ๋ฌ๊ณผ Deno.js (8) | 2021.04.11 |
[JavaScript] ๊ธฐ๋ค๋ ค! ๋จน์ด! async/await ์ดํดํ๊ธฐ (6) | 2021.03.28 |
[Server] ๋ก๋๋ฐธ๋ฐ์(Load Balancer)๋ ์ ํ์ํ ๊น? (6) | 2021.03.15 |