행복한 프로그래밍 - 컴퓨터 프로그래밍 미학 오디세이
임백준 지음 / 한빛미디어 / 2003년 5월
평점 :
구판절판


참 재미있게 읽었다. 무엇보다 IT서적 중에 이런 책은 지금까지 없었던 것 같다. 웬만해선 책을 오래 읽지 않는 편인데, 첫 페이지를 넘기고 끝까지 읽어버린 자신을 발견하고 놀랐다. 책 중간 중간에 영화나 인물의 이야기 등을 자연스럽게 연결시켜 쉽게 흥미를 잃지 않고 재미있게 읽을 수 있었다. 그리고, 참고자료로 쓰인 책들을 각 챕터 끝에 깔끔하게 정리해놓았는데, 모두 한번씩 읽어 볼만 한 책들인 것 같다.

여러 기본적인 지식과 알고리즘, 자료구조 등을 일상생활 속에서 흔히 일어나는 일들에 비유해서 재미있게 설명하고 있다. 마치 이런 것들이 생활의 일부인 것처럼 말이다. 아니 어쩌면 이런 것들이 생활의 일부라고 말하고 있는 것인지도 모르겠다. 언제인지 정확하게 기억나는 것은 아니지만, 처음으로 'Hello, World!'를 찍어보던 때가 생각난다. 그때는 모니터에 찍힌 글을 보면서 마냥 신기해하고 재미있어 했었는데... 가만히 생각해보니, 저자가 말하는 행복이 그때 그 순간이 아니었나 싶다.

그렇지만 hello world에서 시작하여 앞으로 점점 나아가면서 차차 배워야 할 것들이 많아졌고, 또 어려워져갔다. 그러면서 어느 순간부터는 프로그래밍이 '재미있다' 라기 보다는 '언제 이 많은걸 공부하지'라는 걱정으로 변해갔다. 그렇다고 포기한 건 아니었지만, hello world를 찍어보던 시절처럼 프로그래밍을 즐기기보다는 내 자신이 단순히 코딩만 하는 코더로 변해가는 것 같았다. 이런 매너리즘에 빠져있던 나에게 책 속에 저자는 이렇게 충고해주었다. “당신은 실력이 부족해서가 아니라 집중력이 부족해서 그렇다고… 능력이 없어서가 아니라 열정이 부족해서 그렇다라고...'

이 책과 만남을 가진 후, 이제는 'Hello, World!'를 찍어보던 그 때의 작은 행복을 다시 찾을 수 있을 것 같은 생각이 든다. 작은 것부터 하나 하나 배워가면서 느끼는 행복을… ‘하루가 멀다하고 쏟아져 나오는 새로운 정보들 속에서 어떻게 하면 이런 것들을 빠르고 쉽게 배울 수 있을까?’하는 걱정은 버리고, 작은 것부터 하나씩 알아 가는 것이 행복인 것 같다. 마치, 클로버 잎들 속에서 행운을 상징하는 네 잎 클로버를 찾으려고 하지만, 주위에 수없이 많은 세 잎 클로버의 꽃말이 행복인 것처럼, 저자는 프로그래밍이 생활의 일부가 되고, 삶의 목적이 될 때, 정말 행복한 것이라고 말해주고 있다.

그 동안 프로그래밍이라는 행복을 잠시 잊어버리고 살아온 모든 프로그래머들에게 이 책은 '커피 한잔의 여유'를 즐기며, 행복한 프로그래밍이 무엇인지를 생각해 볼 수 있는 기회를 주는 책이다. 마지막으로 이런 노래 말이 생각난다. “진정 즐길 줄 아는 여러분이 이 나라의 챔피언입니다!” 이제 말을 안해도 알겠지만, 진정 즐기 줄 아는 프로그래머만이 프로그래밍의 챔피언이 될 수 있고, 또한 그 속에서 행복을 느낄 수 있을 것이다!

댓글(0) 먼댓글(0) 좋아요(12)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
유닉스 시스템 프로그래밍 - IT Expert IT EXPERT
정재은 지음 / 한빛미디어 / 2002년 7월
평점 :
절판


일단 표지나 내용 구성을 보고, 첫 느낌은 '산뜻하다'였습니다. 이 책은 중급이나, 중급에서 고급으로 넘어가는 사람들을 대상으로 삼고 있다고 하지만, 실제 내용으로 볼 때는 대상을 정하기가 조금 애매한 것 같습니다. 내용은 크게 4부로 나누어져 있습니다.

