[SpringOne 2011] 첫날 후기

출발, 도착, 이동, 시차적응

나는 한국 시간 25일 오전 11시에 인천에서 비행기를 탔다. 그런데 시카고에 25일 오전 9시 40분에 도착했다. 그러니까… 시간을 거슬러 온거다. 계속해서 이 방향으로 비행기만 타고가면 나는 나이를 먹지 않는건가.. 하는 생각이 들었다.

공항에서 전철타고 호텔까지 이동하는건 그리 어렵지 않았다. 제일 어려웠던건… 전철표를 넣는방법? 아직도 잘 기억나진 않는데.. 그림에 화살표 그려져있는 방향이 아니라 그걸 뒤집어서 넣어야 했었다. 그 그림은 남은 잔액을 확인하는 방향이었나보다.

문제는 그게 아니라;;

이미 한국 시간 기준으로는 자정을 넘은 시각에 새로운 아침을 맞이하느라 정신이 없었다. 결국 시카고 시간으로 3시에 뻗었고, 4시 반에 일어나서 접수하고 맥주와 먹거리를 조금 먹었더니;; 살아나기 시작했다.

맥주가 시차적응에 약이라니;;;

스폰서

맥주를 마시면서 몽롱해진 정신을 가다듬으며.. 누구에게 말을 붙혀볼까.. 어슬렁 어슬렁 돌아다니기 시작했는데, 마땅치 않았다. 다들 옹기종기 모여서 신나게 이야기하고 있는데, 불쑥 끼어들어서 어버버버거리는게 좀 실례같아서… 차라리 스폰서 부쓰에 가서 잠을 깨기로 맘먹고, 모든 부쓰를 돌면서 이것저것 질문하고 들으면서 잠을깼다.

CloudFoundry와 Heroku 부스에가서 “Socket.io 지원하느냐?”, “앞으론 할 계획인지?” 등등을 물어봤고, Neo4j 부스에서는 “이건 무슨 종류의 NoSQL이에요?” 라고 물어보고, Zing JVM만든 부스에서는 GC 알고리즘 관련 질문을 했다.

한국인

오예.. 그렇게 계속 돌아다니다가 드디어 한국인을 만났다. L사에서 오신 세분을 만났고, 표준프레임워크에서 오신 분을 만났다. 그리고 S사에서도 두분이 오셨다. 와오.. 나까지 포함해서 7명이다. 적진 않다.

키노트

그리고 오늘 가장 중요했던 키노트… 한마디로 이야기하자면 분위기가 좋치 않았다. 이전까지의 키노트라면 아드리안과 롭이 항상 웃음바다를 만들어줬겠지만… 오늘은 로드존슨이 다쳐서 그런지 약간 엄한 분위기에서 진행됐지만, 역시나.. “알찬 내용 + 신선한 데모”는 키노트에서 기대했던 내용 이상이었다.

오늘의 자랑거리

아드리안 콜리어와 살짝 대화(오늘은 왜 롭 해럽이랑 안했는지..)를 하고 사진을 찍었다.


하지만, 플래시를 꺼둬서, 선명하지 않다는건 안자랑거리…

키노트에 대해서는 다시 블로깅하겠다.

 

나는 이미 책을 쓰고 있었다.


old-book 폴더에 들어있는 폴더는 2010년 11월에 쓰다만 책이고, myBook 폴더 바로 밑에 들어있는 책이 요즘 다시 쓰고 있는 책이다. 책은 예전에 박재성님이 쓰신 스프링 책과 비슷한 컨셉이다.

초보자를 위한 스프링 기반의 자바 웹 개발

이게 핵심이다. 어떤 한 주제를 깊게 파는 책이 아니라, 이클립스, 메이븐, 스프링, iBatis, Hibernate, JSP, HTML, CSS, JavaScript를 활용해서 웹 애플리케이션을 구현하는 전체적인 흐름과 구조를 보여주기 위한 책이다. 따라서 초보자도 누구나 따라서 자바로 웹 개발을 해볼 수 있는 책을 써볼 계획이다.

혹시라도 내가 파일만 만들고 뻥을 치고 있다고 생각할까봐. 1장 파일을 찍어봤다. 6월 27일로 나온다. 이미 저 날짜보다 하루, 이틀 전에 쓰고 몇번 더 수정한 파일이지만 드랍박스라서 최종 일자만 나온다. 그 쯔음에 어떤 출판사에게서 내게 책을 쓰자고, 계약을 하자는 제안을 받았지만, 나는 적어도 초벌은 쓰고나서 계약할 심산이었기 때문에, 안쓰고 있다고 거짓말을 했다.

