절대 그냥 코드 복붙해서 사용하지 마시고, 꼭 UUID에 대한 개념과 해당 코드의 동작에 대해서 숙지하신 이후에 사용해주세요!!!
이 코드를 사용하신다면 코드 리뷰 코멘트에 UUID에 대한 퀴즈를 날리겠습니다 ㅋㅋㅋㅋㅋ
/** * 랜덤한 문자 또는 숫자로 구성된 UUID v4를 생성해주는 함수입니다. */ export function generateUUID(): string { // timeStmap let d = new Date().getTime(); return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { let r = Math.random() * 16; r = (d + r) % 16 | 0; d = Math.floor(d / 16); return (c === 'x' ? r : (r & 0x3) | 0x8).toString(16); }); }
어플리케이션을 만들다보면 특정 대상에게 고유한 ID를 부여해줘야 하는 경우가 발생합니다.
단순히 integer를 auto increasement 시켜가며 만드는 ID는 단순히 마지막 ID에 +1 연산을 수행하여 새로운 ID를 만들기 때문에 동시성이 보장되어야 하는 환경에서는 ID가 충돌할 수도 있다는 위험이 존재해, 난수로 구성할 수 있는 ID 체계를 사용하는데요.
클라이언트 어플리케이션에서는 동시성이 보장되어야 하는 환경에서 ID를 만들어야 하는 경우가 많지 않기 때문에 이러한 위험이 적기는 하지만, 그래도 충돌 가능성이 낮은 ID를 만들어야 하는 상황은 존재하기 때문에 이럴 때 UUID 개념이 유용하게 사용될 수 있습니다. (ex. 유저 디바이스를 구분하기 위한 ID를 부여해서 서버로 보내야 한다던가…이런 ID는 물리적 클라이언트 머신에 대한 구분이 되어야 하기 때문에 서버에서 못 만듦.)