일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- sha1
- ACAP
- date
- Runnable
- Executor
- Freemaker
- String
- ORM
- PKCS#8
- PKCS
- 한글조사처리
- Callable
- 이클립스 플러그인 개발
- 한글조사
- DAMO
- Postman
- IPTV
- RSA
- Executors
- 자바
- AES
- Java
- 암호학
- Log4J
- StringUtils
- JCE
- xlet
- mac
- 자바 암호화
- Instrumentation
- Today
- Total
목록분류 전체보기 (123)
오늘은 어디로 갈까...
갈수록 잠드는 시간이 늦어지걸 보면, 어느덧 이 생활에 적응이 되어가나보다. 오늘은 어제 구입한 "시작하세요! 아이폰 프로그래밍" 책을 보았다. 원래 일정이라면 코코아 프로그래밍 책을 열심히 보고 있어야겠지만, 주말에 스리슬쩍 끝내버렸기에 아이폰 프로그래밍 책을 보게되었다. (후반부는 거의 눈으로만 읽어봤기에 머리속에 남아있는게 없다 --;) 이 책을 선택하게 된 이유는 검은색 바탕 가운데 있는, 오렌지인지 귤인지 분간이 안가는 과일이 먹음직스러웠기 때문이다. 아직 초입부분을 보고 있기때문에 좋은 책인지 나쁜책인지는 판단할 수 없겠지만, 지금까지 분위기로봐서는 뭐 쓸만한거 같다. 번역이 가끔 이상한것(본인이 이해를 못하는.. --;)빼고는 괜찮은것 같다. 단지, 기존 코코아 프로그래밍의 저자와 프로그래밍..
원래 일정이라면 코코아 프로그래밍의 중반부를 공부하면서, 오늘 하루를 알차게 보냈어야하지만, 뭐 인생이 그렇듯 오늘은 제꼈다. --; 오전엔 인력업체(?)에 면접을 보러 갔다가 기분만 상해서 돌아왔다.(처음엔 인력업체인지 몰라다. --;) 객관적으로 본다면 별일 아니지만, 왠지 모르게 기분이 팍팍~~ 나뻤다. 그쪽 업무 경력이 없는것은 본인도 인정하기에, "XXX쪽 경력이 부족한거 같네요." 이말은 90% 수긍한다. 그리고, "솔루션 경험도 없으시고, 어플리케이션 개발 경험도 없으시네요" 이말도 약간 심기에 거슬리긴 하지만, 이력서를 그 모양 그 꼴로 작성한한 본인 자신의 무지에 대한 소산물이기에, 감수할 수 있다.. 하지만... "많이 부족하지만, 일단 이력서는 제출해볼께요" 이건 뭐.... 나름 배려..
속이 울렁거린다... 무식하게 소화되지 않은 지식들을 마구잡이로 머리속에 집어넣었더니, 애꿎은 위장이 소화불량에 걸렸나 보다. 예상했던데로 첫날보다 진도가 나가지 않는다. 다행히 218 페이지에 도달했다는데 위안을 삼아야지. 어제 대충 무시하고 넘어갔던 키-밸류 코딩, 키-밸류 옵저버가 여기저기서 상당히 오묘하게 사용되고 있었다. 저놈들이 나와서 저런 코드가 만들어졌는데, 저런 코드가 만들어져서 저놈들이 나왔는지는 모르겠지만, 상당히 흥미로웠다고나 할까.. 코어 데이터란것도 개념은 색다른게 없지만, 그걸 저렇게 구현했다는게 너무 경이로웠다. 왠지 모르게 맥용 코코아 어플을 순식간에 만들어 버릴거 같은 무모한 자신감까지 생겨나고 말이다. 본인은 코코아 프로그래밍을 처음 해보기에, 현 시점에서의 최종적 결과..
하루 종일 비가 내렸다. 가끔 이렇게 비가 내리는것을 보면은, 세상이 온통 물에 잠겨버렸으면 하는 생각을 한다. 아마 본인이 세상을 별로 안좋아하는 모양이다 --; 간만에, 냄비 받침대로 전락한 코코아 프로그래밍 책을 꺼내보았다. 총 500 페이지니까, 하루에 100페이지씩 5일이면 끝낼 수 있겠구나라는 말도 안되는 생각을 하면서 달려보았는데... 결국은 두뇌 과부하로 잠이 들었다 --; 뭐 그래도 138페이지까 봤으니, 목적을 달성했지만, 머리속에 얼마나 남아있을까.... ^^;; 셀렉터와 무더기로 파라메터를 넘기는 부분이 잘 이해가 안가긴 하지만, 뭐 흉내낼 정도는 이해했으니, 그것으로 위안을 삼아야지.. 그나저나 책을 보면 볼수록 대단하다는 생각이 든다. 어떻게 저런식으로 만들어낼 생각을 했는지, ..
졸린다... 자고 싶다.. 겨우 7시에 일어났는데, 비몽사몽이라니. 어느덧 몸과 마음이 백수 생활에 적응해버린것일까...? 정신차리자~~!!! 앞으로 뭐하고 놀지... DAMO는 어려운부분을 다 끝냈터란, 정리하는 부분만 남아서 매력 상실~~이구... 흠... 원래 하고 싶어했던건 검색 엔진과, 모바일쪽인데, 어느쪽부터 하는게 좋을까...? 거기다가 모바일은 아이폰과 안드로이폰 중 하나를 선택해야만 하는데, 참 곤란하다. ^^; 마음에 드는건 아이폰이긴 하지만, 오브젝티브~~ 씨를 첨부터 다시 배워야한다는 중압감이 날 두려움에 떨게 한다. 거기에 반해 안드로이폰은 자바를 사용하기에 거의 날로 먹을수 있다는 이점이 있다. 더군다나 넷북, 셋톱박스등의 플랫폼에도 사용된다는 소문이 있으니 왠지 매력적으로 보이..
보도 블럭 사이에 피는 잡초... 아니 이름 모를 식물들을 보면, 인간은 이 지구상에서 없어져야만 하는 존재가 아닌가 하고 가끔 생각을 한다. 편의를 위해 자연을 파괴하고, 인공적인 것으로 대체하고 있는데, 과연 그 자리를 대신할 수 있는것일까? 어릴적에는 흙탕물이 튀는 동네길이 싫어, 온 세상을 시멘트로~ 도배하기를 바랬는데, 지금은 시멘트를 보면 왠지 모를 거부감이 생기는것을 보면, 나도, 자연으로 돌아갈때가 온게 아닌가 생각한다. 삭막한 회색도시에서 살면서, 예전에는 누리지 못한 물질의 풍요로움을 즐기고 있긴 하지만, 허망한 영혼의 울림은 멈추지 않는것이겠지... 그저 그렇게 살아갈뿐... 오늘 세미나에 가기전에 잠깐 시간이 남아서, 서점에 들렸다. 내가 소화하지 못한 수많은 책들을 보면서, "이 ..
즐거웠던 주말은 너무나 빨리 지나가고 어느덧 다가온 월요일. 사실 백수에게 있어서는 빨간날이나, 검은날이나 별 상관이 없는것이겠지만, 사회적 틀로부터 격리당하지 않기 위해서는 늘 자각해야만 하는 슬픈 현실. 오전에는 마음에 드는 구인 광고가 있어서, 열심히 이력서를 적어서 보냈지만, 될 확률은 거의 없지 않을까. 솔직히 내가 인사담당자라도, 내 이력서를 보면 별로~일것 같다. 조각난 이력들, 그럴싸한 프로젝트도 없고 내새울거도 없는, 흔하디 흔한 삼류 개발자~~~ 딱! 그런느낌~~~ ^^; 요즘 같은 시대를 살아가려면, 이력 관리도 잘하고, PR도 열심히 해야하는데, 게으름탓인지 성격탓인지 그런건 딱 싫다. 거기다가 중요한것은 이력이 아닌 실력이라는 허망된 생각까지 하고 있으니, 참 곤란한다. 그리고 혹..
현실에서 캐시(cash)가 문제더니, 나만의 세상에서는 캐시(cache)가 문제이다. 순수한 OR Mapping이라면 대상 객체에 의해서 추가/수정/삭제가 있어날 경우 캐시(cache)된 내용을 갱신 시키줄 연결고리가 있지만, 생뚱맞게 텍스트로 쿼리를 따로 작성해서 사용할 경우, 어떤 연관관계가 있는지 알아내기가 힘들다. 뭐, 쿼리를 분석하여 대상이 되는 테이블을 추출해내고, 그 테이블에 데이터 변경이 일어날 경우 처리하면 되기도 하지만, 노력에 비해 결과가 별로이다는 것이다. 쿼리 분석하기도 어렵고, 뷰(view)를 쓸 경우는 데이터베이스 종속(?)적인 구현을 할 수 밖에 없으니, 참 난감하다. 쿼리를 작성할때 이 쿼리는 어떤 테이블과 연관관계가 있다고 정의하도록 요구 할 수도 있지만, 그것은 개발자를..
오늘은 비가 오는 관계로, 작업을 중단하고, 멍하니~ 하늘만을 바라보고 있다. 마음같아서는 비를 맞으며, 거리를 걷고 싶지만, 뒷감당이 무서워서 그냥 참고 있다. 이름이 강우라서 비를 좋아하는것일까, 비를 좋아해서 강우가 된것일까... ^^; 오늘 예정 작업은 DAMO의 캐시(Cache)부분이었다. (그렇다. 비가 오는 관계로 내일로 미루어졌다. --;) 간단히 사용할것이면 메모리 캐시마냥 Map 하나 선언해놓고, 데이터를 마구 넣구, 마구 가져가기를 하면 되지만, 여러가지 제약사항과 다양한 기능을 사용하기 위해서 기존에 만들어진 것을 가져다 쓰기로 했다. 자바용 캐시는 의외로 많이 있지만 유명한 것들은 아래와 같다. OSCache(http://www.opensymphony.com/oscache/) Ja..
오늘부터 본격적인 백수의 길로 접어들었다. 생존하기 위해서는 하루 빨리 이 길을 벗어나야하겠지만, 뭐 가끔 쉬어가는것도 좋은 일이니, 열심히 놀아보도록 하자. DAMO에 EL을 추가한것은 무덤을 파는 일이었다. 너무 자유로운 표현이 가능해서 제어가 불가능한 사태에 빠져버린것이다. 할 수 없이, 여러 제약 조건을둬서 어찌 돌아가게는 했지만, 영 아니올시다. ^^; 그중에서 가장 큰 문제는 반복문이었다. SELECT EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO FROM EMP ${empNo} EL 도입후 forEach 문으로 사용을 하려 했는데, 문제는 var='empNo' 였다. 즉 forEach문 안에서만 유효한 변수가 필요하게 된것이다. 기존에는 파라메터..
DAMO 개발중 좌절 #2 동적 SQL을 만들때 기존에는 태그별로 기능을 정의해서 사용하였다. 이번에는 시간이 널널한 관계로 EL(Expression Language)을 사용해서 만들어 볼려고 했는데 흠흠 좌절중이다. 평소 컴파일러 공부를 등한시한 본인에게는 새로운 문법의 언어를 창조해내는것이 너무나 어려운일이다. 규칙만 정의하면 javacc를 이용해서 간단하게 만들 수 있음에도 불구하고, 규칙 정의하기가 불가능... 아니 제한된 시간내에서는 힘들어 보였다. 한 이틀동안 열심히 분석해서 아주 조금 감~을 잡긴 했지만, 만들어진것을 간단히 분석할 수 있는 정도랄까. 무(無)에서 새로운 것을 창조할만한 지식은 아직 형성되지 못하였다. 일단 컴파일러 다시 공부하고 javacc를 공부하고, 문법을 만들어낸다면...
어제(2009년 6월 27일) 강남 교보타워에서 IBM developerWorks에서 주관하는 세미나가 있었다. 첫째 시간에는 간단한(?) 자사 제품 소개가 있었고, 둘째 시간에는 여러 개발자분들이 자신의 주제로 멋진 발표를 해 주셨다. 첫째 시간에 소개한 자사 제품은 심포니(http://symphony.lotus.com/)라는 놈인데, RCP 기반의 오픈 오피스이다. 뭐, 이클립스 위에 Sun사의 오픈 오피스를 올려놓았다고 보면 된다. 잘만 만지면 돈이 좀 될거 같긴한데 흠흠흠.. 요즘 웹이 대세이긴 하지만, 인트라넷이나, 관리자쪽은 Rich Client가 훨씬 좋다고 본인은 생각하고 있다. 실제 관리쪽 일을 하는 사람들은 보면은, 엑셀 파일을 열심히 만들어서 그 안에 있는 데이터를 열심히 웹 화면으로..
어떤분(?)이 댓글로 AES를 이용한 파일 암/복호화 예제를 만들어달라고 요청을 해왔다. 그래서 간단히 만들어봤다. 하지만, 세상에 공짜는 없는법~~~ 언제가 될지 모르겠지만, 나중에 혹시 만난다면 차나 한잔 사주세요. ^^;; package cydar; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java..
회사에서 짤렸다. --; 정확히 얘기하자면, 계약기간 종료이지만, 뭐, 나 스스로는 짤렸다고 믿고싶다. ^^; 본인은 뭐 대충 살다가 아사(餓死) 하던, 객사(客死)하던, 삶을 마감하면 되지만, 처자식을 굶길수는 없는 노릇이어서, 새로운 일자리를 구해야한다~~고 믿고 싶지만, 아직 정신을 못차렸는지 허송세월만 보내고 있는것을 보면, 소중한 일상들을 도매가로 맛없이 건조해버리는 미식가임에 틀림없다. --; 컴이 좋아서 프로그래머가 되었고, 그덕에 몇년동안 잘 먹고 잘 살았는데, 앞으로 이 길을 계속 가야할지 의문이다. 세상사에 지쳐서일까, 아니면 욕심이 많아서 일까. 그저 그렇게 살아가면 될터인데, 왜이리도 따지는게 많은지... ^^; 칙칙한 얘기는 그만두고... 상금에 눈이 멀어서 2009 공개SW 공모..
요즘 프로그래밍 삼매경에 빠져있다 보니, 블로그를 소홀히 하는것같아서 의무적(?)으로 몇글자 적어보겠다. 사실 삼매경이라기 보다는, 능력 부족으로 인해서 허우적거리고 있다는게 맞는거 같지만 말이다. ^^; JDBC를 이용해서 데이터를 처리할때, 실행 쿼리를 로그로 출력했으면 하는 마음을 가졌던 적이 있을것이다. Connection을 가져오고, Statement를 생성해서 실행하는 원초적(?)인 방법을 사용하는곳에서는, 로그 출력하는 부분을 매 코드마다 추가해 줄수도 있지만, 너무 귀찮지 아니한가. 그래서 좀더 쉬운 방법을 연구해보자. 본인같은 무식한 성격의 소유자는 java.sql.Connection, java.sql.PreparedStatement 등을 상속 받아 구현한 Wrapper Class를 만든..
요즘 예전에 만들어 놓았던 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()이란 ..
한마디로 표현한다면 Non-Stop Java development 을 가능하게 해주는 놈이다. 변경된 클래스를 디플로이(deploy)할 필요없이 바로 반영시켜주는 아주 친절한 놈인데, 기술(?)이 상당히 탐이 난다. 현재 제우스(JEUS 5.0)에서 사용하고 있는데, 작업시간(?)을 많이 줄여줘서 좋다. 여기 프로젝트는 클래스로더 구조가 개판이라서 전체(?)를 대상으로 하면 이상한 에러를 뱉어내서 죽어비리는 현상이 있어, 웹 어플쪽만 대상으로 잡아서 사용중이다. 아래놈(?)이 발생한 에러인데, 1.5.0.16 버그(?)라는 소문이 있어서 1.5.0.18로 업데이트 했더나 다른 에러를 뱉어내고 죽어버린다. 아마 현 프로젝트의 되먹지 못한 구조와 제우스의 네임밸류(?)로 인한 오류가 아닐까 조심스레 생각해보..
요즘 되먹지도 않은 블로깅을 한다고, 뇌를 혹사 시키는바람에 반뇌사(腦死) 상태에 빠져있는지라, 휴식을 취하기로 했다. 마침 찾아온 간만의 연휴를 기회삼아 뇌휴식 프로젝트를 실행에 옮겼다. 프로젝트명은 "뒹굴거리면 애니보기" --; 역시 쉬는데는 뒹굴거리면서 애니보는게 최고이다. 아무 생각없이 흐릿한~ 눈동자로, 모니터를 바라보면서, 여과없이 정보를 주입받고, 주저없이 정보를 날려버리는 반사회적 행위야 말로, 이 시대가 낳은 최대의 즐거움이 아닐까 생각한다. 물론 재미있는 애니를 선택해야한다는 강한 압박감과, 가족의 방해공작을 사전에 방지해야한다는 어려운 전제조건이 있긴하지만, 큰 즐거움을 위한 작은(?) 희생쯤, 당연히 각오해야하는게 아닌가!!! 이번에 선택한 애니는 Tales of The Abyss(..
감기가 오래간다. 혹시 SI(swine influenza) 아닌가 헛된 희망(?)을 가져보지만, 그건 그저 망상일뿐... 아프더라도 회사에 나갈 수 있는것이, SI 걸려서 격리수용되는것보다 분명 더 나은 일임에도 불구하고, 회사에 나가지 않아도 된다는 그 사실 한가지만으로 파멸을 갈구하는 나 자신을 보면 참 어리석기 그지없다. 어리석기에 인간이고, 인간이기에 어리석다고, 스스로를 위로해 보지만, 그건 정신적 혼미에서 오는 의식의 단편일뿐 아무런 의미를 부여하지 못한다. 아픔에는 이유가 없는것일까? 내 아픔에는 이유가 없다. 바람이 부는데 내 아픔에는 이유가 없다.
* 문제 풀이에 중점을 두었기에, 파일입력처리 & 에러처리 & 비~자바적 표현(?)등은 무시해주시기 바랍니다. 그리고 귀찮아서 온통 public static으로 도배하였으니 양해바랍니다. ^^; 이 문제들을 풀면서 가장 어려웠던 점은 역시나~ 변수 이름, 메소드 이름짓기였습니다. ^^;;; 이 풀이들이 정상적인 풀이인지는 본인도 모릅니다. 샘플 데이터에 대한 결과는 동일한데, 데이터가 달라지면 엉뚱한 결과가 나타날지도 모르니 유의해주시기 바랍니다. 그리고 좀 더 나은 풀이 방법이나 다른 풀이 방법이 있으면 알려주시면 감사하겠습니다. 다양한 시각을 가지고 싶은 욕망에, 쪽팔림을 무릅쓰고 올린 소스이니, 많은 참여(?) 부탁드립니다. ^^; 프로그래머는 코드~로 말한다는 이념아래, 설명은 생략하겠습니다. -..
즐거운 주말, 광란의 시간(광란이라고 해봤자 게임이겠지만 ^^;)을 보내려던 계획은, 감기의 급습으로 인해 물거품이 되어버리고. 토/일요일 하루 종일 누워서 보내려니 너무 심심하다. 아프다는 핑계로 가사노동(?)에서 해방되었으니, 게임도 마음데로 할 수 없는 노릇이고, 그래서 생각해낸것이 공부하는척하면서 노는것... 그 대상은 바로 사이냅소프트 사원모집 퀴즈~ 현재 다른 곳에 소속되어 있기때문에 입사지원서를 낼 수 없어서 안타깝긴하지만, 예전부터 관심(?)을 가져던 회사인지라 한번 찔러나(?)보자는 마음에 풀어보자. 개인적인 관점에서 볼때, 난이도는 쉬운편. 그 이유는 알고리즘의 알~자도 모르는 본인이 다 풀었기때문이다. (풀었다기보다는, 예제 결과가, 본인의 결과도 동일하였다는 맞는 표현일지도 모르겠지..
1. 시동할 때 : 맥은 처음에 켜도 일반 PC처럼 CMOS 화면(?)이 안나온다. 하~아~얀 화면만이 덩그러니...(고장난거 아니다.) - C : CD로 부팅 - D : 첫번째 파티션으로 부팅 - N : 네트워크로 부팅 - T : firewire 타겟 디스크로 설정 - Option: 부팅가능한 모든 장치를 보여주고 선택할 수 있다. - Command + Option + Delete : 외장 드라이브러 부탱 - Command + Option + P + R : PRAM(시간, 시동디스크, 포트정보, 폰트정보, 타이밍 정보 등등 여러 정보가 들어가있는 비휘발성 RAM)을 초기화 한다. 두번째 빠방~ 할때까지 누르고 있어야한다. (http://support.apple.com/kb/HT1379, http://s..
1. 한글 입력기 바람(http://baramim.blogspot.com/) - 국산 한글 입력기로서, 한영전환키, 한자전환키를 따로 설정해줄수 있다. Leopard 자체에서도 한영 전환이 되나, 전환키가 Cmd + Space인 관계로 사용하게 되었다. 역시 누가 뭐래도 한영 전환은 Shift + Space가 짱!!! 2. SteerMouse(http://www.apple.com/downloads/macosx/drivers/steermouse.html) - 신기하게도 기존에 사용하던 무선마우스에서는 전혀 눈치채지 못했는데, 큰맘먹고 구입한 하얀 마우스를 사용하면서 마우서 커서가 이상하게 움직인다는것을 알게되었다. 처음에는 마우스가 고장(5000원짜리가 그렇지~~ 하면서)난줄 알았는데, 맥의 마우스 가속(..
daemon을 모니터링하는것은 중요한 일이다. 이놈이 살았는지 죽었는지 알 수 없다면 참 난감한 일일 것이다. 그렇다면 어떻게 모니터링 할 수 있을까? ps -ef 를 사용해서 단순히 프로세스가 살아있는지 확인을 할 수도 있지만, 살아 있어도 살아 있는게 아닐 수도 있어서 신용이 안간다. 그렇다고 살아있다~고 매초마다 파일로 출력하자니 모양새가 좋지 않고, 소켓을 통해 구현할려고 하면 귀차니즘이 발동하고... 어떻하면 좋을까? 결론부터 말하자면 걱정하지 말아라, 자바에서는 JMX란 아주 좋은(?) 관리 API를 제공하고 있다. (솔직히 JMX를 배우는게 더 힘들지 않을까 ^^;) 1. JMX(Java Management Extensions) - JMX는 말그대로 여러 자원을 감시(?) 관리 하기 위한 자..
이번 시간에는 자바 데몬을 한번 만들어보자. 일반적으로 실 운영 환경은 UNIX 인 관계로 유닉스에 초점을 맞추도록 하겠다. 각고의 노력(?) 끝에 만든 PostMan. 이 놈도 성격상 데몬이기에 데몬처럼(?) 돌려야한다. 본인의 경험으로는 대부분의 사이트에서 crontab에 등록하여 자바를 실행하는 형식으로 사용하는것 같다. 다행인지 불행인지 몰라도, 본인은 crontab을 한번도 사용못해본(?) 풋내기 사용자라는것이다. 그래서 crontab은 거들떠보지고 않고, 자바 독립적(?)으로 데몬을 돌리곤 했다. PostMan은 자체 스케줄링 기능이 있는 관계로, crontab을 사용하면 왠지 이상하지 않은가? 그러니 자체 실행을 해보도록 하자. 1. nohup 사용하기 - 가장 간단한 방법은 nohup을 이..
Objective C를 공부하기 위해서 산 맥임에도 불구하고, XCode 실행은 단 3번뿐, 나머지 시간은 음악 정리, 사진 정리등 엉뚱한(?) 곳에 대부분을 보내버렸다. 윈도우에 너무나 오랫동안 길들여져 있어서, 사용하는게 불편할만도한데, 오히려 편안함(?)이 느껴지는것은 본인이 제정신이 아닌탓일만은 아닐것이다. 화면이 이쁜것은 제쳐두고서라도, 사용자가 쓰기 쉽게 만든것 같다. 어플리케이션 설치도 드래그&드롭, 직관적인 dock, 음악이라고는 관심밖이었는데 앨범정리를 하고싶게끔 만드는 iTunes, 사진을 좀더 멋더러지게(?) 보여주는 iPhoto, 타임머신, 리모콘(?) 등 참 매력적인 요소들이 많이있다. 물론 이 어플리케이션들이 윈도우에서 가능한것들이지만, 뭐랄까 느껴지는 분위기가 사뭇다르다. 사용..
최적화라는 거창한 단어를 사용하긴 했지만, 사실 별 볼일 없다. 최적화라는것은 운영 환경, 데이터의 모델등 여러 요소를 복합적으로 고려해서 해야하는것이므로, 사실상 정답은 없다. 단지 최선의 방법만이 존재할뿐... 현재 본인의 상황에서 PostMan의 병목현상은 메일 전송 부분에 있다. gmail을 이용해서 보내고 있는데, 메일 1개 전송하는데 보통 3-4초가 소요된다. 아무리 유희를 위해서 만들었다지만, 너무 심하지 않는가... 그래서 약간 수정을 가해서 빠르게 전송하는것처럼(?) 만들어보자. 사실, 구조 자체를 바꿔버리고 싶은 욕망이 꿈틀되지만, 이번만은 참도록 하겠다. ^^; 만약 전용(?) 메일서버를 사용하다면, 이것보다는 빠를거 같지만, 가난한 개발자 & 게으른 개발자인 본인에게는 머나먼 얘기이..
봄을 재촉하는 비가 내리고 있다. 이런날을 커다란 창문이 있는 곳에 앉아, 하염없이 내리는 비를 바라보는게 즐거움일텐데, 어쩔 수 없이 모니터만 뚫어지게 바라보고 있다. 봄하면 생각나는게 spring~ 그렇다. PostMan을 spring화(?) 하자. 스프링을 사용하는김에 Persistant layer도 제대로 구현해보도록 하겠다. 여기서는 iBatis를 사용하겠다. (Spring Batch를 사용할까도 생각해봤지만, 구조를 설명하는게 좌절인거 같아서 간단한(?) spring만 사용하겠다.) 1. 관련 라이브러리 - 갑자기 라이브러리가 많이 필요해졌다. 대충 정리하면 아래와 같은데, 알아서 구해보시길. ^^; - spring 2.5.6 (http://www.springsource.org/download..