메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

IT EXPERT, 유닉스 시스템 프로그래밍

IT EXPERT, 유닉스 시스템 프로그래밍

한빛미디어

집필서

절판

  • 저자 : 정재은
  • 출간 : 2002-07-28
  • 페이지 : 992 쪽
  • ISBN : 8979141858
  • 물류코드 :1185
  • 초급 초중급 중급 중고급 고급
3.7점 (19명)
좋아요 : 16
IT 전문가의 현장 실무서
     성공적인 유닉스 시스템 프로그래밍을 위한 비법


이 책은 유닉스 시스템 프로그램을 위한 실무서다. 유닉스 프로그래밍을 하다보면 일반적으로 몇 천 라인의 소스를 분석해야 한다. 하지만 실제로 에러를 발생시키는 것은 극히 일부분이므로 전체 코드를 분석할 필요 없이 그 부분을 쉽게 찾아 수정할 수 있다면 작업이 상당히 간편해질 것이다. 이 책은 이렇게 구성된다. 유닉스 시스템 프로그래밍을 하면서 꼭 알아야 할 내용과 실무에서 유용하게 사용할 수 있는 팁(유용하지만 잘 활용하지 않는 부분)과 경험을 제공해 현직 시스템 프로그래머들이 효율적으로 작업할 수 있도록 도움을 주고자 한다.

이 책의 특징
  • 다양한 실무 경험을 가진 저자가 풍부한 강의 경험을 바탕으로 풀어낸 효율적인 프로그래밍 비법
  • 시스템 프로그래밍에 필수적인 셸 프로그래밍
  • 방대한 오픈 소스에 질린 중급자를 위한 명령어 만들기
  • 실무자를 대상으로 했던 다양한 실습 과제 수록
  • 바로 찾아 쓸 수 있는 사전식 시스템 관련 함수와 그 예
중요 내용
  • 방대한 시스템 함수 완벽 정리
  • 현장 중심의 실습 과제 수록
  • 유닉스 명령어 제작 과정 마스터
정재은 저자

정재은

정재은

e-mail: imarchie@korea.com
homepage: http://www.freechal.com/AdvancedUNIX/

약력
  • 숭실대학교 소프트웨어 공학과 졸업
  • 숭실대학교 컴퓨터학과 석사 졸업
  • Bit workstation 6개월 과정 수료
  • 삼보마이크로시스템 Workstation Os team R&D 1년 2개월
  • bustech(주) 8개월
  • 프리즘 정보 시스템(주) Sofeware 기술 연구소 현재 재직 중(1년 2개월)
경력
  • 서울 프리랜서 그룹 2급 회원
  • union 프리랜서 회원
  • 전 구미 정보처리 학원 C 강사
  • windnet system admin (mud game 업체)
  • 숭실대학교 단대 소프트웨어 공모전 입상
  • NCR system program/shell/network program unix admin 강사
  • 프로랭스 회원(영어 번역 업체)
강의 경력
  • 구미 정보 처리학원 강의
  • NCR 강의
  • KCC 정보통신 강의
  • 서울 통신 기술 강의
  • 알리안츠 제일 생명 강의
  • 삼성전자 강의
  • 삼성 멀티 캠퍼스 강의

1부. 시스템 프로그래머가 꼭 알아야 할 사항들

1장. 유용한 기법들

     01 vi 편집기 관련 기법
        - 어떤 편집기를 선택할 것인가?
        - 어떤 셸을 선택할 것인가?
        - 가장 자주 접하는 vi 에러
        - 알아두면 편리한 vi 명령어
        - 알아두면 편리한 vi 옵션

     02 필수 작업
        - man 페이지 이용
        - 계정 생성
        - 파일 삭제
        - 파일 검색
     요약 - 꼭 기억하고 넘어가세요

2장. 효율적인 프로그래밍을 위한 C 관련 툴


     01 태그 파일 생성 툴 : ctags
     02 디버거 : gdb
     03 프로젝트 관리 툴 : make
     04 데이터 처리에 유용한 툴 : awk
     05 스트림 편집기 : sed
     06 검사 툴 : lint
     정재은의 현장 테크닉 - 유닉스 시스템에서의 전원끄기
     요약 - 꼭 기억하고 넘어가세요

3장. 시스템 프로그래머를 위한 셸 프로그래밍

     01 셸 관련 기본 사항
     02 기본 명령어
     03 어떤 셸을 선택할 것인가
     04 유용한 셸 프로그래밍
     정재은의 현장 테크닉 - 셸 프로그래밍 잘하는 비법
     요약 - 꼭 기억하고 넘어가세요

2부. 유닉스 명령어 만들기

4장. 파일 관련 명령어

     01 디렉토리 내용보기 : ls
     02 파일보기 : cat
     03 복사하기 : cp
     04 파일 앞부분 출력하기 : head
     05 중복된 문장 찾기 : uniq
     06 파일을 다양한 진수로 보여주기 : od
     07 문자, 단어, 라인 수 세기 : wc
     정재은의 현장 테크닉 - UML을 배웁시다
     요약 - 꼭 기억하고 넘어가세요

5장. 시스템 관련 명령어

     01 디렉토리와 파일 크기 구하기 : du
     02 사용자 정보 구하기 : finger
     03 프로세스 상태 구하기 : ps
     04 파일 시스템의 사용량 보기 : df
     요약 - 꼭 기억하고 넘어가세요

6장. 검색 관련 명령어

     01 파일 찾기 : find
     02 특정 문자(열) 찾기 : grep
     요약 - 꼭 기억하고 넘어가세요

3부. 실제 프로그램 작성하기

7장. 시스템 정보 보여주기

     01 프로그램 작성 전 주의 사항
     02 문제 파악 단계
     03 설계 단계
     04 구현 단계
     05 테스트 단계
     요약 - 꼭 기억하고 넘어가세요

4부. 부록

부록 A. 시스템 함수

부록 B. 중요한 제한값

부록 C. 포인터

부록 D. 시그널

책에는 IT Expert라는 것이 붙어있지만, 직접 책을 본 결과 전문가용은 아니다..



vi에서 부터 시작해서 간단한 unix 명령어 몇개를 만들어보는데, 그 수준이 본인의 경우 2학년 때 system programming 시간에 배웠던 내용에도 미치지 못하였다.



따라서 이 책은 전문가가 아니라 unix 프로그래밍에 이제 막 입문하는 사용자를 대상으로 하는 것 같다. (그렇게 해서 전문가가 되라는 의미인건가...?)



unix programming이다 보니 system 자체에 대한 설명은 부족한 것 같아 이런 내용을 담은 책을 본교재로 쓰고 대학 2학년 정도의 system programming 과목 부교재로 정도로 쓰면 괜찮을 것 같다.

유닉스 시스템 프로그래밍에 관한 외서들은 대부분은 유닉스 시스템 콜에 대한 설명을 위주로 하고 있다. 이 책은 실무 위주로 기술하다보니 주요 시스템 콜에 대한 설명이 다소 부족하게 느껴진다. 주로 유닉스 명령들을 구현하는 식으로 내용이 전개되고 있는데, 초보자가 보기에는 좋지 않은 듯하다. 초보자들에게 실무적인 구현보다도 기본에 충실한 책이 더 어울리기 때문이다. 따라서, 실무적인 접근을 필요로 하는 중급자들이 참고할 만한 책인 것 같다.

초보자에게만 추천하고 싶은 책입니다...

내용은 시스템 프로그래밍을 담고 있지만 편집기에 대한 설명이라든지

쉘 프로그래밍 등도 담고 있어서 초보자용으로 사용하기엔 그럭 저럭 쓸만하네요... ㅡㅡ;



유닉스의 명령어가 어캐 구현되고 있는지로 전체적인 흐름이 흐르고 있는데

이걸두고 EXPERT라고 책 재목을 붙인건 점 너무했다는 생각이 들 정도네요...



고급 프로그래머들은 이 책 사놓고 인상(?)을 상당히 오래 쓰고 있었을 듯 하네요... ^^;

유닉스 시스템 프로그래밍을 처음 접하시는 분에게 권하고 싶네요...

다만 점 더 시스템 프로그래밍에 대해 공부하고 싶다면

스티븐스의 Advanced Programming in the Unix Environment 원서를 공부해 보시길...



책 내용에서 3부에 있는 내용은 맘에 드네요...

프로그래밍을 하기위한 문제 파악, 설계, 구현, 테스트 순으로 정리해 놓은 것이

역시(?) 초보자들에게는 중급으로 가는 많은 도움이 될 것 같습니다..



4부 부록은 초보를 위한 시스템 함수, 포인터, 시그널 등이 잘 나와 있지만

man page 사용법으로 대체해서 페이지 수를 줄여 책 값을 낮추었더라면 하는

아쉬운 부분이 있네요...(이거땜시 책이 상당히 두꺼워 짐...)



초보자에게는 설계 및 구현 법을 알려 주는 책이지만 책값이 비싸고 책

재목이 내용과 전혀 매치가 되지 않는 등 문제가 점 있는 책입니다..



초보자 분들이나 구현, 설계 부분을 전혀 모르시는 분 중

필요하다고 생각되는 분은 구입하셔서 참고하시길 바랍니다..



ps. 책 자체가 잘못된 것이 아니라 책 재목과 그 내용이

일반 사람들에게 수긍될 수 있도록 정하고 선전하는 것이 좋다고 생각되네요..

너무 맞지 않으니 사람들이 반발하는게 아닐지요...

학교 ocu강의중 시스템 프로그래밍이란 수업의



참고도서로서 사용되어서 이책을 구입하여



읽어보게 되었다.



유닉스 시스템 프로그래밍이지만, 실제로는



리눅스에서 프로그래밍을 하였는데 약간의 수정



을 통하여 그대로 접목할수 있었던 책이었다.



기본 명령어를 만드는 과정과, 시스템을 모니터



링하기 위해서 만드는 프로그램은 시스템을



이해하는데 많은 도움이 되었다.

앞에만 봤는데.

strcmp()를 쓸 때 #include 를 안했더군요.

그래도 유닉스에서는 잘되나보죠?

저는 유닉스를 안 써봐서 모르겠지만 리눅스 초보들이 보면 고생 좀 할 듯

학부 4학년으로 올해 system programing 과목을 듣게 되었다.

후배 방에서 (먼지가 뽀얗게 앉은) 이 책을발견해서 수업에 참고가 될까 해서 읽게 되었다.



결론은.. 절대 서평들 만큼 그렇게 좋은 책이 아니다. 라는 것이었다.

Unix를 전혀 모르고 공부를 시작하는 사람이라면 모르겠지만

초반부의 명령어 구현 부분은 어느 분이 말씀하신 대로 학부 2학년 수준을 벗어나지 못하고,

뒷부분의 시스템 분석 소스는 약간 복잡한 echo server 수준이라고 밖엔 할 수가 없었다.

책의 가격과 기타 소스 수준, 실용성 등을 생각해 보면 이 책을 선택할 이유가 없다.

죄송하지만.. 프로그램을 만들기 전에 소스부터 찾아보라는 저자 분의 조언을 봤을땐,

틀린 얘기는 아니지만 프로그래밍 참고서에서 하기에는 어이가 없는 것 같았다..



system programming에 관심이 있다면.. 물론 stevens 시리즈 3권이 훨씬 도움된다..

이 책은 아니었다..

현재 나는 웹프로그래머로 회사를 다니고 있다.

하지만 늘 관심 분야는 많았다. 내 성격처럼...



항상 나의 관심에 포함되어 있던 것 중 하나인 시스템 프로그램은 언제나 어려운 분야였다.



몇 권의 책을 읽었지만, 볼 때마다 새롭다.

이전에 본 책인 유닉스 시스템 프로그래밍 SVR4 (한빛미디어)

학교에서 교재로 쓴 다던 UNIX 시스템프로그래밍 2/E (Addison-Wesley, 홍릉과학출판사)가 그 책들이다.



유닉스 시스템 프로그래밍 SVR4는 특히 System V Release 4를 중점적으로 다룬 책이었다.

UNIX 시스템프로그래밍 2/E는 학교에서 교재로 쓰는 것에서 알 수 있듯이 책은 얇지만 핵심적인 것들이 자세히 다뤄져 있었던 것 같다.



하지만 늘 그렇듯 책만 읽고 실제로 활용하지 못한 지식은 금방 까먹어 버렸다.



이번에 읽은 IT Expert 유닉스 시스템 프로그래밍은 위의 2책과는 많이 다른 책이었다.

다른 책들이 시스템 콜과 같은 것을 알려주고 간단한 예제를 통해 설명을 하려 했지만,

이 책은 시스템에서 사용되는 유틸리티를 제작하는 단계를 보여주고 그 소스에 관한 설명을 위주로 한다.



초반부에는 소위 시스템 프로그래밍하면 떠오르는 부분이 아닌 유닉스 유틸리티에 관한 설명들이 나온다.

프로그래밍 관련 유틸리티, 쉘 프로그래밍등에 관한 것이다.

아직 경험이 부족한 나에게는 도움이 되긴 했지만,IT Expert 라는 타이틀과는 다소 어울리지 않는 부분인 것 같다.

디버거(gdb) 사용법이나 make, lint 등과 같은 유틸리티는 웹 문서를 통해서도 얼마든지 알 수 있는 것들이다.

vi 사용법에 관한 내용도 나온다.

이런 부분은 GNU 소프트웨어로 프로그래밍하기와 같은 책에서 자세히 다루고 있는데,

유닉스 시스템 프로그래밍 책에서 이처럼 다루기는 다소 맞지 않는 것 같다.

총 4부로 된 내용의 1부와 2부가 이 내용들이다.



2부는 유닉스 명령어 만들기이다.

ls, cat, cp 등 우리가 유닉스에서 많이 사용하는 명령어들을 실제로 구현하고 설명을 해 줌으로써,

기본(?)은 알지만 활용하는 법을 모르던 나와 같은 사람들에게 많은 도움이 되었다.

특히 부분 부분 핵심을 설명해 줌으로써 이해를 도왔다.



3부는 실제 프로그램 작성하기이다.

2부에서 보여준 간단한 명령어 작성과는 달리 좀 더 깊숙한 부분을 알려준다.

시스템 정보를 보여주는 프로그램을 작성해 봄으로써 한 단계 업그레이드 될 수 있는 부분이다.



4부는 부록이다.

이 부록에는 모든 시스템 함수를 설명해 놓았다.

시스템의 man 페이지를 통해 시스템 함수에 대한 설명을 볼 수는 있다.

하지만 영문으로 된 문서이다. ㅡ.ㅡ;;;

그리고 부록에는 포인터와 시그널에 관한 내용이 나온다.

포인터는 C 의 핵심이라 할 수 있다.

시스템 프로그래밍하면 C 를 떠올리는 나로써는 조금은 당황한 부분이다.

시스템 프로그래밍을 할려면 C는 기본이 아닌가?

(물론, 나도 C를 잘하진 못한다.;;)



전체적으로 기존의 시스템 프로그래밍 책과는 많이 다른 책이다.

나는 개인적으로 오라일리 책을 좋아하고 물론 한빛미디어의 책도 좋아한다.

그래서 올해 새로 선 보이는 한빛의 야심작(?)인 IT 백두대간 시리즈와

IT Expert 시리즈에 많은 기대를 했다.

기대가 크면 실망도 큰 법인지... IT Expert 시리즈의 첫 책인 이 책을 읽고 조금은 실망스럽다.

IT Expert 시리즈의 목적은 전문가로 가기위한 것이다.

하지만 전반적으로 IT Expert라는 타이틀에는 좀 먼가 부족한 것 같다.

IT 백두대간 시리즈로 이 책이 나왔다면 정말 좋은 책이 되었을지도 모르겠다.

책을 처음 보았을때 천페이지 가까운 볼륨에 기가 죽었었다. "언제 저 책을 다 볼 수 있을려나..." 하지만 그러한 걱정은 책을 보면서 점점 사라져 갔다.



일단 번역서가 아니란 점에서 후한 점수를 주고 싶다. 대부분의 번역서는 번역 자체에 급급하기 때문에 지루해지기 쉽상이었다. 하지만 이 책의 곳곳에 지루함을 덜 수 있는 요소들이 있고, 역시 우리말로 되어 있어야 머리 속에 팍팍 들어온다는 것을 확인할 수 있었다.



편집 자체도 기존의 한빛 책이나 오라일리 책들과는 차별화 되어 있다는 것을 쉽게 느낄 수 있었다. "스페셜 가이드"에서는 다른 책의 어느 부분을 참고하라고 자세히 알려주며, "한마디만 합시다", "여기서 잠깐" 에서는 개발자에게 정말 유용한 팁이나 정보들을 알려 주고 있다. 소스 코드는 설명과 함께 CD 부록의 어느 위치에 있는지도 알려주고 있다. 그리고 각 장의 끝에서는 친절하게 요약도 정리되어 있다. 이렇게 다양하게 편집이 되어 있어서 다른 책들과는 사뭇 다른 느낌을 받았다.



책 전체의 내용을 훓어보면 간단한 유닉스 명령에서부터 쉘 프로그래밍, C 프로그래밍에 이르기까지 많은 내용을 담고 있다. 그렇다고 다른 책들과 같은 내용을 지루하게 다루는 것은 아니다. 기존의 다른 책들에서 다루는 평이한 내용들은 과감히 빼고, 현장에서 꼭 필요하거나 유용한 것들을 다루기 때문에 책을 읽어 갈수록 점점 다음 내용이 궁금해지는 것이었다. 본인도 아직 다 읽어 보지는 못했지만, 그동안 유닉스 환경에서 개발을 하면서 "아. 이럴때는 어떻게 해야 하나..." 라고 생각했던 문제들을 이 책에서는 상당 부분 긁어 줄 수 있었다.



각장의 내용을 살펴보면...



1장. 유용한 기법들

유닉스를 사용하는데 유용한 명령이나 기법들을 소개.



2장. 효율적인 프로그래밍을 위한 C 관련 툴

C 프로그램 자체나 함수 설명을 하는 것이 아니라, 유닉스 환경에서 개발자에게 필요한 도구에 대해서 설명.



3장. 시스템 프로그래머를 위한 쉘 프로그래밍

몇 백 라인의 C 프로그램보다 몇 줄의 쉘 프로그램이 유용할 수 있다는 것을 가슴으로 느끼게 해준다.



4장. 파일 관련 명령어 , 6장. 검색 관련 명령어

파일을 다루는 명령과 내용 검색에 대해서 자세히 나와 있다.



5장. 시스템 관련 명령어

유닉스 관리자나 시스템 프로그래머에게 유용한 명령과 프로그램을 소개한다.



7장. 시스템 정보 보여주기

마지막 실전 예제로 시스템 정보를 보여주는 프로그램을 C로 작성한다.



전체적으로 내용이나 편집등에서 좋은 편이지만, 이 책도 조금 아쉬운 점은 있다. 시스템 프로그래밍에서 빠지지 않는 네트워크 프로그램에 대한 내용이 부족하다는 점인데, 부록에서 시스템 함수들에 대해서 다루고 있는 것으로 위안을 삼았다.

DOS 시절 DIR이라는 명령어를 프로그램 해보려고 한 적이 있었는가? 본인의 경우는 꿈도 꾸지 못 했었다. 일단, 시스템에 대한 지식도 부족했고, 어떻게 접근해야 하는지 알 수도 없었으므로… 다만 여느 end-user처럼 주어진 환경을 그저 이용하는 수준이었다. 게다가 DOS 시스템 자체에 대해서는 그다지 큰 매력을 느끼지 못했었다.



그 후 윈도우 시스템이 나왔다. 편리한 사용은 큰 장점이었지만, 여전히 윈도우 사용자일 뿐 뭔가 부족한 점을 느끼고 있었다. 그러던 중 리눅스라는 운영체제(OS)를 접하게 되었는데, 시스템 코드가 제공될 뿐만 아니라 무료라는 점이 본인의 관심을 끌었다. 의지만 있다면 얼마든지 새로운 명령어를 추가할 수도 있을 뿐만 아니라 드디어 새로운 OS를 설계, 구현할 수도 있는 길이 열린 것이다.



그러나, 현실은 그렇게 만만하지 않았다. 한가하게(?) 시스템 코드를 공부할 시간도 없었을 뿐만 아니라, 도대체 어디서부터 어떻게 시작해야 할 지 알 수 없는 노릇이었다. 다만 한 때의 관심으로 접어두었는데, 『유닉스 시스템 프로그래밍』이라는 책이 출간되었고 우연치 않게 이 책을 읽어볼 기회가 생겼다. 처음에는 여느 시스템 프로그래밍 책처럼 매뉴얼식 명령어 나열에다가 몇 가지 팁 정도일 것이라고 예상했는데, 목차를 보는 순간 그런 걱정은 기우였음을 알게 되었다.



이 책은 예상과 달리 단순히 시스템 매뉴얼이 아니라, 시스템관리자, 개발자, 실무자 뿐만 아니라, 시스템에 관심이 많은 일반 사용자들이 어떻게 시스템 프로그램을 시작하고 보다 높은 수준으로 올라갈 수 있는지 그 길을 보여주고 있었다. 편집기, 셸, 컴파일러, 디버거… 등 각각 한 권씩 책에 해당하는 내용의 핵심을 적절하게 보여주고 있었다. 한 마디로 하자면 시스템 프로그래머의 길을 보여주고 있는 것이다. 간간히, 실무의 경험으로 이론에만 치우칠 수 있는 오류를 극복할 수 있게 해주었다.



따라서 본인과 같이, 항상 end-user로서만 사용하던 ls와 같은 시스템명령어를 실제로도 프로그램해 볼 수 있다는 가능성을 보여주며, 더 고급 시스템 프로그램으로 만들어 갈 수 있는 도구 및 길을 제시한다는 점에서 아주 만족할 만한 책이라고 할 수 있다.



다만 아쉬운 점이 있다면, 책 분량에 비해 내용이 중복되는 느낌이 많아 지면 낭비라는 생각이 들었고, 보다 잘 기획된 개정판이 나와서 초판의 부족함을 메워줄 수 있었으면 좋겠다. 어찌되었건 제대로 된 유닉스시스템에 대한 책 한 권 없는 국내 실정에서 시스템 프로그램에 관심 있는 많은 사람들에게 좋은 길잡이가 될 수 있는 책이 나와서 반가운 마음이다. 앞으로도 이와 같은 책이 많이 출판되어 국내 시스템 프로그램계에 많은 발전이 있었으면 좋겠다.

