๋กœ์ผ“๐Ÿพ
article thumbnail
๋ฐ˜์‘ํ˜•

 

UUID๋Š” Universally Unique IDentifier์˜ ์•ฝ์ž๋กœ, ์ „์„ธ๊ณ„์— ํ•˜๋‚˜๋ฐ–์— ์—†๋Š” ID๋ผ๋Š” ๋œป์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฐ ID๋Š” ๊ณ ์œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„์—์„œ ์‚ฌ์šฉ์ž๋“ค์— UUID๋ฅผ ๋ถ™์—ฌ์„œ ๊ตฌ๋ถ„ํ•˜๋Š” ๋“ฑ ์—ฌ๋Ÿฌ ๋ฐฉ๋ฉด์—์„œ ์œ ์šฉํ•˜๊ฒŒ ์“ฐ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

UUID๊ฐ€ ๊ฒน์น˜๋ฉด ์–ด์ฉŒ์ง€?

์ด ๊ธ€์€ koreanhole ๋‹˜์˜ ๊ธ€์ž…๋‹ˆ๋‹ค. Intro ์ตœ๊ทผ UOS๊ณต์ง€์‚ฌํ•ญ ์•ฑ์˜ ๋ฐฑ์—”๋“œ ์‹œ์Šคํ…œ์„ ๊ต์ฒดํ•˜๋Š” ์ž‘์—…์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด Firebase์˜ Firestore๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ๋Š”๋ฐ ์ด๋ฒˆ์— ์ƒˆ๋กญ๊ฒŒ Nestjs๋กœ ์„œ๋ฒ„๋ฅผ ์ž‘์„ฑํ•˜๋Š”

kingofbackend.tistory.com

 

์„ค์น˜

$ 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);

 

 

 

 

Node.js ์œ ์šฉํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ - uuid

UUID๋Š” Universally Unique IDentifier์˜ ์•ฝ์ž๋กœ, ์ „์„ธ๊ณ„์— ํ•˜๋‚˜๋ฐ–์— ์—†๋Š” ID๋ผ๋Š” ๋œป์ด๋‹ค. ์ด๋Ÿฐ ID๋Š” ๊ณ ์œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„์—์„œ ์‚ฌ์šฉ์ž๋“ค์— UUID๋ฅผ ๋ถ™์—ฌ์„œ ๊ตฌ๋ถ„ํ•˜๋Š” ๋“ฑ ์—ฌ๋Ÿฌ ๋ฐฉ๋ฉด์—์„œ ์œ ์šฉํ•˜๊ฒŒ ์“ฐ์ผ ์ˆ˜ ์žˆ๋‹ค.

fred16157.github.io

 

๋ฐ˜์‘ํ˜•
profile on loading

Loading...