제일 처음 자바를 시작했을 때, 에러(Error와 Exception 나뉘지만 에러로 표기합니다)화면을 보고 깜짝 놀랬습니다.

2008-10-06 13:27:06 ApplicationDispatcher[/] Servlet.service() for servlet download threw exception
java.lang.IllegalStateException: getWriter() has already been called for this response
        at org.apache.coyote.tomcat5.CoyoteResponse.getOutputStream(CoyoteResponse.java:568)
        at org.apache.coyote.tomcat5.CoyoteResponseFacade.getOutputStream(CoyoteResponseFacade.java:148)
        at kr.pe.okjsp.DownloadServlet.doGet(Unknown Source)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
        at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:704)
        at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:474)
        at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:409)
        at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:312)
        at kr.pe.okjsp.ControllerServlet.doGet(Unknown Source)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
... 중략 ...
        at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
        at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
        at java.lang.Thread.run(Thread.java:619)

저런 식으로 우수수 떨어지는 에러메시지는 초보에게는 공포감을 일으키기 충분합니다. "내가 그 정도로 잘못했는지 정말 몰랐어요"라는 감정이 생기죠. 사실 에러메시지의 상단 2~3줄만 봐도 문제의 원인을 파악할 수 있는데, 스택트레이스(Stack Trace)라 불리는 사정없는 에러메시지는 정말 "안 좋아"였습니다.

try{...} catch(Exception e) { System.out.println(e.getMessage()); }

저런 메시지 폭탄을 피하기 위해서 위 코드를 통해 핵심 메시지만 봅니다. 이 포스팅의 핵심은 저기서 나온 메시지들과 친해지라는 것입니다. 아마 자주 보일 것입니다.

가까이 하기 어려운 사실 하나는 "영어"로 된 메시지라는 것이겠죠. 영어는 못해도 자바는 좀 하신다면 공개된 소스나 디컴파일을 통해서 저 메시지 생성부분을 찾아볼 수 있습니다. 더구나 자바의 기본 라이브러리는 공개되어 있습니다. src.zip 파일이 그것이죠.

이클립스 툴이나 텍스트 에디터 등을 통해서 에러 메시지를 검색해보면 해당 부분의 소스를 볼 수 있을 것입니다.

또 다른 방법은 구글링을 통해서 소스를 검색해 볼 수도 있습니다. 위 메시지의 경우 검색어를 다음과 같이 넣습니다.


따옴표("")로 감싼 이유는 단어 구분해서 찾지 말고 문구 그대로 검색하라는 의미이고 filetype:java 는 확장자가 java인 파일만 검색하라는 뜻입니다.

이런 식으로 소스를 찾아서 에러원인을 볼 수 있다면, 아마 문제해결(Troubleshooting) 능력이 많이 좋아질 것입니다.

버그와 에러는 다르죠. 에러 메시지! 사라지지 말고 함께 해요.

ps. 공통 프레임워크 만드시는 분들 에러 씹지 말고 보내주세요. ^^;
저작자 표시 비영리 변경 금지
이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License


ie7 의 우측상단에 보면 검색창이 있습니다. MS의 브라우저이기 때문에 Live Search가 기본검색으로 되어있습니다. 검색결과가 제 취향이 아니라서 구글로 바꾸려고 합니다. eclipse4j라는 동료의 도움으로 알게 된 팁입니다.

사용자 삽입 이미지


