일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- String
- 한글조사처리
- ORM
- RSA
- JCE
- Executor
- xlet
- Runnable
- Log4J
- AES
- StringUtils
- date
- 암호학
- Callable
- ACAP
- mac
- Java
- 한글조사
- DAMO
- 자바
- PKCS
- Postman
- PKCS#8
- 이클립스 플러그인 개발
- IPTV
- sha1
- Freemaker
- 자바 암호화
- Executors
- Instrumentation
- Today
- Total
목록無汗不成 (5)
오늘은 어디로 갈까...
DAMO 개발중 좌절 #2 동적 SQL을 만들때 기존에는 태그별로 기능을 정의해서 사용하였다. 이번에는 시간이 널널한 관계로 EL(Expression Language)을 사용해서 만들어 볼려고 했는데 흠흠 좌절중이다. 평소 컴파일러 공부를 등한시한 본인에게는 새로운 문법의 언어를 창조해내는것이 너무나 어려운일이다. 규칙만 정의하면 javacc를 이용해서 간단하게 만들 수 있음에도 불구하고, 규칙 정의하기가 불가능... 아니 제한된 시간내에서는 힘들어 보였다. 한 이틀동안 열심히 분석해서 아주 조금 감~을 잡긴 했지만, 만들어진것을 간단히 분석할 수 있는 정도랄까. 무(無)에서 새로운 것을 창조할만한 지식은 아직 형성되지 못하였다. 일단 컴파일러 다시 공부하고 javacc를 공부하고, 문법을 만들어낸다면...
요즘 예전에 만들어 놓았던 DAMO 라는 프로그램을 리뉴얼(renewal)하고 있는데, 생각보다 쉽지가 않다. (javassist를 적응할겸해서, 쿼리 실행 부분을 동적으로 클래스로 생성하여 사용할려고하는데, 구조를 약간 손봐야해서 힘이든다.) 이놈은 persistent framework인데, 간단히 설명하자면 Class를 가지고 쿼리를 생성해서 실행, 결과 맵핑을 해준다. 요즘은 워낙 좋은게 많아서 본인도 잘 사용을 안하지만, 아주 간단한(?) 프로그램을 짜기에는 편하다는(?) 장점을 제공해준다. 그 장점은 사실 별거 아니다. xml을 작성할 필요가 없다는 것이다. 쿨럭 ^^; 눈치 빠른분들은 이미 아셨겠지만, 이놈이 만들어지던때에 다모(茶母)라는 드라마가 방영되고 있어서.... 이름을 DAMO라고 지..
삽질하다가 전혀 엉뚱한것을 발견(?) ^^; 그놈의 정체는 JPDA(Java Platform Debugger Architecture) http://java.sun.com/javase/technologies/core/toolsapis/jpda/ 이클립스의 디버그 모드는 가끔 사용하기는 하지만, 이게 API로 제공되고 있을줄이야... ^^; com.sun.jdi 패키지인데, tools.jar에 포함되어 있다. 본론(?)으로 돌아가서, Javarebel은 어떻게 돌아가는지 파악하는데 또다시 실패했으나, Instrumentation의 redefineClasses() 메소드를 이용해서, 아주 간단하게 클래스를 변경하는 방법을 테스트해본것에 대해서 만족을..... ^^; 여러가지 제약사항이 존재하기는 하나, 추가/..
JavaRebel은 변경 사항들을 "on-the-fly" 방식으로 재로딩가능하게 한다~~~고 한다. ^^; 어떤 원리로 작동하는지 궁금해서 그 비밀을 파헤쳐보려고 했으나, 내공 부족으로 실패... 다음을 기약하며, 그 흔적을 남긴다. 1.4는 무시해버리고, 1.5를 기준으로 파보았다. 일단 시작은, JDK 1.5부터 지원하는 java.lang.instrument 패키지를 이용해서 Agent를 실행시킨다. 자바를 실행할때 -javaagent를 옵션을 줘서 실행하면, 해당 Agent를 실행시킬 수 있다. java -javaagent:agent.jar=args TestMain 이 Agent Class는 일반적인 어플리케이션의 진입 포인트(Entry Point)인 main() 메소드처럼, premain()이란 ..