어려운 단어 등장했습니다. 직교성. Orthogonality. 공업수학시간에 잠깐 배운 기억이 스쳐지나갑니다. 갑자기 이 단어가 요즘 제 뇌를 후벼팝니다. Working Effectively With Legacy Code 책의 후반부에 나오는 단어인데, 코드 리팩토링의 결정판은 궁극의 직교성이라고 얘기합니다.

말을 좀 쉽게 풀죠.
3차원 그래프라고 생각하시면 됩니다. x축, y축, z축이 있습니다. 왼쪽 그래프에서 보면 성별, 생일, 출생지가 있습니다. 세 기준이 각자의 영역에서 사람의 특성을 설명해주고 있죠. 각 기준은 독립적입니다. 다른 기준에 종속적이지 않습니다.
사용자 삽입 이미지
image from: http://www.itcon.org/1997/2/paper.htm

이것을 소스코드에 빗대어 설명하면 이렇습니다.
웹 페이지에는 HTML, CSS, Javascript가 있습니다. 각기 역할이 있죠. HTML은 컨텐츠 데이터, CSS는 렌더링 스타일, Javascript는 Behavior 즉 동작입니다. 각기 독특한 영역이 있는데, 이 코드를 분리해서 관리하는 것이 직교성이 있다고 얘기할 수 있습니다. 세 가지가 만나는 접점은 id 입니다.

이해가 좀 가시나요?

이럴 필요가 있는 것은 직교성이 무너졌을 때, 세 가지 코드는 뒤죽박죽 됩니다. 스타일 고치는데 Javascript 고쳐야하고, 동작을 고치는데, HTML과 CSS코드가 헤집어진다면 코드가 뒤섞여 있다는 뜻입니다.

휴~

어렵죠.

프로그래밍 코드의 영역에서도 마찬가지입니다. 비단 세 가지 축(3차원)만 있는 것이 아니라 다차원(Multi-demension)의 코드를 짤 때도 이런 컨셉으로 분리해서 짠다면 코드의 관리포인트를 분리해서 생각할 수 있습니다. 리팩토링이 바라보는 관점과 일견 같다고 할 수 있습니다.

관련 : Open/Closed Principle

참고: Working Effectively With Legacy Code, 285~286p
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지


사용자 삽입 이미지

사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지


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) 버튼을 클릭하면 끝.
사용자 삽입 이미지


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


좋은 여름 되십시오.
이상민님의 멋진 강의 감사했습니다. 8시 메인 강의 이전에 TPTP로 간략하게 프로파일링하는 세션을 제가 진행했습니다. 그날 빌린 장소의 전기가 안 도와주는 바람에 15분 늦게 시작했지요. 죄송하게 생각합니다.

이상민 님의 강의는 아주 재밌었습니다. 실무에서의 경험담이 재밌었고, 특히나 뚱뚱한 PM과 날씬한 PM 앞에서 대화법은 아주 촌철살인이었습니다. 체격이 마른 PM 앞에서는 특히 말 조심해야한다는 지혜의 말씀이었죠.

사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지

뒷풀이에는 15분 정도가 참가했습니다. 때문에 금요일 오후 강남역 부근에 일찍 자리를 잡아놓지 않아서 또 많이 헤맸습니다. ^^; 그래서 들어간 곳이 조개구이집. 그 더운 날에 남아서 얘기 나누신 분들께 또 한 번 죄송했습니다. ㅡㅡ;
사용자 삽입 이미지
사용자 삽입 이미지


혼자서 30명이 넘는 세미나를 주최하는 무리수는 두지 말아야 할 것 같습니다.
사용자 삽입 이미지


사용자 삽입 이미지


윤발이 횽아가 피부가 고와서 승!
TPTP
Test and Performance Tools Platform
TPTP는 테스트 툴과 퍼포먼스 툴의 플랫폼 프로젝트입니다. 자바 프로그램 실행시 CPU, 메모리 등과 객체 호출 및 인스턴스의 갯수 상태를 확인하기 위해 만들어진 것입니다.
자바 VM 뿐만 아니라 OS 등과 맞물려 각종 정보를 수집합니다.

http://www.eclipse.org/tptp
Windows와 Linux 용 all-in-one 버전을 받아서 설치하면 간편하게 설치됩니다. Active Control Server의 설치가 자동으로 되기 때문이죠. 맥용은 없습니다. ㅡㅡ;

Run, Debug 에 이은 Profile 기능을 이용하면 다음과 같이 Monitor 탭이 생깁니다. Execution Time analysis 는 클래스, 메소드 간의 실행시간 등을 기초로 하여 실행과정을 보여줍니다.
사용자 삽입 이미지

실행을 하면 Profiling Manager View가 열립니다.
사용자 삽입 이미지

Execution Time Analysis를 클릭해서 열린 보다 구체적인 내용입니다.
사용자 삽입 이미지

아래 탭을 클릭하면 다른 내용들을 볼 수 있습니다. Call Tree 탭을 클릭한 경우 다음과 같이 CPU 소모비율도 확인 가능합니다.
사용자 삽입 이미지

