Rath World » 2009 » May

Archive

Archive for May, 2009

귀찮을 땐 reflection이 제 맛

May 29th, 2009 Comments off

아무리 IDE가 좋아졌다할지라도 라디오 버튼, 체크 박스, 콤보 박스, 텍스트 필드가 적절히 섞여 30여개의 입력 필드가 한 화면에 펼쳐져 있다면.. 유쾌하지 않다.

여기에 한 필드라도 고쳐지면 ‘Save’ 버튼이 활성화되어야 하고 그렇지 않다면 비활성화 되어야 한다는 요구가 들어온다면?

htm_20040809011613070000070100-001.jpg

부들부들.

리플렉션의 이름으로 그대를 처단하겠다.


 1
 2   private void installModifyListeners() {
 3     ActionListener al = new ActionListener() {
 4       @Override
 5       public void actionPerformed(ActionEvent e) {
 6         fireModified("various buttons");
 7       }
 8     };
 9     KeyListener kl = new KeyAdapter() {
10       @Override
11       public void keyReleased(KeyEvent e) {
12         fireModified("various fields");
13       }
14     };
15     
16     Field[] fields = this.getClass().getDeclaredFields();
17     for(Field f : fields) {
18       try {
19         Object o = f.get(this);
20         if( o instanceof JComponent ) {          
21           try {
22             Method m = o.getClass().getMethod("addActionListener", ActionListener.class);
23             if( m!=null ) {
24               m.invoke(o, al);
25               continue;
26             }
27             
28           } catch( NoSuchMethodException e ) {}
29         }
30         
31         if( o instanceof JTextComponent ) {          
32           try {
33             Method m = o.getClass().getMethod("addKeyListener", KeyListener.class);
34             if( m!=null ) 
35               m.invoke(o, kl);
36           } catch( NoSuchMethodException e ) {}
37         }
38       } catch (Exception e) {
39         System.err.println(e);
40       }
41     }
42   }

이 글은 스프링노트에서 작성되고 살짝 고쳐졌습니다.

Categories: Daily, Development Tags: , ,

코딩이 잘 되던 상황을 기억할 수 있는가

May 24th, 2009 2 comments

코딩을 하고 있다는 것은, 프로젝트의 신경써야만 하는 수많은 이슈들을 잠시 가방에 넣어두고 한순간에 하나씩 집중하여 달리는 것을 말한다. 적어도 내게 코딩하고 있다는 것은 그런 것을 의미한다. 한번에 하나에 집중. 나머지 사항들은 머리속에 있지만 주의력은 전혀 할당되지 않는 그런 상태.

기술 관련 서적을 보거나, 자기관리 책을 보거나, 책들은 ‘좋은 책’이라는 뱃지도 받아야하기 때문에 한 우물만 파는 경우가 별로 없다. 그래서 양서를 보거나 기사를 보면 주의력의 범위가 아-주 넓어진다. 마치 완벽하지 못하지만 열등감에 휩쌓인 완벽주의자처럼. (이라고 쓰고 산만해진다고 읽는다)

그래서 코딩을 하려고 딱 앉으면,

자각하고 있던 모든 것들을 버려야 하기 때문에 (파울로 코엘료의 소설에 나온 열정은 과거에 속하는 모든 것들을 파괴해버린다 가 생각나기도) 코딩에 제대로 몰두하기 어려워진다.

나의 경우 집중이 아주 잘되어, 흔히 ‘Flow’ 상태에 빠지게 된 경우를 생각해보면 다음과 같다.

  • 몸이 아플 때 (여러가지 ‘하면 좋은 것들’에게 신경을 쓸 여력이 없다)
  • 코딩해야하는 어떤 기술이 잘 안풀려서 화가 아주 많이 나 있을 때 (코딩에 집중하도록 마음이 알아서 움직여준다)
  • 코딩해야하는 그 대상이 재미있을 때 (와이프랑 노는 것이 더 재미있다)
  • 안하면 안될 때 (안하면 안된다는 긴장감이, 신경써야하는 다른 모든 것들을 잊게 해준다. 왜, 긴장하면 평소에 잘 하는 것들도 다 까먹지 않는가!)

코딩은 너무 마이크로 하다.

그렇기 때문에 쉬운 개발 언어들이 속속 등장하는게 아닐까 싶다. 마이크로한 곳에 오래 집중하고 있으면 개인 생활이 제대로 돌아갈리 없으니까.

그런데 실력이 미천한 탓인지, 아무리 프로그래밍 언어가 센스있고 API가 잘 설계되어있고 학습 코스트가 0에 가깝자 할지라도, 코딩은 코딩이다. 신경을 써야 한다. 관심과 관리가 없으면 말라죽는 화초처럼, 신경쓰지 않으면 시름시름 앓다가 죽어버린다.

그래서 나의 선택은 코딩 작업을 좀 더 추상적으로 만들기보다는, 마이크로와 매크로 레벨을 넘나들 수 있는 인간이 되는 것이였다. 쉽지 않다. 마이크로 해지면 성질도 더러워지고… 매크로 해지면 자잘한 버그들도 못잡고.. 확장성이나 유연성도 고려하지 못하고..

그럼 결국 나는 열정을 가지고 코딩을 한다는 얘긴데, 이것 상당히 위험한 일이 아닐 수 없다. 열정이 있을 때는, 그것이 없는 사람과는 비교할 수 없을 정도로 좋은 퍼포먼스를 내주겠지만, 만약 상황이 좋지 않아 마이크로 레벨로 돌입할 수 없다면 일 진행을 거의 못하기 때문.

분명히 마이크로 레벨에서 하던 일들을 ‘정보화’ 시켜서 매크로 레벨의 인간인 나에게 자습시킬 수도 있을텐데,

이상하게도 나의 국어실력이 부족해서인지, 마이크로 레벨 상태에서 내가 발산하는 메시지들을 매크로 레벨의 내게 전달할 방도를 찾지 못하고 있다. 분명히 이 둘은 다른 사람이다. 이 두 종단간의 메시징은 어떻게 처리해야 하는 것일까.

SOAP? -_-

이 글은 스프링노트에서 작성되었습니다.

Categories: Development, Personal Tags:

성장에 대한 단상

May 16th, 2009 2 comments

과연 사람이 매일 매일 조금씩 성장해 나가는 것일까? 적어도 나는 아닌듯 하다.

나름 퇴행이 아니라 이것이 진정 성숙하고 지혜로워진 것이라고, 실수를 통해 Not TODO 목록을 만든 것이라며 자위했을 뿐이다.

요즘 무언가에 열중하다보면 묘한 기시감을 느끼게 된다. 발전하고 성장한 짜릿한 기분인데도 불구하고, 언젠가 느껴본.
16년전에 이뤘던 것을 되찾고, 8년전에 깨달은 것들.

종합평가를 한다면 그동안 헛짓했음이 발각된 사건일뿐이겠지만, 나는 잠시 분열하여 스스로를 평가하는 사람이기 이전에 현재를 살아가고있는 사람이라 기분이 좋다.

다시 비평가로 변신해보면,
개개인의 인생에 정답따위 없는데 뭐그리 호들갑.

Categories: Life, Personal Tags: