id is NSString or something else?
1 2 3 4 5 6 | |
참고로, var 가 실제로 문자열일 때 [var class] == [NSString class] 는 실패한다 :)
id is NSString or something else?
1 2 3 4 5 6 | |
참고로, var 가 실제로 문자열일 때 [var class] == [NSString class] 는 실패한다 :)
jQuery 템플릿이 하나의 DIV 가 아니라 여러 개의 엘리먼트로 구성될 경우, append 하기 전에 내부에 있는 위젯들을 손댈 방법을 찾지 못했다.
위 예제처럼, #test 는 하나의 DIV 로 묶여져 있어서 appendTo 하기 전에 위젯을 만들 수 있지만, #test2 처럼 여러 개의 엘리먼트들이 나눠져 있는 경우에는 .tmpl(data) 로 렌더링을 하면 [h1, p, div.progressbar] 의 배열이 튀어나오는데, 이 배열에다가 대고 find 를 해도 아무 일도 발생하지 않는다. (for 를 돌아도 마찬가지)
일단은 그냥 마음편하게 하나로 묶는게 유일한 해답일 거 같은데, 그나저나 .tmplItem 은 도대체 어디에 쓰는 물건일까?
Don`t use window.setInterval() for infinite blinking.
1 2 3 4 5 6 7 | |
각종 다양한 node의 라이브러리를 사용하려면 패키지 매니저인 npm 부터 가장 먼저 설치해야 된다. 이때 패키지들을 /usr/local 대신 사용자 폴더(~/.node_libraries)에 저장하기 위해서 .npmrc 를 만들어야 한다. (via http://blog.outsider.ne.kr/539)
1 2 3 4 5 6 7 8 9 | |
참고로, 모든 npm 소스는 ~/.node_libraries/.npm 아래에 저장되어 있다.
가장 간단한 express 서버는 다음과 같다. curl 로 로컬 서버에 접속해볼 수 있지만, 먼저 테스트를 위해서 아마존 EC2 콘솔에 접속해서 방화벽의 8080 포트를 열어둬야 한다.
var app = require(‘express’).createServer();
app.get(‘/’, function(req, res){
res.send(‘hello world’);
});
app.listen(8080);
가장 간단한 socket.io 서버와 클라이언트는 github 에 존재한다. (이상하게도 제대로된 매뉴얼을 찾기가 힘드니, 그냥 샘플 코드를 보기를 권한다)
1 2 3 | |
서버와 클라이언트간의 통신은 순전히 JSON 으로 구현된다. 보내는 쪽에서
1
| |
라고 보내고, 받는 쪽에서는
1 2 3 4 5 6 7 | |
이런 식의 전통적인 소켓 프로그래밍이 이루어진다. 브로드캐스팅은 그냥 소켓에 대고
1
| |
이라고 하면 끝. 첫 소감은
정도 되겠다. 한마디로 꽤 재미있는 장난감이 될 것 같다.
이번 11월부터 1년 무료인 마이크로 인스턴스라는 게 있다길래 node.js 를 위해서 재빨리 가입을 했다. 왜 하필 node.js 인지 궁금하신 분은 nodejs-has-a-bright-future 를 읽어보시길. 싱가포르쪽이 좀 느린 듯해서 그냥 미쿡 버지니아에다가 만들었다.
처음 가입할 때 전화를 준다고 해서 살짝 망설였는데 그냥 미리 녹음된 전화에 개인키를 입력해서 인증하는 방식이라길래 용감하게 시도했으나.. 아무리 등록하려고 해도 요청 폭주로 전화가 오지 않아서 이틀이나 기다려야 했다. (3회 실패하면 12시간 후에나 다시 요청이 가능한 시스템..) 알고보니 전화 번호를 잘못 써서.울먹.. 다들 외국 사이트 가입할 때 +82 국제 전화 번호 붙이지 않나요 ㅠㅠ
어쨌든 초보답게 아마존에서 제공하는 기본 리눅스 AMI 64bit 를 설치하고 보니, git 는 커녕 gcc 도 설치 안된 깔끔한 배포판이었다. 10년만에 리눅스를 만져본 터라 어떤 패키지 시스템을 써야 하는지 헷갈렸는데, 요즘은 yum 이란게 인기가 있나보다. (마지막으로 써본 게 rpm 이었던가..)
기억 소멸을 방지하기 위해 대충 순서를 정리해본다 :P
1 2 3 4 5 6 7 8 9 | |
마이크로 인스턴스에서 빌드 시간은 17분 정도 걸린다. configure 할 때 select/eio/kqueue 를 찾는 걸 보니, 내부적으로 저런 걸 쓰는 모양이다. 내 경우에는 test-exec, test-repl, test-http-curl-chunk-problem 3개의 테스트가 실패했다 :(
ps. 오랜만에 느끼는 이 콘솔의 감촉. 아 섹시하다~~
jQuery 템플릿의 조건문/반복문들은 와 같이 선언하는데, 이게 Django의 템플릿 변수 선언과 동일해서 템플릿 문법 에러가 발생하게 된다. 이를 해결하려면 모든 에 대해서
{% templatetag openvariable%}if ${var}==a{% templatetag closevariable%}
과 같이 바꿔줘야 한다. StackOverflow 에 물어보니 Django 1.3 에서 <% raw %> 에 대한 제안이 들어가긴 했다고 하는데, 언제 나올지도 모르고 해서 구글에 검색해보니 다행스럽게도 누군가가 이미 구현해둔 걸 찾을 수 있었다.
http://www.holovaty.com/writing/django-two-phased-rendering/
다만 GPL 이라는 점에 유의할 것 :P