1. 서론

평소에 컴퓨터에 관심이 있다면 유닉스에 대해서 한번쯤은 들어 보았을 것이다. 이런 궁금증을 풀어보려 책을 찾아보았지만 국내에 출간된 유닉스 관련서적들은 유닉스 사용법이나 네트워크 프로그래밍에 집중되어 있었다. 그나마도 옛날에 쓰인 책들이 많아서(물론 변하지 않는 진리도 있지만) 최근에 나온 기술들을 충분히 활용하지 못한 책들이 대부분이었다. 그러던 중 이 책을 접하게 되었고 그동안 유닉스 관련 분야에서 접하지 못했던 시스템 프로그래밍이란 영역을 알게 된 계기가 되어 주었다. 지금부터는 이 책이 가지고 있는 특징과 장점, 단점들을 알아보겠다.



2. 본론

처음 책을 여는 순간 갑자기 고등학교 때가 공부하던(?) 생각이 낫다. 무슨 소리이냐면 흡사 구성이 고등학교 참고서와 비슷했다. 즉, 단원마다 무었을 공부해야 할 것을 알려주고 나중에 정리까지 해준다. 이 책이 다른 컴퓨터 관련 책들과 다른 특징 및 장점을 정리하면 다음과 같다.



1) 컴퓨터 책 같지 않은 컴퓨터 책

보통의 책들을 보면 각 단원 마다 제목이 있고 이 단원에 관심이 있으면 공부하고 아니면 넘어가라는 식의 백과사전식 나열이지만, 이 책은 왜 이 단원을 공부해야 되는지?, 그렇다면 어떤 것들을 공부해야 되는지를 제시한다. 예를 들면 "ctags"관한 내용에서 이것이 어떤 효과를 내며 프로젝트와 같은 대형 작업에서 효율적이라는 이유를 들며 필요성을 역설하고, 사용방법까지 명쾌하게 알려주고 있다.



2) 요약이 명쾌하다

요약은 그 단원에서 미쳐보지 못하거나 중요한 내용을 다시 상기시키려는 목적을 가지고 있다. 하지만 대부분의 책은 어쩔 수 없이 요약을 싣는 것처럼 보인다. 하지만 이 책은 눈에 들어오게 요약을 구성했으며, 요약으로써의 기능도 잘 해내고 있다.



3) 나름 데로의 보너스

이 책의 보너스는 곳곳에 숨어있는 글들이다. “한 마디만 합시다.”, “여기서 잠깐”은 책을 읽는 집중력을 향상시켜 주었고, “스페셜 가이드”는 다른 한빛도서를 참조 할 수 있는 기운을 주었다.



4) 내용이 좋다

이것이 최대의 장점이 될 수 있는데, 컴퓨터 관련 분야에 있다보면 많은 컴퓨터 관련 책을 접하게 되고, 책을 보는 눈(물론 다른 분야도 마찬가지다)이 생기게 된다. 이 책은 그동안 부족했던 시스템 프로그래밍에 대한 내용으로 독자들을 만족시킬 책이 될것이며, 나 또한 만족한다.



위에서는 이 책의 특징 및 장점을 알아보았다. 하지만 세상에 Perfect, Never, Always는 없다고 믿는 나는 이 책 또한 단점도 존재한다는 것을 말하고 싶다. 이 책이 가지고 있는 단점들은 다음과 같다.



1) 소스 나열 식 구성이 보인다.

책의 후반부로 갈수록 소스들을 나열하고 설명하는 과정이 무미건조하게 나열된다. 물론 많은 내용을 싣고 독자들에게 보여준다는 것은 이해가 가지만 책의 처음에 보여준 참신함은 많이 떨어져 보인다. 하지만 이런 단점이 이 책에만 국한되는 것은 아니고 다른 책에서도 나타나므로 굳이 이 책만의 단점으로 볼 수는 없지만 위에 나열한 장점으로 문제를 극복할 수 있었지 않나 싶다.



2) 부록 CD의 내용이 부실하다.

많은 것을 바라지는 않지만 소스와 tool 하나만으로는 만족할 수 없다. 다양한 툴과 문서 등이 수록되었으면 좋았을 듯 하다.



3. 결론

분명히 유닉스 관련 서적으로는 추천할 만한 책이며, 개인적으로도 정말 마음에 드는 책이다. 또한 그동안 컴퓨터 관련 서적에서 보여주지 못했던 참신한 구성과 내용은 이 책의 가치를 더욱 높였다고 평가하고 싶다. 앞으로도 이런 좋은 책들이 많이 나올 것을 기대한다.

전문가의 현장실무서답게 책의 두께는 바이블 못지 않았다.



전체적인 책의 구성은 유용한 팁, 함정을 피해갈 수 있는 주의사항들을 따로 정리한 ‘여기서잠깐’, 전문적인 내용을 필요로 하는 독자를 위한 관련서 리스트(출판사의 횡포인가...^_^;), 소스에서의 키포인트, 각 장이 끝날 때마다 핵심을 요약해놓은 ‘꼭 기억하고 넘어가세요’ 필자가 현장에서 경험한 테크닉, 지루하지 않은 에피소드들로 구성되어있다. 1000페이지 분량이 부담이 되지만 너무 딱딱하지 않은 문장들과 대화식의 내용이 읽는 이로 하여금 지루함을 느끼게하지 않았다. 비록 글자크기와 문단구조들은 책을 늘릴 수 있도록 했지만 말이다.



학교에서 리눅스를 가지고 이것저것하고 있는 초보중의 초보이다. 운영체제라는 과목을 수강하면서 유닉스의 내부구조를 배울 기회가 있었는데 프로세스의 일대기를 말로만 나열해놓은 책과 약간의 프로그램 소스로 인해 나에게서 유닉스를 점점 멀어지게 했다. 그당시 나는 유닉스 명령들만 알고 있던 지라 유닉스의 내부구조를 알고 싶은 욕망에 수업을 들었었다. 하지만 마지막 막상 기말고사가 끝나자... 도대체 뭘 배웠지?라는 생각과 함께 뒤돌아봤을 때 남는 것은 약간의 이론적인 부분밖에 없었다.



이 책을 보면서 느낀 점은 운영체제의 끝은 어디일까...라는 생각이었다. 단지 명령어만 입력하고 배포판만 사용했던지라 다소 리눅스를 우습게 봤던 나에게 파이프와 리다이랙션등은 예술이란 생각이 들 정도이다.



첫 번째 장의 vi의 에러와 명령어 옵션부분은 초보자에겐 경각심(?)을 일깨워주는 부분이었다. 특히 o와 O의 중요성을 강조한 사람은 이 책의 지은이밖에 없을 것이다. 현장 실무자다움을 느낄 수 있는 대목이었다. 첫 장은 일반적인 셸 명령과 vi의 편리한 기능들을 나열했다. 여기서 말하는 편리함이란 현장 실무에서의 편리함을 말하는 것일 테고 초보에겐 경각심을 불러일으키기에 딱 좋은 부분이다.



