사용자 삽입 이미지


2008년은 저에게 많은 일이 일어났던 해입니다.

내년에도 좋은일만 계속되길~~~~





Posted by tuning-java
,
http://www.jennifersoft.com/137/forum/show/ko/3877.html

제니퍼 4.0을 설치해서 한번 사용해보고,
블로그에 글을 올리면 문화상품권 5만원을 선착순 !!! 으로 준다고 한다.
시작한지 좀 되었지만, 12월 31일까지는 아직 1주일 남았으니,
시간 되시는 분들은 한번 도전해 보기 바란다.

난 구찮아서 패스~~~.
(상황봐서 시간되면 한번 해볼까도 생각중임...)
Posted by tuning-java
,
아는 분은 알겠지만,
다음달부터 지난 9년간 다니던 회사를 이직하고 다른 회사로 옮길 예정이다.

지난 11월에 입사가 확정된 이후부터 지금까지,
많은 지인들을 만나 이직에 대해 이야기를 했고, 정말 많은 것을 느꼈다.

어떤 교육을 받을때 강사가 이런 이야기를 했다.
"이 교육이 끝나면 퇴직원을 내 보아라. 그러면 당신이 얼마나 조직에서 필요한 사람인지를 알 수 있을 것이다."
그런데, 내 생각엔 그 말은 맞는 말이 아닌 것 같다.
만약 상사가 자기만을 생각하고, 자신의 조직만을 생각하는 그런 분이라면 이 말이 맞겠지만,
자기 팀원의 미래에 대해서 생각하는 그런 상사라면 이 말은 틀린것이라고 생각된다.
그렇다고, 내가 퇴사한다고 했을때 팀장님이 안잡았다는 이야기는 아니다. ^^;

평소에 알고 지내던 지인들에게 퇴사한다고 이야기했을때,
사람들의 반응은 각양각색이었다.
"잘됐네~~~"
"아쉽네~~~"
"왜 가냐?"
"돈은 많이 준대?"
"회사 위치는 어딘데?"
"뭐 이젠 그런말 들어도 아무렇지도 않네~~~"
등등...
이야기를 들은 사람들이 평소에 나에 대해서 어떻게 생각하고 있는지를 알수 있는 가장 좋은 대목이다.


어제 어찌보면 현재하는 일과 별로 상관 없이 그냥 친하게 가끔 술마시는 사람들과 한잔 했다.
그 중 내가 신입때 협력 외국계 업체에 있다가, 우리회사에 경력으로 오신 분이 한 이야기가 바로 "돈, 시간, 사람"이다.
그 분은 현재 회사에 올 때 돈, 시간, 사람 중 사람을 보고 왔다고 이야기했다.
개인적으론 여기에 일과 회사를 추가해야 한다고 생각하지만.... 여하튼...
아마 이해가 안되는 분들이 많을 꺼라고 생각한다.
"사회생활을 돈을 벌려고 하는거지, 사람 보려고 하는건가?"
근데, 여기서 사람은 이쁜 여직원, 잘생긴 직원을 이야기하는 것이 아니다.
자신의 멘토가 될만한, 자신의 롤 모델이 될만한 사람이 있는 경우를 이야기 하는 것이다.

그런데, 나의 경우는 어떤가 생각해 보았다.
돈, 시간, 사람중 난 뭘 보고 가는 것인가?
돈?
내가 받는 현재 연봉과 제시받은 연봉이 얼마나 차이나는지 아는 분들은 내가 돈보고 가는 것이 아니라는 것을 알고 있을 것이다. (현재 팀장님이 가장 반대한 부분도 이 부분이었다.)

시간?
시간은 약간 애매한데, 시간은 오히려 지금 다니는 회사가 어떻게 보면 나에게 더 많다고 생각된다. 가려는 회사에서 퇴근해서 우리집에 빨리와봤자 8시 반 정도 될테니...
오히려 와이프는 내가 집에서 보내는 시간이 더 줄어들까봐 걱정을 많이 하고 있다.