「1부. 시스템 프로그래머가 꼭 알아야 할 사항들」
시스템 프로그래밍을 하기 전에 해야하는 준비운동이라고나 할까요? ^^; 프로그래밍 할 때 알아두면 편한 에디터, shell과 기타 프로그래밍 관련 툴들에 관한 Tip이 눈여겨 볼만하네요. 이 부분은 초급을 대상으로 하고 쓴 것 같더군요. 그래도, 중·고급분들이 간과하면 아쉬운 부분들도 있습니다. ^_^;;

「2부. 유닉스 명령어 만들기」
1부에서 준비운동으로 몸을 풀었으니, 이제 슬슬 본운동으로 들어가야겠죠? ^_^; UNIX에서 사용되는 여러 가지 명령어들(ls, cat, cp, head, uniq, od, wc, du, finger, ps, df, find, grep)의 축소 버전을 직접 만들어 보면서, 시스템 프로그래밍의 감을 익힐 수 있습니다. 소스코드를 분석하면서, 잘 모르는 System call과 subroutine library function들은「4부. 부록」을 참조한다면, 초보자들도 크게 무리없이 따라 갈 수 있으리라 생각됩니다. 이 책이 장점으로 내새우고 있는 부분이 「4부. 부록」에 있는 시스템 함수들을 정리해 놓은 것인 만큼, 이 부분을 활용할 수 있는 부분인 것 같습니다.

「3부. 실제 프로그램 작성하기」
이제 본운동까지 마쳤으니, 마무리 운동으로 시스템 프로그래밍에 확실하게 익숙해질 수 있는 부분입니다. 여기서는 실무에서 실제 문제(여기서는 '시스템 정보 보여주기')에 부딪혔을 때를 가정하고, 그 문제를 풀어 가는 절차(프로그램 작성 전 주의 사항 -> 문제 파악 -> 설계 -> 구현 -> 테스트)를 단계별로 기술하고 있습니다.

「4부. 부록」
이 책에 반을 차지하고 있는 부분으로, System call과 subroutine library function들을 모두 설명하고 있으며, 각각 그에 따른 예제와 분석이 있습니다. 시스템 프로그래밍 할 때, 레퍼런스로 사용하기에 괜찮은 부분입니다.

이 책에서 아쉬운 점이 있다면, 「2부. 유닉스 명령어 만들기」에서 단순히 소스 코드 분석에만 그치지 말고, 「3부. 실제 프로그램 작성하기」에서 사용한 문제 풀이 절차를 적용했더라면 더 좋았을 거라는 겁니다. System call과 subroutine library function들을 아무리 빠삭하게 안다고 해도, 결코 시스템 프로그래밍을 잘 할 수 있는 것은 아니겠죠.
맨 위에서, 이 책의 대상을 정하기가 애매하다고 했는데, 왜냐하면, 중·고급분들은 이미 알고 있을 만한 내용을 다루고 있는 것 같구요, 그렇다고 초급분들이 보기엔 시스템프로그래밍의 기본 개념에 해당하는 내용이 없기 때문이죠.

차라리, 2부와 3부를 하나로 만들어서 3부에서 사용한 (프로그램 작성 전 주의 사항 -> 문제 파악 -> 설계 -> 구현 -> 테스트)단계들을 사용하면서, 점점 더 큰 유닉스 명령어들을 만들어봤다면 더 도움이 되지 않았을까 하는 아쉬움이 남네요. 그래도, 이 책에서 「4부. 부록」에 있는'부록 A 시스템 함수'는 괜찮은 부분 중에 하나 입니다. 시스템 프로그래밍 할 때 레퍼런스로서 많은 도움이 될 것 같습니다.


댓글(0) 먼댓글(0) 좋아요(1)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
Network Troubleshooting Tools
조셉 슬론 지음, 지순기 옮김 / 한빛미디어 / 2001년 12월
평점 :
품절


『네트워크가 컴퓨터다.(Network is computer.)』

