2005년 4월 27일 수요일

APUE, TCP/IP, UNP를 읽는 법

. APUE, TCP/IP, UNP 순으로 읽는 다.
  다른 순서로 읽어도 되지만 그렇게 되면 궁금한 게 좀 많아진다.
  학습 순서상 APUE부터 읽는 게 좋다.

. 처음 읽을 경우
  한번에 모든 내용을 이해하기는 어렵다.
  용어/개념이 익숙치 않아서, 영어 실력이 부족해서..
  아는 데까지 보고 진도를 열심히 나간 후
  다음 번에 다시 보면 더 잘 이해가 된다.
  처음부터 깊이 파면 이해도 더 안되고
  지치고 어렵고 겁먹어서 포기할 수도 있다.

. 과거의 내용을 많이 다룸.
  저자는 수십년간 CS분야에 있었던 사람이라서
  옛날 이야기를 너무 많이 알고 있다.
  그래서 때로는 지금은 필요없는 이야기도 많이 한다.
  옛날 이야기 같으면 그냥 넘어가라.
  사실 저자는 이미 고인이 되었고, 우리는 미래를 살고 있다.
  세상 모든 책은 과거의 이야기일 수 밖에 없다.
  (과거의 OS, 과거의 device...)

. 책의 구성
  간략하게 소개하는 챕터가 하나 나오고
  자세한 이야기는 다음 챕터들에서 한다.
  궁금하더라도 전체 모습을 보기 위해 약간 참으면
  괄호 안에 어느 챕터에서 자세히 소개하는 지 다 말해준다.
  뒤에서 자세히 설명한다고 했으면 앞 부분에서 시간 보낼 필요가 없다.

. 표준은 완벽하지 않다.
  책에도 계속 언급되지만 표준도 헛점(hole)이 많다.
  그래서 HTML, POSIX등 도 소프트웨어처럼 버젼이 붙는 다.
  함수 이름이 misnomer인 경우 등..

. 표준과 구현이 일치하지 않을 수도 있다.
  이론적으로 그럴듯해보이고 설계상으로 예쁘게 하려고 했는 데,
  실제로는 구현 불가능한 경우도 있다.
  Argument나 interface는 존재하지만 동작하지 않는 코드도 있다.
  (그래서 책이 두꺼운거다.)

. 외부 client, 네트웍, router, Kernel과 User space등을
  구별할 줄 알아야 한다.
  모두 하나의 덩어리인 것 같지만 사실은 각자 하는 일이 다르다.
  열심히 읽다보면 어느 부분에서 수행하는 지 알 수 있다.

. Historical한 문제들
  . 지금의 상식으로는 말도 안되지만 설계시에는 적절한 선택이었다.
  . UNIX가 워낙 족보가 복잡해서 이것저것 다 지원하게 하다보면
    API가 걸레가 되는 경우도 있다.
  . 원래 잘못했는 데, 바로잡지 못하고 시간이 흘러버렸다.
    그냥 사용하는 수 밖에.

. 챕터 뒤의 연습 문제
  . 심오하고 이상한 문제들이 많다.
    항상 그 챕터의 이슈인 것만 있는 것은 아니다.
    어딘가 소개하고 싶은 데 집어 넣을 곳이 없어서
    거기에 넣어 놨을 수도 있다.(대충 비슷하니 슬쩍.)

. 기술의 한계
  모든 기술이 그렇지만 다 인간이 하는 것이고
  뭔가 Art한 방법이나 Magic이 필요하다.
  이리저리 잘 돌려서 문제를 해결하기도 하고, 덮을 필요도 있다.
  우리에게 시간, 자원이 유한하기 때문에 때로는 10분이 infinite가 되기도 하고
  10ms가 epsilon만큼 짧은 시간이 되기도 한다.
  TCP도 역시나 'Best Effort'를 할 뿐 'Perfect'하지 않다.
  Single CPU인데 concurrent와 simultaneous가 가능하게 만든다.

댓글 없음:

댓글 쓰기