토요일, 6월 28, 2008

나는 별볼일 없는 개발자이고, 아직은 개발이 재미있다.

내가 개발하는 것들을 소위 말하는 SI성 개발을 많이 해왓다.
제품개발, 사실 아직 변변한 제품 만들어 본적없고, 만들라고 하면 할 수나 있을런지 의문이다.

그렇지.. 변변한건 못 만들어 보았지만, 흉내는 여러번 내 보았다.

자, 제품이라는 걸 만들라 치면.. 보통은 내가 만들려고하는 그런것이 세상에 나와있는지 조사하게 되지요. 모 그런거지, BCEL outline plug-in을 요새 기획중인데, 사실 이넘의 의도는 ASM outline plug-in인 거고.... 자 좋다. 이런 저런 해서 몬가 만들어 질것을 결정했다고 치자.

그럼, 그 다음 몰 해야하는가?
그럼, 그 만들려고 하는것을 현재 상황에서 만들수 있는지 자신을 검사(?) 해야한다.
현재상황에서 한라산을 올라가고 싶은데, 제주도에 갈수 있는 방법이 없을수도 있으므로..
고로, 자신의 현재 상황에서 현실적으로 적당한지, 회사의 정치적, 경제적인 상황, 개발팀의 기술 수준 및 의지는 충분한지 봐야한다.

자 일단 이것도 만들려고하는것에 충분하다 치자.

그래서 여차 저차 산 건너고 물 건너서, 원하는 걸 베타버전 만들었다고 하자.
그래서 정식으로 베포했다고 합니다.

그 다음 행동이 회사의 개발 성숙도를 평가하는 좋은 방법인듯합니다.
이 제품을 어떻게 관리 할 것이지요. 이 제품이 이제 막 태어난 아기지요.
아기에게 모유수유를 할 것인지, 분유를 먹일것인 지요?

임신해서 태어나는 것 까지가 제품이 이제 출시 되었다라고 비유를 하고 싶네요.
태어난 아기가 자라서 대학교까지 가는 것까지 부모의 역할 이라고 한다면...
사실 20년은 부모의 관리가 필요한 것입니다. 임신해서 출산까지 10개월1년 이라고 생각해도 무려 20배의 넘는 배려가 필요한 법입니다.
자식이 있는 부모라면 어느정도 이해하실지 모르겠네요.

여튼 제품이 만들어 지고 나면, 그 제품을 어떻게 관리 할 것인지 고민해 보아야합니다.

제품 개발 한다고하는 몇몇 회사 몇몇 개발팀을 돌아다녀 보았지만, 사실 별거 없습니다.
si에 비해 별 특별하고 특별한게 없다고 말하고 싶습니다.
좀 특별하다면, 제품 만들면서 생기는 제품에 대한 지식이 특별하겠지요.
이것은 희소성의 원리 때문에 특별한거지요. 마치 금의 가격이 석탄의 가격보다 높은 것 처럼요.
사실, 일반 서민이 실제로 필요한 것은 금보다 석탄일 확률이 무지 하게 높습니다.

그리고, 대개의 경우 제품개발팀이 si개발팀보다 일반적인 소프트웨어 개발능력은 떨어지지 않을까 싶습니다. 좀 역설적이 겠습니다만, 저는 그렇게 생각 합니다.

몇몇 제품 개발한다고, 자기는 절대 si 안한다고 하시는 분들... 반성하세요. 김군아 반성해라.
... 하기야 김군 너의 상황을 조금 들은 나는 이해할만도 하겟다만...

아웅, 어제 잠을 좀 빨리 잣더디, 새벽4시에 일어났고..

오늘은 어머니 환갑이신데, 올만에 엄마 보러 집에가야겟네요.
못난 자식 키워주신 엄마에게로 ...

화요일, 6월 24, 2008

컴퓨터를 새롭게 받았다 사양은



새롭게 데스크 탑 컴퓨터를 받았다.

살펴봐야할것은
1) 기존에 즐겨 쓰던 키보드 마우스(무선 Natural Ergonomic Desktop 7000 정품)를 살수 있었던것이고,
2) 22인치 듀얼 모니터(L227WT-PF) 이며
3) 메모리가 8기가 라는 것이다.

개발자가 가질수 있는 최상의 컴퓨터일 듯하다.

우리의 맥 형님이 개발자의 개발환경에 대해 가끔씩 언급하였던바와 같이
장비보다 장소,
장소보다 사람 일 텐데.

수요일, 6월 18, 2008



뉴롸이트 라는데요.
진교수님 '하는 짖을 보면 다 국익을 배반하는 거에요.'
마지막 말이 왜 그리 무섭게 다가오는지요

토요일, 6월 14, 2008

기술동향

정보의 홍수라 누군가 표현했는데, 나와 같은 직업을 가진 사람들은 홍수가 아니라 쓰나미 속에 사는 듯 하다.

가끔씩 오는 기술편지(The Service.com, InfoQ ...)만 봐도 얼마나 많은 기술과 방법들이 나오는지 말이다. 그것 뿐인가 얼마나 다양한 spec이 새로 나오는지 감당이 안된지 사실 오래됫다.

일례로 보통 현업에서는 Java 1.4, 1.5를 주로 사용한다. 개인적으로 현업에서 1.6을 사용한곳은 아직 보지 못했다.(?, 너무 느린가? 개인적으로는 1.6을사용한다.)

Sun에서는 1.7 b28(오늘 28이네요) 이야기가 한창이다. 새롭게 추가된 api, 각 종 진단 툴과 관련 기술들 대략 입벌이지는 것들이다.



Eclipse에서는 Eclipse 3.4 RC3(Ganymede) 이야기로 한창이다. 24일에 릴리즈 예정이라고 한다.
좀 유명한 plugin은 3.4용으로 이미 나와 있으며, Eclipse rcp 커미터들의 블로그에서는 3.4에 추가된 api등을 소개하며 방향을 소개한다. 교육 사이트에는 3.4 Toturial을 소개하기도한다.


Spring은 어떤가? 3.0 소식과 함께 Osgi등의 너무 많은 이슈가 있지 않은가?
<별로 상관 없을수도 있지만 Rod Johnson Discusses Spring, OSGi, Tomcat and the Future of Enterprise Java > --;; 오해의 소지가 있으므로, 저는 들어도 거의 못 알아먹습니다. --;;; Rod Johnson의 눈이 좀 안습이네요. 잠을 많이 못 잔듯해요.

JSR-286로 그디어 release되었네요.(Java Portlet)- 지금 하는 일과 멀어져 버렸지만요. 그디어 를 넣고 싶다.

사실, 자바 진영의 문제는 너무 빠르게 발전하는것이 문제가 아닌가 싶다.
현업 개발자들 발전의 속도를 따라가지 못하고, 앞서 나가는 자와 뒤따라 가는 자의 괴리는 나날이 깊어 가는듯 하다.

인프라가 부족한 이런 발전이 It 업계에 좋은 현상인가?
더군다나 한국적인 현상, 특히 영어의 괴리로 더 깊이는 더욱 깊어 지는 듯 하다.

우리는 어떤식으로, 우리회사는 어떤식으로 대처 하고 있을까?

금요일, 6월 13, 2008

BCEL plug-in 시작

사실, 저에게 고민이 있습니다. 대중적인 툴을 좀 만들어 보고 싶은 욕심이 있습니다.
제가 그리 개발능력이 뛰어(?) 나진 않지만요.

예전에 bcel을 사용하여 메소드 내용삭제 를 하면서 사람들에게 좀 쓸모있는 것을 만들어 보기로 했는데, 아직까지 실행에 옮겨지지 못하고 있네요.

ASM에는 참 편리하고도 유용한, plug-in인 Bytecode Outline이 있습니다.

하지만 BECL은 마땅한 plug-in이 없습니다.
혹시 아시는 분 있으시면 코멘트 부탁드려요~
그래서 시간이 날때마다, Bycode Outline 과 용도가 같은 그렇지만, BCEL용을 만들어 봐야겟다 싶습니다.
작업해 보신 분은 알겠지만, BCEL로 이작업을 하는게 얼마나 괴로운지 아실만한 분은 다 아실거라 생각이 드는군요.
기존 class 분석 -> bcel 작업 -> 실행 혹은 *.class 디컴파일 로 확인
이런식의 반복잡업을 계속 하게 됩니다. 물런 어느 프로그램이나 동일 하겠지만, 이 작업은 한번은 더 거쳐야 합니다.(사실 저는 이작업보다 더 힘든게, 전체 구조를 이해 하는 부분이 힘들었습니다만)
여튼 이 플러그인을 만들어 보면 좋겟다는 생각이 들었습니다.

근데요. 저 위에 있는 고민이 해결되지 않네요. BCEL이 참 유용한 LIB이지만, 아무래도 아주 부분적으로만 사용하는 요소 기술 일 뿐이라 말입니다. 그리고, 이 플러그인은 얼마나 걸릴지 지금은 감이 잡히지 않네요. 내가 생각한 기간에 + 알파를 하면 대략 기간이 나오는데.. 안나오니 대략 힘드네요.
할수나 있는건지.. 검토를 좀더 해봐야겠네요.

좀더 대중을 대상으로 할수 있는 프로그램을 만들고 싶네요.

당분간 BCEL plug-in 만들기를 시작해보겠습니다.

ps)
GWT Designer가 ASM을사용하였네요. 어쩐지 빠르다 이렇게 표현해야 맞는건지~ 여튼 설명은 그것 때문에 빠르다. 끙~

수요일, 6월 11, 2008

요새 업자다 보니 아고라에서 많이 노는데..
한줄 답변에 아래와 같은 글이 있다.
순간 웃겨서 죽는 줄 알았다는....

[명박퇴진][농심불매][개중동폐간][시중퇴진][인초니퇴진][개또라이또 퇴진][개나라당퇴진]꼭 이루시길...▄█▀█● ●█▀█▄.아이고 일도 아니죠

블로그 오른쪽에 있는 이클립스플러그인 카페 링크를 지웠다. 개이버이니~~
개이버 탈퇴해야하는데.. 흠..

오늘 숙제는 SKT다. SKT에 전화했으~~
광고계속 함 끊을거라고..
상담원분 친절하게 받아주시네...

화요일, 6월 10, 2008

부정적인 결론이 났다.

결론의 중요함은 결론으로써 막을 내리는 것일 거다.

됐다 여기까지 기다리고 인내한것도 대단하다.

그나저나, 몇 사람과 한 약속을 지키지 못해 미안할 따름..

미안해

RCP 각 파트 들 간에 통신

RCP를 만들다 보면 각 파트들간에 통신(?)해야할 필요가 있다.
예를 들어, 왼쪽 트리를 클릭하면 오른쪽 뷰가 바뀌고, 아래에 있는 프로퍼티뷰가 바뀐다거나요.
혹은 오른쪽 뷰가 닫히면 함께 연결된 아래 프로퍼티가 닫혀야 하거나요.

이럴때 어떻게 개발해야 할까요?
이클립스 RCP책 252쪽 파트들을 함께 연결하기를 정리해보는 선으로 하겠습니다.

- 선택사항 이벤트(ISelectionEvent) 사용 : 이벤트 등록
- 파트 리스너(IPartListener) : 파트가 닫히고, 열리고, 숨겨졌을 때 발생하는 이벤트 등록
- 직접 통신 : 선택 또는 파트 서비스가 임으의 파트들끼리 직접 제어

위의 방법들이 있다고 합니다.
직접 통신은 자재해야 할 방법이겟고~

일요일, 6월 08, 2008

소프트웨어를 분석할때면, 항상 RSA(Rational Software Architect)가 그리워진다.
그렇다고 RSA를 아주 잘 사용하거나, RSA 개념에 맞게 사용하는지는 자신이 없지만, 무엇인가 없으면 불편하다.
UML 모델러 때문인가도 싶기도하고... 한글화 된 풍부한 문서 때문인가 싶다.

오늘 다시 인스톨 해야겟다.

몇몇 부분의 분석기를 올리고 있는데, 있으면 좀더 속도가 날 듯 싶다.

RSA HOME

이런게 있으면 내가 이해하는데,
http://hangumkj.blogspot.com/2008/03/java-collection.html
도움이 되는 도구니.. 인스톨 해야지..

7.0.0.6 업데이트가 나왓네요~

Take time to thinking: eclipse에서 font 사용 및 분석기

Take time to thinking: eclipse에서 font 사용 및 분석기

위의 link 그림 rcp 화면처럼 하려면, display를 수정해줘야 합니다.
아래처럼 display를 가져오게 되는데, 그 display 객체를 수정해주어야 겠습니다.

혹은
org.eclipse.ui.internal.Workbench의
/**
* Creates the Display to be used by the workbench.
*
* @return the display
*/
public static Display createDisplay() {
// setup the application name used by SWT to lookup resources on some
// platforms
String applicationName = WorkbenchPlugin.getDefault().getAppName();
if (applicationName != null) {
Display.setAppName(applicationName);
}

// create the display
Display newDisplay = Display.getCurrent();
if(newDisplay == null) {
if (Policy.DEBUG_SWT_GRAPHICS || Policy.DEBUG_SWT_DEBUG) {
DeviceData data = new DeviceData();
if (Policy.DEBUG_SWT_GRAPHICS) {
data.tracking = true;
}
if (Policy.DEBUG_SWT_DEBUG) {
data.debug = true;
}
newDisplay = new Display(data);
} else {
newDisplay = new Display();
}
}

// workaround for 1GEZ9UR and 1GF07HN
newDisplay.setWarnings(false);

// Set the priority higher than normal so as to be higher
// than the JobManager.
Thread.currentThread().setPriority(
Math.min(Thread.MAX_PRIORITY, Thread.NORM_PRIORITY + 1));

initializeImages();

return newDisplay;
}
클래스를 손봐주어야한다.

Take time to thinking: InstallFactory를 이용한 배포

Take time to thinking: InstallFactory를 이용한 배포

아참 내보내기해서 생기 exe파일 예를 들어 a.exe라고 내보내기했을경우 a.ini파일을 만들어 내보낼수 있는데요.
여기에 -vm 옵션을 주어서 jre의 위치를 지정할수 있습니다.

토요일, 6월 07, 2008

eclipse에서 font 사용 및 분석기

요 몇일 폰트 문제로 머리가 좀 아팟습니다.
폰트는 다들 아시겠지만 시스템에있는 폰트를 사용해야하고, 리소스를 많이 잡아먹는 대표적인 것들이라 신중하기도 합니다.

SWT에서 폰트는 대략 이렇게 처리합니다. Display(물런 Device에서 최종적으로 가져오게 되는것이죠. 그것의 더 최종은 Font구요)에 systemFont(defaultFont)가져오는 부분이 있습니다. 그래서 eclipse나 우리가 만든 application이 동작하면, systemFont로 만들어 지게 됩니다.
label, button, text등의 각종 widget들도 사용자가 지정하지 않으면, default로 systemFont를 적용하게 됩니다.

폰트는 뭐 아래와 같이 정의 되어 있습니다.
public Font getSystemFont () {
checkDevice ();
if (systemFont != null) return systemFont;
int hFont = 0;
if (!OS.IsWinCE) {
NONCLIENTMETRICS info = OS.IsUnicode ? (NONCLIENTMETRICS) new NONCLIENTMETRICSW () : new NONCLIENTMETRICSA ();
info.cbSize = NONCLIENTMETRICS.sizeof;
if (OS.SystemParametersInfo (OS.SPI_GETNONCLIENTMETRICS, 0, info, 0)) {
LOGFONT logFont = OS.IsUnicode ? (LOGFONT) ((NONCLIENTMETRICSW)info).lfMessageFont : ((NONCLIENTMETRICSA)info).lfMessageFont;
hFont = OS.CreateFontIndirect (logFont);
lfSystemFont = hFont != 0 ? logFont : null;
}
}
if (hFont == 0) hFont = OS.GetStockObject (OS.DEFAULT_GUI_FONT);
if (hFont == 0) hFont = OS.GetStockObject (OS.SYSTEM_FONT);
return systemFont = Font.win32_new (this, hFont);
}

시스템에서 사용하는 폰트는 대략 hFont에 정의된 값이라 할수 있겠습니다.
SWT에서 화면에 출력해주는 기본 폰트라 하겠습니다.(당연히 RCP도 마찬가지겟지요)

자 일단 이걸 기본 지식으로 하겠습니다.

그럼 두번째로,
이클립스에서 Preferences -> Window -> General -> Apperence -> Colors and Font에 정의 되어 있는 폰트와 크기등이 어떻게 결정 될까요?

그것은 org.eclipse.jface 프로젝트에서 관리합니다.
주요한 클래스로는 FontRegistry, JFaceResource를 들수 있겠습니다.
관련 파일로는 jfacefonts.properties, jfacefonts_xxx.properties(대표적인 os마다 파일이 존재합니다.) 그리고 각 부분에 따른 폰트와 크기 타입이 FontDescription 형태로 정의되어 있습니다.
대표적인 jfacefonts.properties 파일을 보도록 하겠습니다.###############################################################################
# Generic NLS font file for JFace
# *.0 is Windows font
# *.1 is Unix font
#############################################################
org.eclipse.jface.bannerfont.0=MS Sans Serif-bold-10
org.eclipse.jface.bannerfont.1=b&h-lucidabright-regular-10

org.eclipse.jface.headerfont.0=MS Sans Serif-bold-12
org.eclipse.jface.headerfont.1=b&h-lucidabright-regular-12

org.eclipse.jface.textfont.0=Courier New-regular-10
org.eclipse.jface.textfont.1=Courier-regular-10
org.eclipse.jface.textfont.2=b&h-lucidabright-regular-9


이클립스처럼 환경을 정의(Colors and Font)해서 사용해야할 경우라면 FontRegistry를 이용하면 되겠습니다. 국제화에 맞게 시스템을 만들 것이라면 위의 방식을 모방하면, 멋지게 이부분은 만들 수 있겠다 생각이 들었습니다.

저기에는 font만 정의하는것이 아니라 ColorRegistry, ResourceRegistry 등도 존재하고, 이것을 유저가 사용할수 있도록 JFaceResource를 내어놓았습니다. 그리고 한번 설정되면 두번은 바뀌지 않도록 되어 있어서 public static final String DEFAULT_FONT = "org.eclipse.jface.defaultfont"; //$NON-NLS-1$ 를 사용하여 재 정의도 못하게 되어 있습니다.
그럼, 어캐 이것을 바꾸지 하시는 분들이 있을텐데요. 위에 정의한 프로퍼티 파일을 바꾸시면 되겟지요.


<이것은 rcp의 초기 폰트와 크기를 바꾸어 보았습니다.>

수요일, 6월 04, 2008

월,화 집에서 계속 잠으로 때웠네요.
올만에 집 청소도 하고, 가구도 옮기고요.

오늘은 새로 태어날 아기 침대가 왔는데.. 우오왕~ 신기했습니다.
몇년 전에 어느분께 빌려드린 유모차도 다시 우리에게 돌아왔구요.
덤으로 아기 물품 몇 가지와 다른 유모차 한대, 침대등 이었습니다.
나눌수록 커지는건 사실인가 봅니다.

첫째 희찬이가 태어날때 준비하지 못했던 것들을, 둘째 '사랑'이가 태어나면서는 같이 준비하게 되네요.
철이 좀 든거지요.

예전에 학교 다닐때 '가난한 마음'이 무엇일까 고민고민 할때가 있었습니다.
가난한 마음을 가질수 있으면 좋을텐데.. 그걸 가지면 무엇을 얻게 된다고는 있는데.. 어떻게 가질수 있다는 이야기는 없습니다.
그게 몰까? 어떻게 가질수 있을까? 고민고민했지만.. 결국은 찾지 못했습니다.

요새 한 몇년 삽질을 계속 하면서, 그 가난한 마음이 무엇인지 아주 조금이지만 알수 있는듯 합니다.
(무슨 일을 하던간에 안되고 안되는 나를 보면서 살짝 절망했습니다. 지금도 그리 좋은 상황은 아니지요.)