쓰고 있다고 말하면 어떻게해서든 계약을 해버릴 것 같았기 때문에 두려웠다. 거짓말을 한 것은 죄송하지만, 내가 잘못했다는 생각이 들진 않는다.(거짓말이 다 나쁜건 아니니까.) 내가 준비가 됐을때 계약을 해야지 출판사의 압박을 받아가면서 책을 쓰고 싶지도 않았고, 출판사의 기획의도에 나의 책을 끼워맞출수 있는 능력은 내게 없기 때문에, 계약이 무의미 하다고 생각했다.

그런데, 오늘 그 출판사에서 내가 잘 아는 어떤 분과 비슷한 컨셉의 책을 계약했다는 이야기를 들었다. 그 분이 내가 저 책을 쓰고 있는지 알고 있는지 어떤지는 말하지 않겠지만…

그게 중요한게 아니라.

나중에, 내 책이 비겁한 책으로 비춰질까봐 걱정됐다. 열심히 쓴 책인데, 마치 내가 저술 계획을 가로챈 모양이 될까봐 어떻게 해야되나..참 고민이 많았다. 오늘 계약 소식을 듣기 전부터 이미 그런 조짐을 알고 있었는데, 오늘에서야 그게 확정이 된 것이다.

이럴 때 가장 쉬운건, 때려치는 거다. 지금 쓰고 있던걸 버리는거다.

그럼 그 분은 열심히 자기 책 써서 또 대박이 나실테고, 나는 내가 쓰던거 그냥 버리고 영어 공부나 열심히 하면 된다. 그런데, 남자가 칼을 뽑았으면 무라도 썰라고 했는데, 중간에 포기한건 이미 한번으로 족하지 않을까 싶어서, 자존심이 좀 상했다.

요즘 이런 고민을 하느라, “무소의 뿔처럼 혼자서 가라.”라는 글을 외우고 또 외우고 있다

결론은, 그 분이 어떤 책을 쓰시던 나는 내가 가던대로 내 방식대로 계속해서 쓰고 원래 계획대로 초벌이 끝나면 출판사를 알아볼 생각이다.

쓰고 있다는 증거로, 1장 버전 0.1을 공개해 두겠다.
나는 비겁하지 않다.
그리고 난 내 책을 계속해서 쓰겠다.
올해 안에 내는 걸 목표로!

[자바 7] Fork/Join 프로그래밍

http://www.javacodegeeks.com/2011/02/java-forkjoin-parallel-programming.html

http://www.ibm.com/developerworks/java/library/j-jtp11137/index.html

http://www.ibm.com/developerworks/java/library/j-jtp03048/index.html

http://www.coopsoft.com/ar/ForkJoinArticle.html

자바의 Thread 프로그래밍을 조금 더 간편하게 도와줄 API가 추가된다. 조금 일정 영역에 특화된 API로 보인다. request-response 형태의 웹 요청 처리용으로는 어떨지 모르겠지만… 어떤 작업이 여러 독립적인 하위 작업으로 나뉘어 처리가 가능한 작업일때 Fork/Join을 적용할 수 있겠다. 가장 흔히 등장하는 예로, merge sorting과 배열에서 가장 큰 값을 찾아내는 작업이 있는데, 조금 더 실무에 가까운 예제가 언뜻 머리에 떠오르지 않는다. 이런건 어떨까… 1년간 거래된 상품 중에서 가장 많이 팔린 상품을 찾는 작업이라던지.. 가장 많은 댓글이 달린 볼르그 글을 찾는 작업은 어떨까..

거래 내역이 엄청나게 많을 테니까 월별로 쪼개서 가장 많이 팔린 상품 데이터를 찾아내고 각 월별로 찾아낸 상품 정보를 다시 합쳐서 그 안에서 다시 또 가장 많이 팔린 상품을 찾아내면 되겠다. 댓글 많이 달린 글 찾기도 마찬가지다.

갑자기 Map/Reduce가 떠오른다. Fork/Join 이라는 단어를 봤을 때 부터 떠올랐던 단어들이다. 하둡 책 1장에 Map/Reduce 설명이 잘 나와있는데, Fork/Join은 Map/Reduce와 거의 같아 보이지만, 그것 보다 더 많은 제어권을 개발자에게 주는 것처럼 보인다. 그렇게 차이를 보이는 핵심 개념이 Fork/Join에 예제에 자주 등장하는 Threshold라는 것인데, 이것을 기준으로 Fork 할지 말지를 결정하게 된다. Threshold 값 이하의 리소스는 단순 처리하며, 그 이상의 경우에만 병렬 처리를 하도록 설정한다. 물론 뭐 이것도 코딩하기 나름이겠지만 보통 저런식으로 하게 마련일텐데, 저 형태 자체를 템플릿-콜백 스타일로 만들어 볼 수 있지 않을까 싶다.