90년대 초부터 지금까지 IT계의 화두가 되고 있는 말입니다. 당연하겠지만, 이제 IT에서든 실생활에서든 네트워크가 없는 세상은 절대 상상할 수 없을 만큼 네트워크가 필수인 세상이 되었죠. 이런 세상에서 네트워크에 이상이 발생하여 사용할 수 없게 된다면 어떻게 될까요? 지금당장 인터넷에 접속할 수 없는 사태가 벌어진다면요? 별 대수롭지 않게 생각할지도 모르지만… 만약 이와 같은 상황이 오래간다면..? 네트워크에 중독이 되어 있는 저는 금단증상(?)이 나타날지도 모르겠네요. ^^;;

이 책의 주요 내용은 네트워크에서 발생한 문제를 해결하기 위해 원인을 분석하고 필요한 정보를 효율적으로 수집할 수 있는 방법에 대해서 설명하고 있습니다. 즉, 문제해결 과정에서 정보 수집을 주로 다루고 있죠. 이 책은 총 12개의 장으로 구성되어 있으며, 호스트 하나에서 시작해서 네트워크 연결, 그리고 전체적인 네트워크로 확장하면서 설명을 하고 있습니다. 주로 유닉스 플랫폼을 기반으로 설명하고 있지만, 각 장의 끝에 윈도우 플랫폼에서 사용할 수 있는 도구들에 대해서도 간략하게나마 소개하고 있습니다.

네트워크에서 발생한 문제가 이 책의 모든 장에 해당하지는 않을 것이므로, 당장 필요한 부분이나 가장 관심 있는 부분을 먼저 읽어봐도 좋을 것입니다. 그럼, 각 장의 내용을 살펴보겠습니다.

1장 ~ 4장
문제해결에 대한 일반적인 접근방법과 문서화의 중요성을 설명하고, 네트워크의 한 호스트 관점에서 시스템 관리를 살펴봅니다. 네트워크에 연결된 컴퓨터의 설정을 재구축 하거나 변경할 필요가 있을 때, 사용할 수 있는 도구나 기법들에 대해서 설명합니다. 배선에 관한 간략한 지침으로 시작해서, 연결성 시험을 위한 ping의 사용과 원리, ping 사용시 발생 가능한 문제점을 설명하고, ping을 대신할 만한 도구들에 대해서 알려줍니다. 그리고, 네트워크 연결의 적절한 동작여부와 링크 성능을 알아볼 수 있는 도구들을 가르쳐 줍니다.

5장 ~ 7장
이 책에서 가장 중요한 장으로, 패킷 캡쳐에서 가장 강력한 도구인 tcpdump를 설명하고, 이와 함께 또는 독립적으로 사용할 수 있는 ethereal 같은 그밖에 여러 도구들을 설명합니다. IP 네트워크 상에서 정보를 수집하는 도구와 감시도구, SNMP에 대해 설명합니다.

8장 ~ 12장
네트워크의 성능을 평가하고 모니터링 하는데 사용될 수 있는 도구와 기술들을 설명하고, 연결을 제공하기 위해 하위 수준에서 동작하는 연결 프로토콜을 조사하기 위한 몇 가지 도구와 커스텀 패킷 생성이나 부하 테스트를 위한 도구를 설명합니다. 몇 가지 애플리케이션 수준 프로토콜을 살펴보고, 이들 프로토콜에 문제가 생겼을 때 접근방법과 어떤 도구들이 사용 가능한지 설명하고 있습니다. 문제해결 과정에서 이 책 전반에 걸쳐 소개한 도구들을 함께 사용할 수 있는 방법에 대해 몇 가지 전략을 제시하고, 성능분석과 병목분석에 도구를 이용하는 방법을 설명합니다.

이 책의 가장 큰 장점이라면 여러 가지 도구들의 사용법을 알 수 있다는 것과 문제해결 과정에서 상황에 따라 어떤 도구를 사용해야 하는지 가르쳐 준다는 것입니다. 그리고 이전부터 알고 사용하고 있던 도구들이었지만, 지금까지 몰랐던 옵션이나 기능에 대해서도 자세하게 살펴볼 수 있는 경험(?)도 할 수 있을 것입니다.

이 책에서 가장 기억에 남는 말이 있다면 『네트워크 관리자는 스스로 학습해야 한다.』는 것입니다. 이 책에 소개된 수많은 도구들을 이용해서도 많은 것을 배울 수 있겠지만, 이 책에 소개된 도구들이 다가 아니겠죠? 이보다 더 많은 도구들이 인터넷에 있고, 네트워크를 관리하고 유지/보수하는 책임자로서 더 많은 것을 배워야 한다는 저자의 의도가 숨어 있는 말 같았거든요...


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo