티스토리 뷰
발생일: 2011.11.22
문제:
그제였나.
Facebook Javascript SDK 코드가 어떻게 구현되었나 읽어보다가,
랜덤 키를 생성하는 재밌는 코드를 발견해 메모해둔다.
해결책:
iframe을 갱신하거나, jsonp 요청을 보낼 때 사용할 용도로 랜덤 키를 생성하는데,
아래 코드가 그 메서드이다.
자세히 들여다보면,
1. 'f' + : 'f' 문자열에 뒤의 것을 더할 건데, // f
2. Math.random() : 0~1 사이의 랜덤한 수 생성에 // 0.13190673617646098
3. * (1 << 30) : 2의 30승을 곱하고, // 0.13190673617646098 * 1073741824 = 141633779.5
4. .toString(16) : 16진수로 문자열로 표현한 후에, // Number(141633779.9).toString(16) = 87128f3.8
5. .replace('.', '') : 문자열에서 닷(소수점)을 제거한다. // 'f' + 87128f38 = f87128f38
이 되는 것~
Number().toString()의 파라미터로는 2, 4, 8, 16, 32 가 지원되니,
나중에 활용핼 볼 때엔 32진수로 바꾸는 것도 좋을 것 같다.
문제:
그제였나.
Facebook Javascript SDK 코드가 어떻게 구현되었나 읽어보다가,
랜덤 키를 생성하는 재밌는 코드를 발견해 메모해둔다.
해결책:
iframe을 갱신하거나, jsonp 요청을 보낼 때 사용할 용도로 랜덤 키를 생성하는데,
아래 코드가 그 메서드이다.
guid: function () {
return 'f' + (Math.random() * (1 << 30)).toString(16).replace('.', '');
}
자세히 들여다보면,
1. 'f' + : 'f' 문자열에 뒤의 것을 더할 건데, // f
2. Math.random() : 0~1 사이의 랜덤한 수 생성에 // 0.13190673617646098
3. * (1 << 30) : 2의 30승을 곱하고, // 0.13190673617646098 * 1073741824 = 141633779.5
4. .toString(16) : 16진수로 문자열로 표현한 후에, // Number(141633779.9).toString(16) = 87128f3.8
5. .replace('.', '') : 문자열에서 닷(소수점)을 제거한다. // 'f' + 87128f38 = f87128f38
이 되는 것~
Number().toString()의 파라미터로는 2, 4, 8, 16, 32 가 지원되니,
나중에 활용핼 볼 때엔 32진수로 바꾸는 것도 좋을 것 같다.
반응형
댓글
공지사항