shell script의 강력함은 그 즉흥성에 있습니다. 결과가 바로 나온다는 것이죠.
java나 C와 같은 컴파일 언어의 답답함은 뜸들이는 시간이 있어야 결과가 나오기 때문일 것입니다.

이클립스에서는 말이죠. 자바의 요러한 약점을 풀어주는 것이 있습니다. 바로 스크랩북(scrapbook)! 확장자는 jpage를 사용합니다.

사용자 삽입 이미지
New 에서 scr까지 치면 등장합니다. 좌장~! 두구둥! Scrapbook Page 입니다.

사용자 삽입 이미지
자바의 편집기능을 다 쓸 수 있습니다. syso하고 ctrl+space

사용자 삽입 이미지
코드 assist 도 물론 됩니다.

사용자 삽입 이미지
실행 영역을 선택하고 ctrl+U 하면 Console뷰에 결과가 나타납니다.

사용자 삽입 이미지


좋죠. ^^
이렇게 만들어진 코드 조각(snippet)을 소스에 가져다 붙이면 됩니다.
좋은 하루 되세요.

자바를 하다 보면 소스 날려먹고, class 파일만 갖고 서비스하는 곳도 있습니다.
이클립스에서는 class 파일만 있는 디렉토리도 참조할 수 있도록 되어있습니다.
디컴파일할 것이 아니라면 이런 클래스들은 jar로 압축해서 관리하는 것이 괜찮습니다.
예를 들어 cos.jar 가 압축이 풀린 상태로 있다면 다음과 같은 디렉토리 구조를 가질 것입니다. jar는 처음부터 없다고 가정하겠습니다.


사용자 삽입 이미지

주의할 점은 class의 루트는 com이 아니라 classes 폴더입니다. 패키지별로 폴더가 구성되는데, 최상위 패키지가 있는 폴더가 기준 위치입니다.
사용자 삽입 이미지

자바계열 프로젝트 속성에서 Java Build Path를 선택하면 나오는 화면입니다. Libraries 탭을 누르면 보입니다. 여기서 우측에 있는 Add Class Folder 버튼을 선택합니다.
사용자 삽입 이미지

클래스의 기준폴더를 선택합니다.

사용자 삽입 이미지

완료된 모습입니다.

좋은 하루 되십시오. ^^

이클립스 Workspace 외부에 있는 자원은 모두 external 이라는 제한이 걸립니다. 하지만 일정부분 읽고, 쓰기가 가능합니다. Open Resource를 통해서 검색도 됩니다.
단 history관리는 되지 않습니다.

다른 디렉토리를 이클립스 프로젝트에 붙여보도록 하죠. 만만한게 temp라 c:\temp 디렉토리를 붙여보겠습니다.

new Folder

new Folder

새로운 폴더를 만듭니다. 다이얼로그 창이 다음과 같이 뜹니다. 하단의 Advance... 버튼이 보입니다. 감 잡으셨죠. 네 거깁니다. 쩜쩜쩜이 왜 있겠습니까. ㅎㅎ

Link to folder in the file system

Link to folder in the file system

Link to folder in the file system 첵크박스에 체크해주시면 아래가 활성화됩니다. Browse... 버튼을 클릭하시고, 원하는 외부 디렉토리를 선택하세요.

external link

external link

temp 아이콘에 이물질 보이시죠. 윈도우 바로가기 아이콘과 비스타네요. ^^

다 됩니다. 이클립스.
지난 밤 긴 시간을 http://neturo.dacom.net 을 통해서 원격지원을 했었습니다. JSP를 처음 하시는 분을 도와드리면서 irc로 채팅을 했는데, 몇 가지 건질 것이 있었습니다.

채팅 로그가 길지만 JSP 입문하시는 분들께 도움이 되리라 생각되어서 okjsp와 블로그에 같이 올립니다.

이클립스 콘솔뷰에도 좋은 기능이 있습니다. 바로 resource연결입니다. 스택트레이스 같이 예외 메시지가 뿌려질 때 java파일일 경우 에러난 위치를 바로 보여줍니다.
모든 경우 적용 되는 것은 아닙니다만 똑똑해진 Open Resouce와 연결되면 편리하게 디버깅이 가능합니다.

WTP를 통해서 톰캣을 시작하면 콘솔뷰에 시스템 로그가 남습니다. 또 볼 수 있구요.
제 사이트를 돌려 보는 중에 메시지가 눈에 띄었습니다.

console log

console log


try catch에서 잡은 로그 메시지인 듯합니다. MemoServlet:... 로그가 보이는군요. 엇, 링크까지.
클릭해봤습니다.
Source not found

Source not found


Source not found for MemoServlet:java.lang.NumberformatException 라고 나옵니다.
보통 이쯤 되면 ctrl+shift+R을 눌러서 파일을 찾겠지만, 잠깐!
MemoServlet 글자를 마우스로 드래그해서 선택해보시죠. 그리고, ctrl+shift+R 를 하시면 다음과 같이 착하게 나옵니다.
Open Resource after text selection

Open Resource after text selection

착합니다. ^^ 파일을 열어서 살펴보겠습니다. 아마 이 부분인 듯 합니다.
review source

review source

디버깅을 해보니 || 가 아니라 && 이 되어야 되는군요.

^^ 요기까지입니다.
파일 검색을 많이 하는 편입니다. ctrl+H 를 클릭하거나 그림처럼 메뉴를 부를 때 해당 창이 뜹니다.
사용자 삽입 이미지

제일 먼저 나타나는 게 Java Search 탭입니다. 그런데 저는 보통 File Search 탭을 많이 사용하고 나머지 탭은 거의 사용하지 않습니다. 그래서 File Search 탭만 남겨보겠습니다. 창 하단의 Customize 버튼을 클륵하면 됩니다.
사용자 삽입 이미지

다른 두 개의 옵션은 꺼둡니다. 그리고 OK 버튼을 클릭하면 끝!
사용자 삽입 이미지

탭이 깔끔하게 정리됩니다.
사용자 삽입 이미지

간단하게 탭 조정에 대해서만 알아보았습니다. Replace... 를 통해서 찾은 패턴을 일관 대치할 수 있기도 합니다.

이클립스 프로젝트를 통째로 압축하면 그것을 바로 가져올(import) 수 있습니다.
http://code.google.com/p/daysago/ 에 올려 놓은 파일은 이클립스 프로젝트를 압축해 놓은 것입니다.

zipped project

zipped project

daysago-0.22.zip 파일을 다운로드 받습니다.

project import

project import

이클립스의 패키지 익스플로러에서 import를 선택합니다.
filter text에 "ex"를 입력하면 Existing Projects into Workspace 라는 항목이 보입니다.
Select archive file

Select archive file

두 번째 옵션인 Select archive file 를 선택하고 Browse... 버튼을 클릭해서 다운로드 받은 daysago-0_22.zip 파일을 선택합니다. daysago라는 프로젝트가 보입니다.

imported project

imported project


가져오기 작업 끝이죠. ^^


얼마 전 간단한 로직을 구현해서 공개를 한 적이 있습니다. 웹2.0 스타일로 시간을 표시해 주는 기능인데, 간단한 것입니다.
시간 표시를 몇 초전, 몇 분전, 몇 시간전, 몇 일전 처럼 표시해주는 기능입니다. 제 사이트(www.okjsp.pe.kr)에도 적용을 시켰고, 소스를 공개하니까
www.javarss.pe.kr 운영자이신 서영아빠님도 잘 적용하였다고 말씀하시네요.
은근히 기쁘더군요.

어제 처음으로 버그리포팅이 들어왔습니다. 그래서 테스트 케이스에 버그가 발생되는 일자를 테스트 시료로 넣고 어플리케이션을 수정했습니다.
에러가 날 만한 곳에 브레이크 포인트를 찍고 변수 값을 확인하고, 로직을 보강했습니다. 추가한 테스트가 통과를 하고, 전체 테스트를 수행했습니다.
이것을 회귀 테스트(Regression Tests)라고 하죠. 이번 수정이 다른 쪽에 영향을 미쳤는지, 어디에 값이 틀어지는지 확인하는 것입니다.
전체 테스트도 이상이 없는 것을 확인했습니다. 안심하고 사이트 소스에 반영을 시켰고, 수정이 완료된 프로젝트를 전체 압축해서

마이너 버전을 올린 후에 공개했습니다.
http://code.google.com/p/daysago/

더 자세한 이야기는 다른 글로 얘기하도록 하겠습니다.

구글 광고 같지만, http://code.google.com/ 의 Project Hosting을 통해서 소스를 다른 사람들에게 공개하는 오픈소스 활동을 시작할 수 있습니다.

오픈소스 프로젝트 호스팅 by google

오픈소스 프로젝트 호스팅 by google

콘솔(Console) 에는 보통 로그가 찍힙니다. 그래서 중요합니다.
콘솔뷰는 로그가 상황에 따라 다르게 관리됩니다. 마치 레이어처럼 말이죠.
Tomcat 서버를 시작하면 나오는 로그가 콘솔 뷰에 보입니다.
Servers Console

Servers Console


뷰의 우측상단에 Open Console의 역삼각형 부분을 클릭하면 다른 뷰를 열 수 있죠.
Open Console View

Open Console View


CVS를 열어보겠습니다.
다음과 같이 CVS 로그가 보이게 됩니다.
CVS Console

CVS Console


구석 구석 세심함이 묻어있는 좋은 도구입니다. ^^
두 개의 프로젝트의 차이점은 일반 자바 애플리케이션이냐 웹 애플리케이션이냐 입니다. 그에 따라서 개발하는 소스의 디렉토리 구조가 달라집니다. 이클립스에서 프로젝트 아이콘의 모양도 차이가 있습니다. J 글자는 Java라는 의미이고, 웹프로젝트는 동그란 지구 이미지가 하나 더 붙어있습니다.
Java Project and Dynamic Web Project

Java Project and Dynamic Web Project


일단 eclipse 3.3 wtp에서 옵션 조정없이 Java 프로젝트와 Dynamic Web Project를 만들어서 설정파일을 비교해 보았습니다. 퍼스펙티브는 모든 파일이 다 보이는 Resource Perspective로 정했습니다.
compare with each other

compare with each other


만들어진 두 개의 프로젝트를 선택하고 Compare With > each other를 선택합니다. 두 프로젝트의 디렉토리, 파일이 비교됩니다.

directory, file diff

directory, file diff

.classpath 파일은 프로젝트의 클래스패스가 지정되는 파일입니다. 이 파일 덕분에 환경변수에 클래스패스를 지정하는 고전적인 자바 개발법에서 벗어날 수 있죠. 하단의 파일 비교를 보면 웹 프로젝트 쪽에 2줄이 더 추가된 것을 알 수 있습니다.
일반 자바 프로젝트에서 자바 웹 프로젝트로 변하면서 추가된 디렉토리는 .settings , build, WebContent 디렉토리 셋입니다. build/classes 디렉토리는 bin 디렉토리의 대체입니다.
.project를 더블클릭해서 비교해 보시면 프로젝트 속성이 어떻게 변경이 되었는지 확인할 수 있습니다.

+ Recent posts