코딩하는 방법은 제일 위에 있는 링크에 잘 나와있어서 굳이 내가 다시 정리해야 할 필요는 못 느끼겠다. 그냥 한번 돌려본 스크린 캡춰로 대신한다.

맨 위에 있는 글이 가장 정리가 잘 되어 있고, 주요한 링크들이 많다. 그 아래 두개의 링크는 너무 오래된 글들이라서 API가 지금과는 다르지만, 주요 개념 파악하기는 좋다. 그보다 조금 더 근본적인 개념이 알고 싶다면 맨 마지막 링크를 보는게 좋다.


봄싹 스웨거 4월 모임 메모

중구난방으로 정리한 지난 스터디 메모장..

——————

jps

jstats

자바옵션으로 줄 수 있는 verbosegc

http://www.javaspecialists.eu/archive/Issue191.html

verbosegc로 찍은 로그 분석기, hp jmeter

jProfiler 추천함

String 처리가 성능에 미치는 영향 -> StringBuffer, StringBuilder

로깅이 성능에 미치는 영향 -> SLF4J

워크로그는 응답 처리 다 끝난 다음에 찍힌다.

웹 로그 분석 툴

Serial Collector는 주로 클라이언트 애플리케이션에서 사용.

G1은 JDK7에서 지원. JDK6에서도 early access로 사용 가능.

Serial Collector: mark-sweep-compact

Parallel Collector: young 영역을 paraller하게, old 영역은 mark-sweep-compact

Parallel Compacting: old 영역을 mark-summary-compaction

Concurrent Mark Sweep: old 영역을 CMS 사용. CPU 많이 먹음. 그리고 특정 조건에서 컴팩션이 발생하는데… 그게 m-s-c보다 더 오래 걸린다.

G1은 copy 방식이 아니라 move 방식이라 훨씬 빠르다.

GC 튜닝 방법

– 메모리 크기 선택

어떻게? 여러 서버에 각기 다른 메모리 크기 할당한 뒤, full GC 수행 시간과 빈도 측정.

– GC 방식 선택

– GC 옵션 선택

– VM 타입, Heap 크기, Young 크기와 비율(-XX:NewRatio 2나 3 해보자), Perm 크기, 쓰레드 크기(-Xss)

부하 생성: Grinder, JMeter

BTrace: 동적 모니터링 툴

http://kenai.com/projects/btrace/downloads/directory/releases/release-1.2

btrace pid 스크립트_이름

com.sun.tools.attach.VirtualMachine

http://www.j6a.ru/classcom_1_1sun_1_1tools_1_1attach_1_1_virtual_machine.html

Instrument

ASM

http://toby.epril.com/?p=828

프로파일링 툴은 운영서버에서만 사용해야 한다. 그런데 BTrace는 특정 몇몇 클래스에만 적용해 볼 수 있다.

kill -3 스레드덤프

[봄싹 스웨거] 3월 모임 안내

봄싹 스웨거 스터디가 벌써 3회까지 왔습니다. 앞으로 9회가 남았군요. 든든한 스폰서 덕분에 장소 걱정은 덜었지만, 원래 모임 취지와는 달리 발표 지원이 잘 안되고 있으며, 홍보가 잘 안되서 인지 참석자가 늘고 있지 않으며, 여전히 운영 부담이 저에게 집중되고 있습니다. 좀 나누고 싶진 한데 이제 부회장님도 생겼으니 차차 나아질 것으로 기대합니다.

애니웨이.. 이번 주 토요일 오전 10시 토즈 강남 2호점입니다.

3월 스웨거에 준비된 주제는 다음과 같습니다.

  • 인문학
  • 정규식
  • 스프링 3.1 빈 프로파일

발표가 끝나면 자유롭게 질문/답변을 하거나 토론을 즐길 수 있습니다.

http://www.springsprout.org/study/4494/meeting/4927

모임에 참석하는 방법이나 스터디 참여 방법은 봄싹 홈페이지 첫 화면의 봄싹 이용 가이드를 참고하시기 바랍니다.

참가 신청이 잘 되지 않으면 그냥 오셔도 무관합니다. 아직 자리는 많습니다.