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

2010년 10월 20일 수요일

Opera 10.63

TV에서 오페라 브라우저를 만드는 오페라라는 기업에 대해 보고 난 뒤 선입견이 사라져
한번 사용해 보았다.
일단 결론은 맥에서 사파리를 대신하기에는 무겁다.
메모리, CPU 전부 괴물처럼 쳐 먹는다.
조금만 더 안정되고 64bit버전도 나오면 그 부분은 좋아지리라 믿고
TV에서 느꼈던 회사에 대한 좋은 인상을 반영해서
결론부터 말하자면 굉장히 마음에 든다.
파폭의 기능으로 모두 가능한 일이지만 내가 주로 쓰는 플러그인만 깔려있는 듯한 느낌
가장 마음에 드는 것은 mouseless browsing.
파폭 플러그인으로 있는 숫자 입력방식과는 다르게 shift+커서로 자유롭게 이동할 수도 있고
알파벳으로 cyclic하게 이동할 수도 있다.
또 opera unite라는 기능으로 내 PC를 파일서버나 웹서버, 스트리밍 서버 등으로 사용할 수도 있다.
파폭과 사파리의 중간점 같은...
하지만 아직은 맥에서 사용하기에는 스크롤링도 좀 어지럽고
키 입력에서도 자잘한 버그가 보이고
플래시도 사파리보다도 무겁게 돌고...등등등
하지만 조금만 보강되면 주력 브라우저로 전혀 손색이 없을듯하다.

2010년 10월 19일 화요일

shell script

  • while true; do echo "press enter to continue..." ; read var; ls -al; done
  • while true; do ls -al; sleep 10; done
  • find . -type f \! -name *.jpg \! -name *.zip -print | xargs grep -n 찾는문자열
  • find . -name "*.jar" -exec rm -f {} \;
- 작성중 -

2010년 10월 18일 월요일

Dashboard 위젯이 어느날 갑자기 바탕화면에 생겼을때

어느날 갑자기 대쉬보드 위젯이 바탕하면에 생겼다.
날씨와 계산기가 떡하니 최상위 윈도우로 동작중이다.
검색하면 위젯을 바탕화면으로 빼는 방법에 대해서만 신나게 나오고...
일단 바탕화면의 위젯을 꾹 클릭한 상태에서 F12를 눌러 대쉬보드를 부르고 그 상태에서 위젯을 조금 이동시킨후
대쉬보드 편집 버튼을 클릭하면 x표가 생긴다. ㅡㅡ 휴~

2010년 10월 14일 목요일

macport 명령

macport자체를 업데이트 한다.
sudo port selfupdate
outdate된 라이브러리를 업그레이드 한다.
sudo port upgrade outdated
새로운 버전이 설치되는 경우 과거버전이 삭제되지 않고 남아있으니 제거한다.
sudo port -f uninstall inactive

참고 : port -u upgrade outdated

- 작성중 -

2010년 10월 13일 수요일

emacs process

Emacs 기능 중 자주 사용하지 않아 잘 까먹으면서도 의외로 자주 사용하는 것들
;; psvn mode 상에서
g : 상태 갱신
_ : 변화가 있는 파일만 표시
U : update

C-h m : 단축키 도움말
= : svn-diff
E : svn-ediff
i : info
b : blame
l : log

;; svn 관련 commit process
작업한 파일에서 C-x 4 a : change log 작성
svn-status 상에서 c : commit
svn-log-edit 모드 상에서 C-c C-a : change log를 복사해서 svn-log-edit모드로 붙여넣어줌
svn-log-edit 모드 상에서 C-c C-c : commit

;;cscope
;; 나만 그런것인지 모르지만 이클립스처럼 정확한 reference로 찾아주는게 아니라 텍스트만 같으면 찾는 것 같음. 사실 문자열 검색으로만 해도 될 듯...
위치에 가서 find . -name “*.java” > cscope.files 생성
;M-x cscope-index-files 로 cscope.files, cscope.out, ... 생성 (cscope_file을 생성했다면 cscope-set-initial-directory만 설정한 후 cscope명령을 내리면 자동으로 cscope.out은 생성됨)
M-x cscope-set-initial-directory
C-c s g: 선언부 찾기
C-c s c : 이 함수 호출하는 caller찾기
C-c s C : 이 함수가 호출하는 callee찾기
C-c s s : 심볼 참조 검색
C-c s t : 문자열 검색
C-c s f : 파일 검색

- 작성중 -

학교 체벌 금지...

학교 체벌 금지에 대해서 말들이 많다.
현실을 무시한 행정이라는 현직 교사의 말.
처음 뉴스를 접했을때에도 나도 같은 생각이 들었었다.
하지만 나의 학창 시절을 돌아보고 현재의 나와 미래의 나의 아이를 생각하면
빠르면 빠를 수록 좋았을거라는 생각이 든다.
어찌되었든 그저 손쉬운 해결책이라는 점이 그 이유다.
이미 선진국에서는 체벌이 금지 되었거나 미미하다.
그들은 분명 그럴 수 있는 여건이 되었고 우리는 그렇지 않다면
이제부터라도 그 여건을 만들어야 하지 않을까?
학교와 군대에서 배운 너무 쉬운 해결책으로 상대에 대한 존중과
인간 관계에 대한 고민보다 효과 빠른 체벌로
다시 또 그 체벌을 정당화 하는 제2 , 제3의 야만인을 만들 필요는 없을것 같다.

