rootbox rootbox.co.kr

23Dec/112

[js] getElementsByClassName

jQuery 같은 프레임웍을 쓰지 않는다면 class name 으로 dom 셀렉팅을 할 수 없습니다.

지난번 javascript 스터디를 통해서 function 타입으로 제작하는 방법을 설명했었는데 조금 더 발전시켜 document 객체에 prototype으로 선언해 getElementById 와 같은 매서드의 형식으로 사용할 수 있도록 제작해봤습니다.

안타깝게도 Document 객체에 prototype 으로 선언하는 것이 IE 시리즈에선 허용되지 않아 아래와 같은 방식으로 우회했습니다.

테스트는 여기서 http://jsfiddle.net/rootbox/gtEkb/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
document.getElementsByClassName = function(name) {
    var obj = result = [];
    var n = name.split(".");
    var tag_name = null, class_name = null;
 
    if(n.length == 2) {
        tag_name = n[0];
        class_name = n[1];
    } else {
        tag_name = "*";
        class_name = n[0];
    }
 
    obj = document.getElementsByTagName(tag_name);
    for(var i in obj) {
        if(obj[i].className != class_name) continue;
        result.push(obj[i]);
    }    
 
    return result;
};
 
Element.prototype.getElementsByClassName = function(name) {
    var obj = result = [];
    var n = name.split(".");
    var tag_name = null, class_name = null;
 
    if(n.length == 2) {
        tag_name = n[0];
        class_name = n[1];
    } else {
        tag_name = "*";
        class_name = n[0];
    }
 
    obj = this.getElementsByTagName(tag_name);
    for(var i in obj) {
        if(obj[i].className != class_name) continue;
        result.push(obj[i]);
    }    
 
    return result;
};
 
console.log(document.getElementsByClassName("p.a"));
console.log(document.getElementsByClassName("span.a"));
console.log(document.getElementsByClassName("a"));
console.log(document.getElementById("a").getElementsByClassName("span.a"));
Tagged as: , , 2 Comments
18Dec/112

Consolas 폰트와 맑은고딕 맵핑

마땅한 코딩 폰트가 없어서 살펴보던 차에 MS Visual Studio 에서 기본 코딩 폰트로 사용하고 있는 Consolas 가 괜찮다는 생각이 들어 사용하려고 보니 VS 가 아닌 환경이라서 그런지 한글이 깨져 버리는 문제가 생겨 검색해보니 레지스트리를 고쳐 맵핑하는 방법이 있었더군요.

작업하는 환경마다 고치는게 귀찮아서 해당 부분만 발췌해서 파일로 저장했습니다.
※ 레지스트리를 조작하여 발생하는 문제는 전적으로 고갱님께 있습니다.

reg. download > http://repo.appspace.kr/rootbox.co.kr/consolas.7z

24Nov/110

Apple Push Notification – 개발 등록과 인증서 발급

CSR 을 만들어서 인증을 받아야 하므로, Keychain Access 를 실행하고 Keychain Access > Certificate Assistant > Request a Certificate From a Certificate Authority With "사용자계정이름"... 을 선택
이메일 주소와 이름을 입력하고 Save to Disk 선택 > 저장할 위치를 선택하고 저장

iOS Provisioning Portal > App IDs 에서 Apple Push Notification Service 를 활성화 > CSR 파일을 요구하면 윗 단계에서 만든 CSR 파일 선택 > APNS 가 활성화 되며 인증 파일을 Download 받을 수 있게 활성화 되는데 인증파일 다운로드 > 설치

Keychain Access 에 아래와 같이 등록됨

Apple Development iOS Push Service Certificate 에서 오른쪽 버튼 클릭 > Export > apns-dev-cert.p12 로 저장
아래 key 파일도 위와 같은 방식으로 Export > apns-dev-key.p12 로 저장

터미널을 열고 pem 으로 Convert

openssl pkcs12 -clcerts -nokeys -out apns-dev-cert.pem -in apns-dev-cert.p12
openssl pkcs12 -nocerts -out apns-dev-key.pem -in apns-dev-key.p12

push 발송을 할 때 마다 비밀번호 입력이 귀찮다면

openssl rsa -in apns-dev-key.pem -out apns-dev-key-noenc.pem

처럼 추가로 만들어 주고, cert 과 key 파일을 합침

cat apns-dev-cert.pem apns-dev-key-noenc.pem > apns-dev.pem

실제 배포용 인증서도 위와 같은 방식으로 만들면 됨.