컴파일러와 vi에 모든 것을 맡긴 프로그래머는 없을 것이다. C관련 툴 부분은 덩치 큰 소스들을 관리할 수 있는 다양한 방법을 소개한다. 프로그램들 옵션의 무료함을 달래는 예제들은 툴의 필요성을 느낄 수 있게 하는 부분이다. 어쩌면 C언어 바이블에서나 볼 수 있는 코딩시 유의사항을 무의미하게 하는 것이 아닐까(?)하는 생각을 해본다. 프로그래밍의 완결성을 위한 독자들의 노력을 한결 가볍게 해주는 부분이다.



명령어를 익히면 OS를 마스터한다고 생각했었다. 옵션과 여러 특수문자의 조합은 무적의 기능을 하는 유틸리티를 생산해낸다. 익숙하지 않는 셸 프로그래밍의 다양한 예제와 복잡한 기능도 간단한 몇 개의 문자로 해결 할 수 있는 경우를 제시하였다. 분류에 보면 중/고급용이라고는 하지만 초보자도 봐야하는(?)부분도 있는 책이다.



2부 유닉스 명령어 만들기 부분은 어느 정도의 지식이 없으면 접근하기 힘든 부분이다. 물론 중/고급사용자를 위한 책이라고 그렇겠지... 초보자인 나에게는... 헙~

기본적인 명령어부터 시스템관련명령어까지의 엄청난 양의 소스에 질려 분석하기도 전에 담배를 물어야했던 내겐(역시 초보...) 궁금증을 유발시키는 역상처리는 전체적인 명령의 흐름도를 그릴 수 있게 해준다. 수백 라인의 소스를 분석해 본적이 있다면 이 책의 소스분석을 보면서 저자의 세심함을 느낄 수 있을 것이다. 명령어 만들기 부분은 유닉스의 내부를 어느 정도 파헤치고 사용할 수 있는 준비단계라 생각한다. 하지만 각 명령의 알고리즘설명을 코딩 전에 넣었으면... 하는 초보의 바램이다.



시스템정보를 보여주는 프로그램을 작성하면서 문제점을 분석하고 해결하는 방법을 구현한 프로그램을 작성하는 것으로서 유닉스 시스템 프로그래밍의 기나긴 여정은 끝난다. 비록 현장에서 실무적인 일을 하지는 않았지만 이 책을 보면서 그들이 어떤 일을 하고 그에 대한 해결방법이 무엇인지를 알 수 있었다. 현장의 분위기를 느낀 후에는 학습할 커리가 생기고 초보, 어설픈 중급자에겐 경각심과 로드맵을 제시해주는 저자의 땀이 흥건히 배어있는 ‘유닉스 시스템프로그래밍’. 초/중/고급을 나누는 기준은 잘 모르겠지만 이 책은 개인적으로 유닉스를 다루는... 모든 사람들에게 권하고 싶은 책이다.



ps 시스템 함수부분은 저자의 ‘함수는 만드는 것이 좋다’라는 말을 애매모호하게 하는 것 같다. 하지만 여타 함수 정의만 설명한 다른 책과는 달리 예제를 수행하면서 방대한 함수들을 느낄 수 있게 해주었다. 따로 분리했으면...하는 절실한 바램이 든다.

일단 표지나 내용 구성을 보고, 첫 느낌은 "산뜻하다"였습니다.

이 책은 중급이나, 중급에서 고급으로 넘어가는 사람들을 대상으로 삼고 있다고 하지만, 실제 내용으로 볼 때는 대상을 정하기가 조금 애매한 것 같습니다.



내용은 크게 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 시스템 함수"는 괜찮은 부분 중에 하나 입니다. 시스템 프로그래밍 할 때 레퍼런스로서 많은 도움이 될 것 같습니다.

이 책을 추천할만한 독자는,



1. 유닉스 시스템 관리자

2. 유닉스나 리눅스 시스템 프로그래밍을 공부하고자 하는 학생,일반인

3. 유닉스의 개념을 명확히 잡고자 하는 사람 등이다.



먼저, 유닉스 시스템 관리자라면 이 책에서 쓸만한 명령어 작성법을 많이 얻을 수 있을 것이다. 특히, 유닉스나 리눅스 시스템 프로그래밍을 공부하고자 한다면 이 책은 더없이 좋은 선택이 될 수 있을 것 같다. 시중에는 이 책처럼 시스템 프로그래밍을 간결하고 쉽게 표현한 책이 드문 것 같기 때문이다.



또한, 리눅스 역시 많은 기초적인 사용 안내서, 네트웍 관리 안내 서적의 양과는 달리 시스템 프로그래밍에 관한 서적의 양의 절대적으로 부족한 것 같다. 유닉스의 기초적인 명령어를 공부한 후, 보다 심화된 내용을 학습하고자 하는 이에게도 좋은 안내서가 될 수 있을 것 같다. 이 책은 단순한 프로그래밍예제 뿐만 아니라 유닉스 전체를 이해하는 데에도 많은 지면을 할애하고 있다.



에디터 선택, 셀에 관한 내용, 유닉스 상에서 이용할 수 있는 프로그래밍 툴에 대한 상세한 설명과 함께 시작하는 구성은 시스템 프로그래밍을 처음 접하는 이에게 많은 도움을 줄 것 같다. 유닉스 상에서의 시스템 프로그래밍은 시스템관리 툴이 대다수를 차지할 것이다. 또한 셸 프로그래밍 그 자체가 유닉스의 빼놓을 수 없는 매력이므로 셸 프로그래밍은 정말 중요하다고 생각한다.



본문에서 제공하는 셸 프로그래밍 소스와 설명은 실제 사용에도 유용할 것 같다. 거기에다 자신만의 노하우를 접목한다면 정말 훌륭한 프로그램이 될 것이다. ncd만들기나 휴지통 만들기 같은 부분은 시스템 프로그래밍 초보자들에게 좋은 학습 동기가 될 수 있을 것 같다.



2부에서 다루는 유닉스 명령어 만들기의 새로운 유닉스 명령어는 자신에게 최적화된 운영체제를만들 수 있을 것이다. 안타까운 점은 이 부분이 리눅스와 호환되지 않는다는 점이다.하지만 리눅스를 적용할 수 있는 코드를 작성할 때 참고할 수는 있을 듯 하다.



이 책의 빼놓을 수 없는 장점은 한빛의 백두대간 시리즈와 IT EXPERT 시리즈가 가지고 있는 저자의 소중한 노하우를 전해준다는 것이다. 본문의 내용도 중요하지만 어떤 때에는 저자가 알려주는 팁과 노하우가 개념을 잡고 이해하는 데 도움을 주기도 하는 것 같다.

평소 나는 책을 볼 때 책의 질과 종이의 색깔부터 확인한다. 책의 질은 약간 까칠하면서 매우 부드러웠다. 이런 종이의 질은 책에 줄을 긋거나 펜으로 글씨를 썼을 때 나중에 잘 번지지 않아서 좋다. 책이 일단 일반 프로그래밍 책보다 조금 두꺼워서 내용상으로 충분할 것이라는 생각부터 들게 만들고 책 표지의 색깔(약간 푸르스름한)과 제목이 잘 맞아 떨어지는 것 같다.



제일 첫 부분들을 살펴보면 책을 읽는 사람들이 좋아하게 컬러로 되어있는 부분이 나온다. 거기에는 한빛 홈페이지와 이 책을 읽는 법들이 상세하게 그림과 같이 설명되어있고, 어떤 사람들의 대화를 예제로 시스템 프로그래밍의 필요성을 재미있게 이야기 하고있다.