현재 나의 맥 사양

검소한 마음으로 최저 사양의 맥북 프로를 구매혔었었으나
지름질로 인한 현재 사양은
  • Ram 업글 4기가
  • Intel SSD 80기가
  • ODD제거 후 기존 하드 삽입
  • 듀얼 디스플레이용 DVI꼬다리
  • 켄싱턴 락
  • mStand
  • 무선 힘쎈쥐
  • 무선 키보드
  • 무선 트랙패드
  • colkey 키패드 * 2
  • 크럼플러 크리피 덕
  • BSE 필름
레알 배보다 배꼽으로 향하는 구먼...

    dotEmacs

    (setq load-path (cons (expand-file-name “~/.emacs.d/“) load-path))


    (setenv “JAVA_HOME” “/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home”)
    (setenv “CLASSPATH” “.”)

    ;; no backup file
    ;(setq make-backup-files nil)
    (setq backup-directory-alist
             ‘((“.” . “/Users/OnlyUno/.emacs.d/backup-files”)))

    ;; column number
    (column-number-mode t)
    (global-hl-line-mode 1)

    ;; tab
    (setq default-tab-width 4)
    (setq-default c-basic-offset 4
    tab-width 4
    indent-tabs-mode nil)
    ;; key binding
    (setq mac-command-modifier ‘meta)
    (setq mac-option-modifier ‘hyper)

    (global-set-key “\C-x\C-b” ‘buffer-menu)

    (global-set-key [(hyper a)] ‘mark-whole-buffer)
    (global-set-key [(hyper v)] ‘yank)
    (global-set-key [(hyper c)] ‘kill-ring-save)
    (global-set-key [(hyper x)] ‘kill-region)
    (global-set-key [(hyper s)] ‘save-buffer)
    (global-set-key [(hyper l)] ‘goto-line)
    (global-set-key [(hyper o)] ‘find-file)
    (global-set-key [(hyper f)] ‘isearch-forward)
    (global-set-key [(hyper g)] ‘isearch-repeat-forward)
    (global-set-key [(hyper w)]
    (lambda () (interactive) (kill-buffer (current-buffer))))
    (global-set-key [(hyper .)] ‘keyboard-quit)

    ;;yes or no -> y or n
    (fset ‘yes-or-no-p ‘y-or-n-p)

    ;;yasnippet
    (add-to-list ‘load-path
    “~/.emacs.d/plugins”)
    (require ‘yasnippet-bundle)

    ;; JDE
    (add-to-list ‘load-path (expand-file-name “~/.emacs.d/site/cedet/latest/common”))
    (add-to-list ‘load-path (expand-file-name “~/.emacs.d/site/cedet/latest/contrib”))
    (require ‘cedet)
    (add-to-list ‘load-path (expand-file-name “~/.emacs.d/site/ecb/latest/“))
    (require ‘ecb)
    (add-to-list ‘load-path (expand-file-name “~/.emacs.d/site/jdee/latest/lisp”))
    (add-to-list ‘load-path (expand-file-name “~/.emacs.d/site/elib/latest”))
    (require ‘jde)

    (add-hook ‘jde-mode-hook
    (function cscope:hook))


    (setq defer-loding-jde t)

    ;; custom variable
    (custom-set-variables
    ;; custom-set-variables was added by Custom.
    ;; If you edit it by hand, you could mess it up, so be careful.
    ;; Your init file should contain only one such instance.
    ;; If there is more than one, they won’t work right.
    ‘(blink-cursor-mode t)
    ‘(column-number-mode t)
    ‘(current-language-environment “Korean”)
    ‘(delete-selection-mode t)
    ‘(ecb-options-version “2.40”)
    ‘(global-font-lock-mode t)
    ‘(global-linum-mode t)
    ‘(gnus-secondary-select-method nil)
    ‘(gnus-select-method (quote (nnml “”)))
    ‘(mail-sources (quote ((imap :server “imap.gmail.com” :port 993 :user “아이디” :password “비밀번호” :stream ssl :fetchflag “\\Seen”))))
    ‘(save-place t nil (saveplace))
    ‘(send-mail-function (quote smtpmail-send-it))
    ‘(show-paren-mode t)
    ‘(size-indication-mode t)
    ‘(smtpmail-auth-credentials (quote ((“smtp.gmail.com” 587 “아이디@gmail.com” “비밀번호”))))
    ‘(smtpmail-debug-info t)
    ‘(smtpmail-smtp-server “smtp.gmail.com”)
    ‘(smtpmail-smtp-service 587)
    ‘(smtpmail-starttls-credentials (quote ((“smtp.gmail.com” 587 “nil” “nil”))))
    ‘(transient-mark-mode t)
    ‘(user-full-name “이름”)
    ‘(user-mail-address “아이디@gmail.com”))

    ;; custom faces
    (custom-set-faces
    ;; custom-set-faces was added by Custom.
    ;; If you edit it by hand, you could mess it up, so be careful.
    ;; Your init file should contain only one such instance.
    ;; If there is more than one, they won’t work right.
    ‘(default ((t (:inherit nil :stipple nil :background “white” :foreground “black” :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 110 :width normal :foundry “unknown” :family “Liberation Mono”)))))


    ;; slime
    (setq inferior-lisp-program “/opt/local/bin/ccl64 -K utf-8”
    lisp-indent-function ‘common-lisp-indent-function
    slime-complete-symbol-function ‘slime-fuzzy-complete-symbol
    slime-startup-animation nil
    slime-enable-evaluate-in-emacs t
    slime-log-events t
    slime-outline-mode-in-events-buffer nil
    slime-repl-return-behaviour :send-only-if-after-complete
    slime-autodoc-use-multiline-p t
    slime-highlight-compiler-notes t)

    (add-to-list ‘load-path “/opt/local/share/emacs/site-lisp/slime”)
    (require ‘slime)
    (slime-setup ‘(slime-fancy))

    ;(set-language-environment “UTF-8”)
    (set-language-environment “Korean”)

    (set-terminal-coding-system ‘utf-8)
    (set-keyboard-coding-system ‘utf-8)
    (prefer-coding-system ‘utf-8)
    (set-default-coding-systems ‘utf-8)
    ;(setq default-input-method “korean-hangul”)
    ;(set-input-method “korean-hangul”)
    (setq slime-net-coding-system ‘utf-8-unix)

    ;; 한영전환 shift-space로 하기
    ;(global-set-key [?\S- ] ‘toggle-input-method)

    (add-to-list ‘load-path “/opt/local/share/emacs/site-lisp”)
    (require ‘xcscope)

    ;SECTION: ediff preferences
    (setq ediff-ignore-similar-regions t)
    (setq ediff-use-last-dir t)
    (setq ediff-diff-options “ -b “)

    ;;ido-mode
    ;(define-key minibuffer-local-map [tab] ‘minibuffer-complete)
    ;(ido-mode t)
    ;(setq ido-enable-flex-matching t)

    ;(add-hook ‘ido-setup-hook
    ; (lambda ()
    ; (define-key ido-completion-map [tab] ‘ido-complete)))

    ;; org-mode
    (add-to-list ‘load-path “/usr/share/emacs/23.1.50/lisp/org”)
    (require ‘org)
    (add-to-list ‘auto-mode-alist ‘(“\\.org\\'” . org-mode))
    (global-set-key “\C-cl” ‘org-store-link)
    (global-set-key “\C-ca” ‘org-agenda)
    (global-set-key “\C-cb” ‘org-iswitchb)

    (setq org-log-done t)
    (setq org-agenda-files (file-expand-wildcards “~/Document/MyWork/todo/org/*.org”))

    ;; w3m
    (add-to-list ‘load-path “/opt/local/share/emacs/site-lisp/w3m”)
    (require ‘w3m-load)
    (require ‘w3m-e21)
    (provide ‘w3m-e23)
    ;(require ‘mime-w3m)
    (setq browse-url-browser-function ‘w3m-browse-url)
    (autoload ‘w3m-browse-url “w3m” “Ask a WWW browser to show a URL.” t)
    ;; optional keyboard short-cut
    (global-set-key “\C-xm” ‘browse-url-at-point)
    (setq w3m-home-page “http://www.google.com”)
    (setq w3m-use-cookies t)
    (setq w3m-coding-system ‘utf-8
    w3m-file-coding-system ‘utf-8
    w3m-file-name-coding-system ‘utf-8
    w3m-input-coding-system ‘utf-8
    w3m-output-coding-system ‘utf-8
    w3m-terminal-coding-system ‘utf-8)
            
    ;; subversion
    (require ‘psvn)
    (require ‘vc-svn)
    (setq svn-status-changelog-style ‘changelog)
    (setq svn-status-hide-unknown t)

    ;; ignore case
    (setq read-buffer-completion-ignore-case t)
    (setq read-file-name-completion-ignore-case t)

    ;;tramp
    (setq tramp-debug-buffer t)
    (setq tramp-verbose 10)
    (setq tramp-default-method “telnet”)

    2010년 10월 12일 화요일

    Safari 단축키

    Emacs를 사용하면서부터 키보드만 사용하는것에 재미를 붙이고 있다.
    퀵실버등의 런처를 사용하고 또 대부분의 경우 개발 위주라 키보드 만으로 가능하지만 인터넷 사용시만큼은 마우스를 사용할 수 밖에 없다.
    파이어폭스는 mouseless플러그인이 있어 navigate까지도 가능하지만
    사파리 확장에는 아직 없다.
    navigate 말고 그외의 작업은 단축키가 있지만 사실 메뉴에도 없고 공통기능이라 굳이 설명을 안해주는건지
    그냥 이것 저것 누르다 알아낸 키도 있다.
    내가 자주 사용하는 것만 정리해 보면
    ⌘ + L : 주소표시줄로 커서 이동
    ⌘⌥ + F : 검색창으로 커서 이동
    ⌘ + T : 새 탭
    ⌘ + W : 탭 닫기
    ⌘ + [ , ] (← , →) : 이전/이후 이력
    ⇧⌘ + [ , ](← , →) : 이전/이후 탭(메뉴의 단축키는 누르기 힘들어서...)
    ⌘ + ↓ , ↑ : 맨아래로/맨위로
    ⌥ + ↓ , ↑ : PageDown/PageUp
    SPC, ⇧ + SPC : PageDown/PageUp
    ↓ , ↑ : Scroll Down / Up
    맥에서는 Emacs 단축키도 기본 지원하기 때문에 텍스트 박스등 편집시에는 Emacs 키를 사용하면 편하다.

    2010년 10월 5일 화요일

    2010년 9월 29일 수요일

    글 잘쓰는 법

    유튜브에서 노무현 대통령 동영상 보다가 유시민 의원이 학생들을 대상으로
    글 잘쓰는 법에 대한 동영상을 봤다.
    내용은 요약하자면
    1. 어휘를 늘려라. <-- 좋은 책을 반복해서 봐야한다.(토지 1,2권만 반복해서)
    2. 제대로된 우리말을 써야한다. <-- 잘못 쓴 글을 알아보는 능력(우리말 바로 쓰기 1권 - 이오덕)
    3. 글을 쓸때는 사실에 관한 것인지 주관적 판단에 관한 것인지를 구분하고 개인적인 주관일 경우 근거를 제시한다.
    4. 끊임없이 기록하라. <-- 메모지를 가지고 다녀라
    영어도 마찬가지이겠지... 왜 어릴때 이런 얘기를 해주지 않는 게냐.
    문법이나 독해는 하면서 느는 것이지 달랑 공부 몇줄 한다고 발전하는게 아닌데
    일단 어휘가 받쳐줘야 다른 것을 익힐 수 있는 거였는데...

    Ubuntu에서 Your CPU appears to be lacking expected security protections~~

    우분투에 터미널로 접속하니
    "Your CPU appears to be lacking expected security protections.
    Please check your BIOS settings, or for more information, run:
    /usr/bin/chekc-bios-nx --verbose"
    이라는 왠지 겁나는 문구가 나와서 시키는대로 해보니
    바이오스에 NX feature를 설정하라며 여기로 가보란다.
    바이오스에 “Non-eXecute”(NX) 나 EDB(ExcuteDisable Bit)설정하라길래
    재부팅해서 바이오스 설정으로 가보니 왠걸 그런 설정은 어디에도 없었다.
    구글링해보니 PAE 설정을 하면 된다고 한다.

    Mac에서 AP 자동검색 중지 시키기

    맥의 메뉴바에 있는 무선랜 아이콘을 클릭하면 Airport:On으로 잠깐 나왔다가
    연결이 이미 된 상태인데도 자꾸 다른 AP를 검색하는 것이 거슬렸다.
    연결 된 경우는 그만 검색해도 될텐데...
    구글링 해보니 내가 아이콘을 눌렀을 때만 검색하는 것이라는....
    dummy

    2010년 9월 14일 화요일

    맥에서 출력되는 기본 pdf 크기를 획기적으로 줄이는 방법

    OSX의 장점 중의 하나가 PDF 출력이 쉽다는 건데요. 출력시 PDF로 출력하면 포함 이미지들이 압축이 안되기 때문에 이미지가 많을 시에 파일 크기가 무척이나 커지게 되어, e-mail등으로 보낼때 곤란을 격게됩니다.
    이를 ColorSync 필터링 옵션을 쓰면 PDF 파일 속의 이미지를 JPEG으로 압축하게 해주어 무척이나 쾌적하게 작은 싸이즈의 PDF를 보낼 수 있습니다.
    제 경우는 15M PDF가 표준 압축으로도 2M까지 압축되었습니다.
    방법은요
    1. PDF이미지 압축을 위해 Color Sync filter를 생성한다.
    - Applications 폴더 > Utilities 폴더에 있는 “ColorSync Utility” 프로그램을 수행한다.
    - filters를 선택하고 “+”하여 원하는 필터명을 적고, 오른쪽 까만 화살표를 클릭하여 “Add Image Effect Component” > “Image Compreßion”을 선택한다.
    - 이미지 압축 옵션을 “JPEG”로 변경한 후 원하는 Quality를 선택한다. (여기서는 기본값인 중간값)
    2. 일상적인 방법으로 PDF를 생성한다. (원본 PDF)
    3. Preview에서 PDF를 Save-As하여 Quartz 옵션에 1.에서 만든 필터링명을 선택한 후 저장하면 압축된 PDF로 만들어 진다.
    제 블로그에 상세한 화면 캡쳐와 함께 올려놓았으니 참고하시기 바랍니다.
    Mac에서 출력되는 기본 PDF 크기를 획기적으로 줄이는 방법
    참고적으로 Windows에서는 상용인 Adobe PDF(600M)말고 오픈소스인 doPDF ( PDF Converter - Convert to PDF free with doPDF , 1.5M)를 설치해서 쓰시면 쾌적하게 쓸 수 있습니다. (퀄리티도 거의 비슷합니다.)
    __________________
    http://tykim.wordpreß.com
    tykim21 님께서 2008-10-21 03:58 AM 에 수정하셨습니다..

    출처 : http://www.appleforum.com/os/55880-mac에서-출력되는-기본-pdf-크기를-획기적으로-줄이는-방법.html

    2010년 9월 8일 수요일

    Journler와 blogger연동

    Journler에서 weblog기능을 제거하면서 조금 실망스러웠는데 그렇다고 고거때메 ecto 쓰기도 좀...
    암튼 Journler2Blogger라는 애플스크립트를 발견했다.
    아 늘 신세만 지고 사는구나...

    2010년 8월 4일 수요일

    첫 멘토

    찾아헤메던 첫 멘토 생긴지 4개월도 안돼 사라져버렸다.
    혼자 북칠 팔자인가...

    2010년 6월 25일 금요일

    BLOB 조회

    Blob 데이터를 단순히 조회해 보고 싶을때 간단하게
    SELECT UTL_RAW.CAST_TO_VARCHAR2(DBMS_LOB.SUBSTR(${col}, ${size},${offset}))  
       FROM ${tbl};
    텍스트를 Blob로 변환할때
    SELECT UTL_RAW.CAST_TO_RAW( ${text} ) 
       FROM DUAL;

    2010년 6월 7일 월요일

    계급사회

    계급사회가 사라졌다고 하지만
    사회에 첫발을 내딛는 순간 계급은 정해져버린다.

    호의호식에 삐둥삐둥 살이찌고 치질에 걸려버린 귀족보다
    근육질에 자신의 창조력으로 목표를 위해 땀을 흘리는 대장장이에 홀려버린 나는
    내가 만드는 쇳덩이 없이는 세상이 돌아가지 않는다고 혼자 자위하며 
    나이들어 망치를 들어올릴 힘조차 남지 않게 될 내 모습을 두려워하며
    B급 무라마사 한자루라도 만들어볼 량으로 발버둥친다.

    2010년 5월 24일 월요일

    static logger

    logger 선언시 final static이 좋을까 그냥 final이 좋을까 고민을 한다면
    참고하시라...
    http://wiki.apache.org/commons/Logging/StaticLog

    2010년 5월 18일 화요일

    후회

    기본을 무시하고 말초적인 재미만 쫓던 과거로
    현재의 나는 쓰레기통 처럼 늘 채워지다 비워진다.
    항상 남들의 상식에선 안된다고 하는 것을 묵묵히 해내는 사람들이 있고
    그들은 언제나 승자다.

    2010년 5월 12일 수요일

    남아로 태어나 한 인생을 살아감에 대지대업을 달성하여 명성을 얻지는 못할지라도
    내가 내 자식에게 바라는 것처럼 
    후에 내 조물주와 아비 앞에서 당신이 주신 목숨이 지겹지 않았고, 살아볼만 했다고 말씀드릴 수 있기를...

    2010년 4월 21일 수요일

    네가 먹이를 준 늑대가 이기지

    '관심'이 그 사람을 만듭니다. 무엇에 관심을 가질 것인지를 결정하는 건 다른 누구도 아닌 나 자신입니다. 그리고 그 관심이 결국 나를 만듭니다.

    "당신이 주의를 기울이는 것이 무엇인지 말하시오. 그러면 나는 당신이 어떤 사람인지 말하겠소."
    스페인의 철학자 호세 오르테가 이 가세트가 한 말이라고 합니다.

    "네가 먹이를 준 늑대가 이기지."
    위에서 소개해드린 이 문구는 어느 체로키 노인이 부족의 아이들을 가르치면서 해준 말입니다.
    내 마음속에서 치열하게 싸우는 두 마리의 늑대. 그 중 승리를 거두는 놈은 '내가 먹이를 준 늑대'라고 현자는 말합니다.

    내가 탐욕, 분노, 두려움, 어리석음, 죄책감에 먹이를 주고 관심을 기울이면 그것이 나 자신이 되고,
    내가 진실, 사랑, 신뢰, 평화에 먹이를 주고 관심을 쏟으면 그것이 나 자신이 됩니다.

    너무도 많은 '방해물'들이 넘쳐나 중요한 것에 '집중'하기가 힘들어진 사회... 나에게 가장 소중하고 중요한 대상들에 의도적으로 관심을 쏟으려 노력해야겠습니다.

     출처 : 예병일의 경제노트

    아들아 한발만 더 다가가서 찔러보렴

    "'백척간두진일보(百尺竿頭進一步)'.
    더 이상 나아갈 곳이 없다고 여긴 그 자리에서 한 걸음 더 내딛는 것이 필요해. 그 속에 성장의 비밀이 있는 것이 아닐까?" .... 스파르타인 아버지의 대답을 묻자 그분은 빙긋이 웃으며 다음과 같이 소리쳤다. "아들아! 한발만 더 다가가서 찔러보렴!"

    '한발만 더 다가가 찔러라' 중에서 (조선일보, 2010.3.17)
    막막한 때가 있습니다. 열심히 한다고 했는데 성과는 나오지 않습니다. 능력의 한계에 부딪친 느낌입니다. 주변 여건도 불리한 것 같고, 나를 도와주는 사람도 없어 보입니다.
    일에서도, 학업에서도, 이럴 때는 포기하고 싶어집니다.
    하지만 이런 경험은 누구에게나 찾아옵니다. 좌절이라곤 한번도 해보지 않은 것처럼 보이는 사람들에게도 이런 막막했던 시절은 다 있었습니다.

    스파르타의 한 아버지 이야기는 우리에게 '길'을 보여줍니다. 김형보 웅진지식하우스 대표가 일선 편집자였던 시절, 베스트셀러를 만들지 못해 초조해하던 그에게 그리스 신화의 대가인 한 저자가 해준 이야기입니다.

    "칼이 짧아 적을 찌를 수 없다고 하소연하는 아들에게 스파르타인 아버지가 뭐라고 답했을까?"
    그 저자는 이렇게 묻고 다음과 같이 말했습니다.

    "아들아! 한발만 더 다가가서 찔러보렴!"

    칼이 짧아 적을 찌를 수 없다며 고민하고 있는 아들에게, 아버지는 적에게 한발만 더 다가서보라고 말해줍니다.

    나는 지금 진정으로 치열하게 목표에 가까이 다가서 있는지 생각해보게 해주는 말입니다.
    그 목표와 정면으로 부딪치지 않고 주변만 빙빙 돌면서, 능력과 여건만 탓하고 있는 것은 아닌지 돌아보게 됩니다.
    요즈음은 매일 한걸음씩이지 말입니다...T^T
     출처 : 예병일의 경제노트

    팀워크 - 박찬호 인터뷰

    -그러나 다른 팀도 노력을 다 한다.
    ▶누가 더 간절하냐에 따라 이루어지는 것 같아요, 간절한 마음으로 그만큼 더 노력을 하는 거죠. 여기 와보니까 작년에 몇 년 만에 (월드시리즈)우승한 것이 잘하는 팀이어서 그런 것이 아니구나 하는 것을 느꼈죠. 알렉스 로드리게스나 데릭 지터도 그냥 알렉스나 지터가 아니에요. 아침 7시부터 나와서 운동을 해요, 어린 애들은 더 먼저 나오는 선수들도 있어요. 그렇게 부지런하고 철저한 자기 관리가 있어요.

    -다저스나 필리스도 전통의 팀인데.
    ▶작년에 필라델피아 갔을 때도 그걸 많이 느꼈어요. 다저스에 1년 있다가 필리스로 가니까 많이 틀리더라고요. 체이스 어틀리 같은 경우는 밤 경기에도 낮 12시에는 운동장에 와요. 낮 1시 경기면 아침 8시에 와요. 그리고 그날 상대 투수 비디오를 계속 봐요. 그리고 가서 방망이 치고 또 와서 투수가 어떤 식으로 던지는지 보고 또 방망이 치고. 그리고 게임에 들어가는데 못 칠 수가 있나요. 확률이 훨씬 좋죠. 매일 그렇게 준비를 하더라고요. 팀 훈련 이전에 이미 다 끝내는 거죠. 투수들도 마찬가지고요. 스트레칭이 3시다 그러면 전부 2,3시간 전에는 와서 개인 훈련 다 끝내놓고 기다리죠. 그러니까 필리스도 월드시리즈까지 갔다고 봐요.
    그런데 다저스에서는 3시에 팀 훈련이 있으면 거의 대부분 1,2시가 돼야 와요.

    -요즘의 팀 분위기가 그렇게 다른 줄은 몰랐다.
    ▶그게 보고 배울 베테랑들이 없어서 그런 것 같아요. (다저스에)야구 잘하는 베테랑들은 있었는지 몰라도 젊은 선수들에게 도움이 되는 베테랑이 없었던 것 같아요. 좋은 베테랑이 뭐냐 하면 잘못됐을 때 잘못됐다고 말을 해줘야 하거든요.
    다저스 있을 때 맷 캠프가 웨이트하러 왔는데 슬리퍼를 신고 왔어요. 트레이닝 코치가 발 다친다고 운동화를 신고 오라고 했더니 욕을 하면서 그냥 하려고 하더라고요. 그래서 내가 ‘운동할 때는 모두가 너를 존중하지만 여기는 트레이너가 대장이다. 그러니까 말을 들어라. 그래야 캠프다운 것 아니냐.’ 그랬더니 가서 신고 오더라고요.
    만약 제프 켄트가 그랬더라면 아마 싸웠을 거예요. (웃음) 과거에 그런 일이 있었거든요. 그게 뭐냐 하면 나는 항상 실수 안 하려고 하고, 성실하게 하려고 하거든요. 나중에 트레이너가 와서 고맙다고 하길래 ‘그게 옳은 것이라고 생각해서 한 거다’라고 했죠. 물론 거기서 이야기 안 해도 되죠, 그렇지만 가만히 있으면 팀에는 마이너스죠. 내 이미지만 관리하려면 그냥 있으면 되지만요.
    선수들은 어떻게 노력하고 최선을 다해야 하는지 다 알아요. 근데 귀찮은 거죠. 귀찮은 게 자꾸 습관화되는 게 문제죠. 그걸 잡아주는 것은 코치가 아니라 노장이거든요.

    -팀 분위기를 잡기 위해 팀에서도 많은 노력을 할 텐데.
    ▶어제도 미팅을 하는데 이라크전의 특수 부대 요원 장교들이 와서 팀워크에 대해서 비디오를 보여주면서 강의를 했어요. 예를 들어 30명의 팀원이 있는데 전사자가 생기면 새 요원이 들어오죠. 물론 최고의 요원이 오지만 경험도 없고 어리고 실수도 하죠. 그러면 고참들이 직접 보여주고 솔선수범 하면서 알려주는 겁니다. 그렇게 팀워크를 쌓아가는 노력이 반드시 필요한 겁니다. 서로 개인플레이를 하면 아무리 좋은 선수가 많아도 소용이 없는 거죠,

    [출처] 네이버 스포츠 게시글을 퍼간 영회님의 블로그

    2010년 4월 14일 수요일

    매사마골 [買死馬骨]

    전국시대 말엽 연나라 소왕(昭王)은 황폐한 연나라를 수습한 후에 왕위에 올랐다.
    그는 겸손와 예의, 그리고 후한 선물과 거금으로 현명하고 유능한 인재를 끌어 모았다.
    그 이유는 그들에 의거해서 연나라의 수치를 씻고 복수를 하고 싶었기 때문이다.

    소왕이 유명한 유세객 곽외(郭嵬)를 만나서 말했다.

    "제나라는 우리의 내란을 틈타서 공격을 가했는데, 저는 연나라가 작고 힘이 약해서 복수 할 수 없다는 것을 잘 알고 있습니다. 그러나 유능한 인재를 얻어서 그들과 함께 나라를 다스리고 선왕의 치욕을 씻고 싶은 게 저의 소원 입니다. 나라의 큰 원한을 갚자면 어떻게 해야 합니까?"

    곽외가 대답했다.

    "제업(帝業)을 이루는 임금은 성현을 스승으로 삼아서 조정의 일을 함께 보며, 왕업(王業)을 이루는 임금은 성현을 친구로 삼고 조정의 일을 함께 보며, 패업(覇業)을 이루는 임금은 성현을 신하로 삼고 조정의 일을 함께 보며, 망국(亡國)을 이루는 임금은 성현을 시종으로 삼으니 나라를 보존할 수 없습니다.

    먼저 성현을 스승으로 받들면서 가르침을 받아야 하니, 그렇게만 하면 자신보다 능력이 백 배나 되는 사람이 찾아올 것입니다. 그 다음은 다른 사람보다 먼저 일을 하고 다른 사람보다 늦게 휴식을 해야 하며 다른사람보다 먼저 가르침을 받아야 하고 다른 사람이 가르침을 받지 않을 때에도 계속 가르침을 받아야 합니다.
    그렇게만 하면 자신보다 능력이 열 배나 되는 사람이 찾아올 것입니다.
    탁자에 기대어서 지팡이를 짚고 손짓 발짓으로 지시한다면, 허드렛일을 하고 고된 일에 종사하는 사람이 찾아올 것입니다.
    만일 사람들을 거칠게 대하고 학대하면서 제멋대로 꾸짖는다면, 고분고분 말을 듣는 범부와 노예들이 찾아올 것입니다.

    이런 것들은 모두 옛날에 왕도를 행할 때 인재를 모으던 방법 입니다. 대왕께서 국내의 인재를 널리 선발하고 몸소 그들의 집을 찾아간다면, 천하 사람들은 필경 대왕께서 현명한 신하를 찾는 다는 것을 알고서 반드시 연나라를 찾아올 것입니다."

    소왕이 물었다.

    "그럼, 제가 누구를 방문해야 합니까?"

    "제가 듣건데, 옛날 어떤 임금은 천금을 주고 천리마를 사고자 했습니다. 그러나 3년이 지나도록 사지 못하자, 궁중의 한 신하가 임금에게 말하였습니다.

     '제가 사오도록 하겠습니다.'

    그래서 임금은 5백 냥을 주고 그에게 임무를 맡겼는데, 신하는 3개월 후에 천리마를 찾아왔습니다.
    그러나 죽은 천리마였습니다. 신하는 황금 5백 냥을 주고 죽은 말을 사온 것이죠. 임금은 대노하였습니다.

     '짐이 얻고자 하는 것은 살아있는 말이오. 죽은 말이 무슨 쓸모가 있단 말이오'

    신하가 대답하였습니다.

     ' 죽은 말을 황금 5백 냥을 주고 샀다면 살아 있는 말이야 더 말할 나위가 있겠습니까? 천하 사람들은 이로 인해 대왕께서 천리마를 좋아한다는 사실을 알 것이며, 그렇게 되면 천리마를 살 수 있습니다.'

    아닌 게 아니라 1년도 되지 않아서 천리마가 세 마리나 궁중으로 보내졌죠.
    지금 대왕께서 진실로 현명한 인재를 모으고 싶다면 저부터 시작하시기 바랍니다. 저 같은 사람도 등용된다면, 저보다 더 능력있는 사람이야 말할 나위가 있겠습니까? 그들은 천릿길도 마다하지 않고 연나라를 찾아올 것입니다."

    소왕은 곽외를 위해 궁전을 짓고 그를 스승으로 모셨다. 얼마 후 악의(樂毅)가 위나라에서 왔으며 추연(鄒衍)이 제나라에서 왔고 극신(劇辛)이 조나라에서 왔다. 재능있는 사람들이 앞다퉈 연나라에 모이면서 연나라는 강대해 졌다.

    늘 구루를 찾고 있었다. 나를 가르치고 훈련시켜 줄 스승.
    기술에 대한 갈증, 내가 가는 길이 옳은 길인지, 잘 걸어온것인지 흔들리고 불안해 하며 흘러가는 시간에 대한 안타까움에
    나를  날카로운 검처럼 곧게 단련 시켜 줄 사람을 찾고 있었다.

    내가 먼저 그 스승에게 모티브를 줄 수 있는 존재가 되어야 하는 것을...

    2010년 4월 9일 금요일

    Scala

    groovy의 창시자 중 한 명인 James Strachan이 쓴 글
    Though my tip though for the long term replacement of javac is Scala. I'm very impressed with it! I can honestly say if someone had shown me the Programming in Scala book by by Martin Odersky, Lex Spoon & Bill Venners back in 2003 I'd probably have never created Groovy.
    http://blog.blessedsoft.com/blog/entry/groovy_and_scala
    http://groups.google.com/group/KGGUG/msg/beb49375ef086726

    2010년 4월 8일 목요일

    묘수 세 번 두면 바둑 진다


    저자: 예병일 | 날짜:2004년 09월 23일
    (예병일의 경제노트, 2004.9.23)'묘수 세 번 두면 바둑 진다'는 격언이 있다.
    묘수는 기발한 착상으로써 돌을 살리거나 죽이기도 하고, 부분적으로는 전세를 역전시키기도 한다. 하지만 묘수를 연발해서 바둑을 이기는 경우는 드물다.
    이창호 9단은 화려한 묘수를 구사하는 법이 거의 없지만, 합리적인 착점을 일관되게 찾아내는 능력으로 세계 최강으로 군림하고 있다. 그는 이렇게 말한다.
    "한 건에 맛을 들이면 암수(暗手)의 유혹에 쉽게 빠져들게 된다. 정수(正手)가 오히려 따분해질 수 있다.
    바둑은 줄기차게 이기지 않으면 우승할 수 없고 줄기차게 이기려면 괴롭지만 정수가 최선이다."
     -  조은성의 '바둑에서 배우는 경영 전략' 중에서 (LG경제연구원, 2004.9.17)

    결국은 정석이다. 항상 정석부터 배웠으면서도 항상 몰랐다.
    꽁수를 부리다 결국 정석이라는 것을 깨닫게 된다.

    2010년 3월 31일 수요일

    TmaxSoft

    정말 힘든것은
    함께 했던 동료들이 꺾이는 것을 봐야하는 것이다.
    자의건 타의건 떠나는 사람의 마음이
    좋을리가 없다....

    2010년 3월 4일 목요일

    2010년 2월 23일 화요일

    Groovy Category

    class TestCategory{
    static String cut(String self, int len){
    return self[ 0 ..< len ]
    }
    }

    use(TestCategory){
    assert 'abc' == 'abcdefg'.cut(3) //<-- (2)
    }

    (2)를 보면 마치 String에 cut메소드가 있는 것처럼 보인다.
    위에서 정의한 TestCategory의 cut메소드에 첫번째 인자로 인스턴스를 전달해서 (2)번과 같이 인스턴스 메소드를 호출한 것 처럼 동작한다.

    Groovy

    왜 이게 안뜨는 건지
    인사이트 블로그에도 최대 실패작이라는 글(물론 도서 번역본 발행)이 올라오고...
    정말 훌륭한 기술이다.
    물론 쩌어기 kldp 옵하들이 말하는 여러가지 단점들이 있지만
    자바 개발자라면 필수적으로 알아야할듯...
    기존 다른 스크립트 언어들도 시도를 많이 해 봤지만
    항상 자바와 연동하려고 할때 뭔가 찝찝함이 밀려오는 방식이었는데
    이건 머 걍 깔끔하다.