일단 등록할 검색주소가 필요하기 때문에 구글(http://www.google.co.kr)로 가서 대문자 TEST 키워드로 검색합니다.

사용자 삽입 이미지

결과 페이지의 주소를 복사합니다. 다음과 같을 것입니다.
http://www.google.co.kr/search?complete=1&hl=ko&q=TEST&btnG=Google+%EA%B2%80%EC%83%89&lr=&aq=f
사용자 삽입 이미지

ie7의 우측상단 돋보기 옆 작은 역삼각형을 클릭해서 "추가 검색 공급자 찾기..." 메뉴를 선택합니다.
사용자 삽입 이미지


다음이나 파란닷컴 또는 쇼핑을 애용하신다면 효리몰, 설탕몰, 공원몰 등을 추가할 수 있습니다. ㅡㅡ; 기름몰은 어디간 걸까요. 쩌비.
사용자 삽입 이미지


일단 우측에 보면 "직접 만들기" 섹션이 보입니다.
사용자 삽입 이미지


여기에 복사했던 주소를 적어넣습니다. 그리고 4번항목의 Name에 google이라고 넣습니다. 여기는 맘대로 적으셔도 됩니다. ^^; "검색 구걸" 같이 말이죠.
사용자 삽입 이미지

확인 창이 하나 뜹니다. 기본 검색 공급자로 지정을 체크하시고 공급자 추가(A) 버튼을 클릭하면 끝.
사용자 삽입 이미지


바뀐 것을 보실 수 있을 것입니다.
사용자 삽입 이미지


좋은 여름 되십시오.
이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License

google I/O 동영상

2008/07/01 22:55

사용자 삽입 이미지

지난 달 샌프란시스코에서 Google I/O라는 이름으로 개발자 컨퍼런스가 열렸습니다.
http://code.google.com/ google code에서 그때의 동영상과 자료들을 볼 수 있도록 되어있습니다.

일본과 중국에서도 개발자 컨퍼런스가 열렸는데, 한국이 빠져있네요. 개발자 사각지대라 생각이 드는 순간입니다. ^^;

아래는 오픈 소셜에 대한 한시간짜리 동영상 강의입니다.

이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License


아직 구글 덕을 보시는 듯 합니다. 제가 원하는 건 구글이 얘기해주고 있네요.

사용자 삽입 이미지

1. 시류가 거시기 해서 http://www.daum.net에서 ie7 download로 검색해도 신통치 않고 ie7 다운로드로 검색해보니
2. 원하는 답변이 나왔는데, 어허~ 스크롤바가 ㄷㄷㄷ일쎄
3. 본인이 원하는 게 무엇인고 허니, xp의 ie6가 쩔어서 hungapp(헝~)하면서 "응답없음"으로 죽길래 경험상 "아, ie7으로 갈아타면 덜 하더라 싶어서" ie7 다운로드로 검색혔겄다. 떡 하니 마이크로소프트 주소가 나오는디, 이거 다 싶지 아니한가~.
4. 근디... 우측 상단을 보니 아따, 이놈 내가 알지요. 구걸(google) 아닌가~ ^^; 제가 발음이 쪼까 거시기 허요.

아직까지 다음 구걸 좀 하는군요. 화이팅 하시지라~


덧. 썰렁하신 분들을 위하야 스타 판소리 링크 하나 올립니다요.
http://www.okjsp.pe.kr/upload/pansori_zerg.mp3

이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License


짧게 여행했습니다.
경로 잡는 데 구글맵 정말 잘 되어있습니다.
정부도 아닌 일개 기업이 이런 서비스를 만들었다는 것에 찬사를 보냅니다.

사용자 삽입 이미지

사용자 삽입 이미지
이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License


구글 해냈군요. 고맙습니다.
구글 캘린더에 아웃룩(Outlook)의 일정을 동기화시킬 수 있습니다. 양방향, 단방향 모두 가능합니다.

처음엔 아래와 같은 에러가 떠서 당황했는데, 옆자리의 동료는 잘 되고 있었습니다. 메시지(You seeam to have outdated time zone information. Please run Microsoft Windows™ Update) 시키는대로 윈도우와 오피스를 업데이트하니까 동작합니다. ^^;
사용자 삽입 이미지


Google Calendar Sync라고 설치되어 있습니다. 저는 Uninstall 메뉴가 같이 붙어있는 프로그램들은 매너가 좋다고 생각합니다.
사용자 삽입 이미지


트레이 아이콘 옆에 있는 아이콘의 컨텍스트 메뉴에서 Sync를 선택하면 동기화됩니다.
사용자 삽입 이미지

막 움직이죠. 화살표가.
사용자 삽입 이미지

마우스를 올려 놓으면 현재 진행상황도 보여 줍니다.
사용자 삽입 이미지


완료된 모습은 직접 확인하세요. ^^


구글 한국어 페이지에서는 관련 프로그램 링크가 아직 안보입니다. 구걸링해서 영문 페이지에서 구했습니다.
http://www.google.com/support/calendar/bin/answer.py?answer=89955
이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License

판 바꾸기

낙서장 2008/03/28 19:01

팔 씨름을 할 때 팔의 각도를 좁혀야 힘을 쓰기 편합니다. 그래서 잡은 손에 대해서 그리고 자세에 대해서 굉장히 많은 신경을 쓰게 되죠. 시작 전에 판가름이 난다고 할 수도 있습니다.
판 이란 말은 영어의 플랫폼(platform)과 같다고 생각합니다. 웹 2.0의 키워드 중에 플랫폼이 있었고, UCC가 그 플랫폼 위에서 각광을 받았습니다.

구글이라는 회사가 시작할 때는 이미 검색엔진 시장이 포화 상태라고 할 수 있었습니다. 야후, 알타비스타, 라이코스, 인포시크 등의 검색엔진들이 포진한 상태에서 황당한 진입구 하나만 가지고 출사표를 던졌습니다. 제 기억에는 검색 엔진이 빠르다는 표시로 검색 결과 페이지의 검색 완료 시간을 표시했던 것으로 기억합니다. 검색을 한다는 영어단어로 구글링한다는 표현이 나온 것은 오래 걸리지 않았습니다.

G마켓이라는 회사가 구스닥(Goodstock)일 때 관심을 가진 사람들은 많이 없었습니다. 지하철에 "G"라는 영문자 이니셜로 많은 사람들의 궁금증을 갖게 하는 마케팅을 했을 때 혹시 구글이 국내에서 정식 서비스를 시작하는 게 아닌가 생각하기도 했습니다. 쇼핑몰의 판을 벌여 놓고 파는 사람들과 사는 사람들을 연결해 주는 서비스를 키웠습니다. 이것을 오픈 마켓이라고 부르기 시작했습니다. 경매 사이트인 옥션 마저도 오픈 마켓으로 돌아섰습니다. 옥션에서 요즘 경매를 하는 사람은 아주 드물어졌다고 합니다.

네이버라는 회사가 있습니다. 인터넷, 아니 컴퓨터를 모르는 분들도 TV광고에서 반복적으로 연두색 네모 박스에 길들여졌습니다. 네이버에서 땡땡땡을 검색하세요 라고 말이죠. 스펀지라는 프로그램에서 똑똑한 사람들은 네이버에서 정보를 찾는 것으로 비쳐졌습니다.

판의 존재의미는 가치획득입니다. 그것이 용이한 곳이라면 사람들은 모여들게 되어있습니다. 현재 판을 분석하고, 새로운 판을 생각하고 시도하는 것, 그래서 새로운 시장을 만드는 것. 이것이 마케팅(marketing)입니다.

이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License


OPEN API : 지도, 검색 정보 등의 일부 데이터를 외부에 오픈해서 사용하도록 하는 프로그래밍 기술. 제3의 서비스 창출이 가능하게 된 Web2.0 프로그래밍 트렌드. 국내 Naver, 다음이 OpenAPI 주도.

Google File System : 전세계 웹검색 정보 등의 대용량 파일 처리를 위한 구글의 파일 분산 저장 시스템. 하루에 PC급 서버 10만대에서 20,000 테라바이트를 처리할 수 있는 병렬 컴퓨팅 설계 기법.

Google BigTable : 구글 파일 시스템을 응용한 대용량 분산 데이터베이스 시스템. 데이터베이스의 머신을 병렬화하여 확장성과 가용성 그리고 퍼포먼스를 무한히 늘려갈 수 있음.
이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License


음, 있군요. 불편을 감수하고 쓸만합니다.
pdf 저장은 되지만 PPT 파일 생성은 해주지 않습니다.
온라인 채팅지원되는 프리젠테이션이 가능하네요.




http://docs.google.com/Presentation?id=dhmgtw6h_143hbwftmc7

많이 미완성이지만 채우도록 하겠습니다.
이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License


웹에서 유니코드 문자열을 다루는 일은 제법 걸림이 됩니다. 어제도 웹서비스를 스트림으로 읽어서 처리하는 가운데 한글이 유니코드 문자열로 반환되는 바람에 애를 먹었었는데, 다행히 2004년에 비슷한 이유로 만든 코드를 이용해서 해결했습니다.

유니코드문자열을 캐릭터문자열로 바꾸는 클래스, 작은 것이지만 구글 코드를 통해서 공유합니다. http://code.google.com/p/unicodereader
사용자 삽입 이미지

테스트케이스도 같이 있기 때문에 쉽게 적용하실 수 있을 것입니다.
라이센스는 아파치 라이센스 2.0 입니다. 제가 이해하기로는 맘대로 쓰셔도 될 것입니다. 메소드 주석의 저작자 @author 만 남겨주세요. ^^


서브버전을 통해서 이클립스 프로젝트 형태로 등록도 해 놓았습니다. 모쪼록 개발에 도움이 되길 바랍니다. 행복하세요.
이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License