티스토리 툴바



2011/10/28 15:07

Digester 사용시 HTML Entity 처리 유의사항

Digester

Digester는 Rule에 기반하여 XML을 자바 객체로 매핑해주는 모듈이다. 현재는 3.0 버전이 나와있으며, 이 글에서 테스트한 Digester의 버전은 2.1이다.
http://commons.apache.org/digester/
 
HTML 또는 XML Entity

XML은 (시작태그와 종료태그를 가진) 노드로 구성되어 있으므로, XML 노드(또는 엘리먼트)가 갖는 text는 태그를 가질 수 없다. XML 노드의 값이 태그를 가지려면 XML이 CDATA인 자식 노드를 갖던지 태그에 대한 Escaping 처리가 필요한데, 이렇게 XML에서 바로 사용할 수 없는 몇몇 문자열들을 Escaping 처리한 특수한 문자열을 Entity라고 한다.
예를 들어 가장 많이 쓰이는, &lt; (<), &gt; (>), &amp; (&), &nbsp; ( - 공백문자열) 등이 있다.


Digester 사용지 HTML Entity 처리 유의사항

이와 같은 HTML Entity를 가진 노드 값을 Digester를 사용해 처리할 때 어떤 방식의 데이터인지에 따라 받게 되는 값이 달라지는데, XML의 노드가 CDATA로 처리하지 않은, HTML Entity를 가지고 있을 경우 자동으로 HTML로 치환된다.

String xml = "<test>&lt;tr&gt;</test>"; // 텍스트로 받으면 자동으로 치환됨.

 

Digester digester = new Digester();

digester.setValidating(false);

digester.setRules(new ExtendedBaseRules());

 

final StringBuffer sb = new StringBuffer();

digester.addRule("test", new Rule() {

    @Override

    public void body(String namespace, String name, String text) throws Exception {

        sb.append(text);

    }

});

 

digester.parse(new StringReader(xml));

System.out.println(sb.toString()); // output : <tr>



하지만 XML 노드의 값을 CDATA로 처리하면 CDATA의 텍스트 값에 HTML Entity가 있더라도 그대로 값을 받게 된다.

String xml = "<test><![CDATA[&lt;tr&gt;]]></test>"; // HTML Entity가 포함되어도 값을 그대로 받음.

 

Digester digester = new Digester();

digester.setValidating(false);

digester.setRules(new ExtendedBaseRules());

 

final StringBuffer sb = new StringBuffer();

digester.addRule("test", new Rule() {

    @Override

    public void body(String namespace, String name, String text) throws Exception {

        sb.append(text);

    }

});

 

digester.parse(new StringReader(xml));

System.out.println(sb.toString()); // output : &lt;tr&gt;




크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 0
2011/06/04 16:56

제11회 자바 개발자 컨퍼런스 사전등록!!

제11회 자바 개발자 컨퍼런스 사전 등록이 진행중입니다~
http://kjdc.org/ 

당일 현장 등록은 안되고, 사전등록시 참가비 1만원이네요.

올해 자바 개발자 컨퍼런스에서는 클라우드와 NoSQL 관련된 세션이 눈에 띄는군요.

한동안 컨퍼런스에 참가하지 않았었는데, 올해는 가봐야겠습니다~ 
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 0
2010/12/27 18:12

(펌) 공대생 남친 관리법

인터넷에 돌아다니다 발견한 공대생 남친 관리법.....
공대생(정확하게 이과대생.... 공대생과 다를게 뭐냐;; ㅜㅜ)은 아니지만~ 왠지 공감된다.

1. 화나면 정확하게 왜 화 났는지 바로 말한다.
치사하다고 생각하지 않는다. 유치한 것 같아도 무조건 찬찬히 설명한다. 이왕이면 다음의 구조를 따르면 더 효과적이겠다:
   ㄱ) 화 난 상태 알림
   ㄴ) 옆에 앉아서 왜 화 났는지 들어주기를 원하는지, 아니면 달래주기를 원하는지, 아니면 안 건드리기를 원하는지 선택하여 알림
   ㄷ) 왜 화가 났는지를 설명하고, 화난 상태를 해결하기 위해서는 어떻게 해 주었으면 좋겠다도 설명
   ㄹ) 원하는 행동 변경 사항이 있으면 그것 역시 알림.
긴 것 같지만 30초 내에 끝낼 수도 있다: "나 네가 내 기분 안 알아줘서 엄청 화 났어. 난 안 좋은 일 있어서 너랑 같이 있고 싶었는데 넌 친구들이랑 놀러 갔잖아. 그래서 너랑 말 하고 싶지 않아. 그러니까 한 시간 있다가 내 기분 풀 수 있는 방법 생각해서 내 기분 풀어줬으면 좋겠어. 그리고 앞으로 내가 정말 기분 안 좋다고 하면 이왕이면 나를 더 우선 순위로 해줬으면 좋겠어."
화 났다는 거 알아주겠지 하면 큰일난다. 화 났다는 거 말 안하고 무시 모드로 들어가도 안 통한다. 성질만 내고 왜 성질 났는지 말 안 해도 별 효과 없다. '사랑하면 그 정도는 알겠지' 해도 안 된다. 그리고 최고로 효과 없는 말은 '날 사랑하면서 어떻게 그럴 수가 있어?', 그 다음은 '네가 뭘 잘못했는지도 몰라!!?' 이다. 말 안 했는데 어떻게 아는가. 외계인 데리고 살면서 교육시킨다 생각하삼. 설명만 잘 해주면 곧잘 듣는다.
 
 
2. 애인님이 '네 말 그건 틀렸다고 생각해'라고 하는 건, '이 원피스는 빨간색이야', 혹은 '하늘은 파란색이야'와 그리 다르지 않다.
당 신이 멍청하다고 말하는게 아니라 방금 한 말이 틀렸다고 보고한 것이다. 인신공격이라고 생각하지 말자. 만약 무조건 내 편을 들어주기를 바란다면 이야기 하기 전에 먼저 부탁한다. '나 지금부터 내 친구랑 싸운 얘기 할 텐데, 네가 생각하기에 내가 오버했다고 생각들더라도 최소한 오늘 만큼은 무조건 내 편 들어줘야 돼.' 정도로. 아니면 룰을 정해도 되겠다. 둘만 있을 때에는 몰라도 다른 사람 있을 때에 '그건 비논리적이다/말 안 된다'고 따지지 말라고.
 

3. 다리 긴 사람 있고 다리 짧은 사람 있다. 다른 사람과 교류가 많이 필요한 사람 있고 안 그런 사람이 있다.
아 무리 사랑하고 좋아하고 하지만 공대생들은 평균적으로 '타인과의 관계 지향 지수'가 낮으므로 전화, 메세지 등을 귀찮아 할 수가 있다. 사랑하지 않아서가 아니라, 일 하는데 방해받기 싫어서이다. '이제 사람들과 어울리는 모드'로 모드 전환 해야 말도 많아지고 사회적이 되는 공대생들 많다. 그렇다고 해서 사랑 안 하는 거 아니다.
 

4. xy 축이 있는 그래프에서 가로로 쭉 뻗은 선을 그려보자. 바로 그것이 공대생이 생각하는 '사귐/관계'이다.
서 로 감정을 확인하고 사귀기로 되었으면 쭉 그렇게 나가면 되는 거다. 딱히 특별한 일이 없으면 감정불변이다. 그런데 그 선이 갑자기 아래로 뚝 떨어지면 (당신이 화를 낸다던지) 공대생은 '앗 사고가 일어났구나 원인을 알아내어 시정해야지'라고 생각한다. 그래서 왜 화났는지 물어보고, 뭘 어떻게 해 줄까한 다음에 '하루에 전화 두 번/ 비싼 선물' 정도의 해결책을 받아내어 그 해결책대로 하면 다시 예전의 이상적인 연애선으로 돌아갈 거라 생각한다. 아무런 변화가 없으면 예전 그대로이다. 계속 사랑하는 거다. 고장 안 난 기계 고칠 필요 없지 않은가. 그러므로 공대생에게는 '성공적인 관계 지속을 위해서는 주기적인 점검 및 업그레이드가 필요'하다고 공지하는 것이 좋다. 그러면 공대생은 '점검 및 업그레이드' 요소도 포함시킨다.
 