Profiling Manager 에서 오른클릭메뉴로 UML2 Class Trace를 선택하면 시퀀스다이어그램을 볼 수 있습니다. 이거 대박이죠. ^^
사용자 삽입 이미지
이틀 전 저녁에 내일 강의하실 이상민님을 만났습니다. 저녁 8시부터 10시까지 강의 컨셉에 대해서 얘기를 나눴죠. 그리고 성능에 관한 여러 에피소드들과 여러 잡담들로 안주를 풍성하게 했습니다. ^^
사용자 삽입 이미지

직접 집필하신 자바 성능을 결정짓는 코딩 습관과 튜닝 이야기 2권, 구글에 입사하려는 사람들이 보면 좋을 간단 명료한 알고리듬 중심의 short coding, 그리고 21세기 해커들이 가장 많이 사용한다는 언어인 python으로 설명된 집단 지성 프로그래밍을 전달 받았습니다. 모두 한빛미디어 책이고, 내일 강의 때 경품으로 사용하도록 출판사에서 후원을 받았습니다.

내일 강남 토즈에서 열리는 세미나 열기가 어느 때보다 뜨거울 것 같습니다.

곱창 잘 먹었어요. ^^
The Bard's Tale Tail 방랑시인의 이야기

제가 어릴 적, 그러니까 중학교 때 좋아했던 하지만 클리어 하지 못했던 게임입니다. 물론 정품 샀죠. 삼만 오천원으로 기억이 나네요.
사용자 삽입 이미지
image from:
http://images.google.co.kr/images?um=1&hl=ko&newwindow=1&client=firefox-a&rls=org.mozilla%3Ako%3Aofficial&q=the+bard's+tale+apple

사실 모험을 떠난다는 것은 쉽지않은 일입니다.
목숨을 거는 일이니까요. ^^; '까짓거'라고 얘기하면 마지막장 같지만 사실 그렇지는 않죠. 새로운 장을 여는 드래머틱 반전을 ... 쩌비.

사실 바즈(bard's)는 방랑시인의 이야기라는 뜻입니다.

사람들을 사로잡는 기술. 뭐 다양합니다. 현업, 갑 꼼짝 못하게 만들기. 뭐 이런.거죠. 이렇게 꺼뻑가게 만드는 기술은 정신차리고 이야기를 하는 겁니다. 다른 말로 하면 사연, 풀어쓰면 스토리.

이노 디자인의 이명세 감독님이 잘 하시는 겁니다.
팔 물건은 들이 댄다고 팔리면 우울한 겁니다.
물건을 파는 것은 돈을 벌기 위함이 아니라 사람의 마음을 사는 것이기 때문이죠. - 상도

그냥 그런 때가 있습니다. 하프 퉁기면서 스토리 텔러가 되는 것있죠.

"근데 말이지, 오 년 전 얘긴데..."

Controller 와 Service의 차이점
레이어를 나누는 것은, 아, 티어(tier)라고도 합니다. ^^; 나누는 기준은 뭘까요. 그냥 나누는 사람도 많습니다. 레거시 코드들이 증인석에 출두할 수도 있으니까요.

2006년 스프링으로 프로젝트를 하면서 그 때는 이 고민을 하지 못했습니다. 납기일 내에 동작하는 프로그램을 만들어 내야 하니까요. 플젝이 끝나고 그것을 기반으로 확장하는 프로젝트가 많이 열렸습니다.
^^; 슬프게도 사람이 많이 바뀌었습니다. 히스토리를 알고 얘기해 줄 사람도 n모사 s모사로 가버린 다음이죠.

다행히 코드 리뷰라는 것을 새로운 플젝의 외주 사람들과 매일 규칙적으로 한시간 정도 안되게 하는데, 나온 질문입니다.

얘기가 긴 데요. It's a long story.

핵심은 request, response 같은 WAS 디펜던트 한 것을 서비스에서 처리하게 하면 안됩니다. 서비스는 WAS없이도 돌아간다라고 생각하고 짜야된다가 현재의 결론입니다.
^^;

커맨드+shift+4 : 영역캡처 입니다. 자동으로 바탕화면에 png 파일이 저장됩니다.
커맨드+shift+3 : 전체캡처 입니다. 역시 자동으로 바탕화면에 png 파일이 저장됩니다.

미리보기(Preview)에서도 화면을 캡처할 수 있습니다.
파일 > 화면 캡처... > 다음에 세 가지 옵션이 있습니다. 선택, 윈도우, 지연 캡처

마지막 방법은 화면 캡처(Grab) 프로그램을 이용하는 방법입니다.
tiff 방식으로 저장되는 단점은 좀 치명적입니다. 웹에서 바로 사용할 수 없기 때문이죠. 그 동안은 이 tiff를 미리보기로 열어서 다른 이름으로 저장을 했지 뭡니까. 2년 넘게 말이죠. ^^;

맥으로 막 바꾼 이상민님의 블로그에서 제일 좋은 팁을 얻었습니다. ^^
사용자 삽입 이미지

+ Recent posts