본문 바로가기

기타

멕시코 칸쿤 여행 후기 (풍요로웠던 그곳~, 개요) 안녕하세요, 제가 1주 넘게 우리나라를 비웠습니다. 제가 결혼을 했습니다. 나이 40전에 다행히? 결혼할 수 있었습니다. 제가 결혼에 이르기까지 노력한 과정도 이곳에 풀면 많은 컨텐츠가 나올것 같습니다. ㅎㅎ 제가 올해 결혼준비를 해보니, 결혼 이후에 가장 또는 엄마같은 책임감이 막중한 사람이 되기 때문에, 무슨 일이든 잘 해쳐나갈 능력을 결혼준비 과정을 통해 미리 단련 한다는 생각이 들었습니다. 왜냐면 결혼준비가 의외로 복잡다단해서 꼼꼼하게 일처리를 해야 했습니다. 생각외로 결혼준비가 어렵고 스트레스 받는 일이었습니다. 그리고 신혼여행은 그 힘든 결혼준비와 결혼식을 마친 당사자 커플에게 선물을 주는 것이라는 생각이 들었습니다. 그만큼 신혼여행은 우리에게 충분한 보상을 주었습니다. 우리는 칸쿤에서 그동안.. 더보기
중국 무당산 태극권 수련 여행기-무당산 관광 2015년 8월초에 있었던 진식 혼원 계열 태극권 세미나는 월화수목으로 마무리 되었습니다. 금요일은 ‘무당산’ 관광이 예정되어 있었어요. 무당산은 유네스코 세계 유산으로 지정된 곳이라고 합니다. 옛날에 김용 작가의 영웅문이라는 유명한 무협소설을 읽은적이 있습니다. 이런 무협소설에는 무당산이라는 지명이 등장합니다. 무당파라는 주요 문파도 있습니다. 무협소설에 등장하는 무당산을 오니 중고등학교 시절 동심?으로 돌아간 느낌을 받았어요. 우리가 갔던 무당산은 한국의 산과는 다른 느낌이었습니다. 거대한 대륙 중국의 웅장한 기운을 담은 높게 솟은 멋진 산이었습니다. 그러나 한편으로는 무당산을 중심으로 돌아가는 거대한 관광 산업 단지라는 느낌도 받았습니다. 관광온 중국인들이 엄청나게 많았고, 잘 닦아놓은 케이블카가 .. 더보기
중국 무당산 태극권 수련 여행기-사람들 2015년 중국 무당산에서 태극권을 배운 과정에 대한 이전 스토리는 여기서 확인하시면 됩니다. 저는 중국은 생전 처음 갔습니다. 그래서 중국의 문물이나 사람들에 대한 궁금증이 컸죠. 오늘은 중국에서 만났던 사람들에 대해 얘기하려고 합니다. - 왕봉명 사부님전에도 얘기했지만 왕봉명 사부님은 제가 배우는 태극권 류의 가장 높은 마스터, 사부님 이라고 할수 있습니다. 저는 이분이 중국에서 공식 인정한 태극권 무형 문화재라는 사실에 놀랍고 자랑스러웠습니다. 실제로 뵈었던 왕사부님은 시크~ 하다는 인상을 받았습니다. 우리회사에도 무뚝뚝하게 필요한 말만 던지는데 그 모습이 위엄있고 멋있다라는 느낌을 받는 직장상사가 있는데요. 왕사부님한테 이런 인상을 받았습니다. 왕사부님은 무심한듯 시크하게 저희를 잘 챙겨주셨습니다.. 더보기
중국 무당산 태극권 수련 여행기-무당산 거리 풍경 화수목 9시부터 오후 5시까지는 호텔 강당에서 태극권 세미나를 진행했다. 오후 5시 이후에는 자유 시간이었다. 태극권 세미나가 진행된 무당산은 ‘산’만을 뜻하는게 아니라 그 주변의 지역을 아우르는 지역 명칭이었다. 무당산이 ‘시’인지 ‘읍, 현’인지는 모르겠다. 여기서 말하는 무당산 거리는 무당산 주변 시내의 거리를 뜻한다. 해가 질듯 말듯 하는 저녁시간에 우리는 무당산 거리를 산책했다. 산책하는 중간에 시장이 보이면 사람들과 물건들을 구경했다. 왕봉명 사부님 아는분의 초청을 받아서 중국 정통 음식점에서 저녁을 먹기도 했다. 또래 형님들과 같이 야외 테이블에 앉아 중국 맥주와 양꼬치를 먹기도 했다. 베이징, 상해등의 대도시와는 다르게 무당산시는 중국의 가장 깊숙한 내륙지방의 소도시에서 느껴지는 독특한 시.. 더보기
객체지향의 탄생, 마무리 객체지향의 탄생, 마무리 내가 이 글들을 쓰게 된 계기는 소프트웨어 개발자가 나에게 천직이고 괜찮은 직업 같은데 우리나라에서는 워낙 고생하게 되니, 대안이 없을까 라고 생각하다가 쓰게 되었다. 어떠한 환경이라도 개발자 스스로 개발 환경 개선에 노력해야 하고 그 중심은 좋은 코드를 만들어 개발한 본인이나 다른 개발자가 유지보수하기 쉽도록 하는것이 쾌적하고 즐거운 개발의 출발이라고 생각했다. 객체지향은 코드를 유연하고 확장하기 쉽게 잘 만들 수 있는 모든 방법의 모음이라고 말해도 과언이 아니다. 그래서 나는 객체지향 개발에 파고들기로 했다. 1. 기본편은 객체지향이 무엇이고, 객체지향의 요소는 무엇이 있는지, 객체지향적으로 잘 개발하기 위해서는 어떻게 해야 하는지, 객체지향적으로 잘 개발하면 어떤 효과가 있.. 더보기
객체지향의 탄생-우리나라 현실에 맞는 코드 품질 향상 대안 우리나라 현실에 맞는 코드 품질 향상 대안 최근 4개의 글에서 나는 눈에 보이는 기능에만 신경쓰고 눈에 보이지 않는 코드 품질은 무시하는 우리나라 IT 현장을 얘기했다. 이런 모습이 과거 일본이 미국과 맞짱 뜰수 있었던 막강 함대항공력의 괴멸과 다르지 않다고 얘기했다. 그렇다고 나는 어쩔수 없이 비용을 적게 들이는 등의 우리나라 IT 현실을 무시하고 무조건 원칙적으로 돈많은 미국 선진국처럼 프로젝트를 수행해야 한다는 것은 아니다. 나도 막상 과장급의 중간 관리자가 되다 보니 이런 글을 쓴적도 있다. "윗 사람의 입장 일을 하면 일정은 정해져 있다. 일이 너무 많아 원하는 날까지 맞추기가 힘든때가 가끔 있다. 사실 가끔이 아니라 자주 있다. 대부분 주어진 일정대비 해야할 일이 많은 경우가 대부분이다. 나는.. 더보기
객체지향의 탄생-필리핀해 해전에서 배우는 연구 개발의 중요성 필리핀 해 해전에서 배우는 연구 개발의 중요성 1942년 6월의 미드웨이 해전은 전쟁의 균형추를 미국에 기울이게 한 의미있는 사건이었다. 마치 눈에 보이는 기능에만 신경쓰고 눈에 보이지 않는 품질은 신경쓰지 않는 우리나라 IT 환경처럼, 과거 미일간 벌어진 미드웨이 해전에서 일본의 공격일변도 기능 중시 사상 때문에 항모의 안전을 무시, 일본 항모 4척이 쉽게 침몰당하는 대패를 일본이 겪은 이후 전쟁의 방향은 미국쪽으로 흐르기 시작했다. 2년 후 1944년 6월에 벌어진 필리핀 해 해전은 일본의 항공력과 해군력이 회복 불능으로 피해를 입어 일본해군의 등뼈(back bone)를 부러트린 전투로 불린다. 일본은 미드웨이 해전 이후 지속적인 항공력 해군력이 소모되는 가운데서도 미국과 한판 결전을 벌이기 위해 항.. 더보기
객체지향의 탄생-미드웨이 해전에서 배우는 코드 품질의 중요성 미드웨이 해전에서 배우는 코드 품질의 중요성 원고중에 이 내용을 예전에 블로그에 먼저 올려서 좋은 반응을 얻은 적 있습니다.원고 순서가 이 즈음 배치가 되어 있어 링크 거는 것으로 대신 올립니다. 더보기
객체지향의 탄생-프로젝트의 우선 순위에서 코드 품질이 최하위인 이유 4,5년차 자바 개발자였을때 나는 어떤 수수께끼를 궁금해했다. SI 할때는 왜 객체지향적으로 유연하고 확장성 높고 재사용이 가능한 개발이 안될까. 밤늦게 야근 하고 집에가는 어느날, 그때 어느 그림이 그려졌다. [고민을 해결해 주는 컴포넌트 그림] 이 그림으로 모든 수수께끼가 해결했다. 왼쪽과 오른쪽의 컴포넌트는 같은 기능을 수행하는 컴포넌트이다. 예를 들어 우리가 자주쓰는 컴포넌트에는 네트워크 모듈이 있다. 저 컴포넌트 둘이 네트워크 모듈이라고 한다면 저 왼쪽과 오른쪽의 컴포넌트는 인풋과 아웃풋이 똑같은, 인터페이스가 똑같은 컴포넌트이다. 상단의 동그란 작은 원이 다른 코드에서 접속하는 인터페이스가 된다. 둘 컴포넌트의 차이는 왼쪽의 컴포넌트 안은 스파게티 면처럼 내부가 얽히고 섥혔고, 오른쪽의 컴포넌.. 더보기
객체지향의 탄생-프로젝트의 풍선효과 프로젝트의 풍선효과, 개발자가 고생하는 3가지 이유 공장의 작업장은 아이들이 수족관에서 고기들을 보는것처럼 보이는 그대로 수족관의 상황을 알 수 있는것과 같다. 작업장의 관리자가 윗층 자신의 사무실에서 작업장을 내려다보면 공장이 제대로 돌아가는 지 알 수 있다. 공장의 작업장은 관리자가 작업장이 돌아가는 내부 정보를 비교적 정확하게 파악한다. 노동자들도 자신들의 작업장 상태를 잘 알것이다. 관리자가 비용을 아끼며 강하게(빡씨게) 굴리기에는 공장의 상태가 오픈되어 있고 압박을 했을때 오히려 성과가 떨어지는 것을 고스란히 알것이다. 그래서 공장의 작업장은 투자 비용과 성과가 공평하게 계산되고 쓰인다. 우리의 프로젝트 룸은 식당의 주방과 같다. 관리자는 식당의 손님과 같다. 손님은 식당안이 어떻게 움직이는지 .. 더보기
객체지향의 탄생-장인 정신이 깃든 프로그램 현장의 고민거리 장인 정신이 깃든 프로그램 지구는 넓고 사람은 목적지를 향해 이동한다. 사람은 넓은 지구를 빠르고 편하게 이동하기 위해 도구를 만들었다. 현대의 이동 도구는 자전거, 자동차, 비행기등이 있다. 자전거 보다는 자동차가 편하고 빠르다. 자동차 보다는 비행기가 편하고 빠르다. 현대의 이동 도구, 교통 수단인 자전거, 자동차, 비행기중에 자동차가 자전거보다 빠른 이유는 좀더 높은 수준의 기술을 사용했기 때문이고, 자동차가 비행기보다 느린 이유는 좀더 낮은 수준의 기술을 사용했기 때문이다. 높은 수준의 기술을 사용했기 때문에 자전거보다 자동차가 배우기 어렵고, 자동차보다 비행기가 배우기 어렵다. 교통수단의 예를 통해, 높은 수준의 기술일수록 배우기는 어렵지만 잘 배우면 기술의 혜택을 마음껏 누린다.. 더보기
객체지향의 탄생-올드스쿨/뉴 스쿨 프로그래밍 나는 20대 후반 어느날 비보이 배틀 영상을 TV로 본적이 있다. 하늘을 날라다니는 비보이들의 몸짓에서, 나는 인간이 신체의 자유를 얻고 날라다니는 모습이 바로 저런 모습이구나 하며 팬이 된적이 있다. 비보이 세계도 무술 처럼 여러 분파가 존재하는데, 나누는 분야중에 크게 올드스쿨과 뉴스쿨이라는 두가지 구분으로 분류한다. 올드스쿨은 정확한 설명은 아니지만, 최초에 비보이들의 무브가 탄생할때의 그 모습과 정신을 간직하며 그때의 무브와 기본에 충실한다는 의미와 비슷하다. 한마디로 옛것의 모습과 정신을 지키며 기본에 충실한다는 것이다. 반면에 뉴스쿨은 비보이들이 새롭게 창의적으로 개발한 새롭고 발전된 무브를 개발하고 닦는다고 말하는것과 비슷하다. 올드스쿨 뉴스쿨 하며 생각하다보니 문득 프로그래밍도 올드스쿨과 .. 더보기
객체지향의 탄생-디자인패턴과 리팩토링 블로그처럼 네티즌을 위한 훌륭한 도구가 또 하나 있다. 트위터라는 도구이다. 블로그는 '자기 생각과 주장을, 자유롭게 글이나 사진으로 편집해서 올리고, 댓글, 트랙백, RSS, 태그등의 기법으로 쉽게 전파하는 도구' 이다. 트위터는 '블로그 처럼 자기 생각과 주장을, 짧은 글로 올리고, 친구(following, followers) 맺기, RT(친구의 글을 내가 전파함), 댓글등의 기법으로 쉽게 전파하는 도구'라고 정의한다. 블로그와 트위터의 정의로부터 이 둘의 공통점과 차이점을 찾아 보았다. 블로그는 편한대로 쓰기도 하지만 대부분은, 글을 쓰기전에 미리 이런식으로 글을 구성하겠다고 생각한다. 블로그는 글쓰기 전에 또는 글을 쓰면서 많은 노력을 요구한다. 트위터는 편한대로 쓴다. 편한대로 쓰면서 친구(fo.. 더보기
중국 무당산 태극권 여행기-세미나 풍경 태극권을 잘 모르는 사람들이 어렴풋이 알고 있는 태극권에 대한 대중적인 이미지는 두가지일 것 같다. 하나는, 중국의 어느 공원에서 어르신들이 느린 동작으로 기 체조 하듯 태극권 하는 모습이다. 그래서 어르신들은 따라하기 좋은데 젊은 사람들이 보면 다소 답답해 보일수도 있을 것 같다. 동작이 느리면 운동이 안 된다고 생각한다. 그러나 태극권은 동작을 느리게 할수록 운동이 더 되고 땀이 더 난다. 그 이유중의 하나는 태극권이 다리를 굽히고(=기마자세 비슷함) 운동하기 때문이다. 진식 혼원 태극권은 다른 태극권과 비교하면 동작이 역동적이고 속도감도 있다. 하나는, 이연걸의 태극권 영화에서 보여지는 무술적인 이미지이다. 부드러움으로 강함으로 악당을 제압하는 이연걸의 액션으로 보여지는 태극권의 무술적인 모습이 생.. 더보기
중국 무당산 태극권 여행기-무당산 가는길 + 개요2015년 8월 2일, 당시 나는 태극권 배운지 2년차였다. 나는 뭐든 2년차가 가장 열심히 할때 같다. 호기심도 많고 열심히 하다 보니, 나는 진식 혼원 태극권 왕봉명 사부님이 주최하시는 수련 세미나에 참석하러 중국까지 갔다. 이 여행의 시작은 인천공항->상해공항->무한시->무당산에 이르는 복잡하고 긴 여정을 거쳐야 했다. 나는 여행이 주는 고유의 ‘즐거움’과 현지에서 태극권을 배운다는 ‘기대’와 무협소설에 등장하는 유명한 무당산으로 간다는 ‘호기심’을 가지고 여행길에 올랐다. (잠시 호칭/용어 정리, 협회=한국진식혼원태극권협회, 회장님=우리협회회장님, 부회장님=우리협회부회장님(여성) 총무님=총무님 한문선생님 (여성), 왕사부님=세미나 주최하신 왕봉명,왕펑민 사부님) + 인천공항(8월 2일 오전.. 더보기
객체지향의 탄생-객체지향과 관계형 데이터베이스 객체지향과 관계형 데이터베이스의 조화 처음 봤는데도 왠지 끌리는 사람이 있고 물건이 있고 기술이 있다. 나는 처음 프로그래밍을 배울때부터 객체지향 관련 기술을 좋아했다. 아마도 철학같은 깊이가 느껴지는 기술이라 좋아했던 것 같다. 객체지향을 배우면 어떤 요구사항이라도 고스란히 내 프로그램으로 옮길수 있을 것 같았다. 그러나 공부와 실전은 달랐다. 나는 객체지향 기술 공부와 실전 개발을 병행하면서 종종 알기 힘든 괴리감을 느꼈다. 처음에는 단순한 웹코딩을 했기 때문에 객체지향을 써먹을 일이 없었다. 그때 프로그래머는 머리를 쓰는 지식 노동자가 아니고 단순 복사/붙여넣기 노동자 일수도 있구나라는 생각을 했다. 드디어 기회가 왔다. 회사 업무에 쓰일 프레임워크를 개발해 보라는 지시였다. 그때 그동안 배운 객체.. 더보기
객체지향의 탄생- 객체와 컴포넌트, 아키첵처와 아키텍트 객체와 컴포넌트 객체란 실체로 존재하는 대상/개념이며 고유명사이다. 객체는 세상에 유일하게 존재하는 모든 것들~이라고 정의했다. 나는 객체만 알면 되는 줄 알았다. 그런데 컴포넌트란 용어와 기술에 대해서도 알아야 했다. 'CBD(컴포넌트 기반 개발) 개발 방법론'을 공부할때 나는 컴포넌트와 객체의 차이에 대해 햇갈렸다. 객체와 컴포넌트에는 비슷한 개념이 들어있다. 오히려 객체와 컴포넌트에 비슷한 개념이 녹아서 햇갈려 했던 것 같다. 하지만 이 둘의 차이점도 명확하다. 컴포넌트의 정의는 독립적으로 배포되는 단위로 조립/교환이 가능한 응집도가 높은 소프트웨어 산출물이라고 한다. 컴포넌트는 좀 더 명확한 물리적인 결과물이다. 컴포넌트가 사람이 눈으로 확인할 수 있는 결과물이라면 객체는 사람이 눈으로 확인할 수.. 더보기
객체지향의 탄생- 디자인패턴과 프레임워크, 그리고 라이브러리 디자인패턴과 프레임워크, 그리고 라이브러리 디자인패턴(Design Pattern)이 무엇이고 프레임워크(Framework)가 무엇이고 라이브러리(Library)도 있는데, 이 둘의 차이가 무엇이냐는 질문은 객체지향 개발이 무엇이냐는 질문처럼 나를 바보로 만든다. 하지만 명색이 제대로 된 객체지향 개발자를 꿈꾼다면, 이 셋의 실체를 알아내는 것이 두렵다고 해서 이 들의 추적을 중단해서는 안될것이다. 먼저 디자인패턴부터 그 정의의 실체를 추적했다. 디자인패턴 같은 경우 대략의 뜻은 알고있고 써먹을줄도 알지만 명확한 정의에 대해서는 생각이 잘 떠오르지 않았다. 그럴수록 좀더 생각을 하면서 단어의 뜻을 따라가 보았다. 디자인이란 말은 설계란 뜻이다. 패턴은 일종의 정형화된 해결 방법이다. 이 두 단어를 연결하여.. 더보기
객체지향의 탄생- 객체지향과 추상화 객체지향과 추상화 생각의 탄생이라는 책을 재미있게 읽었다. 이 책은 인간의 사고를 관찰, 추상화, 패턴인식, 유추, 형상화 등의 여러 사고 능력으로 나눠 이런 사고력을 키우는 방법과 결국 이 모든 인간의 사고를 통합하여 잘 활용하는 방법의 중요성을 설명한 유익한 인문 책이었다. 객체지향 방법론과 구조적 프로그래밍 방법론의 차이는 생각의 접근 방법에 차이가 있지 않을까 라고 생각한 적이 있다. 구조적 프로그래밍은 각 기능의 모듈화를 잘해야 하므로 분석과 형상화를 잘해야 하지 않을까. 그리고 객체지향은 일단 세상의 요소를 객체로 추출해야 하므로 세상을 잘 관찰하고 관찰한 것들을 추상화 할 줄 아는 사고력이 필요하다고 생각한 적이 있다. 객체지향 개발이 어려운 개발자가 있으면 반대로 익숙한 개발자들도 있다. .. 더보기
객체지향의 탄생-객체지향과 절자지향 객체지향과 절차지향 세상의 모든 사물을 프로그래밍 한다면 속성과 행동 두가지 요소로 표현한다. 세상의 모든 사물을 오직 두가지 요소로만 표현하는 원리는 마치 0과 1만으로 모든 수를 다룰 수 있는 2진법처럼 명쾌하고 간결하게 느껴진다. 절차지향이던 객체지향이던 프로그래밍 대상의 구성 요소를 오직 속성과 행동으로 간결하게 구분지어 개발할 수 있다는 사실을 이해하면, 우리가 프로그래밍 기술을 너무 복잡하고 어렵게 생각하고 있는 것이 아닌지 되돌아 보게 된다. 프로그래밍에서는 세상의 모든 사물을 속성과 행동으로 분석한다. 프로그래밍 세계관(패러다임)에 따라서 속성과 행동을 절차지향에서는 데이터와 함수로, 객체지향에서는 속성과 메소드로 불린다. 절차지향은 농민들이 공동으로 농장을 경영하는 것과 같다. 농민은 문.. 더보기
중국 무당산 태극권 수련 여행기-진식 혼원 태극권 2015년 8월 2일 일요일 여름휴가 첫날, 나는 내가 배우고 있는 '한국진식혼원태극권협회' 분들과 함께 중국 무당산에서 열리는 국제 태극권 세미나에 7박 8일 일정으로 참석하기 위해 인천공항으로 가고 있었다. 그때 나는 이런 생각이 들었다. 내가 어떻게 중국까지 가게됐지? 내가 직장동료/친구들에게 태극권 얘기들을 하면 엉뚱하게 생각 했다. 주변 사람들은 대중적인 자전거, 헬스, 요가, 크로스핏, 골프등을 배우는데 너는 생소한 태극권이냐~ 나는 스키나 자전거 댄스 골프 같은 대중적이고 유행을 타는 운동을 배울수도 있었다. 그러나 태극권은 나에게 뭔가 큰 혜택을 주었다. 그 혜택을 크게 체감하기 때문에 나는 중국까지 가게 되었다. 나는 2014년 1월부터 태극권을 배우기 시작했다. 2013년 겨울에 나의 .. 더보기
객체지향의 탄생-응집도와 결합도 현실 이 책의 '기본'편을 통해 객체지향의 탄생 배경 지식, 객체지향의 기본 요소, 객체지향을 잘 활용하는 방법을 이해했다. '패턴'편 통해 객체지향 기법을 디자인 패턴을 통해 실용적으로 활용하는 법을 배웠다. '현실'편, 우리는 객체지향과 디자인 패턴 이론으로 지식을 무장하더라도 현장에서 일하다보면 일과 기술과 관련한 다양한 궁금증이 생긴다. 그래서 우리 개발자를 고민하게 만든다. 우리나라의 프로젝트 환경은 납기일 준수가 빠듯하게 잡혀 있어 업무강도가 강하다. 이상적인 개발 환경을 꿈꾸는 신입이라면 우리나라의 지나친 업무강도에 크게 당황한다. 납기일 압박이 워낙 심하다보니 시간이 없어 객체지향 기법을 쓰지 못하는 상황에 더 크게 당황한다. 이런 상황에 어떻게 대처해야 하는가에 대한 답은 나도 제시하지 .. 더보기
객체지향의 탄생- Factory Method 생성 관련 패턴(Creational Patterns) 팩토리 메소드 패턴(Factory Method) 1. 다시 사람사는 세상을 살펴보자면, 사람사는 세상은 역시 복잡다단하다. 사람이던 동물이던 사람이 만든 물건이던 모두 혼자서만 작동하는 경우는 드물고 대부분 다른 사물에 의존한다. 의존은 최대한 줄여야 좋다. 의존이 많을수록 의존된 사물이 잘못되었을때 상처입을 확률이 크다. 우리는 전산화를 통해서도 의존성을 줄여왔다. 인터넷 뱅킹은 사람이 발품팔아 은행가서 번호표 뽑고 기다리는 시간과 거리에 대한 의존을 줄여 주었다. 인터넷 정부는 각종 민원처리를 최대한 간소화하여 민원인이 민원처리에 대한 지식과 시간에 대한 의존을 줄여 주었다. 기타 다양한 IT서비스는 사람이 원하는 기능만 알고 나머지 복잡한 기능은.. 더보기
객체지향의 탄생- Composite pattern 컴포지트 패턴(Composite) 1. 어느 TV프로그램을 보면 큰 선물박스를 선물받았는데 큰 선물박스를 열면 그안에 약간 작은 박스가 있고, 약간 작은 박스를 열면, 중간 사이즈의 선물박스가 있고, 중간 사이즈 박스를 열면, 조금 작은 박스가 있고 마지막 정말 작은 박스를 열었더니 그안에 뭐가 있었더라..라는 내용이 나오곤 한다. 재미있으면서도 받는 사람에게는 약오르는 상황이다. 이 상황을 어플리케이션으로 표현한다면 생각나는대로 구현했을때 일단 큰박스, 중간 박스, 작은 박스의 종류를 따져서 작은 박스가 중간박스에 담기게끔 소스를 구현할지도 모른다. [박스의 역할이 작은박스, 중간박스, 큰박스로 고정되어 있다.] public class BigBox { List middleBoxs = new ArrayL.. 더보기
객체지향의 탄생- Façade pattern 퍼사드 패턴(Façade) 1. 사람은 모든지 행복한 일을 추구한다. 사람이 느끼는 행복에는 편리함도 있다. 사람은 편리할때 행복을 느낀다. 사람을 상대로 하는 모든 사업은 사람의 편리함을 지속적으로 추구해왔다. 최근의 첨단 문명에서는 사람을 편리하게 해주는 한계를 넘어서 계속 발전하고 있다. 예를들어 컴퓨터와 비행기와 인터넷과 휴대폰의 발명과 진화는 사람간의 교류와 지식 관리의 편리함을 극한까지 지원한다. 그런데 무엇보다 고대에도 중요했고 현재에도 중요한 사람의 편리함은 사람의 기본적인 욕구를 편리하게 해주는 것이다. 그중에서도 으뜸이 바로 사람의 생존의 관문인 먹거리와 관련된 서비스업이다. 고대부터 사람이 혼자서 모든 자신의 밥거리를 혼자 해결할 수 없다. 우리 들의 식사 요구사항을 편리하게 해결해줄.. 더보기
객체지향의 탄생- Adapter pattern 어뎁터 패턴(Adapter) 1. 누구에게나 정이 가고 애착이 가고 꼭 필요한 물건이 있다. 여자라면 가방이나, 집의 소품, 남자라면 자동차와 카메라, 전자 제품이 있을 것이다. 나에게 가장 소중한 물건은 '아이폰' 이다. 나는 옛날부터 전화기, MP3, 게임기, 카메라, 동영상 플레이어의 휴대용 기기가 통합된 단 하나의 기기를 갖기를 손꼽아 기다렸다. 나에게 아이폰은 나의 희망사항에 가장 근접한 기술력과 모양을 갖춘 꿈의 기기 였다. 아이폰은 내가 심심하지 않도록 언제나 옆에서 함께하는 친구와 같았다. 그래서 나는 아이폰을 좋아한다. 심지어는 아이폰과 잡스를 동경해 아이폰 개발자로 전향했다. 2. 몇년 후 나는 아이폰 개발자이기도 해서 컴퓨터는 맥미니를 쓰고, 뉴 아이패드를 쓰고, 아이폰을 쓰고 있다... 더보기
객체지향의 탄생- Decorator pattern 구조 관련 패턴(Structural Patterns) 데코레이터 패턴(Decorator) 1. 사람 사는 세상의 사물들은 독립적인 사물 그 자체로 자신의 기능을 다하기도 한다. 목이 말라 지금 내가 마시는 물컵이나, 내가 참고하는 책들은 하나의 사물 그 자체로 자신의 의미와 기능을 다하는 것이다. 또는 사물이 하나의 사물로 존재할때 기능을 다하는 것이 아니라 부가적인 사물과 합쳐 온전하게 자신의 기능을 다 발휘하는 경우도 있다. 사람 자신도 부가적인 사물인 옷들을 입어야 다른 사람들과 어울리며 사회생활을 한다. 자동차는 오디오셋트, 네비게이션셋트, 에어벡시스템 등이 함께 있어야 제대로 작동된다. 먹거리로 피자는 불고기, 새우, 닭가슴살 토핑 중에 하나를 선택하여 피자의 맛이 완성된다. 이렇게 어떤 사물들.. 더보기
객체지향의 탄생- Chain of Responsibility 채인 오브 리스판시빌리티 패턴(Chain of Responsibility) 1. 세상의 모든 객체들의 상호작용은 뭔가 원하고 뭔가 주는 과정의 끊임없는 반복이다. 벌이 꽃에게 꿀을 원하면 꽃은 꿀을 주었다. 새가 나무에게 집을 원하면 나무는 집을 주었다. 세상에서 가장 아낌없이 주는 존재는 자연이다. 자연은 모든 생물이 원하는 모든 것을 주었다. 땅위의 동물은 공기가 필요하니 공기를 주고, 물고기들은 물이 필요하니 물을 주었다. 자연은 생물의 생존에 필요한 모든 것들을 주었다. 세상의 모든 생명중에서도 자연에 가장 빚을 지고 있는 생명은 사람이다. 식량을 기르는 땅을 주고, 문명의 작동에 필요한 에너지를 제공하고, 한 가족이 행복하게 쉴 수 있는 산과 바다를 제공해 준다. 자연은 인류의 어머니다. 그래서.. 더보기
객체지향의 탄생-State Pattern 스테이트 패턴(State) 1. 객체지향의 중요한 원칙중 하나는 캡슐화이다. 캡슐화는 속성을 숨겨 다른객체가 함부로 접근하지 못하게 하는것도 있다. 객체에 주어진 기능중에 일부를 나머지 부분으로 분리하여 다른 객체 그룹으로 감싸는 것도 있다. 둘다 캡슐화라고 한다. 우리는 변하는 많은 요소를 캡슐화 하는 방법을 배웠다. 알고리즘, 구독 프로세스, 장식 알고리즘, 의존성, 명령, 프로세스, 반복등의 요소를 캡슐화하는 방법을 배웠다는 것은, 바람직한 객체지향 개발을 지원하고, 바람직한 객체지향 개발이 궁극적으로 추구하는 유연하고 높은 확장성에 유지보수하기 쉬운 높은 품질을 어플리케이션을 개발하는데 기여하게 될것이다. 처음에 나는 알고리즘을 캡슐화하는 것에 대하여, 굳이 디자인패턴이 아니더라도 나도 모르게 프.. 더보기
객체지향의 탄생-Iterator Pattern 이터레이터 패턴(Iterator) 1. 나랑 친한 동네 형님도 프로그래머셨다. 그래서 늘상 피곤해하셨다. 형님은 대한민국의 팍팍한 업무여건에 고개를 절래절래 흔들고 최근에 아이 옷가게를 새로 차렸다. 그 모진 업무여건에서 벗어나 나만의 사업을 하시는 형님 얼굴을 최근에 봤더니 그렇게 행복해 보일수가 없었다. 형님의 사업이 대박나기를 바랐다. 그래도 나는 아직 프로그래머로 자부심을 가지는 이유는 우리가 하는 일이 사람을 행복하게 해주기 때문이다. 대표적인 예가 인터넷 쇼핑몰이다. 예전같으면 차타거나 발품팔고 직접 상점에가서 물건을 샀는데 지금은 클릭한번으로 물건 사면 집앞으로 배송된다. 이점은 이동하면서 생기는 사람과 지구의 에너지 소모를 절약하는데 기여한다. 특히 이것은 약자에게 힘이 되어주었을 것이다... 더보기