5. 부하를 견디고 견디다가 툭 부러지는 타입이 많다.
신 경질/짜증 잘 받아준다고 해서 이 남자 날 사랑하는구나 믿지 말자. 어느 정도 한계에 닿을 때까지 늘 잘 해주던 그 남자, 어느날 툭, 하면서 더 이상 널 보지 않겠다고 하면 그건 완전 끝난 거다. 매 번 받아 줄 때마다 그 남자는 사랑하니까 뭐든지 받아들일 수 있다 맹세한게 아니라, 계산을 했다고 보면 된다. '나 이거 견딜 수 있다? 오케. 좋아하는 마음이 크다. 넘어가자.' 그러나 그런 계산이 반복되면서 부하가 심해지고, 그러던 어느날 좋아하는 마음은 부하를 감당하지 못하게 된다. 딱 거기까지가 한계라 생각했던 남자이므로 맺고 끊는 거 확실하다. 절대로 만만하게 생각하지 말자.
 

6. 피드백을 해주자.
잘 한다고 칭찬하면 기억해서 꼭 다시 한다. 마음에 안 드는 건 마음 안 상할 정도로 꼭꼭 지적하면 시정된다. 잘 이용하자.
 

7. 장난감 값 (차, 카메라, 컴퓨터, 스포츠, 그 외 덕후 액티비티) 이 꽤 지출될 수 있다.
이거 적당히 관리해주지 않으면 집안 살림 거덜낼 수 있다.
 

결론:
처음에 익숙해지기가 힘들지만, 공대 애인은 보통 훈련시키는 보람이 있다.
당 신의 요구사항을 납득 시킬수만 있으면 그들은 군소리 없이 잘 따라오는 편이고, 감정적으로 안정적이며 쉽게 변하지 않는다. 그러므로 감정적으로 저렴하며 (...) 튜닝 가능한 남자를 원한다면 공대생 애인을 강력하게 추천한다. 남편감으로는 정말 나쁘지 않다. 성실한 편이고, 친구들과 어울리거나 회식이다 뭐다 해서 사람들과 늦게까지 술마시는 타입도 다른 분야보다 덜하고, 도박이나 바람 대신 장난감만 좀 마련해주면 집에서 조용히 논다.
그러나 당신이 정확하게 뭘 원하는지 모른다거나, 싫은 소리를 못한다거나, 이래저래 해달라는 부탁은 치사해서 하기 싫고, 남자가 알아서 해주길 원한다거나, 안정적인 관계는 재미 없다거나, 사랑의 증표를 끊임없이 원한다거나, 죽어도 다른 사람들 휘어잡은 칼수마 남을 원한다 하면 ... 공대생은 보통 비추다;

이 장소를 Daum지도에서 확인해보세요.
서울특별시 용산구 한남동
도움말 Daum 지도
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 0
2010/06/11 13:15

스마트폰? 그건 뭔가요? 먹는건가요?

폰은 그냥 전화만 잘 되면 된다는 신조로 살아온 나로썬 스마트폰이 딱히 와닿진 않았지만, 안드로이드 폰이 나오면서부터 생각이 조금 바뀌기 시작했다.

그래서 작년에 회사에서 아이폰을 준다길래 잠깐 혹했다가 쓸만한 안드로이드폰이 나오길 기다리고 있었는데.....
기다림이 너무 길었다!!!!


여차저차해서 갤럭시S로 할까 하다가 KT에서 넥서스원 발매 예정 소식을 듣고 넥서스원으로 급 선회~
조금만 더 기다리자... 기다리면 넥서스원이 내 손안에~~ 하고 있는 와중에 아이폰4 발매 소식.....

-ㅁ- !!!



그래서 그냥 시원하게 아이폰4 기다리고 겟~~ 한 다음에 회사에 넥서스원을 개발폰으로 하나 내달라고 졸라볼 생각이다. (옵티머스Q 지원 받았다!!!!)


개인폰으로는 아이폰4 쓰고 옵Q랑 넥서스원을 개발폰으로 회사에서 쓰면서 개발도 하면 우왕굳~


크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 0
2010/05/05 12:40

이클립스 SVN 계정 변경이 안될때


1. eclipse를 종료한 후 
2. JavaHL 캐시 파일을 지운다.
-> %APPDATA%\Subversion 디렉토리에 있는 파일들을 삭제 
    (XP인 경우 C:\Documents and Settings\%계정%\Application Data\Subversion)
3. SVNKit 캐시 파일을 지운다.
-> 이클립스 디렉토리\configuration\org.eclipse.core.runtime\.keyring


크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 1