2009-12-22

시월의 어느 멋진 날에

이 노래를 들으면 아내를 사랑하는 마음이 울컥. 여보 고마워, 사랑해~
눈을뜨기 힘든 가을 보다 높은 저 하늘이 기분 좋아
휴일 아침이면 나를깨운 전화 오늘은 어디서 무얼 할까
창밖에 앉은 바람 한점에도 사랑은 가득한걸
널 만난 세상 더는 소원없어 바램은 죄가 될테니까

가끔 두려워져 지난 밤 꿈처럼 사라질까 기도해
매일 너를 보고 너의 손을 잡고 내 곁에 있는 너를 확인해
창밖에 앉은 바람 한점에도 사랑은 가득한걸
널 만난 세상 더는 소원없어 바램은 죄가 될테니까
살아가는 이유 꿈을 꾸는 이유 모두가 너라는걸
네가 있는 세상 살아가는 동안 더 좋은 것은 없을꺼야

시월의 어느 멋진날에

2009-12-01

xper 11월 모임 회고

항상 가봐야겠다고 다짐?은 하는데 아직 내게 무엇이 부족해서인지 참가하지 못하고 있다. 이분들의 고민은 정말 생활밀착형 고민이라는걸 느낀다.

지금 일기를 쓰고 있지만 이 일기가 쌓이다 보면 나도 언젠가 이런 고민의 결과를 나눌 수 있지 않을까 기대해 본다. 멀지 않다.
http://parkpd.egloos.com/1973182
참조:
"


민신현님은 다음과 같은 문제점을 해결하고자 하셨습니다.
기존의 방법론은 실제 눈에 보여지는 결과물이 나오기 까지 너무 올래걸립니다.
현재 내 위치를 알수가 없습니다. (얼마나 더해야 끝나는지..)
바보 개발자를 양산하고 있습니다. (요구사항에 없는건 신경도 안쓰는..)
산더미 같은 문서를 생산합니다. (프로그램 개발이 아닌 문서 개발.. 감리를 위한 산출물)
서로 이해되지 않는 말로 커뮤니케이션 합니다. (공동체 의식이 없는 팀..)


그리고 재미를 부여하고자 했습니다. (한국 개발자의 재미 = ownership + 칼퇴근..ㅋㅋㅋ)


그럼 어떻게 해결하셨을까요?
6개월, 1년의 스케쥴은 예측하기 어렵습니다. 짧게 예측하자! 2~3주 이터레이션~
설계 중간중간에 테스트 케이스를 작성 합니다(class diagram, use case 단계) - 자동화 테스트
자동화 테스트만 믿을 수 없습니다. 수동 유저 테스트
기반 시스템 가동합니다 - CI 서버(Hudson) 운영(데일리 빌드, 테스트 자동화), Trac, Doxygen
정말 필요한 문서를 만듭니다. 위키를 통한 프로젝트 진행 사항 공유~ 및 문서화(링크)
개발자들에게 고객과 개발된 프로그램으로 대화하라고 주문합니다~
Wireframe 방식의 GUI prototype 방식에서 user experience가 가능한 prototype 방식으로 변경(프로그램 구매)했습니다
SI 특성상 매 프로젝트마다 인원이 바뀌기 때문에 프로젝트 초반에 교육에 치중하였습니다
매번 이터레이션마다 개발자들을 쉬게 하였습니다. (빨리 끝내는 개발자는 칼퇴근! 추후에는 동료들을 도와준다는.. 하지만 나중에는ㅋㅋ - PM이 지고가야할 짐이라고 하십니다..멋있다ㅠㅠ)
매일 아침 30분간의 티타임~ 우리가 남이 아니다라는 것을 알게됩니다.
고객과의 합의를 통해 새로운 프로세스를 적용하였습니다. (고객 설득 -> 감리 설득)


궂이 애자일이라고 표현할 필요는 없을 것 같습니다. 엄청난 고민과 개선의 결과라고 생각됩니다. (실제로 매우 성공적인 프로젝트를 진행하셨다고 합니다. 참여한 개발자들이 고맙다고 인사하고 선물까지 주셨더라는...)"
- 청하는 애자일 개발자 :: xper 11월 정기모임 회고 (Google 사이드위키에서 보기)

커뮤니케이션 만족도를 평가에 넣자

이런 아이디어는 도대체 어디서 얻는 것일까? 기발하다.

참조:

"커뮤니케이션의 만족도"
- 테스팅 히치하이커를 위한 안내서 : xper 11월 정기 모임에 다녀와서 (Google 사이드위키에서 보기)

2009-10-31

설계의 본질

설계에 관한 중요한 통찰...

참조:

"설계란 과학적이거나 합리적인 무엇이 아니다. 오히려 시도해보고 피드백을 통해 대안을 찾아가는 반복적인 과정이다. 여러 연구 결과로부터 얻을 수 있는 교훈은 설계의 적절성 여부를 판단하기 위한 가장 중요한 피드백은 설계를 구현으로 옮기는 과정에서 얻어 진다는 점이다. 따라서 구현 전에 설계를 고정시킬 경우 실패 극복을 통해 대안을 찾아가는 탐구 과정인 설계의 본질이 손상되며 구현 과정에서 개발자들은 설계를 무시하거나 효과적인 설계를 포기하는 극단적인 선택을 취하게 된다."
- Eternity's Chit-Chat : 설계의 본질, 그리고 UML - 2부 (Google 사이드위키에서 보기)

2009-10-17

대우나 조선이나...

실제 이런 프로젝트를 했다는 사실이 너무 놀랍다. 이걸 설마 대우 혼자 한 건 아니겠쥐?

참조:

"대우가 마다가스카르 농토의 절반 이상을 99년 임대한다는 프로그램을 그곳 독재정부와 협상을 거쳐서 거의 실현하기 직전까지 가기도 했다. 마다가스카르 정부는 자기 농민들의 땅을 사실상 빼앗아 외국자본에 넘겨주면서도 지역민들에게 아무런 의논도 동의도 구하지 않고 협상을 진행하다가 그 사실이 영국의 <파이낸셜타임스>등에 의해서 폭로되자, 폭동이 일어났고, 결국 정권이 바뀌는 바람에 대우의 계획은 무산되어버렸다. 비록 실패한 계획이지만, 이것은 사실상 토지강탈 행위이다. 외국의 언론이 이런 각도에서 신식민주의적 정책이라고 비판을 하지만, 우리나라 언론은 이에 대해 이렇다할 관심을 보이지 않는다. 어쩌다가 기사나 논평을 쓰면 기껏 한다는 소리가 외국 사람들이 한국이 잘되는 꼴 보기 싫어서 하는 비판이라는 식으로 대응하는 게 고작이다.실제로 <조선일보>에서 그런 논평이 나왔다. 서양인들이 한국에 대해 시기심을 품고 있다는 것이다. 아무리 국익 우선이라고 하지만, 이것은 인간성과 윤리를 아예 망각한 자세라고 할 수밖에 없다. 한때 우리가 남의 식민지가 되어서 그렇게 인간적인 모욕을 당하고 그 후유증으로 아직도 고통을 당하고 있는데, 이처럼 약육강식의 논리를 거리낌 없이 옹호한다는 것은 역사에서 아무것도 배운 게 없다는 것을 드러내는 것이다. 최소한 역사에서 배운 게 있다면 세계의 양심과 보편주의적 입장에 약간은 서보려는 노력을 해봐야 할 게 아닌가."
- "국가가 잘 되면 행복해진다? 더 이상 속지 말자" - 프레시안 (Google 사이드위키에서 보기)

DDD

미루고 있다가 오늘에야 결심하고 읽었네.
* 도메인 객체가 repository를 가지고 있다는 점은...

참조: Eternity's Chit-Chat : 카테고리 > Domain-Driven Design (Google 사이드위키에서 보기)

2009-10-15

aggregate 개념

글쿤...

참조:

"따라서 주문, 주문 항목은 하나의 객체 클러스터를 구성하며, 고객, 상품은 주문 클러스터에 속하지 않는 독립적인 객체로 존재한다. 이처럼 변경에 대한 불변식을 유지하기 위해 하나의 단위로 취급되면서 변경의 빈도가 비슷하고, 동시 접근에 대한 잠금의 단위가 되는 객체의 집합을 AGGREGATE라고 한다."
- Eternity's Chit-Chat : Domain-Driven Design의 적용-2.AGGREGATE와 REPOSITORY 1부 (Google 사이드위키에서 보기)

Web Dynpro가 괜찮아 지고 있다...

iFrame을 지원한다니...

sap bpm이 web dynpro 이외에는 UI 요소를 지원할 수 있는 방법이 없기 때문에 web dynpro의 성공이 bpm 성공에 큰 역할을 하게 될 것이다.

참조: SAP Community Network Blogs (Google 사이드위키에서 보기)

