2010년 12월 7일 화요일

java logging

기본 자바 환경에서 logger를 설정하고 아무리 logger의 level을 변경해봐야 소용없다.
일단 console handler의 레벨이 INFO이기 때문에 console handler의 레벨을 변경해야 하고
console handler를 새로 생성해서 addHandler로 등록해서 사용할 경우 로그가 두번씩 찍히고
logger의 핸들러를 getHandlers로 얻어와 변경하려해도 0개를 리턴한다.



        if (logger.getUseParentHandlers()) {
            Logger parentLogger = logger.getParent();
            Handler[] handlers = parentLogger.getHandlers();
            for (Handler handler : handlers) {
                if (handler instanceof ConsoleHandler)
                    handler.setLevel(Level.ALL);
            }
        }
        else {
            Handler[] handlers = logger.getHandlers();
            for (Handler handler : handlers) {
                if (handler instanceof ConsoleHandler)
                    handler.setLevel(Level.ALL);
            }
        }

제발 내려라

@kennedian3: http://bit.ly/dRZpeZ 집값 바닥론 거짓말에 속지 마라. 오늘자 네이버 부동산
기고문입니다. 그동안 제가 트위터에 접속을 거의 안 했더니 최근 상황에 대한 제 의견이 궁금하다는 분들이 계셨는데, 이 글
읽어보시면 도움될 겁니다


Sent from my iPhone

2010년 12월 6일 월요일

아이폰과 구글 연동

아이폰에서 기본 제공하는 구글 계정 만들기가 아닌 m.google.com/sync에서 알려주는 방식으로 하는 것이 좋음

Sent from my iPhone

2010년 11월 15일 월요일

김 훈, "칼의 노래" 서문

2000년 가을에 나는 다시 초야로 돌아왔다.
나는 정의로운 자들의 세상과 작별하였다. 나는 내 당대의 어떠한 가치도 긍정할 수 없었다. 제군들은 희망의 힘으로 살아 있는가. 그대들과 나누어 가질 희망이나 믿음이 나에게는 없다. 그러므로 그대들과 나는 영원한 남으로서 서로 복되다. 나는 나 자신의 절박한 오류들과 더불어 혼자서 살 것이다.
초야의 저녁들은 헐거웠다. 내 적막은 아주 못 견딜만 하지는 않았다. 그 해 겨울은 추웠고 눈이 많이 내렸다. 마을의 길들은 끊어졌고 인기척이 없었다. 얼어붙은 세상의 빙판 위로 똥차들이 마구 달렸다. 나는 무서워서 겨우내 대문 밖을 나가지 못했다.
나는 인간에 대한 모든 연민을 버리기로 했다. 연민을 버려야만 세상은 보일 듯 싶었다. 연민은 쉽게 버려지지 않았다. 그 해 겨울에 나는 자주 아팠다.

눈이 녹은 뒤 충남 아산 현충사. 이순신 장군의 사당에 여러 번 갔었다. 거기에, 장군의 큰 칼이 걸려 있었다. 차가운 칼이었다. 혼자서 하루종일 장군의 칼을 들여다 보다가 저물어서 돌아왔다.
사랑은 불가능에 대한 사랑일 뿐이라고, 그 칼은 나에게 말해 주었다. 영웅이 아닌 나는 쓸쓸해서 속으로 울었다. 이 가난한 글은 그 칼의 전언에 대한 나의 응답이다.
사랑이여 아득한 적이여. 너의 모든 생명의 함대는 바람 불고 물결 높은 날 내 마지막 바다 노량으로 오라. 오라, 내 거기서 한줄기 일자진(一字陣)으로 적을 맞으리.
다시, 만경강에 바친다.

2010년 10월 27일 수요일

iMovie11에서 Updating Aperture Videos Event가 종료되지 않을때

http://appletoolbox.com/2010/10/imovie-11-stuck-on-updating-aperture-videos-event-fix/
Aperture library에서 우클릭 -> show package contents -> iMovie-Thumbnails와 iLifeShared 폴더 삭제
이제 정상적으로 실행 됨
Aperture에서 thumbnail 재생성이나 원본과 머지 같은 것들을 알려준 넘들 잊지 않겠다.

Blogger에 소스 코드 입력

코드를 변환해 주는 블로그가 있군여.
http://formatmysourcecode.blogspot.com/

2010년 10월 21일 목요일

Java Naming Convention

아주 오래전에 읽었봤었지만 그때는 중요성도 모르고 그저 그런가보다 하고 지나갔던 코딩컨벤션
특히 네이밍이 코딩에서 가장 어려운 일이라는 걸 느껴본 사람이라면 다시 한번 보시길...
http://geosoft.no/development/javastyle.html
가장 중요한 말은 이 모든 규칙들은 가독성을 위해서라면 위반되어도 된다는 말.
  1. 필드는 ‘_’ 접미사를 사용한다.
  2. 변수의 길이는 영역과 비례한다.
  3. 객체명의 의미를 메소드명에 넣지마라.
line.getLength(); // NOT: line.getLineLength
  4. compute, find, initialize 사용
  5. 컬렉션은 복수형으로
  6. 개수를 나타내는 변수는 ’n’ 접두사를 사용한다.
  7. 엔터티 번호에는 ‘i’ 접두사나 ‘No’ 접미사를 사용한다.
  8. 대응하는 단어를 사용한다.
get/set , add/remove , create/destroy , start/stop , insert/delete , increment/decrement , old/new , begin/end , first/last , up/down , min/max , next/previous , old/new , open/close , show/hide , suspend/resume        
  9. 함수명은 ‘처리 후 무엇을 리턴하는지’, 프로시저명은 ‘무엇을 처리하는지’를 나타낸다.
  10. 인터페이스 디폴트 구현은 ‘Default’ 접두사를 사용한다.
  11. 팩토리 메소드의 이름은 ‘new’ 접두사에 반환하는 인스턴스의 클래스명으로 한다.
public Point newPoint(...)
  12. 메소드 선언 규칙은 <access> static abstract synchronized <unusual> final native 순서이다.
  13. do-while 사용 자제
  14. 조건이 복잡한 경우 임시 boolean으로 단순화 한다.
  15. 정상적인 경우를 if에 놓고 예외를 else에 둔다.
  16. 조건문과 한줄에 놓지 마라.
디버깅을 위해서
  17. 조건문 안에 실행문이 있어서는 안된다.
  18. 특정 의미를 갖는 숫자는 항상 의미를 나타내는 상수로 바꿔서 사용한다.
  19. 빈 for문은 ‘;’(세미콜론)을 새 줄에 놓는다.
for(<initialization>; <condition>; <update>)
 ;
  20. 복잡한 메소드는 주석을 달지 말고 새로 만든다.(self-documenting)
  21. javadoc주석을 제외한 주석은 multi-line 주석이라고 해도 ‘//‘를 사용한다.
/* */주석은 디버깅용으로 언제든 제거해서 사용 할 수 있게 한다.
  22. 컬렉션은 포함하는 유형을 주석으로 뒤에 넣는다.
private Vector points_; // of Point
  23. 모든 public 클래스, 또 publics 클래스내의 public, protected 메소드는 javadoc을 만든다.
Java naming은 아니지만 참고할만한 http://msdn.microsoft.com/en-us/library/xzf533w0(v=VS.71).aspx