본문 바로가기

Web9

[JavaScript]자바스크립트로 중복없는 쿠폰번호 생성(3)_예외처리 예외 처리 (1) 생성하는 쿠폰 번호가 중복되는가 recur: for (let i = 0; i < count; i++) { //쿠폰 번호가 중복되는지 검사 if (map.has(hex) === false) { //해당 key가 map 객체 안에 없다면 ... } else { //해당 key가 map 객체 안에 이미 있다면 console.log(&#39;코드 중복 발생!&#39;); } }​ ​ 예외 처리 (2) 해당 쿠폰 번호가 이미 db에 등록되어 있는가 쿠폰 번호를 생성하면 db에 등록해야 하는데, 혹시라도 중복이 발생할 가능성이 (아주 적지만) 존재한다(CRC encoding도 해시이기 때문에 거의 없긴 하다). 따라서 db를 쿼리하여 해당 쿠폰 번호가 등록되어 있는지 비교한 후, 등록되어 있지 않.. 2020. 8. 6.
[JavaScript]자바스크립트로 중복없는 쿠폰번호 생성(2)_코드 최적화 앞선 포스팅대로, 중복 없는 쿠폰번호를 생성하기 위한 여러 방법을 탐구하고 간단하게 코드를 짜 보았다. 이제 이 너저분한 코드에 필요없는 부분들을 제거하자. flow는 다음과 같다. 쿠폰 코드 생성(CRC32) 생성된 코드의 중복 검사(map) 및 중복되지 않은 데이터 등록 생성된 map의 값들을 db 등록(firebase.database().set()) 쿠폰 코드 생성 for (let i = 0; i < count; i++) { let arr = new makeCouponStr(await getUnixTime(), &#39;seed2&#39;, &#39;seed3&#39;); coupons.push([i, arr.seed1, arr.seed2, arr.seed3]); } let x = coupons.j.. 2020. 8. 6.
[JavaScript]자바스크립트로 중복없는 쿠폰번호 생성(1)_아이디어 웹 서비스 스타트업에서 인턴으로 백엔드 업무를 수행할 때, 서비스에 필요한 여러 기능을 처리하는 백엔드 API 개발을 주 업무로 맡았었다. 그 중 하나가 쿠폰 번호 생성기이다. 좋은 쿠폰 번호(난수) 생성? 쿠폰 번호 생성이라 하면, 랜덤함수 등을 이용해 난수를 만드는 것을 기본적으로 떠올릴 수 있을 것이다. 그러나 보안적인 관점에서, 아주 작은 확률일지라도 중복되는 번호가 생성될 확률이 있거나, 랜덤 함수에서 사용하는 pseudo-random 주기가 짧을수록 문제가 발생한다. 따라서 쿠폰번호를 랜덤하게 생성하되, 중복에 대한 충돌 검사를 실행한 후 최종 랜덤 번호를 DB에 입력하기로 하였다. 해야 할 일 8자리 랜덤 번호 생성 충돌검사 개발에 앞서 아이디어를 얻기 위해 구글링을 하였는데, 많은 검색 결.. 2020. 8. 6.