IT EXPERT, 유닉스 시스템 프로그래밍
이 책은 다양한 실무 경험을 가진 저자가 풍부한 강의 경험을 바탕으로 풀어낸 효율적인 프로그래밍 비법을 전수한다. 시스템 프로그래밍에 필수적인 셸 프로그래밍, 방대한 오픈 소스에 질린 중급자를 위한 명령어 만들기, 실무자를 대상으로 하는 다양한 실습 과제, 바로 찾아 쓸 수 있는 사전식 시스템 관련 함수와 관련 예제 등을 다루고 있다.
전문가의 현장실무서답게 책의 두께는 바이블 못지 않았다.
전체적인 책의 구성은 유용한 팁, 함정을 피해갈 수 있는 주의사항들을 따로 정리한 ‘여기서잠깐’, 전문적인 내용을 필요로 하는 독자를 위한 관련서 리스트(출판사의 횡포인가...^_^;), 소스에서의 키포인트, 각 장이 끝날 때마다 핵심을 요약해놓은 ‘꼭 기억하고 넘어가세요’ 필자가 현장에서 경험한 테크닉, 지루하지 않은 에피소드들로 구성되어있다. 1000페이지 분량이 부담이 되지만 너무 딱딱하지 않은 문장들과 대화식의 내용이 읽는 이로 하여금 지루함을 느끼게하지 않았다. 비록 글자크기와 문단구조들은 책을 늘릴 수 있도록 했지만 말이다.
학교에서 리눅스를 가지고 이것저것하고 있는 초보중의 초보이다. 운영체제라는 과목을 수강하면서 유닉스의 내부구조를 배울 기회가 있었는데 프로세스의 일대기를 말로만 나열해놓은 책과 약간의 프로그램 소스로 인해 나에게서 유닉스를 점점 멀어지게 했다. 그당시 나는 유닉스 명령들만 알고 있던 지라 유닉스의 내부구조를 알고 싶은 욕망에 수업을 들었었다. 하지만 마지막 막상 기말고사가 끝나자... 도대체 뭘 배웠지?라는 생각과 함께 뒤돌아봤을 때 남는 것은 약간의 이론적인 부분밖에 없었다.
이 책을 보면서 느낀 점은 운영체제의 끝은 어디일까...라는 생각이었다. 단지 명령어만 입력하고 배포판만 사용했던지라 다소 리눅스를 우습게 봤던 나에게 파이프와 리다이랙션등은 예술이란 생각이 들 정도이다.
첫 번째 장의 vi의 에러와 명령어 옵션부분은 초보자에겐 경각심(?)을 일깨워주는 부분이었다. 특히 o와 O의 중요성을 강조한 사람은 이 책의 지은이밖에 없을 것이다. 현장 실무자다움을 느낄 수 있는 대목이었다. 첫 장은 일반적인 셸 명령과 vi의 편리한 기능들을 나열했다. 여기서 말하는 편리함이란 현장 실무에서의 편리함을 말하는 것일 테고 초보에겐 경각심을 불러일으키기에 딱 좋은 부분이다.
컴파일러와 vi에 모든 것을 맡긴 프로그래머는 없을 것이다. C관련 툴 부분은 덩치 큰 소스들을 관리할 수 있는 다양한 방법을 소개한다. 프로그램들 옵션의 무료함을 달래는 예제들은 툴의 필요성을 느낄 수 있게 하는 부분이다. 어쩌면 C언어 바이블에서나 볼 수 있는 코딩시 유의사항을 무의미하게 하는 것이 아닐까(?)하는 생각을 해본다. 프로그래밍의 완결성을 위한 독자들의 노력을 한결 가볍게 해주는 부분이다.
명령어를 익히면 OS를 마스터한다고 생각했었다. 옵션과 여러 특수문자의 조합은 무적의 기능을 하는 유틸리티를 생산해낸다. 익숙하지 않는 셸 프로그래밍의 다양한 예제와 복잡한 기능도 간단한 몇 개의 문자로 해결 할 수 있는 경우를 제시하였다. 분류에 보면 중/고급용이라고는 하지만 초보자도 봐야하는(?)부분도 있는 책이다.
2부 유닉스 명령어 만들기 부분은 어느 정도의 지식이 없으면 접근하기 힘든 부분이다. 물론 중/고급사용자를 위한 책이라고 그렇겠지... 초보자인 나에게는... 헙~
기본적인 명령어부터 시스템관련명령어까지의 엄청난 양의 소스에 질려 분석하기도 전에 담배를 물어야했던 내겐(역시 초보...) 궁금증을 유발시키는 역상처리는 전체적인 명령의 흐름도를 그릴 수 있게 해준다. 수백 라인의 소스를 분석해 본적이 있다면 이 책의 소스분석을 보면서 저자의 세심함을 느낄 수 있을 것이다. 명령어 만들기 부분은 유닉스의 내부를 어느 정도 파헤치고 사용할 수 있는 준비단계라 생각한다. 하지만 각 명령의 알고리즘설명을 코딩 전에 넣었으면... 하는 초보의 바램이다.
시스템정보를 보여주는 프로그램을 작성하면서 문제점을 분석하고 해결하는 방법을 구현한 프로그램을 작성하는 것으로서 유닉스 시스템 프로그래밍의 기나긴 여정은 끝난다. 비록 현장에서 실무적인 일을 하지는 않았지만 이 책을 보면서 그들이 어떤 일을 하고 그에 대한 해결방법이 무엇인지를 알 수 있었다. 현장의 분위기를 느낀 후에는 학습할 커리가 생기고 초보, 어설픈 중급자에겐 경각심과 로드맵을 제시해주는 저자의 땀이 흥건히 배어있는 ‘유닉스 시스템프로그래밍’. 초/중/고급을 나누는 기준은 잘 모르겠지만 이 책은 개인적으로 유닉스를 다루는... 모든 사람들에게 권하고 싶은 책이다.
ps 시스템 함수부분은 저자의 ‘함수는 만드는 것이 좋다’라는 말을 애매모호하게 하는 것 같다. 하지만 여타 함수 정의만 설명한 다른 책과는 달리 예제를 수행하면서 방대한 함수들을 느낄 수 있게 해주었다. 따로 분리했으면...하는 절실한 바램이 든다.