Clean Code that Works.

아 사고싶다 -_-

기본팩 + 위 스포츠 + 컨트롤러, 눈차크 가격이 약 30만원.
할인 쿠폰 적용해서 27만원..

-_-...

다음달에 돈이 모이면 살것이니라...

또.... MSI 에서 곧 출시되는 WIND 놋북도 사고 싶고....
또.... DSLR도 사고 싶고....

... 님 돈은 어디에?????

그 머시기.

SWT 로 구현된 것을 RCP로 바꾸기.

개발 툴 : Eclipse 3.3

사용 언어 : jsp, java, css, javascript.

사용 프레임 워크 :
Struts2, Struts_spring(Plug-in) 요거....인터셉터와 ServiceAware를 안만들어도 되니까. DI(Dependency Injection)이 가능. 사실 좀 햇갈림 .ㅋㅋ
디비 연결은 iBatis로 해서 사용.

중요 사항 : 디비설계 제대로 할것.

요구 사항 정리 -> 디비 설계 -> ui 구성 -> 디렉토리 구성 -> 패키지 정리
환경 설정 -> 구현 시작.

주의 사항 :
문서 잘 만들어 놓을 것.
되도록 테스트 주도 개발.
배운것 써먹을려고 신경쓸것.
코드 중복 배제.
디자인 패턴 사용할것.

개발 기간 : 최대 한달.
8월 전까지 완성 할것.

How to Create a Windows Installer for an SWT Application

http://www.devx.com/Java/Article/30287

될까나..

http://theeye.pe.kr/archive/20071111 님 블로그 펌글.
아..스트럿츠2 + 아이바티스 개발중..아니 공부중 =ㅁ=

==============================================================================================

iBatis를 사용하다 보니 또하나의 문제에 봉착했다.. LIKE 검색의 %기호를 인식하지 못하는 것이었다.

구글신에게 검색해 보고 다음과 같은 해결책을 얻을 수 있었다.

MySQL :
SELECT * FROM tbl_name WHERE column_name LIKE "%$username$%"


ORACLE :
SELECT * FROM tbl_name WHERE column_name LIKE  '%' || #username# || '%'


SYBASE/SQL SERVER
SELECT * from tbl_name WHERE column_name LIKE  '%' + #username# + '%'


여기서 변수명을 #로 둘러싸는 것과 $로 둘러싸는것의 차이점을 알 필요가 있다.

#의 경우에는 Prepare Statement로 등록이 된다. 디버그를 찍어봐도 ?로 치환된 이후 값이 대입된다.

하지만 $의 경우 바로 값이 치환된다. 특정 변수가 바로 DB에 입력되므로 보안에 좀더 신경을 써야 할것으로 생각된다.

http://www.yes24.com/Goods/FTGoodsView.aspx?goodsNo=2937546&CategoryNumber=001001003016001012

연구실 은천이 형이 책을 썼다.
그래서 추천 링크 ㅋㅋㅋ

어쩌다 보니 간단한 XML 에디터 까지 개발해야 해서...
완전 삽질중. -_-;;
작년 9월부터 시작한걸 아직까지 잡고 있다.
뭐 중간에 캐나다고 갔다오고.. 하기 싫어서 다른 책도 보고 했지만..
이제 슬슬 끝이 보인듯 싶다. 역시 GUI는 번거롭다.

여튼 각설하고 XPATH로 원하는 노드를 찾은 후 XML 문서에 저장 하는 방법을 알아보자.

일단 처음엔 XPATH를 사용해야하기 때문에 XPathFactory 로 새 인스턴스를 만든 후, XPath도 새로 만들어 준다.

XPathFactory xpathFactory = XPathFactory.newInstance();
xpath = xpathFactory.newXPath();
xmlSource = new InputSource(Main.TESTSOURCE);
// 인풋 소스는 해당 xml 파일.

이렇게 해서 각각 인스턴스들을 만든후.
xpath 검색을 해서 엘리먼트에 할당한 다음에
이 엘리먼트에서 수정을 한 후.

Element element = (Element) xpath.evaluate(path, xmlSource, XPathConstants.NODE);
//xpath를 사용해서 검색.
Element root = (Element) element.getParentNode().getParentNode()
    .getParentNode().getParentNode();
//루트는 새로 문서를 저장할 때 필요하기 때문에 필요하다. 나 같은 경우에는 xpath를 사용해서 검색한 깊이가 4단계 이기 때문에 4번째 위의 부모 노드가 루트 노드이다.
Element feature = (Element) element.getChildNodes().item(3);
feature.setTextContent("원하는 데이터");
//해당 노드를 얻어 와서 setTextContent를 사용해서 값을 할당


이렇게 하면 일단 메모리에 올라와 있는 element 들은 다 수정이 되어 있다.
그 다음에는 TransformerFactory 를 사용해서 문서를 다시 저장해 주어야 한다.

TransformerFactory transFactory = TransformerFactory.newInstance();
Transformer transformer = transFactory.newTransformer();
DOMSource source = new DOMSource(root);
StreamResult result = new StreamResult(new File(Main.TESTSOURCE));
transformer.transform(source, result);


DOM 객체를 수정, 추가, 제거하는 것은 모두 메모리상에서 이루어지고 이것을 영구 보본하기 위해서는 파일의 형태로 XML 문서로 저장해야 한다.

다양한 방법으로 문서를 저장 할 수 있지만 위의 방법은 XSLT변환기를 사용하여 파일로 저장한다.

Blog2Book 자바 성능을 결정짓는 코딩 습관과 튜닝 이야기

기초에서 설계 개발 운영까지 EJB Professional Guide

Java의 정석


이렇게 3권. 웁스. 빨리 하던거 끝내고 책 보는 시간을 더 늘려야겠다.
왜 이렇게 어렵니 ;ㅅ;

아.... 자동완성 -_-...

XML -> 파싱 -> 분석 -> 색인.

분석할때 엘리먼트와 중복 단어는 제외하고 색인에 추가..

이를.. 어떻게함 -_ -?

루씬 검색 결과에 검색어 문자열 하일라이팅을 추가 하기 위하여..

http://www.java2s.com/Code/Java/SWT-JFace-Eclipse/SearchStyleText.htm

위의 소스를 참고하여 .. 머 똑같이 -_-;;
하여서 구현.