박계홍

FrontPage|FindPage|TitleIndex|RecentChanges| UserPreferences P RSS

박계홍

안녕하세요 박계홍의 위키홈페이지입니다.

gyehongpark@gmail.com

최근 소식

요즘 생각
  • 하늘을 본 사람만 하늘을 마음에 품을 수 있습니다.
요즘 읽는 책
  • Code Complete 2e
  • Compilers Principles, Techniques, and Tools 한국어판.
요즘 하는 일

박계홍을 위한 추천 페이지

NosmokeTutorial/도움말 : 순서대로 차근차근 읽어보시면 노스모크에 금방 적응하실 수 있습니다.
초보의위키쓰기
노스모크공동체
WikiSandBox : 글 수정 연습은 이곳에서 하세요.


2. 오프라인 스타디


2.1. 오프라인스타디방법론

박계홍 : 2004-09-25

오늘은 오프라인 스타디 진행 방법에 대해서 몇 가지 얘기하고자 합니다. 의외로(?) 오프라인 스타디의 진행을 어떻게 하는지 잘 모르시는 분들이 많은 것 같습니다.

스타디에 참석하면서 크게 2가지에 대해서 생각을 하셔야 합니다. 첫 째는 스타디의 목적입니다. 오프라인 스타디를 통해서 무엇을 배울 것인지 정해야 합니다. 둘 째는 스타디의 방법입니다. 어떤 방법으로 위의 목적을 이룰 것인지 생각해야 합니다.

스타디의 목적은 프로그래밍에 대한 기술을 배우는 것만은 아니지만, 여기서는 작은 의미로 한정지어서 생각을 해 보겠습니다. 예를 들어 C++를 공부한다고 했을때 오프라인 스타디에서의 목적은 무엇일까요? C++뿐 아니라 프로그래밍을 위한 대부분의 공부는 책만 읽는 것으로는 배울 수 없습니다. 기차라는 것을 한 번도 본 적이 없는데 설명만 듣는다고 기차가 무엇인지 알 수 있을까요? 따라서 C++를 공부하기 위해서는 직접 프로그래밍을 하는 것을 통해서만 배울 수 있습니다.

오프라인 스타디에서는 컴퓨터를 가지고 진행하지 않습니다. 이것이 의미하는 것은 오프라인 스타디만으로는 프로그래밍을 배울 수 없다는 것입니다. 이 사실을 망각하는 분들이 의외로 많습니다. 따라서 오프라인 스타디는 프로그래밍 공부의 보조적인 수단이지 주된 수단이 될 수는 없습니다.

프로그래밍을 공부하는 방법은 어디까지나 코딩을 통해서 직접 해 보아야만 합니다. 이 함수가 이러이러한 기능을 한다는 것을 확인하기 위해서는 직접 코딩해서 원하는 결과가 나오는지 확인을 해야합니다. 코딩을 하기 위해서는 무엇을 해야하는지 알아야 하는데, 이것에 관한 하드웨어, OS, 언어 문법을 정의한 문서들은 그 방대한 양으로 기술적인 용어들이 많이 나와서 이해하기 쉽지 않습니다. 이들 중에서 많이 사용되고 중요한 것들을 뽑아서 설명한 것이 우리가 공부하는 책들입니다.

오프라인 스타디의 목적은 현재 읽고 있는 책을 보다 정확히 이해하기 위한 것입니다. 좋은 책들은 프로그래머가 혼동하거나 놓치기 쉬운 부분을 잘 지적해주고 있지만, 그렇기 때문에 이해하지 못하는 것들이 더 많습니다. 이는 책에 있는 많은 내용들이 우리가 전혀 사용해보지 않은 내용이어서 문제인식조차 못하고 있는 경우가 대부분이기 때문입니다.

오프라인 스타디의 목적을 책을 보다 잘 이해하는 것이라고 할 때, 구성원들은 다음과 같은 역할을 담당해야합니다.
  1. 내용 정리
    중요한 내용을 정리합니다. 책의 내용을 위주로 하면 되고, 책을 읽는 중에 책만으로는 이해할 수 없는 부분이 있었을 경우에는 그 부분을 보충 설명합니다.
  2. 문제 제기
    내용 중에서 이해되지 않는 부분에 대해서 문제를 제기합니다.
  3. 문제 답변
    제기된 문제에 대해서 설명합니다. 왜 이해를 못한 것이지를 알려주어야 합니다. 책에서 설명이 빠져 있을 수도 있고, 나중에 나올 수도 있고, 그 전에 설명된 내용 중에 잘 못이해하는 것들이 있을 수도 있습니다. 대부분은 책을 읽으면서 내용 일부를 누락했거나 잘못 이해한 경우입니다. 이런 경우를 서로서로 바로잡습니다.
  4. 보충 설명
    문제를 제기한 것에 대해서 보다 근본적인 이유나 비슷하게 혼동될 수 있는 부분을 설명합니다.
많은 분들이 스타디에서 발표하는 것을 상당히 어려워합니다. 발표자는 2가지 역할을 합니다. 첫 째는 사회자의 역할로 그 날 스타디를 이끌어 갑니다. 이는 그 날 스타디의 내용들을 모두가 잘 이해할 수 있도록 위의 4가지 역할이 부드럽게 순환할 수 있도록 하는 것입니다. 둘 째는 발표자의 역할입니다. 발표자는 다음의 내용을 준비하면 됩니다.
  1. 책의 내용들 중에 중요한 것들만 간단하게 정리한다.
    꼭 책의 내용 위주로 해야하는 것은 아니지만, 책의 내용을 위주로 하는 것이 더 좋습니다. 책외의 내용은 보충설명을 위한 용도여야지 주된 내용이 되면 안됩니다. 그렇게 될 수 밖에 없다면 책을 잘못 선정한 것입니다.
  2. 자신이 공부하면서 처음에 이해가 되지 않았다가 이해한 것들 중의 일부를 알려줍니다.
    열심히 읽지 않으면 이해되지 않는 부분도 없습니다. 자신이 이해하지 못한 부분들은 다른 사람들도 이해하지 못할 수도 있다고 생각하고 접근합니다. 이 때 이 책의 외의 내용에 대해서 언급할 수도 있습니다. 책에서 보다 쉬운 설명을 위해 의도적으로 내용을 일부 감출 수도 있기때문입니다.
  3. 그래도 이해하지 못한 내용에 대해서 문제 제기합니다.
    스타디에서 질문하는 것(문제 제기)은 대단히 중요합니다. 질문된 내용에 대해서는 나중에도 더 잘 이해할 수 있고, 이러한 부분들은 나중에 다시 공부할 때도 문제가 되는 부분들이기 때문입니다.

위의 내용은 발표자뿐 아니라 모두가 준비해야 할 내용입니다. 스타디에 와서 아무 말도 안하고 있는 것도 잘못된 것이지만, 책을 대충 읽거나, 읽지도 않고 와서는 이해 안 된다고 다 물어보는 것도 잘못된 것입니다. 그래서 오프라인 스타디의 목적을 다시 한 번 생각해 볼 필요가 있습니다. 스타디에 참석하는 분들 중에서 시간이 남아서 참석하는 분들은 한 분도 없습니다. 회사에서, 학교에서 다들 눈치보면서 어렵게 시간을 내서 공부하고 스타디에 참석을 합니다. 스타디에 참석하는 분들 모두가 시간적으로 경제적으로 아주 큰 투자를 하고 있습니다. 자기 자신 한 사람으로 인해서 귀중한 시간과 돈이 낭비되지 않도록 해 주시기를 부탁드립니다. (__)

위 내용은 모두 저의 개인적인 생각이며, 혹 잘못된 점, 다른 생각등은 게시판, 메일, 메신져를 통해서 주시면 감사히 받겠습니다.
긴글 읽어주셔서 감사합니다. (__)

2.2. 오프라인 스타디 주제 선정에 대해서

박계홍 : 2005-12-15

어떤 주제를 선정해서 공부해야 할지에 대해서 많은 분들이 고민을 하고 계시는듯 합니다. 2006년 스타디를 위하여 어떤 주제를 선정해서 공부해야 하는지에 대해서 생각을 해보겠습니다. 여기서 무엇이란 오프라인 스타디에서 함께 공부할 주제에 한정해서 얘기하겠습니다.

여기서 잠깐 오프라인 스타디라는 것의 장점과 단점을 생각해 볼 필요가 있습니다. 이것에 관해서 전에 쓴 '오프라인 스타디 진행에 대해서(오프라인 스타디 방법론)'라는 글을 참고하시기 바랍니다.

많은 분들은 스타디의 주제를 선정할 때, 바로 사용할 수 있는 것을 선택합니다. 예를 들자면, 회사에서 진행 중인 프로젝트 같은 것 말입니다. 혹은 차기 프로젝트와 관련된 주제도 마찬가지입니다. 이런 스타디는 배운 것을 바로 활용할 수 있기 때문에 이해하기 쉽고, 흥미도 많이 느낍니다. 그렇기 때문에 프로젝트가 진행 될 때도 자신의 맡은 역할을 잘 할 수 있게 됩니다. 시간에게 안 쫓기고 자신의 업무를 완성할 수 있게 됩니다. 멋진 일입니다! 또 프로젝트 진행 중에 생기는 문제를 같은 스타디원에게 물어보기도 쉽습니다. 사실 이런 몇 가지 문제들이 큰 문제가 되곤 합니다. 또 대부분의 시간을 잡아 먹습니다. 결론은 아주 쉬운 것인 경우가 많습니다. 그래서 이런 주제의 스타디를 선호합니다.

누구든지 좋은 스타디라고 느끼겠지만, 사실 아주 좋다고 말할 수는 없습니다. 많이 경험을 해 보셨겠지만, 같은 주제라도 프로젝트와 관련이 없는 부분에 대해서는 흥미를 잃기 쉽습니다. 그리고 프로젝트와 직접적인 관련이 있는 부분에 대해서는 실용적인(?) 이유로 깊이 파고들게 됩니다.(이것을 '숲은 보지 못하고 나무만 보게된다.'라고 말하고 싶습니다.) 이것 외에, 프로젝트에 필요한 부분을 모두 학습했다면 그 스타디에 참석하기도 싫어집니다. 이렇게 되는 이유는 스타디의 본래 의미를 잘못 파악하고 접근했기 때문입니다. 저희들이 스타디에 참석하는 이유는 현재 프로젝트에 필요한 지식 습득이 아닙니다.

또 한 가지 위와 같이 주제를 정해서 스타디를 하는 방식은 커다란 문제점을 가지고 있습니다. 그것은 바로 체계적이지 않은 스타디를 하게 된다는 점입니다. 아래와 같은 2가지 방식으로 스타디를 한다고 생각해 봅시다.
(1) C++ -> STL -> winapi -> MFC
(2) STL -> MFC -> C++ -> winapi
여러 분은 어떤 순서로 공부를 하시겠습니다. 아마도 대부분 당연히 (1)이라고 생각을 할 것이고, '(2)처럼 공부하는 사람도 있나?'라고 혼자 생각할 것 입니다. 하지만 잘 생각해 보면 자신도 (2)처럼 공부를 해 보았다는 사실을 알 수 있을 것입니다. 저도 그런 식으로 해 보았습니다. ATL을 공부할 필요가 있어서 공부를 하다가 보니 COM을 공부해야 했고, 또 STL도 해야 했습니다. 필요를 찾아서 역으로 공부하는 것은 많은 경우에 사용이 됩니다. 하지만 이러한 것은 최대한 줄일 필요가 있습니다. 필요가 발명의 어머니라고들 하지만, 조금 있으면 필요하게 될 것이 뻔히 보이는데 급히 필요하게 될 때까지 기다리는 것은 좋지 않습니다.

따라서 자신이 공부해야할 주제들이 무엇이 있는지 전체를 파악하고, 계획적으로 주제를 정해놓고 스타디를 하는 것이 좋다고 생각합니다. 자신의 업무환경이나 분야 등에 따라서 공부해야할 주제들이 많이 있습니다. 그중에서 공통적으로 필요할 듯한 주제를 정리한 글이 "C, C++ Windows Programmer Study Loadmap" 아래 링크에 있습니다.

여기에는 Debugging에 관한 부분이 빠져있습니다. 이부분은 초, 중, 고급에 걸쳐서 중요한 지식으로 추가해서 생각해야할 부분입니다.후에 이 부분도 추가할 예정입니다. (물론 개인의견입니다. 좋의 의견들 부탁드립니다.)

.. 2~3개의 스타디 주제를 미리 정해놓고 하는 스타디 그룹을 만들면 좋겠다는 생각을 하고 있습니다.
이 부분은 다른 글에서 다루도록 하겠습니다.

2.3. 어떻게 스타디 그룹을 나눌 것인가?

박계홍 : 2006-12-28
그동안 여러분들과 대화를 하면서 들은 것과 송년회에서 들은 이야기들을 정리하면 크게 2가지 이야기를 많이 했습니다. 중기 스타디 진행과 프로젝트 스타디 진행입니다.

중기 스타디 진행은 이견이 없는듯 합니다. 시삽님이 올려주신 관련 주제 분류들을 보아도 6개월은 이상적이 시간같습니다. 저희가 생각해야 할 것은 그룹을 어떻게 나누느냐 입니다. 물론 주제로 나눌 수도 있지만, 고려해야할 것을 종합해보면 다음과 같습니다.
  • 모임 날짜 : 수요일, 토요일
  • 경력 : 학생, 신입, 초급, 중급, 고급
    tip) C, C++ 언어에서 학생, 신입, 초급 분류법
    • 학생(-4 ~ -2): C, C++ 등의 언어를 혼자 공부해 보았다. 공부해도 모르겠더라. 포인터 알다가도 모르겠다.
    • 신입(-1 ~ 1): 포인터 대충안다. 자료구조 대충 안다. 하라고 하면 못하겠다.
    • 초급( 1 ~ 3): 스레드, 네트워크 대충안다. 기능 추가, 디버깅 다 할 수 있다.
    • 중급( 4 ~ ): 모르는 것도 시키면 할 수 있다. 공부하면 되니까. 시간이 걸릴 뿐이다. 그래도 가능하면 아는 언어 프로젝트를 줘라.
  • 주제 : 공지사항에 시삽님이 기본적인 과정을 잘 정리해 놓았습니다. 그 외에 추가해도 됩니다.
  • 프로젝트?

스타디를 몇 명이 지원할지 모르겠지만, 지금까지 정도라고 생각하면 수요일 그룹과 토요일 그룹을 합해서 3 개 ~ 4개 그룹이 모집될 것입니다. 주제는 그룹이 만들어진 후에 생각해도 됩니다. 문제는 각 요일별 그룹에서 2팀 이상이 만들어 질때 어떻게 그룹을 나누느냐 하는 것입니다. 여기서 자신의 주제별로 나누어도 되지만, 경력별로 나누는 것도 있습니다. 그리고 아래에서 이야기할 프로젝트 유무로 나눌 수도 있습니다.

지금까지는 주제 별로 나누워왔지만 사실 주제는 별로 중요하다고 생각하지 않습니다. 이XX님이 송년회에서 얘기해주신대로 좀 더 멀리 보아야하고, 순수해질 필요가 있습니다. 그렇게 본다면 경력과 프로젝트가 중요한 요인이 됩니다.

정리
  • 그룹을 나누는 기준 : 요일 & (주제 | 경력 | 프로젝트)

두 번째 프로젝트 스타디에 대해서 이야기를 해 보겠습니다.

스타디 방식이 중기 스타디 그룹으로 바뀌게 될 것이므로 그 그룹에서 스타디를 하자고 의견이 모아지면 그냥 하시면 됩니다. 전에도 이렇게 이루어진 적이 많이 있었습니다. 여기서 저희가 고려해야 할 것은 시삽님이 이야기한 것 처럼, 프로젝트 스타디가 조금 어렵다는 것입니다. 시간도 낼 수 있어야 하고 열정도 가지고 있어야 합니다. 그리고 학생이나 신입인 분이 참여하기 위해서 정말 큰 결심을 해야 합니다.

정리
  • 프로젝트 스타디는 그룹에서 합의가 되면 진행한다.
  • 프로젝트 스타디에 참여할 분들은 가능하면 초급이상, 시간이 여유있는 분들이 좋다.
  • 그래도 참여하고 싶은 분들은 열정을 가지고 참여해야 한다.

스타디 그룹 신청 예제
  • 스타디 신청
    • 요일 선택 : 수요일, 토요일
      • 그룹 선택 : A, AP, B, BP
      • A 그룹 : 학생, 신입 스타디 그룹
      • AP그룹 : 학생, 신입 프로젝트 스타디 그룹 - 책을 1 - 2권 진행하고, 프로젝트를 진행한다.
      • B 그룹 : 초급, 중급 스타디 그룹
      • BP그룹 : 초급, 중급 프로젝트 스타디 그룹
    • 주제 선택(그룹에서 논의 가능) : 1, 2, 3, 4, 5, 6
  • 주의사항
    • 그룹은 3그룹 정도가 만들어질 가능성이 많다.
    • 수요일 2개 그룹, 토요일 1개 그룹.
    • 프로젝트 스타디 참여는 한 번 더 생각하고 참여하라.
    • 스스로를 살펴라. 대부분은 한 가지씩 확실하게 하는 것이 좋다.

신청 방법
  • 아무개 - 수요일 & A 그룹 (1번 C++)
  • 아무개 - 토요일 & AP 그룹 (윈도우즈 게임)
  • 아무개 - 수요일 & B그룹 (2번 알고리즘)
  • 아무개 - 토요일 & BP 그룹 (네트워크 관련)

3. C++ Study

3.1. C, C++ Windows Programmer Study Loadmap

박계홍 : 2005-10-19
분류 초급 중급 고급
과정 비고 과정 비고 과정 비고 과정 비고
소스관리툴 선택 CVS . 선택 . . 택1이상 . . 택1이상
" 선택 VSS . 선택 . . 택1이상 . . 택1이상
빌드툴 택1 이상 VC++ 6.0 . 택1이상 . . 필수 . . 필수
" 택1 이상 VC++ 7.1 . 택1이상 . ' 필수 . . 필수
언어 C, C++ 택1 이상 C . 택1이상 . ' 필수 . . 필수
" " C 자료구조와 알고리즘 선택 . ' 필수 . . 필수
" " " winapi 선택 . ' 필수 . . 필수
" " " . . OS 내부구조 . 선택 . . 필수
" " " . . Network . 선택 . . 필수
" " C++ . 택1이상 . ' 필수 . . 필수
" " " 자료구조와 알고리즘 선택 . ' 필수 . . 필수
" " " " . STL ' 선택 . . 필수
" " " MFC 선택 . ' 필수 . . 필수
" " " " . COM ' 필수 . . 필수
" " " " . " DCOM 선택 . . 필수
" " " " . " " . COM+ . 필수
" " " . . Network . 선택 . . 필수
기타 . UML . 선택 . . 필수 . . 필수
" . 디버깅 . 필수 . . 필수 . . 필수
" . 리팩토링 . 선택 . . 필수 . . 필수
" . 디자인패턴 . 선택 . . 필수 . . 필수
" . 데이타베이스 . 선택 . . 필수 . . 필수
" . 개발방법론 . 선택 . . 필수 . . 필수

* 표의 세로묶기가 안되므로 같은 이름으로 되어 있는 것은 " 같은 위와 같은 내용을 나타낸다.
* 예)
소스관리툴의 CVS는 초급 프로그래머에게 선택이고, 중급 이상에서는 VSS와 함께 선택해서 필수로 익혀야 한다.
빌드툴의 VC++ 6.0은 초급 프로그래머에게 VC++7.1과 선택해서 필수로 익혀야 하고 중급 이상에서는 필수로 익혀야 한다.
C++의 COM+는 C++, MFC, DCOM을 사전에 익혀야하며 고급 프로그래머는 COM+를 익혀야 한다.

** 현실적인 관점이 많이 반영되어 있음. 나중에 내 관점으로 수정해야 겠다. 2005.12.20.

3.2. C, C++ 스타디 참고 도서 목록

3.2.1. 소스 관리 툴

CVS
실용주의 프로그래머를 위한 버전 관리 using CVS : Pragmatic Version Control using CVS http://kangcom.com/common/bookinfo/bookinfo.asp?sku=200406020007
VSS

3.2.2. 빌드 툴

VC++6.1
VC++7.1

3.2.3. 언어

C
열혈강의 C 프로그래밍 http://kangcom.com/common/bookinfo/bookinfo.asp?sku=200312030005
C언어 프로그래밍 - 제2판 http://kangcom.com/common/bookinfo/bookinfo.asp?sku=199608030003
자료구조 & 알고리즘
windows api
OS 내부구조
Programming Applications for Microsoft Windows (4/E) http://kangcom.com/common/bookinfo/bookinfo.asp?sku=200308210061 중급
고급 개발자들 만이 알고있던 Windows 구조와 원리 그리고 Codes http://kangcom.com/common/bookinfo/bookinfo.asp?sku=200312270001
Windows 시스템 실행파일의 구조와 원리 http://kangcom.com/common/bookinfo/bookinfo.asp?sku=200505130005
API로 배우는 Windows 구조와 원리 http://kangcom.com/common/bookinfo/bookinfo.asp?sku=200410110004
Network
UNIX Network Programming Vol.1 : The Sockets Networking API 제3판 http://kangcom.com/common/bookinfo/bookinfo.asp?sku=200507010009
Network Programming for Windows 2/E (한국어판) http://kangcom.com/common/bookinfo/bookinfo.asp?sku=200212040002
열혈강의 TCP/IP 소켓 프로그래밍 http://kangcom.com/common/bookinfo/bookinfo.asp?sku=200303250003
TCP/IP 소켓 프로그래밍 C http://kangcom.com/common/bookinfo/bookinfo.asp?sku=200110310007
TCP/IP ILLUSTRATED, VOLUME 1 http://kangcom.com/common/bookinfo/bookinfo.asp?sku=199407270075
C++
C++ 기초 플러스 4판 http://kangcom.com/common/bookinfo/bookinfo.asp?sku=200305070009
에센셜 C++(Essential C++) http://kangcom.com/common/bookinfo/bookinfo.asp?sku=200306200002
열혈강의 C++ 프로그래밍 http://kangcom.com/common/bookinfo/bookinfo.asp?sku=200403300018
C++ 프로그래밍 언어 (특별판) : The C++ Programming Language http://kangcom.com/common/bookinfo/bookinfo.asp?sku=200505090002
Accelerated C++ : 예제로 배우는 진짜배기 C++ 프로그래밍 http://kangcom.com/common/bookinfo/bookinfo.asp?sku=200303030001
EFFECTIVE C++ 2편 http://kangcom.com/common/bookinfo/bookinfo.asp?sku=199803010003
More Effective C++ http://kangcom.com/common/bookinfo/bookinfo.asp?sku=200301290001
자료구조 & 알고리즘
C++ 자료구조(2/E) : C++ Plus Data Structures http://kangcom.com/common/bookinfo/bookinfo.asp?sku=200310270002
IT COOKBOOK CㆍC++로 배우는 자료구조론 http://kangcom.com/common/bookinfo/bookinfo.asp?sku=200407260003
알고리즘(3/E) : Foundations of Algorithms USING C++ PSEUDOCODE http://kangcom.com/common/bookinfo/bookinfo.asp?sku=200403030004
Programming Challenges : 알고리즘 트레이닝 북 http://kangcom.com/common/bookinfo/bookinfo.asp?sku=200407020006
STL
STL 튜토리얼 및 레퍼런스 가이드 (2/E) http://kangcom.com/common/bookinfo/bookinfo.asp?sku=200204040008
C++ Standard Library : 튜토리얼·레퍼런스 http://kangcom.com/common/bookinfo/bookinfo.asp?sku=200302110008
이펙티브 STL : C++ 표준 템플릿 라이브러리(STL)를 효과적으로 활용하는 50가지의 명쾌한 테크닉 모음 http://kangcom.com/common/bookinfo/bookinfo.asp?sku=200201120001
MFC
Network
C++ Network Programming Volume1 : ACE와 패턴을 사용한 객체지향 네트워크 프로그래밍 http://kangcom.com/common/bookinfo/bookinfo.asp?sku=200303030003
C++ Network Programming Volume 2 : ACE와 프레임워크를 이용한 체계적인 재사용 기법 http://kangcom.com/common/bookinfo/bookinfo.asp?sku=200310250002

3.2.4. 기타

UML
UML Distilled : 표준 객체 모델링 언어 입문(3/E) http://kangcom.com/common/bookinfo/bookinfo.asp?sku=200511070008
초보자를 위한 UML 객체지향 설계 제3판 http://kangcom.com/common/bookinfo/bookinfo.asp?sku=200410190002
UML,ROSE,RUP 객체지향 분석설계 그리고 소설같은 실전 프로젝트 이야기 http://kangcom.com/common/bookinfo/bookinfo.asp?sku=200407220001
디버깅
Debugging Applications for Microsoft .NET and Microsoft Windows http://kangcom.com/common/bookinfo/bookinfo.asp?sku=200403190013
MICROSOFT DEBUGGING APPLICATIONS(한국어판)에서 업그레이드 된 책
리팩토링
디자인 패턴
GoF의 디자인 패턴 : Design Patterns http://kangcom.com/common/bookinfo/bookinfo.asp?sku=200209240010
GoF 디자인 패턴! 이렇게 활용한다: C++로 배우는 패턴의 이해와 활용 (문제 사례를 통해 패턴 활용의 맥을 짚어주는 23가지 디자인 패턴) http://kangcom.com/common/bookinfo/bookinfo.asp?sku=200405180002
Head First Design Patterns : 스토리가 있는 패턴 학습법 http://kangcom.com/common/bookinfo/bookinfo.asp?sku=200508240010
Database
새로 쓴 대용량데이터베이스솔루션 1 - 관계형 데이터베이스 활용원리편 http://kangcom.com/common/bookinfo/bookinfo.asp?sku=200511220001
대용량 데이터베이스솔루션 I ,II의 다음 버전 책입니다.
개발방법론
XP
Extreme Programming Installed XP도입을 위한 실전 입문 http://kangcom.com/common/bookinfo/bookinfo.asp?sku=200207220004
테스트 주도 개발 : Test-Driven Development http://kangcom.com/common/bookinfo/bookinfo.asp?sku=200412020003
Test Driven Development : By Example의 변역서
초보자를 위한 eXtreme 프로그래밍 - 리팩토링과 기민한 모델링 http://kangcom.com/common/bookinfo/bookinfo.asp?sku=200304180026
기타
실용주의 프로그래머 : The Pragmatic Programmer - P.P.P. 시리즈 002 http://kangcom.com/common/bookinfo/bookinfo.asp?sku=200505180011
CODE COMPLETE 2/E http://kangcom.com/common/bookinfo/bookinfo.asp?sku=200504110013

4. 이런 저런 생각

4.1. 올챙이와 개구리 이야기

박계홍 : 2006-12-28

등장인물
꼬리만 있는 올챙이(꼬리 올챙이)
뒤발이 나온 올챙이(뒤발 올챙이)
앞발도 나온 올챙이(앞발 올챙이)
꼬리가 사라지고 있는 앞발 나온 올챙이(작은꼬리 앞발 올챙이)
개구리

한 무리의 올챙이들이 놀고 있다. 개구리가 천천히 오면서 올챙이 무리들을 관찰한다. 꼬리 올챙이를 유심히 본다. 꼬리 올챙이에게 다가간다. 꼬리 올챙이도 무슨 일인가하고 개구리를 유심히 본다. 꼬리 올챙이가 개구리를 보며 앞으로 나간다.

개구리 : (꼬리 올챙이를 보고, 사랑스런 눈빛으로) 이제 다 컸구나. 내가 너의 엄마란다. 정말 이쁘게 자라고 있구나.
꼬리 올챙이 : (의심스런 눈빛으로 위, 아래를 훝어보며) 웃기지도 않네. 당신이 엄마라고? 거울을 좀 보세요. 당신하고 나는 닮은 점이 있는지. 더군다나 당신은 나처럼 멋진 꼬리를 가지고 있지도 않잖아요. 멋진 꼬리도 없는데 내 엄마라니 말도 안되는 소리!
작은꼬리 앞발 올챙이를 제외한 모든 올챙이 : 말도 안되는 소리! (자신의 꼬리를 멋진 눈으로 바라본다.)
앞발 올챙이 : (작은꼬리 올챙이를 보고) 물론 형편없는 꼬리를 가진 올챙이도 있지만.
작은꼬리 올챙이 : (올챙이들의 비웃음을 신경쓰지 않고, 멀어져 가는 개구리만을 바라본다. 작은 목소리로) 엄마.

꼬리 올챙이 개구리에게서 떨어져서 올챙이들에게 온다.
개구리는 천천히 사라진다.

꼬리 올챙이 : (뒤발 올챙이를 보면서) 저 개구리는 왜 내 엄마라고 하는 거지?
뒤발 올챙이 : (개구리를 흘깃 보고나서) 글쎄, 개구리 마음을 올챙이가 어떻게 알겠어. 내 버려둬. (갑자기 생각난 듯) 이거 봐바. (자신의 뒤 다리를 보여준다.) 이거 멋지지 않아? 이번에 새로 만들었어. 난 이제 훨씬 빨리 헤엄친다고. 이젠 어느 누구도 나를 따라 잡을 수는 없어.
꼬리 올챙이 : (유심히 뒤 다리를 본다.) 정말? 훌륭한 꼬리에게 방해가 되는 것은 아니야?
뒤발 올챙이 : (고개를 흔들며) 말도 안되는 소리. 우리가 도망갈 때 마다 꼬리가 얼마나 힘들었어. 때론 무리하게 도망가다가 상하기도 하고. 앞발도 아니고 뒤발이야. 도망갈 때 꼬리와 함께 움직이면 그야말로 끝내준다고. 난 이제 예전의 올챙이가 아냐. 뒤발 올챙이라고 불러. 나랑 한번 경주해 볼까?
꼬리 올챙이 : (고개를 끄떡이며) 좋아. 나도 예전의 내가 아니라고, 내 꼬리는 더 튼튼해 졌어.

뒤발 올챙이와 꼬리 올챙이가 경주를 시작한다. 처음 시작하면서 부터 뒤발 올챙이가 앞서 나간다. 경주는 금방 뒤발 올챙이의 승리로 끝난다.

꼬리 올챙이 : (감탄하는 눈으로 뒤발을 보면서) 우와 대단하다. 정말 빠른데. 나도 뒤발을 가져야 할까바.
앞발 올챙이 : (둘을 비웃는 눈으로 나타나며) 나도 그런 생각을 가질 때가 있었지. 하지만 앞발도 필요하지. 나를 바바. (앞발을 뽐내며 보여준다.)
(꼬리 올챙이, 뒤발 올챙이 앞발 올챙이의 앞발을 유심히 바라본다.)
뒤발 올챙이 : (앞발에서 눈을 떼지 못하며) 앞발이 있으면 속도가 줄지 않을까? (꼬리 올챙이를 보며 동의를 구하는 눈빛을 보낸다.)
꼬리 올챙이 : (뒷발 올챙이의 눈빛을 알아채고 급히 끄덕인다.) 맞아 맞아.
앞발 올챙이 : (가소롭다는 듯이 웃으며) 하하하하. 내 뒤발을 봐. 네 뒤발하고는 차원이 다르지 않아. 다 같은 뒤발이 아냐. 난 차원이 다르다고. 물론 앞발은 방해가 전해되지 않아 뒤발이 이렇지 않다고 해도 앞발은 더 빠르게 해주지. 이미 나보다 빠른 것 없어. 거기다가(주위를 둘러보며 조용하게) 이 앞발은 나를 새로운 세계로 인도한다고.
꼬리 올챙이, 뒤발 올챙이: (무슨 말인지 모르겠다는 듯이 서로를 보며 고개를 갸웃거린다.)
앞발 올챙이 : 음......(한참 생각을 하다가 의미심장한 미소를 지으며) 너희들 소라고 들어 봤어?
꼬리 올챙이, 뒷발 올챙이 : (깜짝 놀라며) 뭐? 소?
꼬리 올챙이 : 난 들어본적이 없는데? 그게 모지? (뒷발 올챙이를 쳐다본다.)
뒷발 올챙이 : 그 엄청나게 크다는 동물? 어디서 살짝 들어 본적은 있는데 그건 거짓말이라고 하던데. 그냥 알려진 것처럼 큰 올챙이들이 꾸며낸 이야기래.
앞발 올챙이 : 아니야. 난 분명하게 들었어. 나이 많은 개구리에게 였지. 그러고 보면 개구리들은 이상하게 우리한테 친절해.
꼬리 올챙이 : (킥킥 웃으며) 맞아. 개구리들은 멍청해. 전혀 다른 우리에게 아는 척하고, 마치 자기들이 다 아는 척 잔뜩 뻐긴단 말야. 물론 많이 도와주지만.
뒷발 올챙이 : (같이 웃으며) 맞아. 한심해!
앞발 올챙이 : 어쨌든 그 개구리는 말하더라. 소는 정말로 있데. 그리고 그것을 보려면 땅 위로 올라가면 볼 수 있다고 했지. 그리고 알려준 것이 앞발이야. 나도 내가 이런 능력이 있는지 몰랐다고. 뒷발이야 있으면 정말 편리하지. 앞발은 방해만 될듯하고. 하지만 앞발도 더 빠르게 움직이게 해준다고. 거기다가 소를 볼 수 있다니. (하늘을 바라보며) 조금만 기다려바 내가 소를 보고 올테니.

앞발 올챙이가 무리들과 멀어져서 육지로 올라가려고 한다. 하지만 꼬리때문에 힘들다. 앞발, 뒤발도 너무 약하다.

작은꼬리 올챙이 : (앞발 올챙이에게 큰 소리로) 얼른 돌아와. 지금은 안돼.

앞발 올챙이가 힘들어하면서도 계속 시도하자 앞발 올챙이에게 간다.

작은꼬리 올챙이 : 지금은 안돼. 몸만 상해. 위험하기도 하고.

앞발 올챙이가 잠시 행동을 멈추고는 작은꼬리 올챙이를 바라본다. 앞발 올챙이를 한참 보다가 땅위로 훌쩍 올라간다. 모든 올챙이들이 감탄한듯 작은꼬리 올챙이를 본다. 작은꼬리 올챙이가 다시 올챙이 무리로 돌아온다. 앞발 올챙이도 같이 온다.

다른 올챙이들 : (계속 감탄의 눈빛으로) 어떻게 그렇게 쉽게 했지?
작은꼬리 올챙이 : (올챙이들을 둘러보고 앞발 올챙이를 측은하게 바라보며) 나도 처음에는 앞발 올챙이하고 같았어. 정말 힘들었지. 나의 멋진 꼬리도 땅에 긁혀서 아프고, 앞발도, 뒷발도 땅위에서는 너무 약했어. 거긴 정말 멋졌지만 그 때는 너무 힘들었지. 그리고 진실을 알게 됐어. (주위 올챙이를 둘러본다.) 우리들 발이 사실 조금 이상하지 않아. 대부분의 물고기는 발이 없다고. 그리고 너무 커. 물론 발이 헤험치는데 아주 유용하지. 특히 연못 바닥같은 곳에서도 그렇고. 하지만 그래도 평범하지는 않지.
뒤발 올챙이 : 거기다가 니 뒤발은 정말 크네. 언제 이렇게 커졌지? 나하고는 비교도 안돼. (앞발 올챙이의 뒤발을 보며) 앞발 올챙이 하고도 비교가 안돼.
앞발 올챙이 : (자신의 뒤발과 작은꼬리 올챙이의 뒤발을 번갈아 보고는 혼잣말로) 흥! 하지만 난 멋진 꼬리가 있다고.
작은꼬리 올챙이 : 난 일부러 꼬리를 버린거야. 땅 위에 가려면 꼬리가 없어야 돼. 그리고 내 모습을 한번 봐바. 내가 땅위에 올라갈 때 마다 내 얼굴이 변하고 있다고. 나를 봐. 어디서 많이 본것 같지 않아?
다른 올챙이들 : (작은 꼬리 올챙이를 유심히 바란본다.)
앞발 올챙이 : 정말 어디서 많이 본듯해. 조금 전에도 본듯한.
뒤발 올챙이 : 어? 정말 그러네. 조금 전에 우리에게 누가 왔다갔나?
꼬리 올챙이 : 누가 왔다 가기는. 조금 전에 이상한 개구리 밖에 없었는데.
앞발 올챙이 : 맞다 개구리.
뒤발 올챙이 : 그래 개구리다.
꼬리 올챙이 : (무슨 소리인지 모르겠다는 듯이 뒤발 올챙이와 앞발 올챙이를 번갈아 본다.)
뒤발 올챙이, 앞발 올챙이 : (꼬리 올챙이를 보며) 저 꼬리가 없다고 생각을 해봐.
꼬리 올챙이 : (작은꼬리 올챙이를 유심히 보다가 도저히 모르겠다는 듯이 고개를 흔들며 혼자말로) 무슨 소리를 하는 건지...... 있는 꼬리를 없다고 생각하라니. 말이 되는 소리를 해야지. 그럼 저 꼬리는 꼬리가 아니고 다리인가? 다리 다섯개인 올챙이라 웃기네. 쿠쿠쿠
앞발 올챙이 : (꼬리 올챙이에게서 고개를 돌리고, 뒤발 올챙이를 보면서) 넌?
뒤발 올챙이 : (고개를 끄덕이며) 응 난 보고 말았어. 이것이 사실일까? 믿을 수가 없어. 난 그냥 뒤발이 단지 꼬리를 도와주기 위한 것이라고 생각했는데.
앞발 올챙이 : 난 앞발도 땅위로 나가서 멋진 꼬리를 보여줄 생각이었단 말야.
꼬리 올챙이 : (가만히 들어보고는 고개를 끄덕이며) 정말, 정말 우리가 개구리가 되는 거야?
작은꼬리 올챙이 : 그래 맞아. 우린 개구리가 되는 거지. 더 이상 물 속에만 있는 것이 아니라고. 우리는 저 물고기와는 달라. 물론 그러기 전에 꼬리를 버려야만 하지만 말야. 우리는 정말 황소를 볼 수 있다고. 그들과 똑같은 4개의 다리를 가지고.
다른 올챙이들 : 와~ 멋진데. 역시 우린 대단해. (둥글개 어깨에 손을 얻어서 원을 만들어서 빙글 빙글 돌면서 기뻐한다.) 우린 대단해!

지나가던 개구리가 올챙이들의 즐거운 소리에 놀라서 걸음을 멈추고 지켜본다. 빙글빙글 돌던 올챙이들 갑자기 누군가 멈추자 다같이 멈춘다. 올챙이들이 개구리를 지켜본다. 갑자기 개구리에게 뛰어 간다. "엄마"하고 모든 올챙이들이 부르며 개구리를 껴앉는다. 개구리도 정말 기뻐한다. 다같이 껴안고 조명이 어두워진다.

그 이후 오랫동안 보이지 않아서, 나 때문일까를 생각해 오던 차, 이 말을 꺼낼만한 기회를 꽉 잡았습니다. 박계홍님, 요즘은 노스모크에 자주 접속 안하시나요? 박계홍님 필명이 몇번만이라도 보인다면 내 마음이 좀 편해지련만... --맑은 2007.05.07(월) 뭔 소릴 하는지 모르겠다고요? 모르시겠다면 계속 모르는 게 더 낫지요. :D 다만, 박계홍님의 발자취를 다시 볼 수만 있다면 그 걸로 족합니다.


"; if (isset($options[timer])) print $menu.$banner."
".$options[timer]->Write()."
"; else print $menu.$banner."
".$timer; ?> # # ?>