사람?
어찌보면, 지금 회사에서 지금까지 쌓아온 인맥(?)중 반 이상은 놓칠 수 있다. 다르게 생각하면, 새로 옮기는 회사에서 더 많은 사람을 만날 수 있는 기회가 될 수도 있고...

내가 옮기는 가장 큰 이유는 앞의 3가지가 아닌 일이다.
지금일이 싫다는 이야기는 아니지만, 지금 하는 일중 성능 테스트가 70%이상, 나머지가 튜닝 및 진단이다.
IT에서 성능 테스트만큼 보람되고 많은 것을 배울 수 있는 일은 그리 많지 않다고 본다.
시스템을 전반적으로 크게, 광범위하게 볼 수 있는 일 중 가장 쉬운 방법이 성능테스트라고 생각한다.
그런데 그만큼 성능테스트는 많은 스트레스를 동반한다.(뭐 스트레스 받지 않는 일이 없겠냐만은...)

여하튼, 내년부터는 튜닝일을 징하게 할 것 같다. 튜닝 말고 해야하는 일도 있겠지만...

퇴사가 1주일 앞으로 다가온 현 시점에,
"내가 정말 잘 하고 있는 짓인지?"
라는 질문에는 아직까지도 답이 안나온다.
6개월, 1년, 3년, 5년, 아니면 20년후에 지금 내가한 선택이 제대로 된 선택인지 결정이 나겠지?
Posted by tuning-java
,
이제서야 좀 여유가 생겨서 1쇄에 있던 오타를 정리한다.

저도 사람이니까, 이정도 실수는 좀 애교로 봐 주세요 ^^;

(1쇄 구매한 분들은 꼭 한번씩은 보셔야 하는데...)






Posted by tuning-java
,
맥에서 사용하는 Quartz Component라는 것이 있다.

확장자는 .qtz 인 파일이 그것이다.

이 파일을 만들기 위해서는 XCode라는 맥용 개발툴에 있는  Quartz Composer를 사용해야 하는데,
사용법이 일반 툴과 너무 달라 매우 난감하다.

아래 링크는 그런 qtz 파일을 쉽게 만드는  방법을 쉽게 설명해 놓은 문서다.
(영어지만....)
http://www.macdevcenter.com/pub/a/mac/2006/03/23/quartz-composer.html?page=1


이 파일을 왜 만드냐면....
만들어 놓은 파일을 KeyNote에서 import 하게되면,
프리젠테이션시에 움직이는 배경을 청중에게 보여줄 수 있다.

다음에 어디서 세미나 할 일 있으면, 한번 써 먹어봐야겠다.
Posted by tuning-java
,

울 회사 최모책임님이 블로그에 연동하는 글을 올리셔서...
허락받고 올립니다.

(제가 아직 확인은 못했지만 되것죠 ???)
---------------------------------------------------------------------------------------
현재 정확한 환경은 다음과같습니다.

JDK 1.6 + Apache 2.2 + Tomcat 6.0 + mod_jk 로 Windows XP에서 개발환경을 구성하였습니다.


향후 Spring framework, iBatis, MySQL로 개발작업을 진행하려 합니다.

우선 mod_jk를 이용한 연동방법이 필요하신 분들을 위해 올립니다.

참고로 mod_jk2는 더이상 개발을 진행하지 않는다고 합니다.

- 설치경로
Java: c:\java
Apache: c:\apache
Tomcat: c:\tomcat
App: c:\docs


1.Windows 환경변수에 추가
JAVA_HOME = c:\java

2. mod_jk.so파일을 c:\apache\modules 에 복사

3. c:\apache\conf\httpd.conf 변경
     LoadModule jk_module modules/mod_jk.so 추가
     include conf/mod_jk.conf 추가 (<IfModule .. 윗부분)

4. c:\apache\conf\mod_jk.conf 생성
     JkWorkersFile “c:/apache/conf/workers.properties”
     JkLogFile “c:/tomcat/logs/mod_jk.log”
     JkLogLevel error
     JkAutoAlias “c:/docs”
     JkMount /* ajp13
     JkUnmount /*.php ajp13
     <Directory “c:/docs”>
         Options Indexes FollowSymLinks
         allow from all
     </Directory>

5. c:\apache\conf\worksers.properties 생성(도메인명은 알맞게 변경)
    work.list=ajp1.3
    worker.ajp13.port=8009
    worker.ajp13.host=localhost
    worker.ajp13.domain=xxx.yyy.com
    worker.ajp13.type=ajp13

6. c:\tomcat\conf\server.xml 변경
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
     <Connector port="9999" protocol="HTTP/1.1" connectionTimeout="2000" redirectPort="8443" />
     <Engine name="Catalina" defaultHost="xxx.yyy.com">
         <Host name="xxx.yyy.com" appBase="c:/docs" unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
        </Host>
    </Engine>
    ...
    <Host name="localhost" appBase="c:/docs" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
         <Context path="" docBase="c:/docs" reloadable="true" />
         …
     </Host>

7. Apache, Tomcat 재기동

8. 확인: 아래 주소를 쳐서 Tomcat의 examples화면이 보이면 정상임

http://localhost/examples

Posted by tuning-java
,
아침에 황책임님과 메신져를 하던중 한가지 이벤트 소식을 접했다.

http://section.blog.naver.com/event/DomainPromotionEventForm.nhn


pe.kr 도메인을 2년간 무료로 사용할 수 있도록 하는 이벤트를 네이버에서 진행한다.

그래서 나도 오늘 www.tuning-java.pe.kr 도메인 등록을 완료했다. ^^;

선착순 5만명이라고 하니, 빨랑 하세요.

나같은 경우, 나중에 어떻게 계속 유지할지는 2년 뒤에 생각해 보기로 했음.

Posted by tuning-java
,
Thread Checker라는걸 만들었다.(2일 반동안...)

회사 나가기 전에 같이 일하던 사람들에게 줄 선물로...
(책 써야하는데, 이런거나 맹글고 있으니 - -)

이게 뭘 하는 거냐면,
-성능 테스트를 하거나
-시스템을 운영하거나
-WAS의 문제로 장애가 났을때

개발자의 실수로 다른 Thread에 Lock(Block)을 발생시켰을 때
어떤 프로그램에서 발생했는지를 확인할 수 있는 그런 프로그램이다.
(뭐 똑똑하신 고급 개발자 분들께선 이미 이런거 만들어서 사용하고 계실테니 Pass...)

설치의 단순화를 위해서 JSP 딸랑 하나로 만들었으며,
JSP 하나에 넣기 위해서
HTML 노가다 + CSS 노가다 + JavaScript 노가다를 병행해서 개발했다.

두가지 버젼이 있는데, 하나는 메모리 정보를 보여주는 버젼, 다른 하나는 메모리 정보를 안보여 주는 버젼이다.
혹시라도 메모리 정보를 보여주면 서버에 부하가 발생할 수 있으니....


그림을 보면 알겠지만, 만약 다른 쓰레드를 잡고 있는 범인 쓰레드에 찐하게 표시를 해 주도록 해 놓았다.

원래 엄청나게 우울한 UI 였지만, 울팀 디자이너에게 별다방 커피 한잔 사준다고 꼬셔서 화면도 약간 이쁘게 포장했다.

이 프로그램을 왜 만들었냐면,
지난주 금요일에 성능 테스트를 하는데, XXXXXXXX 라는 프레임웍에서 사용하는 한 프로그램의 메소드에
Synchronized라는 블록을 써서 해당 메소드를 사용하는 다른 쓰레드의 응답속도가 엄청나게 증가하는 현상이 발생을 해서,
이런 문제를 제니퍼나 다른 모니터링 툴을 못 쓰는 사람들이 어떻게 잡을 수 있을까?
해서 만들게 되었다.

뭐 어찌보면, JConsole(이게 뭔지 모르는 분들은 제 책 보세욤...)을 써서 볼수 있겠지만,
서버에 부하가 많이 갈 수도 있고, 방화벽으로 막혀있는 상황이라면,
사용하기가 쉽지 않다.

아직 성능 테스트할 때 사용한 적은 없어서
(내 PC에서는 부하를 발생시켜서 테스트는 해 봤지만...)
해당 JSP를 아직은 공개하진 않을 예정이다.

뭐 소스가 이따구야~~
라는 분도 있을 수가 있고... ㅎㅎㅎ

혹~~ 써보고 싶은 분들은 저에게 이멜 보내주시면, 보내드리도록 하겠다.
메일 주소는 "자바 성능을 결정짓는 코딩 습관과 튜닝 이야기"에 있는 주소를 참조~~~ ㅎㅎ
http://www.hanb.co.kr/book/look.html?isbn=978-89-7914-522-9

한가지 단점으로는 StackTrace 정보를 다 볼 경우 서버에 부하가 많이 갈 수도 있으므로,
괜히 서버 CPU 100% 인 상황에서 사용해서 욕먹는 일이 없길 바란다.

Posted by tuning-java
,
제니퍼를 사용하다보면 X-View나 통계정보에 쿼리 목록이 안나올 때가 있다.

만약 DB의 Connection을 WAS에서 제공하는 것을 사용하지 않을 경우나,
다른 특이한 경우에 이런 일이 발생하게 된다.

그럴때에는 당황하지 말고, 다음과 같이 하면 된다.

1. 먼저 어떤 메소드에서 DB Connection을 맺는지 확인해야 한다.
제니퍼에 로긴하여
장애진단 - 유틸리티 - 로딩 클래스 목록을 찾아간다.
(만약 이 메뉴도 못찾아 가면 이 설명을 읽지 말기 바란다. ^^)

2. 로딩 클래스 목록중에서 DB와 연결을하는 getConnection 관련 메소드를 찾는다.
그 메소드의 매개변수까지 꼭 확인해야 한다.

3. w11.conf 나 w12.conf 와 같이 각 WAS 별 설정이 지정되어 있는 설정파일을 연다.
(제니퍼에서 관리도구를 통해서 설정하는 것이 더 낫다. 실시간으로 반영이 되기 때문에...)
거기서
jdbc_connection_get =
이라고 되어 있는 부분을 찾는다.
분명히 #으로 주석이 되어 있을 것이다.
그 주석을 풀고 저 설정값 뒷 부붓에 패키지를 포함하여 클래스와 메소드와 매개변수를 지정한다.
예를 들어 삼성 SDS의 Athena (지금은 Anyframe 인가??)를 사용할 경우에는 다음과 같이 지정하면 된다.

jdbc_connection_get = athena.titan.services.datasource.impl.AbstractDataSourceService.getConnection()
만약 매개변수의 타입이 String이면, ....getConnection(String) 과 같이 지정하면된다.

그리고 나서 conf 파일을 저장하거나 수정 버튼을 클릭해서 변경사항을 반영한다.

그래도 안되면, 제니퍼 소프트에 전화하세요~~~~ ㅋㅋㅋ

Posted by tuning-java
,
사용자 삽입 이미지

내가 별로 한건 없지만,(그래도 모든 원고에 대한 감수는 했다는...)
감수를 한 책이 오랜 작업끝에 나왔다.

바로 Head First Software Development : 더 쉽고 재미있게 소프트웨어를 개발하는 방법.

황책임님, 정룡, 재혁 고생하셨습니다.

기회되는 분들은 이 책을 한번 보기 바란다.
여러 교재를 감수해 봤지만, 이렇게 감수하면서 재미있게 한 적도 없는 것 같다.

몇권 줄지 모르겠는데...
책 나오면 누구 한권 드릴까?  ^^;
Posted by tuning-java
,