2009-10-08

Agile 프로젝트 하고 있나?

Agile 하려고 이 책 저 책, 이 글 저 글 열심히 읽기는 했는데, 막상 프로젝트 시작하니 무엇부터 해야할지 깜깜하네...

2009-10-01

마야 - 나를 외치다


새벽이 오는 소리
눈을 비비고 일어나
곁에 잠든 너의 얼굴 보면서...
힘을내야지
절대 쓰러질 순 없어
그런 마음으로
하룰 시작하는데

꿈도 꾸었었지
뜨거웠던 가슴으로
하지만 시간이 나를 버린걸까...
두근거리는 나의 심장은
아직도 이렇게 뛰는데~

절대로
약해지면 안된다는 말대신
뒤쳐지면 안된다는 말대신
오! 지금 이 순간 끝이 아니라~
나의 길을 가고 있다고 외치면 돼~

지쳐버린 어깨
거울속에 비친 내가
어쩌면 이렇게 초라해보일까
똑같은 시간 똑같은 공간에
왜이렇게 변해버린 걸까
끝이 있는걸까
시작뿐인 내 인생에
걱정이 앞서는건 또 왜일까
강해지자고
뒤돌아보지말자고
앞만보고 달려가자고

절대로
약해지면 안된다는 말대신
뒤쳐지면 안된다는 말대신
오! 지금 이 순간 끝이 아니라
나의 길을 가고 있다고
외치면 돼~~

오! 지금 이 순간
끝이 아니라~
나의 길을 가고 있다고
외치면 돼~

(약해지면 안된다는 말대신)
(뒤쳐지면 안된다는 말대신)

끝이 아니라~~

(약해지면 안된다는 말대신)
(뒤쳐지면 안된다는 말대신)

나의 길을 간다고...

HTML 5

Noop

구글의 개발자 몇 명이서 만들고 있는 언어라 하는데...
  • dependency injection
  • testability
  • immutability
 이 덕목을 언어 자체에 심겠다는 목표로...

그 동안 내가 생각해 왔던 프랙티스의 덕목과 유사하군...

고수는 인재등용에 남다른 철학이 있다

돈이 돈을 번다고도 하지만
돈을 버는 것은 돈이나 권력이 아니라 사람이다.
나는 내 일생을 통해서 한 80%는
인재를 모으고 기르고 육성시키는데 보냈다.
삼성이 발전한 것도 유능한 인재를 많이 기용한 결과이다.

- 이병철 삼성 창업회장 (이금룡 회장, ‘고수는 확신으로 승부한다’에서)

고(故) 이병철 회장이 밝힌 인재관은 다음과 같습니다.

‘자기를 나타내는 것보다 조직 자체를 키우고,
조직이 크는 것으로 자기만족을 느끼고,
눈에 잘 띄지 않지만 일은 틀림없이 해내고,
자기의 공을 내세우기 보다는 다른 사람의 공을 이야기하고,
자기 절제를 잘하고,
아래 사람을 키우는 사람이 회사에 필요한 사람이다’

2009.10.1 행복한 경영이야기 메일에서...

2009-09-30

영문 글꼴에 없는 한글 글꼴 지정하기

http://dharana.egloos.com/3904416

내가 적용한 방식은 레지스트리 수정.

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink]
에 해당하는 영문 글꼴의 영문 이름(예를 들어 Consolas)을 다중 문자열 값으로 추가한 다음 다음과 같이 지정할 한글 글꼴을 지정한다. 일본어를 지정해도 된다.
SEGOEUI.TTF, Malgun Gothic
gulim.ttc,gulim
MSGOTHIC.TTC,MS UI Gothic
SimSun.TTC,SimSun
mingliu.ttc,PMingLiU
한글 글꼴 파일 이름, 글꼴명 순서로 쓴다. 적용되려면 재부팅 필요.

2009-09-29

Chrome Frame

http://www.sitepoint.com/blogs/2009/09/28/google-chrome-frame-technical-details/

요즘 RSS를 잘 안 읽다 보니 이런게 나왔는지도 몰랐네. 정말 구글답다. IE6를 끝까지 고집하는 사람들을 위해 이런걸 만들다니...

이 넘은 IE에 깔리는 Browser Helper Object인데, 이게 뭔지 모르면 그냥 ActiveX라고 생각하면 된다.

웹사이트가 이 기능을 이용하도록 하면 사용자가 IE7이나 IE8로 업그레이드 할 필요 없이 플래시처럼 이게 깔리면서 최신의 웹표준을 사용할 수 있도록 해준다. HTML5, CSS3, canvas and SVG features 머 이런 것들이란다.

2009-09-28

Trac 에서 권한이 있는데 볼 수 없을 때

이게 웬 버그인가 했는데, 역시 구글링 결과 다음 해답!

Account Manager에서 EmailVerificationModule 을 빼시오. 혹은 그 사용자더러 이메일을 확인하도록 하시오.

2009-09-24

TortoiseSvn 과 Trac 통합

TortoiseSvn에서 커밋시에 Trac의 티켓번호를 입력할 수 있도록 하려고 했더니 http://tracexplorer.devjavu.com/이 필요하고, 또 Trac에도
  • XML-RPC plugin and you need XML_RPC-permissions.
  • When you use AccountManagerPlugin together with form based authentication, you must also install the HttpAuthPlugin
해야 한다는... 에이 귀찮다.

Trac 실행 명령어

sudo trac-admin /path/to/trac/project initenv
sudo chown www-data:www-data -R /path/to/trac/project
sudo trac-admin /path/to/trac/project permission add admin TRAC_ADMIN
이제 svn 커밋할 때에, 티켓 번호와 연동해야 하는데...

Subversion의 mailer.py 스크립트에서 Gmail SMTP 사용하기

기본적으로 아래 링크를 참조
http://www.pyrasis.com/blog/entry/SubversionMailerPyScriptForGmailSMTP

sudo apt-get install subversion-tools

mailer.conf 에서는
# mail_command = /usr/sbin/sendmail
smtp_hostname = smtp.gmail.com:587
smtp_username = someuser@your.domain
smtp_password = yourpassword

from_addr = someuser@your.domain
to_addr = your@mailing.list
reply_to = your@mailing.list

from_addr세팅을 안했더니 안간다. 이것 때매 시간 좀 썼다. 그리고 위에서 mail_command 는 코멘트 처리 했다. 이게 있으면 SMTP로 직접 쏘는게 아니라 sendmail을 이용해서 보낸다는거다.

mailer.py 에서는 class SMTPOutput 의 finish() 에서

if self.cfg.is_set('general.smtp_username'):
  server.ehlo()
  server.starttls()
  server.ehlo()
  server.login(self.cfg.general.smtp_username,
                   self.cfg.general.smtp_password)

와 같이 수정한다.

2009-09-16

LazyInitializationException 처리

나도 당해보니 고민이 되는구먼... 내가 이해하는게 맞는지 잘 모르겠단 말야... 이건 이런 경우가 아닐까 해.
XXX x = aaaService.getXXX();
bbbService.doSomething(x);

bbbService.doSomething(XXX x) {
    x.getYYY();  <-- 여기서 LazyInitializationException
}
즉 XXX x 객체가 세션의 바운더리를 넘어서 이동할 경우 Detached 상태가 된다는 것이 문제의 원인일 것 같아.

그러므로 해결책은 1) detached된 객체를 re-attach하거나 2) 위 두 서비스의 호출을 하나의 Unit of Work로 묶어주거나.

2번이 애플리케이션 설계 측면에서 더 매력적일 듯.

인터넷에 있는 해결책들은 대부분 lazy=false 를 사용하라 되어 있던데 이것도 좀 그래. 왜냐하면 난 대부분의 경우 lazy=true 기능을 쓰고 싶단 말이지. 그리고 lazy=false로 하지 않아도 쿼리시에 eager fetch를 하면 되니까.

이상은 모두 추측. ㅎ (문서를 상세히 읽지 않았음)

2009-09-10

javascript로 다른 도메인 호출

<script>
document.domain = "example.net";
$(document).ready(function() {
    $('#call0').bind('click', function(event) {
        alert("loading...");
        // $('#a').load('http://no.example.net/a.php');
        try {
            $.get('http://no.example.net/a.php', function(data) {
                alert(data);
            });
        } catch (e) {
            alert(e);
        }
        alert("done...");
    });
});

var globalVar;
// This will be called by c.js
function assignGlobal(val) {
    globalVar = val;
    alert(globalVar);
}

$(document).ready(function() {
    $('#call1').bind('click', function(event) {
        $(document.createElement('script'))
        .attr('src', 'http://no.example.net/c.js').appendTo('head');
    });
});

$(document).ready(function() {
    $('#call2').bind('click', function(event) {
        frames['f'].func();
    });
});
</script>

<body>
<ul>
<li><a href="#" id="call0">Click: ajax loading. not work.</a>
<li><a href="#" id="call1">Click: script insert</a>
<li><a href="#" id="call2">Click: iframe(requires document.domain setting on both side)</a>
</ul>
<iframe name="f" id="f" src="a.php" width="100" height="50"></iframe>
a.php
<script>
document.domain = 'example.net';
function func() {
    alert('alert from func in a');
}
</script>
c.js
alert('alert from c.js');
assignGlobal('OOOOOOO');
AJAX로 하는 것은 동작하지 않는다. domain을 조절할 수 없다. 위에서 jquery로 script태그를 생성했는데, 이것을 plain javascript로 바꾸면 다음과 같다.
var h = document.getElementsByTagName('head').item(0);
var js = document.createElement('script');
js.setAttribute('src', 'http://no.example.net/c.js');
h.appendChild(js);

2009-09-09

신입사원 가이드

신입사원이 입사했을 때, 앞으로 어떤 것에 관심을 가지고 학습해야 할지 가이드 한 내용이다. Java 및 설계능력: Effective Java, Pattern, Refactoring. UML
DB: sql, ORM
Web: javascript + html + css

  • 네이버에서 신문 보는 것으로 시간 때우지 말 것.
  • IT뉴스 및 트렌드: dzone rss
  • RSS 볼 때, Open source에 특히 관심을 가질 것.
  • 타 운영체제에도 관심을: 리눅스, 솔라리스도 스스로 학습 할 것. (vmware, virtual box로 쉽게 접근할 수 있음)
  • 책을 가까이 할 것. 출퇴근 시간에 항상 책을 읽을 것. 업무시간에도 책을 읽을 것. 무의미하게 모니터를 바라보고 있지 말것.

2009-09-03

Ubuntu boot시 glassfish 자동 실행

/etc/init.d/glassfish라는 파일을 만들자. 이 디렉토리에 있는 파일을 하나 복사해서 만든다. 아래 내용으로.
#!/bin/sh -e

GLASSFISH_HOME=/home/glassfishv3-prelude

case $1 in
        start)
                ${GLASSFISH_HOME}/bin/asadmin start-domain --user admin $2
        ;;
        stop)
                ${GLASSFISH_HOME}/bin/asadmin stop-domain --user admin $2
        ;;
        restart)
                ${GLASSFISH_HOME}/bin/asadmin stop-domain --user admin $2
                ${GLASSFISH_HOME}/bin/asadmin start-domain --user admin $2
        ;;
        *)
                echo $"Usage: $0 {start|stop|restart} [domain]"
                exit 1
        ;;
esac
그런 다음 /etc/rc.local에 /etc/init.d/glassfish start domain1 한 줄 추가로 끝.

glassfish asadmin login

admin user를 만들고 password를 세팅하면 (admin realm에서) asadmin이 실패하게 된다. --user, --passwordfile 옵션 어쩌구 하면서 말이다. 이 경우 asadmin login [--port xxxx] 를 미리 실행하도록 한다. port는 admin port가 4848이 아닐 경우. 이러면 홈디렉토리에 .asadminpass 파일이 생성되고 이제 --passwordfile 옵션을 줄 필요가 없다.

apache reverse proxy

mods-enables에 아래와 같이 symbolic link생성

  • proxy.conf -> ../mods-available/proxy.conf
  • proxy_http.load -> ../mods-available/proxy_http.load
  • proxy.load -> ../mods-available/proxy.load

자신의 site 파일에 다음을 설정

ProxyRequests Off


Order deny,allow
Allow from all


ProxyPass /     http://localhost:8080/
ProxyPassReverse /      http://localhost:8080/

glassfish domain 생성

Glassfish에서 domain1외에 새로이 domain을 생성하는 화면.
root@buy-0448:/home/glassfishv3-prelude/bin# ./asadmin create-domain --portbase 9000 mydomain
Enter admin user name[Enter to accept default]>
Using port 9048 for Admin.
Using port 9080 for HTTP Instance.
Using port 9076 for JMS.
Using port 9037 for IIOP.
Using port 9081 for HTTP_SSL.
Using port 9038 for IIOP_SSL.
Using port 9039 for IIOP_MUTUALAUTH.
Using port 9086 for JMX_ADMIN.
Distinguished Name of the self-signed X.509 Server Certificate is:
[CN=mysite.example.com,OU=GlassFish,O=Sun Microsystems,L=Santa Clara,ST=California,C=US]
Domain jabberstory created.
Command create-domain executed successfully.
portbase 값에 따라 여러 port들이 정해진다.

Ubuntu에서 LAMP 한 방 설치

sudo tasksel install lamp-server

Ubuntu virtual host, site

Ubuntu에서 virtual host를 세팅하고 있다. site를 이용한다. /etc/apache2/sites-available/000-default 파일을 복사하여 newsite를 만든다. new site에 다음 내용을 넣는다.
<VirtualHost *:80>
    DocumentRoot /home/rnd/www
    ServerName rnd.example.net
    ErrorLog /var/log/apache2/rnd.example.net-error_log
    CustomLog /var/log/apache2/rnd.example.net-access_log combined
</VirtualHost>
sudo a2ensite newsite를 실행한다. a2dissite명령어도 있다.

2009-08-26

mylyn generic web repository connector - http://download.eclipse.org/tools/mylyn/update/incubator glassfish - http://ajax.dev.java.net/eclipse jstl 관련 tag library를 찾을 수 없다고 하는 경우, 프로젝트의 jre가 unbound 되었을 경우도 있었다.

2009-08-14

운영 서버는 이제부터 64bit다 ! http://janvanbesien.blogspot.com/2009/08/mysterious-jvm-crashes-explained.html

Applet에서 Modal dialog 열기

(Frame)SwingUtilities.getAncestorOfClass(Frame.cla ss, myApplet) and use it as owner for the dialog.

textcube

Textcube 블로그를 보고서는 써보고 싶어졌다. 구글블로그는 약간 구식인듯한 느낌... 그리고 약간 느리다. 그래서 만들어 본... http://blog3.jabberstory.net

Eclipse P2를 위한 URL

  • Galileo http://download.eclipse.org/releases/galileo
  • The Eclipse Project Updates http://download.eclipse.org/eclipse/updates/3.5
  • Subversive SVN connector http://community.polarion.com/projects/subversive/download/eclipse/2.0/update-site/
  • Scala Update Site http://www.scala-lang.org/scala-eclipse-plugin

2009-07-31

사랑하라. 한번도 상처받지 않은 것처럼 -알프레드 디 수자-

Love, like you've never been hurt. Dance, like nobody is watching you. Sing, like nobody is listening you. Work, like you don't need money. Live, like today is the last day to live. 사랑하라 한번도 상처받지 않은 것 처럼 춤추라 아무도 바라보고 있지 않은 것 처럼 노래하라 아무도 듣고 있지 않은 것 처럼 일하라 돈이 필요하지 않은 것 처럼 살라 오늘이 마지막 날인 것 처럼

비전이 있는 사람과 몽상가의 차이

‘비전이 있는 사람은 말은 적으며 행동은 많이 한다. 몽상가는 말은 많으나 행동은 적다. 비전이 있는 사람은 자기 내면의 확신에서 힘을 얻는다. 몽상가는 외부 환경에서 힘을 찾는다. 비전이 있는 사람은 문제가 생겨도 계속 전진한다. 몽상가는 가는 길이 힘들면 그만둔다.’ 존 맥스웰 (John Maxwell)의 글입니다. 오늘 아침 "행복한 경영 이야기"에서...

2009-07-24

JNA (Java Native Access)

언젠가 써 먹을 일이 있겠지 하면서 눈여겨 둔 것. Detect the user’s inactivity in Java with JNA http://ochafik.free.fr/blog/?p=98 예전에 난 Windows Hook을 사용했는데 이런 함수가 있었군. GetLastInputInfo

2009-07-22

Imagine - John Lennon Imagine there´s no heaven 천국이 없다고 생각해 봐요 it´s easy if you try 하려고만 하면 그다지 어렵지 않을 거예요 No hell below us 발 밑에는 지옥이 없고 above us only sky 머리 위에는 빈 하늘만 펼쳐 있다고 상상해 봐요 Imagime all the people 모든 사람들이 living for today ahaa 오늘을 위해 살아간다고 상상해 보세요 아하, Imagine there´s no countries 국가가 없다고 상상해 봐요 it isn´t hard to do 그다지 어렵진 않을 거예요 Nothing to kill or die for 신념을 위해 죽이지도 않고 죽일 일도 없고, and no religion too 또 종교마저 없다고 상상해 봐요 Imagime all the people 모든 사람들이 living life in peace.. you 평화속에 숨쉰다고 상상해 봐요 그대 You may say I´m a dreamer 나를 몽상가라고 하겠지요 but I´m not the only one 하지만 나만 이런 꿈을 꾸는게 아니랍니다 I hope someday 그대 언젠가 you´ll join us and the world will be one 우리와 함께 하길 바랄께요 그러면 우리의 세상은 하나가 될 거예요 Imagine no possessions 그대, 할 수 있을지 모르겠지만 I wonder if you can 아무도 소유하지 않는다고 상상해 봐요 No need for greed nor hunger 탐할 필요나 배고픔도 없고 a brotherhood of man 오직 인간에 대한 사랑만 존재한다 Imagine all the people 상상해봐요 모든 사람들이 sharing all the world.. you 이 세상에 함께하는 모습을 상상해 봐요 그대 You may say I´m a dreamer 나를 몽상가라고 하겠지요 but I´m not the only one 하지만 나만 이런 꿈을 꾸는게 아니랍니다

2009-07-21

생각한 대로 살지 않으면 사는 대로 생각하게 된다

용기를 내어서 그대가 생각하는 대로 살지 않으면, 머지 않아 그대는 사는 대로 생각하게 된다. 나는 내가 생각하는 대로 살아야 한다. 그렇지 않으면 머지 않아 나는 내가 사는 대로 생각할 것이다. 기억하라, 생각한 대로 살지 않으면 사는 대로 생각하게 된다 - 폴 발레리 -

2009-07-20

Forum, Blog, Tag, RSS, Widget, Personal dashboard, Twitter, Wiki, Community, Facebook, Social Messaging ...

2009-07-17

이제 rss reader 읽기는 집어 치워라.

구글이 한국에서 성공할 수 없는 이유

오래전 기사인데 http://spot.mk.co.kr/CMS/spotstory/7143213_10891.php (2006.01.06)
구글에서 한글로 검색을 하면 검색 품질이 좀 떨어진다는 느낌을 받았는데, 이런 이유가 있었군.

2009-07-16

거제 팔경

거제 팔경이란다. 어릴 때에 "공고지"라고 불렀던 지명의 정확한 이름이 "공곶이"라는 것도 처음 알았다. ㅎ

Presentation Zen - 1

세련미의 극치는 단순함이다. - 레오나르도 다 빈치
참고 도서: 새로운 미래가 온다(다니엘핑크)
  • 디자인으로 승부하라 (기능만으로는 안된다)
  • 스토리를 겸비해야 한다 (단순한 주장은 부족하다)
  • 조화를 이루어야 한다 (집중만으로는 안된다)
  • 공감이 필요하다 (논리만으로는 안된다)
  • 놀이도 필요하다 (진지함만으로는 안된다)
  • 의미를 찾아야 한다 (물질의 축적만으로는 안된다)

세스 고딘
  • 강연을 보완하는 슬라이드를 만들어야지 내뱉은 말을 문자 그대로 반복하는 슬라이드는 필요 없다.
  • 수준 낮은 삽화는 집어치워라.
  • 조잡한 화면 전환 효과는 사용하지 말라. 단순함이 최고다.
  • 꼭 유인물을 만들어 놓자. 상세내용. 발표 후에 나눠 주겠노라고 하라.

명확한 생각과 스스로에 대한 절제는 대단한 힘이 있다. - 제임스 러셀 로웰/미국의 시인
참고 도서: 참을 수 없는 글쓰기의 유혹
엄격한 틀 안에서 작품을 쓸 때 상상력이 최고로 발휘되며 아이디어도 넘친다. 자유가 지나치면 작품은 응집력을 잃고 만다. - T.S. 엘리엇
참고 도서: 단순함의 법칙

페차쿠자: 20장의 슬라이드만을 사용할 수 있고 각 슬라이드는 20초씩만 화면에 비춰진다. 발표자는 화면에 맞춰 발표를 해야 하는데 통틀어 6분 40초가 걸린다. 슬라이드는 자동으로 넘어간다.
아날로그식 기획
  • 여러분의 컴퓨터는 지성을 위한 자전거입니까?
  • 종이, 칠판, 나무 막대기
  • 펜과 종이, 화이트보드, 포스트잇
  • 속도를 줄여라. 고독에 대한 갈망: 사람들을 통해 영감을 얻고, 정보를 통해 아이디어를 구하며, 연습을 통해 실력이 향상된다. 하지만 현상황을 파악하고 새로운 발견을 이끌어내며 자신만의 고유한 해답을 찾아내기 위해서는 혼자만의 고요한 시간이 필요하다. -에스터 부흐홀츠
창의력을 배가시키려면, 고독을 발전적으로 활용할 수 있어야 한다. 고독에 대한 두려움을 극복해야 한다. - 롤로 메이 / 미국의 실존분석학자

잘못된 질문: 슬라이드당 글머리 기호는 몇 개가 적당한가요?
꼭 해야 하는 질문
  • 이야기의 핵심이 무엇인가?
  • 그 핵심이 왜 중요한가?
  • "그 내용을 들어야 하는 이유가 뭔데?"라는 질문에 답하기 위해서는 논리적 논증 뿐만 아니라 설득, 감정, 공감을 모두 활용해야 한다. 공감이란 발표자 눈에 명백히 보여도 모든 청중이 깨닫지는 못하리라는 사실을 이해하는 능력이다.
  • 엘리베이터 테스트
  • 프리젠테이션의 세가지 요소
    • 슬라이드
    • 발표자를 위한 메모지
    • 청중에게 나눠줄 자료 (유인물)
    슬라이드보고서가 아닌 진짜 보고서를 만들어라.

    2009-07-10

    신현배 뜨다 ! ㅎ

    전자신문 카메라에 찍힌 현배~ ㅎ (맨 왼쪽). 얘는 이런건 잘 걸려... ㅋ. 어쨌든 이런데서 널 보니 반갑구나... http://www.etnews.co.kr/news/detail.html?id=200907090246

    언젠가는...

    청년에게는 무엇이든 해낼 열정이 있으나 넉넉함이 허락되지 않고, 그토록 바라마지 않던 여유를 얻게 되는 때가 오면 어느새 열정이 온데 간데 없다.
    언젠가는 (이상은)
    젊은 날엔 젊음을 모르고, 사랑할 땐 사랑이 보이지 않았네
    하지만, 이제 뒤돌아 보니 젊음도 사랑도 아주 소중했구나
    눈물 같은 시간의 강 위에 떠내려 가는 건 한 다발의 추억 ... 언젠가는 우리 다시 만나리, 헤어진 모습 이대로

    http://sunnykwak.egloos.com/tb/4431605

    2009-07-03

    할 것들 정리 좀 하자

    할 것들을 정리좀 해보자
  • CE
  • 개인용 프로젝트(cms ?, drupal 분석)
  • XMPP client 개발
  • 하나라도 제대로 해야 할텐데...

    iframe 높이를 내용 크기에 맞추기

    <iframe id="trac" width="100%" src="http://www.google.com" 
    style="border-width:0;" frameborder="0" scrolling="no"></iframe>
    <script>
    var trac = document.getElementById("trac");
    trac.onload = function() {
        trac.height = trac.contentWindow.document.body.scrollHeight;
    }
    </script>

    2009-07-02

    자바 글꼴 설정

    자바 폰트에 대해 헷갈려 하다가 다음 링크를 보니 조금은 알 것 같다. 이게 자바5부터 적용된다니, 1.4시절 고생한 생각으로만 어렵다고 느낀 것 같다. http://java.sun.com/j2se/1.5.0/docs/guide/intl/fontconfig.html 요는 jre/lib/fontconfig.properties.src 파일을 약간 고쳐서 fontconfig.properties 파일을 만들면 된다. 내가 원했던 것은 textarea에 Consolas와 굴림체가 같이 예쁘게 렌더링되는 것이다. 아래와 같이 monospace 글꼴들을 Courier New에서 Consolas로 바꾸어 주었다.
    # monospaced.plain.alphabetic=Courier New
    monospaced.plain.alphabetic=Consolas
    ...
    # monospaced.bold.alphabetic=Courier New Bold
    monospaced.bold.alphabetic=Consolas Bold
    ...
    
    
    예쁘다. Java6 이후 버전이라 그런지 이제 스윙도 예쁘다는 느낌이다. 실행속도도 제법 빠르고... 이제 스윙을 다시 해보는 것도 나쁘지 않은 느낌? ㅎ 굳이 swt나 jface를 같이 들고 갈 필요가 없으니 그것도 좋을 것이고... 문제는 jnlp나 애플릿으로 배포할 경우는 방법이 없다. 저 설정을 프로그래밍할 수 있으면 좋을텐데 말이지... RFE: Means to specify a Font with fallbacks for additional code point coverage 참고. 다음 링크도 참고하자
  • http://lastmind.net/blog/2008/11/font-linking-problem-in-putty-058.html
  • http://weblogs.java.net/blog/joconner/archive/2006/09/internationaliz_1.html