'책' 카테고리의 다른 글
| Effective Unit Testing (0) | 2014.11.02 |
|---|---|
| 자바스크립트 자료구조와 알고리즘 (1) | 2014.09.29 |
| 파이썬을 활용한 베이지안 통계 (2) | 2014.08.26 |
| 뉴욕의 프로그래머 (1) | 2008.10.25 |


| Effective Unit Testing (0) | 2014.11.02 |
|---|---|
| 자바스크립트 자료구조와 알고리즘 (1) | 2014.09.29 |
| 파이썬을 활용한 베이지안 통계 (2) | 2014.08.26 |
| 뉴욕의 프로그래머 (1) | 2008.10.25 |
표지르 보면 알겠지만, 고슴도치 보인다. 오라일리 스타일의 동물이 있는 컴퓨터 서적이다. 이런 책은 보통 정말 딱딱한 경우가 많은데, 책이 두껍지 않아서 그런지 딱딱하다기 보다는 재미있게 읽은 것 같다. 자료구조와 알고리즘 책은 보통 C나 자바로 공부하는 경우가 대부분인 것 같은데, 자료구조 자체가 매우 유연하게 설계된 자바스크립트라서 그런지 책을 읽으면서 어렵다는 느낌보다는 '재미있다' 라는 느낌이 더 들었던 것 같다.
위의 사진을 보면 알겠지만,
책에 코드가 정말 많다. 그리고 설명은 그렇게 많지않다. 이 책의 저자는 마치 궁금하면 코드를 보고 생각해봐! 라고 말하는 것 같다. 이런 부분은 좋기도 하고 안좋기도 한데, 왜냐하면 이 책을 자바스크립트에 익숙하지 않은 사람이 본다면 무슨말을 하는 코드인지 알기가 힘들기 때문에 책을 읽기가 편하지 않을 것이기 때문이다.
그리고 이 책에서는 스파이더 몽키라는 나로서는 처음 써보는 그다지 유명하지 않은 자바스크립트 쉘을 사용하고 그리고 거기에서만 사용되는 함수를 자주 사용하기 때문에 이 책으로 공부를 하려면 스파이더 몽키를 사용하던지 아니면 자기 나름대로의 방법으로 코드를 고쳐서 사용해야한다. 나는 스파이더 몽키는 이 책에 나온 코드의 의미가 뭔지 확인 할 때에만 사용했고, 보통은 nodejs로 코딩을 했었다. 모든 챕터를 다 정리한 건 아니지만, 9장까지 현재 해놓은 상태이고 나머지 장도 조만간 다 할 계획이다. 링크는 아래에 있다.
이 책의 저자는 학교에서 프로그래밍을 가르치시는 선생님이다. 그래서 그런지 챕터의 끝에 꼭 이런 연습문제들이 붙어 있다. 스스로의 코딩 실력을 향상시키려면 이런 연습문제를 풀어야 되는 것 아닐까라는 생각이든다. 다시 한번 볼때는 이책의 연습문제도 모두 풀어봐야 겠다는 생각이든다.
아쉬운 점으로 이책에 코드에 오타가 가끔 좀 보이는데, 이부분은 추후에 수정이 되었으면 한다. 일단 내가 찾은 것들은 출판사 홈페이지에 등록해둘 생각이다. 그리고 저자분이 자바스크립트에 그다지 많이 정통하신 분은 아니라는 생각이 드는데, 왜냐하면 자바스크립트의 프로토타입 상속을 사용하지 않는 점이나, 코드를 여러번 중복해서 쓰는점, 그리고 가끔 비효율적인 코드들이 보이기 때문이다. 그렇지만, 로직 자체에는 문제가 없으므로 보는 사람이 알아서(?) 수정을 하면되겠다..
이 책은 자료구조에 대해서 개념은 알고 구현은 해보지 않았지만, 한번 만들어 보고 싶은 사람중에 자바스크립트에 나름 익숙한 사람이 보면 최적인것 같다. 많이 어렵지도 않고 적당한 난이도로 되어 있으나 그래도 나름 시간이 많이 필요한 책이다. 자료구조와 알고리즘 둘다를 한책으로 볼 수 있다니 그것도 자바스크립트로!! 매력적인 책이다.
| Effective Unit Testing (0) | 2014.11.02 |
|---|---|
| 자바스크립트 자료구조와 알고리즘 (1) | 2014.09.29 |
| 파이썬을 활용한 베이지안 통계 (2) | 2014.08.26 |
| 뉴욕의 프로그래머 (1) | 2008.10.25 |
이 책은 누구를 위한 책인가?
200페이지 정도되는 기술서적 치고는 매우 얇은 책이다. 보통의 C언어 기본서 같은 경우는 200페이지라면 거의 일주일 만에 볼 수 있지만, 이 책은 베이지안 공식을 활용해서 삶속의 다양한 문제들을 어떻게 푸는지 재미있게(?) 설명한 책인지라, 파이썬과 통계학을 동시에 알아야하는 책이다. 최근에 유행하는 학문트렌드인 융합의 장르가 되겠다.
그러면, 파이썬이 먼저인가 통계가 먼저인가? 이 책은 파이썬에 대해서는 거의 가르쳐주지 않는다. 책에 있는 예제를 풀기 위해서는 책의 저자 앨런 B. 다우니가 만든 'thinkbayes.py' 라는 파이썬 모듈을 사용해야하는데, 이 모듈은 numpy라는 모듈과 scipy 그리고 matplotlib이라는 모듈에 의존성이 있다. 그래서 파이썬을 잘 모르는 사람들은 아마 예제를 돌려보는데만 시간을 상당히 투자해야 할 것이다. 이 책을 쓴 저자는 파이썬이 쉬워서(물론 쉬운 언어에 속하지만) 파이썬을 택했고, 더구나 베이지안을 잘 설명하기 위해 일상생활의 예제들을 가지고 설명을 해두었다.
이책의 두께가 200페이지 가량 있다는 것이 의미하는 것은 이 책만으로 설명이 부족한 부분이 많다는 것이다. 그렇다면 이 책을 술렁 술렁 넘겨 볼 수 있는 독자는 통계학을 알면서(베이지안 통계) 그것을 프로그래밍으로 어떻게 표현해야 하는지 궁금한 사람이나 파이썬에 매우 능숙한데 통계학은 기본(고등학교 때 배우는 확률에 관한 것들)만 알고 있는 프로그래머가 되겠다. 아마 생각에 앞의 사람들도 술렁 술렁은 못넘길것 같다. 실제로 통계과에서 베이지안을 학부 2학년때부터 배운 나조차도 술렁술렁은 넘기기 힘든 문제들이 많다.
그 이유로 책이 얇아서 설명을 정말 최소한 만 해놓은 경우가 많고, 소스에 대한 설명도 있긴 하지만, 이게 어떻게 돌아가는 건지 알려면 생각이 조금 필요하다.
그렇다면 이 책은 어떻게 읽으면 좋을까?
이 책은 요리책처럼 따라서 해보는 책도 아니고, 단순히 지식을 열거해 놓은 책도 아니다. 기본적인 지식이 있다는 가정하에 (그 기본적인 지식은 물론 파이썬과 통계학이다) 그 지식을 어떻게 사용할지에 대해 앨런 B. 다우니가 자신의 지혜를 잘 펼쳐놓은 책이다. 지혜를 물려받기 위해서는 그 지혜를 음미해야한다. 천천히 곱씹으며 책의 저자가 한말이 무엇인지 잘 읽어보는 것이 중요하다. 프로그램이야 오타없이 돌리면 값이 나오지만, 그것이 왜 그렇게 되는 것인지 이해할 필요가 있고, 그리고 통계학을 잘모르는 사람이라면 우도(likelyhood) 같은 말이나 조건부 확률 이런 용어들에 대해 익숙해질 필요가 있다.
위에 적어 놓은 말을 한마디로 줄이면, 쉽지 않은 문제들이 대부분이므로 천천히 이해하면서 읽자. 가 되겠다. 개인적으로는 읽으면서 이해가 안되는 것들은 위키피디아나 구글에서 찾아서 힌트를 많이 얻었다. 저자가 운영하는 블로그나 영분 pdf판 서적은 무료로 받을 수 있도록 해놓았기에 한글로 이해가 잘 안될 때는 영어로 보기도 했다.
thinkbayes 홈페이지 : http://www.greenteapress.com/thinkbayes/
원저자의 블로그 : http://allendowney.blogspot.kr/
설치관련
위에서도 말했지만, 파이썬과 통계를 안다고 가정한 책이기에 좀 불친절한 부분들이 있다. 특별히 파이썬의 의존성이 걸리는 부분들을 설치하는 부분이나 저자가 만든 모듈을 다운 받을 때 일일이 찾아보거나 주소창에 쳐서 다운받고 했는데, 귀찮은 이들을 위해 소스를 받을 수 있는 링크를 걸어둔다.
http://thinkbayes.com/thinkbayes.py
http://thinkbayes.com/thinkbayes_code.zip
https://github.com/AllenDowney/ThinkBayes
| Effective Unit Testing (0) | 2014.11.02 |
|---|---|
| 자바스크립트 자료구조와 알고리즘 (1) | 2014.09.29 |
| 파이썬을 활용한 베이지안 통계 (2) | 2014.08.26 |
| 뉴욕의 프로그래머 (1) | 2008.10.25 |
| 인포그래픽 잘 맹글기 (0) | 2013.01.22 |
|---|---|
| 2008년 돌아보기 (1) | 2009.01.02 |
| 명언 (0) | 2008.06.13 |
| 목욕탕에서 인생 묵상하기... (1) | 2008.02.07 |
| 언제나 인생의 변화는 급하게 찾아온다... (0) | 2008.01.04 |
| 나를 힘들게 하는 당신은... (0) | 2007.11.05 |
root계정으로 들어가자
gyus라는 유저를 추가해보자.
adduser gyus
비밀번호를 설정하자.
passwd gyus
패스워드 설정하기
| 유저추가하기 (0) | 2012.05.19 |
|---|---|
| [리눅스 명령어] rm 정리 (0) | 2012.03.02 |
| 우분투 10.04에서 node.js설치하기 (0) | 2012.01.27 |
| [리눅스] 파일내 문자 검색 (0) | 2011.04.27 |
| 리눅스에 톰캣설치하기 (0) | 2010.07.21 |
| CentOs 버추얼박스 게스트추가설치하기 (0) | 2010.04.06 |
아래 링크에 있는 걸 해볼려고 가상머신 우분투에 열심히 설치했는데, 다시 설치하는 귀찮음을 방지하기 위해 공유함.
http://yobriefca.se/blog/2012/05/08/starter-for-10-scala/?utm_source=twitterfeed&utm_medium=twitter
몽고디비는 스크립트화할수 있으나..그냥 apt-get install mongodb로 설치하시길...
(이거는 나중에 생각나면 만들어서 올릴게요. ; )
http://www.mongodb.org/display/DOCS/Ubuntu+and+Debian+packages (요거 보고 따라하세용)
스칼라 설치
#!/bin/bash
wget http://www.scala-lang.org/downloads/distrib/files/scala-2.9.0.1.tgz
tar zvf scala-2.9.0.1.tgz
sudo mv scala-2.9.0.1 /usr/local/
ln -s /usr/local/scala-2.9.0.1 /usr/local/scala
SCALA_HOME="/usr/local/scala"
BIN_HOME="/usr/bin"
echo "INSTALL SCALA!"
ln -s $SCALA_HOME/bin/scala $BIN_HOME/scala
ln -s $SCALA_HOME/bin/scalac $BIN_HOME/scalac
ln -s $SCALA_HOME/bin/fsc $BIN_HOME/fsc
ln -s $SCALA_HOME/bin/sbaz $BIN_HOME/sbaz
ln -s $SCALA_HOME/bin/sbaz-setup $BIN_HOME/sbaz-setup
ln -s $SCALA_HOME/bin/scaladoc $BIN_HOME/scaladoc
ln -s $SCALA_HOME/bin/scalap $BIN_HOME/scalap
echo "INSTALL COMPLET!"
| [ubuntu]scala, play2 설치, 제거 스크립트 (0) | 2012.05.15 |
|---|---|
| Subversion의 프로퍼티 자주 쓰는거 (0) | 2012.05.10 |
문제를 한글로 누가 적어놓은 사람 없나..ㅠㅠ
;Exercise 1.3.
;Define a procedure that takes three numbers as arguments and
;returns the sum of the squares of the two larger numbers.
(define (sum a b) (+ a b))
(define (square a) (* a a))
(define (largerNumber2 a b)
(cond ((> a b) a)
((= a b) a)
((< a b) b)
)
)
(define (largerNumber3 a b c) (square (sum (largerNumber2 a b) (largerNumber2 a c))))
(largerNumber3 2 2 2)
(largerNumber3 10 11 12)
(largerNumber3 10 12 12)
| [scip]연습문제 1.3 (0) | 2012.05.11 |
|---|
3장 노드의 기본모듈 (1,2장은 그냥 읽기만 했음 설치는 아래 링크 참조)
http://godpage.tistory.com/entry/%EC%9A%B0%EB%B6%84%ED%88%AC-1004%EC%97%90%EC%84%9C-nodejs%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0
- 개인적으로 여러버전을 사용하려고 할때 환경변수의 패스를 수정하는게 아니라 심볼릭 링크를 만들어서 연결하는게 편한것 같음. 책에는 안나와 있지만..-
process : 노드js의 프로세스에 관한 모듈
nextTick : CPU연산이 많은 작업을 비동기로 실행할수 있도록 도와주는 메서드란다.
nextTick에 등록된 함수는 바로 실행하지 않고 이벤트 큐에 등록한다.
싱글스레드가 현재 작업을 완료하고 나서 다음 이벤트 처리때 처리함
process.nextTic(function() {
console.log("nextTick으로 호출됐심다");
});
이벤트 (nodejs는 이벤트 루프 기반 - 비동기 콜백방식 이라고 하는게 더 알아먹기 쉬울라나?)
- 그러고 보니 책에는 Object를 전부 객체라고 이야기를 해놨네..흠.. 맞는듯 틀린듯 -
발생하는 이벤트는 모두 events.EventEmitter(이벤트 발생기 - 이벤트 던지는 넘? )의 객체임
require('events').EventEmitter로 접근
listener 리스너 - 이벤트 발생시 실행되는 함수
관련 함수
emitter.on(event, listener) or emitter.addListener(event, listener)
emitter.once(event, listener) - 한번만 실행해야하는 리스너
emitter.removeListener(event, listener)
emitter.removeAllListeners([event]) - event지정안하면 다 삭제
emitter.emit(event, [arg1], [arg2], ...) - 이벤트 발생시키기 > 글치...이름대로구만
스트림 - 모든 스트림을 다루는 객체의 추상 인터페이스(추상?!)
- 읽기 쓰기 둘다가능 (그래서 아래 2개의 모듈이 존재)
Readable Stream
data - 데이터가 들어올때 읽음
stream.pipe(destination, [options]) - 스트림에서 읽어들인 내용을 destination으로 지정된 쓰기 스트림에 연결
Writable Stream
파일시스템 - 음 이거는 잘 봐둬야 될듯 (근데 귀찮...;)
fs.rename(original, newfile, [callback]) - 당연히 파일명 변경
fs.stat(path, [callback]) - 파일에 관한 여러가지 정보
fs.writeFile(파일명, 데이타, 인코딩, [콜백])
- 음..머 파일 쓰기. 없으면 만들고 있으면 덮어쓴다. 데이타에 있는 문자열을 파일로 작성함
fs.watchFile(파일명, [옵션들], 리스너) - 파일의 변경사항 감시.. 호 이런거 첨봄.
fs.createReadStream(패스, [옵션들]) - 위에나온 Readable Stream을 리턴해준다.
fs.createWriteStream
(패스, [옵션들]) - 글치.. 당연히 이것도 있어야지. 당연히 Writable Stream을 리턴합니당.
경로(PATH 말하는거임 - 敬老 가 아님다)
path.normalize(path) - /usr/local/node 이런거 잘 틀리기 쉬우니 알아서 고쳐준다.
(슬래시두개 라든가, 윈도우에서는 \를 쓴다든가하는 - 그럼 util에다 넣지..싶었으나 저거하나땜에 util쓰면 귀찮긋징..ㅎ)
path.join([path1], [path2], [...]) - 그냥 패스를 이어 붙여줌
path.resolve([from ..], to) - 전달 받은 경로의 절대경로를 반환
path.dirname(path) - 유닉스에 dirname이라는게 있다. 머냐면 디렉토리명만 짤라서 보내주는거임.
궁금하면 dirname을 구글에서 찾으세여.
path.basename(path, [ext]) - 이거는 디렉토리는 짤라내고 파일명만 반환. ext에 있는 문자열도 짤라냄.
path.extname(path) - 요거는 확장자만 돌려줌
path.exists(p, [callback]) - 파일이 있는지 확인하는 함수
네트워크 - 비동기 네트워크를 다루는 클래스다.
- 흐미 내가 못하는 거다. -
net.createServer([options], [connectionListener]) - TCP서버를 생성한다. connectionListener에 지정한 콜백함수는
connection(서버에 요청이 들어올때 마다 생성됨)이벤트에 자동으로 연결된다.
allowHalfOpen : 한쪽에서 연결을 종료하면 반대쪽도 종료할것인지 정하는거 디폴트는 false
이거는 예제를 한번 해봐야 될것 같은데
http://nodejs.org/api/net.html#net_net_createserver_options_connectionlistener 여기있는걸 함 해보자.
포트로 붙는거말고 소켓으로 붙는게 있는데, 이거 재밌음....(처음 알아서..?! 역시 모르니 글이 길어 지는구나..)
암튼 아래에 적을 server객체를 만들기위해 쓰는넘
net.Server
server.listen(port, [host], [listeningListener]) - 지정한 port, host로 들어온 컨넥션을 받을 수 있게 함.
서버가 바운드 (올라간다라고 표현들 한다.)될 때 listening이벤트가 발생하는데,
listeningListener를 콜백으로 등록해놨으면 그게 listening 이벤트 리스너에 추가된다.
(머... 그냥 실행된다라고 하지.. - 근데 정확하게는 적어놓은게 맞다. 공돌이식 으로 생각하자. )
server.address() - 서버호스트와 포트정보
server.pause(밀리세컨드) - 말그대로다 밀리초만큼 서버.멈춤이다. DoS공격 같은거에 좋단다.
- 책에는 net.Server가 가지고 있는 이벤트에 대해서도 나와있는데 그냥 넘어간다. 궁금하면 책을사자. -
net.Socket - TCP나 UNIX의 소켓을 추상화한 오브젝트이다. - 그래야 자바스크립트에서 쓰지 ㅎ-
- 찾아보니 소켓은 아이피랑 포트를 합친걸 소켓이라하네. 그러나 여기서는 자바스크립트 객체겠지여.-
서버에서 connection이벤트가 발생하면 콜백 함수(예제에서는 createServer에 connectionListener를 지정한 곳으로 소켓이 전달 됨. c 라고 변수명을 적은곳 )로 소켓이 전달된다.
socket.write(data, [encoding], [callback]) - 소켓에 데이터 전달.
socket.end(data, [encoding]) - 소켓 종료. FIN을 보내서 소켓을 닫으므로 서버쪽에서는 데이터 보낼 수 있다.
socket.pause() - 소켓에서 데이터를 읽는 것을 멈추어 data이벤트가 발생하지 않게한다.
socket.resume() - 다시 데이터받기.
socket.remoteAddress - 접속한 클라이언트의 원격 IP를 리턴함.
socket.bufferSize - 소켓에 쓰기위해 현재 버퍼에 있는 캐릭터 문자의 크기를 알수 있음. 인코딩되기 전의 크기이니 주의!
HTTP와 HTTPS
HTTP - http의 서버, 클라이언트가 사용해야 하는 모듈
HTTPS - http위에 TLS/SSL 을 얹어서 보안을 강화한거 http랑 거의 비슷. (그래서 패쓰 ㅎㅎㅎ)
아래의 3가지 이벤트가 사용가능하다.
request - 요청이 들어올 때 발생
connection - TCP 스트림이 생성되면 발생
close - 서버가 닫힐 때 발생
http.createServer([requestListener]) - http 서버 생성.
requestListener는 function(request, response) { blar..blar..} 요런 형식으로 되어있어야됨.
server.listen(port, [host], [listeningListener]) 를 실행하면 서버가 바운드됨.
이거도 예제를 해봐야 되는데...없어서 그냥 간단히 만들었음.
아래 예제대로 만들면 nodejs로 웹서버를 띄울수 있음.
그리고 웹브라우저에서 localhost:8124로 들어가보면 'you connected local webserver'라고 뜰꺼임
http.ServerReqeust - EventEmitter의 객체
아래 2가지 이벤트가 사용가능하다.
data - 콜백함수 function(chunk) {}
end - 요청이 종료될 때 발생하는 이벤트
request.mothod - HTTP 메서드를 리턴
request.header - 헤더정보
request.httpVersion - HTTP 버전
request.setEncoding(encoding=utf8) - 인코딩설정
request.pause()
request.resume()
http.ServerResponse - Writable Stream 객체이다.
response.writeHead(statusCode, [reasonPhrase], [headers]) - 응답 헤더 지정
response.write(chunk, encoding='utf8') - 응답 바디에 청크를 보냄
response.end([data], [encoding]) - 응답 종료
var http = require('http');
var net = require('net');
// Craete a HTTP server
var server = http.createServer(function (req, res){
res.writeHead(200, {'Content-Type':'text/plain'});
res.end('you connected local webserver');
});
// Running Server
server.listen(8124, function(){
console.log("server running!");
});
URL과 쿼리 문자열 - 이건...머지?
URL에 대한 모듈
url
url.parse(urlstr, parseQueryString=false, slashesDenoteHost=false)
- URL문자열을 호스트명이나 쿼리 문자열, 경로등으로 파싱한 객체를 리턴
parseQueryString은 쿼리문자열을 추가로 파싱할건지 지정 디폴트 false
slashesDenoteHost은 / 가 호스트를 나타내는지 지정
url.format(urlObj) - url객체를 URL문자열로 변경.
querystring - 이 녀석은 자주 쓸듯
querystring.stringify(obj, sep='&', eq='=') - JSON객체의 키와 값을 이용해 쿼리문자열로 만듦.
sep는 구분자 &, eq는 키와 값을 연결하는 녀석인 =
querystring.parse(str, sep='&', eq='=') - 쿼리문자열을 JSON객체로 변환
Child Process - 이거 너무 멋진 모듈임!
- 콘솔의 command의 자식 프로세스구만 이걸로 콘솔 명령어를 nodejs에서! -
child.stdin, child.stdout, child.stderr의 세가지 스트림을 사용 - 오 직이네 -
require('child_process').spawn(command, args=[], [options]) - command를 사용하는 자식프로세스 생성
child_process.exec(command, [options], function(error, stdout, stderr) {} ) - command를 사용하고 결과를 리턴
클러스터 - CPU계산량이 많은 경우 클러스터링으로 해결하는데, 그거 할려면 요걸쓰세염.
- 다중 프로세스의 로드밸런싱을 통합해 클러스터 모듈로 제공한다고 함.
cluster.isMaster - 마스터 프로세스인지
cluster.isWorker - 워커 프로세스인지
아래에 있는 예제를 참고 하는게 도움이 될듯함다.
http://nodejs.org/api/cluster.html
아...이것 말고도 많은데 일단 책에 있는거 요약해서 올립니다.
지금 nodejs 공부중이니 혹시 질문을 올려주시면, 열~~~~~~~심히 찾아서 알려드리겠슴다.
| [nodejs] [아웃사이더]님 책3장 노드의 기본모듈 정리 (0) | 2012.05.10 |
|---|
소스관리 프로그램은 개발자라면 거의 쓰고 있을 텐데, 알면 편한 Subversion의 프로퍼티들을 정리한다.
(사실 누가 정리해놓은거 있으면 그냥 그거 보고 싶은데 없는듯?! )
락이 필요한파일인 경우
svn:needs-lock : *
파일의 타입지정
svn:mime-type : <text|binary|image/pnc>
커밋할때 무시
svn:ignore : *
파일에 실행권한을 부여(chmod 755 * 랑 같음)
svn:executable : *
윈도우즈랑 리눅스랑 개행을 운영체제에 맞게 자동으로해줌
svn:eol-style : native
| [ubuntu]scala, play2 설치, 제거 스크립트 (0) | 2012.05.15 |
|---|---|
| Subversion의 프로퍼티 자주 쓰는거 (0) | 2012.05.10 |
[##_http://godpage.tistory.com/script/powerEditor/pages/1C%7Ccfile21.uf@164D644B4F55D82302AAD8.png%7Cwidth=%22683%22%20height=%22544%22%20alt=%22%22%20filename=%221.png%22%20filemime=%22image/jpeg%22%7C_##]
[##_http://godpage.tistory.com/script/powerEditor/pages/1C%7Ccfile1.uf@184D644B4F55D82304A67F.png%7Cwidth=%22683%22%20height=%22331%22%20alt=%22%22%20filename=%223.png%22%20filemime=%22image/jpeg%22%7C_##]
addlog를 타이핑하고 컨트롤과 스페이스를 같이 누르면 addlog라고 뜰것이다. 그걸 선택하면 아래와 같이
템플릿으로 설정한걸 이클립스에서 넣어준다.
${:importStatic(
| eclipse에서 자바 코드 템플릿 사용하기 (0) | 2012.03.06 |
|---|---|
| System.currentTimeMills() 랑 Date().getTime()중에 어느게 더 빠를까? (0) | 2012.02.16 |
| GenericObjectPool 메모 (0) | 2012.01.20 |
| java Enum 정리 (1) | 2011.10.07 |
| JSP 커스텀 태그의 종류 (0) | 2011.01.06 |
| jsp:include에서 sendRedirect안되는 문제 (0) | 2010.03.17 |
댓글을 달아 주세요