책의 좌우에는 항상 3cm정도의 공간이 비어있고 가끔 그 부분에 어떤 내용들이 들어가있다. 예를 들면 여기서 잠깐, 스페셜 가이드, 소스 안의 눈, 요약-꼭 기억하고 넘어가세요, 현장 테크닉, 한마디만 합시다. 이렇게 6가지 정도가 있는데, 실제 현업에서 뛰거나 시스템 프로그램을 할 때 반드시 알아야 하는 내용들이 좌우의 여백에 들어가 있다.



시스템 프로그램을 처음하거나 할 때 생소한 단어들도 모두 설명이 되어있어서 매우 편하다.



책의 처음인 1부 1장 유용한 기법들에서는 유닉스에서 반드시 써야 하는 vi에디터와 각종 명령어 들이 많이 있어서 처음 입문하는 사람들에게는 매우 좋은 것 같다. 2장 3챕터를 보면 유닉스에서 나 모바일쪽(KTF)에서 쓰일 수 있는 make파일에 대해서도 다룬다. 실제로 모바일쪽(KTF) 프로그램을 하다 보면 반드시 make를 사용해서 프로그램을 컴파일 해야 할 때가 있다. 이럴 때 이런 책을 프로그래머가 보았다면 더욱 쉽게 make를 이용해서 컴파일 할 수 있었을 것이다. 한장 한장 나갈 때 마다 현장 테크닉이라는 부분이 있는데 실제 이 책의 저자인 정재은님께서 현장에서의 자신의 경험을 써놓아서 매우 유용하게 참고할 수 있었다.



책의 전체적인 레이아웃은 매우 깔끔하여 한눈에 책을 몰입할 수 있도록 도와준다. 글자도 번지는 것 없이 매우 부드러워 눈의 피로가 많지 않다.



책의 2부부터는 유닉스 명령어들을 실제로 프로그램으로 만들어 보는데 소스의 설명이 자세하고 행번호까지 적혀있어 소스를 보는데 매우 편하게 되어있다. 그리고 책의 3부에서는 시스템 프로그램을 실제로 만들어보는데 이 책의 하일라이트를 택하라고 하면 3부를 택하겠다. 3부에서는 실제로 프로그램을 만들어 가면서 소스설명과 왜 그렇게 되는지에 대해서도 자세하게 설명이 되어있다. 그리고 C에서의 필수 함수인 malloc과 calloc등에 대해서도 설명을 해주고 있어서 많은 도움이 될 것으로 보인다.



이 책의 부분은 총 4부로 되어있지만, 실제로 필요한 부분은 3부까지이다. 마지막 4부에는 시스템 함수들을 설명해놓고 예제를 넣어 놓았는데, 그 부분이 책의 1/3 수준이라서 4부의 내용을 조금 더 줄이고 책의 내용을 좀더 넣었으면 하는 아쉬움이 남는다.

크게 한숨을 내쉬며 책을 덮었다. 처음 책을 받아봤을때 "이 두꺼운 놈을 언제 다 읽고 리뷰를 쓴다?"라고 고민했던 생각이 나서 살짝 웃음이 나왔다. 느낌대로 리뷰를 작성해서는 안될것같다는 생각이 들었다. 리뷰를 작성하기 전에 모 인터넷 서점과 한빛미디어 웹사이트에서 이 책의 독자서평을 모두 읽어보았다. 한결같이 좋은 책이라는 의견들뿐이다. 리뷰를 작성하기가 꺼려진다. 그렇지만 솔직하게 리뷰를 쓰기로 했다. 나의 입장에서… 이 리뷰는 "이런 의견도 있군" 하는 정도로 생각하고 읽어주면 고맙겠다.



책 제목이 참 끌렸다. "IT EXPERT 유닉스 시스템 프로그래밍"... 왠지 멋진 책이 한권 나온것 같다. 유닉스 시스템 프로그래밍을 공부하는 사람들이라면 필수적으로 읽었을 너무나도 유명한 Richard W. Stevens 씨의 Advanced Programming in the UNIX Environment (이하 APUE) 가 생각났다. 이 책의 수준도, 내용도 APUE 의 그것만큼 되어주기를 바라며 첫 페이지를 열었다.



겉표지와 속표지를 넘길때만해도 상당히 기분이 좋았다. 지금까지 기술서적에서 볼수 없었던 (적어도 내가 봤던 책들 중에서는) 파격적이면서도 이쁜 디자인. 학창시절 보던 참고서 스타일이다. ^^ 차례까지 모두 읽고 프로그래밍 언어의 역사라는, 왜 이 책에 들어있는지 알 수 없는 꾀돌이와 선생님의 대화글을 읽게 되었다. 내가 알고 있던 사실과 다른 내용이 눈에 띄었다. 어라~?? "뭐... 내가 잘못 알고있는것일지도..." 그냥 넘어갔다.



1부를 읽어가면서 점점 이 책의 수준을 의심하기 시작했다. 처음에는 "호.. 이런것까지 신경을 써주는구나" 하는 생각이었는데 페이지를 넘길수록 점점 가관이다. 책을 잘못 받았나 하는 의심마저 들었다. 내용이 나쁘다는게 아니다. 왜 "IT EXPERT 유닉스 시스템 프로그래밍" 이라는 거창한 제목을 달고서 내용은 UNIX를 처음 시작하는 사람을 위한 내용으로 채워져있는지 궁금하다.



이만큼 책에 대한 이미지가 나빠지다보니 이제 별게 다 싫어보인다. 간혹 보이는 오타들도 (전체 페이지를 생각해볼때 적은 수 이다.) 거슬리고, 책의 구성에서 봤을때는 괜찮은 아이디어라고 생각했던 "스페셜 가이드"라는 이름의 한빛미디어 책 광고도 짜증이 나기 시작했다. 책 제목만 보고서 APUE 를 떠올렸던 내가 한심스러워지기 시작했다. 특히 "책 광고"는 시그마프레스나 SciTech 미디어의 출판 스타일처럼 Chapter 가 끝날때 [참고문헌]이라는 이름으로 정리를 할 수 도 있었을텐데 같은 책 광고가 너무 자주 나오는것 같은 느낌이 들었다.



더군다나 한빛미디어에서 나온 책 밖에 없지 않은가!



진정으로 독자가 참고하기를 바래서 "스페셜 가이드"라는 생각을 했다면 소개되었어야 할 책들이 분명히 더 있을것이다. 아직까지는(앞으로는 가능해질지도 모르지만) 한빛미디어에서 나온 책들로 이 책의 "스페셜 가이드"를 채우기에는 너무 부족하다고 생각한다.



레퍼런스를 제외하면 전체 분량의 거의 40%를 책 제목과 전혀 어울리지 않는 초급 UNIX 사용자 메뉴얼로 채우고 난 뒤에 드디어 프로그래밍 얘기가 시작된다. 어리석게도 다시 한번 기대를 하면서 2부를 읽기 시작했다.



ls, cat, cp, head, uniq, od, wc, du, df, finger, ps, find, grep
13개의 비교적 구현하기 쉬운 UNIX 커맨드를 직접 구현해보고 있다. 이 13개의 커맨드 중 몇몇은 일반 C 프로그래밍 관련 서적에서도 연습문제로 소개되기도 하는 간단한 수준이다. 게다가 다른 커맨드의 경우에도 완벽한 구현은 아니다. 실제로 사용하는 ls의 코드길이는 3000 라인이 훨씬 넘으며 구현에 사용되는 여러가지 테크닉을 생각해본다면 이 책에서 하고 있는 구현은 컴퓨터관련 학부 2학년생 수준 또는 그 이하 수준의 구현이다.



또한, 책에서 소개되는 소스코드 전체를 CD로 제공함에도 불구하고 전체 코드를 책에 실은 의중을 알 수 없다. 괜히 책 페이지만 늘리고 있다는 느낌이다. 물론 독자의 편의를 위해서 코드 전체를 책에 실었다고 할 수도 있겠다. 2부의 실제 커맨드 구현 부분은 커맨드의 소개 (사용자 수준의 소개)를 하고 실행된 모습을 보여준 뒤 전체 코드를 보이고 중요한 코드 블럭은 나중에 상세히 설명하는 스타일이다.



필자는 개인적으로 Code Crash 라는 이름의 GNU Code Hack 프로젝트에 참여중이다. 현재는 fileutils 를 진행중이고 앞으로 sh-utils, glibc 등을 계속 진행할 예정이다. 이 책처럼 "자세한 주석" 수준의 분석은 물론이고 사용된 알고리즘, 테크닉, 개발철학까지 많은 부분을 Hack 하고 있다. 이 책도 "자세한 주석" 수준이 아닌 관련 알고리즘, 테크닉까지 설명을 해 줬더라면 하는 아쉬움이 남는다.



3부에서는 시스템 정보를 보여주는 프로그램을 작성하면서 요구분석, 설계, 구현, 테스트의 과정을 보여주고 있다. 역시 코드가 너무 많은 부분을 차지하는 점이 아쉽지만 그나마 괜찮은 부분이었다.



하지만 3부를 보고 있자면 Prentice Hall 에서 출판된 Practical UNIX Programming (이하 PUP) 가 생각난다. PUP는 한 챕터에서 큰 개념을 설명하면서 그에 관련된 세부 사항들과 그것의 이해를 돕는 간단명료한 약간의 코드, 한 두 가지의 프로젝트로 책이 구성되어 있다. PUP처럼 각 챕터에서 큰 개념을 설명하고 각각의 챕터마다 이 책의 3부와 같은 프로젝트를 이끌어 가면서 이해를 돕는 형식으로 구성되었다면 훨씬 나은 책이 될 수 있지 않았을까 생각해본다.



4부는 레퍼런스이다. 1부와 더불어 이 책을 구성하고 있는 4개의 Chapter 중 최악의 Chapter이다. 많은 UNIX 시스템 프로그래머들은 함수의 이름이나 함수의 인자리스트의 순서가 잘 기억나지 않을때 man 페이지를 자주 이용한다. 실제 업무를 하다보면 레퍼런스를 찾기 보다 man 페이지를 보는것으로 해결하는 경우가 훨씬 많다.



차라리 이 4부를 O"Reilly 사에서 출판된 POSIX Programmer"s Guide 처럼 타 기종으로의 포팅시에 고려해야 할 사항들을 서술해 놓았다면 가치가 있었을텐데 찾아보기를 제외한 전체 970페이지의 44% 나 차지하는 엄청난 분량을 레퍼런스로 채웠다는게 너무 아쉽다.



특히 이 4부에는 재미있는 내용이 있는데 바로 C Pointer에 대한 친절한 설명이 있다. 이 책의 거의 마지막 부분인데 읽으면서 어이가 없었다. 포인터도 모르면서 유닉스 시스템 프로그래밍을 공부하려는 독자가 얼마나 있을까. 어떻게 보면 1부와 더불어서 독자를 무시하는 내용이라고 생각한다.



쓰다보니 악평이 되었다. 저자에게 악감정이 있는것도 아닌데 너무한게 아닌가 하는생각도 들 정도다. 오랫동안 수많은 프로그래밍 관련 기술서적을 읽다보면, 책 내용을 넘어 저자의 철학까지도 함께 보고 또 배우게 된다. APUE, Unix Network Programming, TCP/IP Illustrate의 저자인 Richard W. Stevens씨의 책들을 읽다보면 절로 감탄사가 나온다 (번역서에서는 절대 느낄 수 없었다;;). 그 사람의 오랫동안 축적된 산지식에 책을 펴기전에 고개가 숙여질 정도이다. 실제로 절친한 선배는 바이블이라는 말도 아까울 명서들을 보기 전에 먼저 저자에게 인사부터 하고 책을 펴라는 말을 했을 정도다.



이 책도 "현장 테크닉"이나 "한마디만 합시다"에 있는 저자의 경험담들을 읽다보면 저자의 내공이 느껴진다. 많은 부분에서 공감이 가며, 간혹 "이건 아닌데.." 하는 생각도 들었지만 후자의 경우는 프로그래머 개개인의 차이이므로 무시해도 된다.



분명 저자의 능력은 책을 쓰기에 충분한데, 왜 내가 쓴 서평은 악평이 되어버렸는지 생각해봤다.



일단은 책 제목이 상당히 거슬렸으며 구성 또한 그렇다. 내용에 일관성이 없다고나 할까. 누구에게 무엇을 전달하고자 하는지 알 수가 없다. 분명한것은 중급에서 고급으로 넘어가려는 유닉스 프로그래머는 말할것도 없고 초급에서 중급으로 넘어가고자 하는 유닉스 프로그래머에게도 배울것이 별로 없는 책이다. 이미 유닉스상에서 간단한 커맨드를 직접 구현해 본 경험이 있는 초급 이상의 유닉스 프로그래머들에게는 권하고 싶지 않다.



다만 이제 "유닉스에서" 프로그래밍을 시작하고자 하는 사람이 있다면 나쁘지 않은 선택이 될 것이다. 하지만 이 책의 제목처럼 EXPERT가 되고 싶다면 더 읽어야 할 책들과 코드들이 많을 것이다.

제가 직장에서 업무상 유닉스 시스템 프로그래밍을 맡게 된후, 관련도서를 찾아보았지만,

국내외로 쓸만한 책이 정말 없더군요..

국내 대학교에서 사용하는 교재로 얇은 책들이 여러권 서점에 있긴 하지만(유닉스 시스템 프로그래밍이란 제목으로)

교재 특성상 유닉스의 깊은 부분이라든지, 실제 유닉스 프로그래머들이 많이 필요로 하는 시스템 정보등의 내용과는 상당히 먼체, 마치 C언어를 유닉스 환경에서 컴파일 하여 보여주는데 급급 한듯 보였습니다.

그나마. 데이빗 커리의 "유닉스 시스템 프로그래밍 SVR4"가 입문하는 개발자들에겐 단비같은 존재 였다고 생각합니다. 저도 이책으로 시작 했으니까요..그책의 특징은 I/O루틴의 기초부터 시작해서 프로세스,소켓,네트워킹 같이 깊숙한 부분까지 다루었다것에 의미를 둘수 있겠구요.

"IT EXPERT, 유닉스 시스템 프로그래밍" 이책은 유닉스 시스템 프로그래밍에 처음 입문하시는 분들, 글랜스나 티볼리 같은 유닉스 SMS같은 툴의 개발을 시작하시는 중급자분들에게 아주 큰 도움이 되리라 믿습니다. 예제로 사용된 소스는 간결하면서 군더더기 없게 작성 되였고, 책의 편집,디자인 상태또한 눈에 들어오기 쉽게 아주 잘 되어 있기에 자칫 딱딱해질수 있는 시스템 프로그래밍 공부를 해나가는데 큰 도움이 될것입니다.

다만 아쉬운 부분이 있다면, 초급부분에 많은 지면을 할애 하다 보니까 유닉스 프로그래밍의 꽃이라 할수 있는 소켓,네트웍 통신 프로그래밍 부분의 내용을 다루지 않았다는 것이네요..

제 책꽂이에는 "IT EXPERT, 유닉스 시스템 프로그래밍", 데이빗 커리의 "유닉스 시스템 프로그래밍 SVR4","UNIX POWER TOOL" 이 나란히 있는데 이 세가지 책이 서로의 장단점을 충분히 커버하기에 아주좋은 궁합(?)이라고 할수 있을것 같습니다. 실제 프로그래밍에 필요한 유닉스의 이론적인 부분은 "UNIX POWER TOOLS" 를 통해 얻으실수 있을 겁니다.여기에다 네트웍쪽 개발을 더 연마 하고픈 분들은 리차드 스티븐슨의 "UNIX NETWORK PROGRAMMING" 시리즈를 곁들인다면 좋을것 같습니다.



  1. Unix 체계에 대한 입문서로 충분히 활용 가능하다. (프로그래밍을 위한 기초)


  2. 기본적인 내용에 연연하지 않은, 실제 적용 가능한 예제들을 담았다


  3. 프로그래밍을 하기 위한 접근방식, 실제 작성 예제가 훌륭하다


  4. 방대한 양의 시스템 함수에 대한 설명과 예제가 있다


  5. 한번 읽고서 끝내지 않을, Unix Programming의 백과사전으로 활용이 가능하다




위에 사항은 이 책의 장점이다.

일단 놀랐던 것은 시스템 함수에 대해 직접 예제를 달고, 그 예제에 대한 comment를 달아놓았다는 것이었다. man페이지 만으로 만족할 수 없는 프로그래머들에게는 아주 중요한 도움이 될 것이라 의심치 않는다.



거의 책의 절반을 차지하는 내용으로 시스템 함수들을 다루었으며 이것만으로도 이 책의 값어치는 충분하다. 또한, 저자의 경험이 풍부하다는 것이 책 전반에 걸쳐서 잘 나타나 있다. 많은 노하우를 가지고, 실제 발생할 수 있는 Unix에 대한 문제점을 짚어나가며 프로그램을 작성하도록 유도한다.



  • 본질적인 시스템 프로그래밍의 입문서로는 적합하지 않다.




위의 문제점이 이 책의 가장 큰 단점이다.

만약 책의 제목이 ‘Unix 프로그래밍 기초’ 라던가 ‘Unix 프로그래밍 입문 및 활용’ 이라는 제목이었다면 더 어울리는 내용이 아니었을까…하는 생각이 든다. 즉, 시스템 프로그래밍이라기 보다는 Unix상에서 프로그래밍을 어떻게 시작해야 할 것인지, 무엇을 알아야 하는지에 대한 성격이 짙다는 것이다.



만약 이 책이 시스템 프로그래밍을 위해 실제 업무에서 작성되는 프로그램들을 분석해 나가면서 설명했다면(물론, 공개하기 힘들고, 독자가 중급이상의 실력을 갖춰야 하겠지만) 정말로 꼭 소장해야 하는 그러한 책이 되지 않았을까 하는 생각이 든다. 실무에 뛰어들기 위해 반드시 읽어야 하는 그런 바이블이 하나 탄생하지 않았을까… 초보자를 이끌기 위한 부분이 많다 보니 실제 업무에 적용되는 팁 위주로 책이 작성된 것이 아쉽다. 하지만, 이 책을 읽고 난 후 공감하겠지만, 정말 주옥 같은 팁이 책 전반에 널려져 있다.



만약 이 책을 읽을 기회가 된다면, 3부의 시스템 정보 보여주기의 소스는 꼭 한번 작성해 보기 바란다. 참고로, 이 소스는 리눅스에서 돌아가지 않는다. 저자의 사이트를 통해 리눅스에서 적용되는 코드를 기회가 되면 올린다고 했으니 한번 기다려 보는 것도 좋겠다. 그리고 공부할 시간이 더 남는다면, 2부의 소스를 직접 작성한 후에 책의 내용을 읽어 저자와 함께 소스를 분석해 보기 바란다. (그냥 따라가며 읽어도 무방하다)



개인적으로, Unix상에서 프로그래밍을 시작하려 한다면, 이 책을 읽어본 후에 다음과 같은 도서를 함께 구비하면 좋을 것 같다.

얼마전부터 brew 랑 기타 프로젝트를 하면서 유닉스 상에서 서버프로그래밍을 할 일이 생겨서 이 책을 보게 되었습니다.



지금 절반정도 보고 있는 중이고, 뒷쪽도 대강 훓어본 상태입니다.



일단 이 책은 상당히 유용합니다. 기존에 나와있던 수박겉핡기식의 몇몇 유닉스 서적에 비하면 양질의 내용, 가려운 곳을 긁어주는 내용들이 가득합니다.



쉘을 이용한 시스템 관리방법, 각종 유닉스 명령어들을 직접 c 로 작성하는 부분, 시스템 프로그래밍에 쓰이는 함수들의 소개, make, awk 등 각종 유틸리티들의 소개 및 활용예제, 그리고 실무에 사용하기에도 충분히 쓸만한 "시스템 정보 보여주기" 예제...



불만이 있다고 한다면, 실제 "시스템 프로그래밍" 의 핵심이라 할 수 있는 함수들에 대한 설명이 본문내용에서 떨어져 나와 부록의 형식으로 제공되고 있다는 점입니다.



시스템 함수 정도는 man 페이지를 통해서 충분히 알 수 있는 내용이기 때문에 그 많은 함수들의 man 페이지 내용들을 일일이 소개하고 저자의 코멘트를 추가하는 방법보다는 차라리 함수리스트들만 분류해서 부록으로 싣고, 그 힘수들이 어떤 식으로 조합되어 사용되는가 하는 내용을 본문에서 심도있게 다루었으면 더 좋지 않았을까 하는 생각입니다.

우선 이 책을 보고 느낀 점이 있다면...



저자가 상당히 신경을 많이 쓴 책이라고



생각합니다.



아직 다 읽어 보지는 못했지만, 서두에서나



책 중간 중간에 보면 스페셜 가이드라고



한쪽 끝에 설명되어져 있는 것을 볼 수 있습니다.



저 같이 이것 저것 책 찾아 가면서 공부하는



사람들에게는 상당히 유용할 듯 합니다.



그리고 일상생활이나 회사에서 경험했던



글이 가끔씩 나오는데... 현장경험이



없는 저로써는 상당히 도움이 많이 되었습니다.



유닉스 관리자 혹은 프로그래밍을 하는 분이라면



이 책 한 권 정도 있으면 좋겠다는 생각이



드는군요...

결제하기
• 문화비 소득공제 가능
• 배송료 : 2,000원배송료란?

배송료 안내

  • 20,000원 이상 구매시 도서 배송 무료
  • 브론즈, 실버, 골드회원이 주문하신 경우 무료배송

무료배송 상품을 포함하여 주문하신 경우에는 구매금액에 관계없이 무료로 배송해 드립니다.

닫기

리뷰쓰기

닫기
* 도서명 :
IT EXPERT, 유닉스 시스템 프로그래밍
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

오탈자 등록

닫기
* 도서명 :
IT EXPERT, 유닉스 시스템 프로그래밍
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
IT EXPERT, 유닉스 시스템 프로그래밍
구입처*
구입일*
부가기호*
부가기호 안내

* 온라인 또는 오프라인 서점에서 구입한 도서를 인증하면 마일리지 500점을 드립니다.

* 도서인증은 일 3권, 월 10권, 년 50권으로 제한되며 절판도서, eBook 등 일부 도서는 인증이 제한됩니다.

* 구입하지 않고, 허위로 도서 인증을 한 것으로 판단되면 웹사이트 이용이 제한될 수 있습니다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?

자료실

최근 본 책0