아주 작은 것에 기뻐하고 감사하고 만족하는게 아닐까 싶습니다.
주변에 일어 나는 작은 사건에 감사하고, 민감하게 반응하는 것 말이지요.

달라진 저의 행동이라면,
사무실에서 보이는 쓰레기 줍기(항상 그런건 아닙니다만..)
세수나 이 닦고 물 남은거 세탁기에 붙기
청소 빨래 설걷이등 할수 있으면 하기 등을 들수 있겠습니다.

내일은 광화문에 나가볼까 싶습니다.
와이프가 고개 절로 흔들면서 못가게 하는데.. 그래도 가봐야지요.
아니면 5일-6일에 가족 나들이를 가볼까 싶습니다.

아이들에게 정의와 민주 함께하는것들을 말해주고 싶고 그렇게 살도록 교육해야지요.


<아이야 무럭무럭 자라렴. 보고싶구나>

월요일, 6월 02, 2008

RCP, plug-in 개발은 얼마나 걸릴것 같으세요?

오늘 문득 RCP, plug-in은 얼마나 공부하면 할수 있는지 물었던것이 생각난다.
한 두사람이 물은것도 아니고, 많은 사람들, 그것도 다양한 부류들이 그렇게 묻는다.

사실 물으시는 대부분이 RCP가 무엇인지도 모릅니다. 개발자건 관리자건 말입니다.
PLUG-IN을 어떻게 개발하는것인지도 모릅니다. 사실 사용하는 지도 모르는 분도 있습니다.
개발자분들 중에서요.

저는 '혹시, 얼마나 생각하시느냐구요. ' 물어봅니다.
'보름, 한달정도?'

또 어떤 분들은 이렇게 말합니다.
비지니스 로직이 중요하니 앞단 UI개발은 대충 해도 되는거 아니냐구요?
비지니스 로직 잘 만들고 앞단 화면 잘 만들면 되는거 아니냐구요?
RCP/plug-in에 대해 기반기술이 없는 분들이 그렇게 말하고 시작하시곤 합니다.

오~ 매우 끔찍한 접근입니다.

물런, 제가하는 코딩 개발이 옳다는거 아닙니다.
저와 생각이 틀릴수도 있고, 실제로 저의 생각이 틀린적도 많고, 코딩도 허접한게 많이있을수 있습니다.
(물런 항상 책 보고 공부하기때문에 실제로 허접할지라도 개인 자부심은 있지요)

새롭게 RCP/plug-in을 만들어서 무언가 해보실 계획이 있으시다면.. 시간 넉넉히 가지십시요.

swt가 몬지,
그림들어가고 그럴려면 draw2d가 몬지,
rcp와 plug-in차이는 몬지
osgi, equinox, bundle, plug-in은 몬지
요걸 이클립스에서 gef로 그림 어캐 표현하는지
데이터의 답답함은 emf로 어캐 표현하는지,
그림과 데이터 합치는 gmf는 어캐 표현하는지,
코드 자동화는 jet로 어캐 표현하는지 알아야 합니다.

위의 것은 해당 사항을 사용할때 가장 기본적으로 알아야하는 기술 들일 뿐입니다.

여기에 rcp <-> db의 데이터 연동은 어떻게 하실건가요?
위의 주제부터가 응용이 되겟네요. 괸찮은 프레임웍 가지고 삽질하면 안돼잖아요.
socket으로 연결하고 서버에서 디비로 연결하는 3티어를 만들건지,
아니면 바로 디비로 연결할건지,
위와 같은 단들을 직접 만들것인지, 아니면 springframework을 사용할것인지요?

파일럿은 한번 해보고 해야하지 안겟어요?

위에 있는것 뿐만아니라, 응용은 어떻게 할것인데요?
아효~ 많네요. 쓰다보니 많아요. 너무 많아서.. -_-;;

상대적으로 좋고 발전된 기술이고, 점점 더 보편화 되어 가는 기술인데, 한국과의 괴리는 상당히 깊어 보이네요.