오늘의../이달의 책

[노개북] 실용주의 프로그래머 (3장. 기본 도구)

호마 2022. 3. 23. 10:00

오늘 읽은 범위 🔖 3장. 기본 도구

📝 책에서 기억하고 싶은 내용
  • 일반 텍스트의 힘 (p. 132)
    • 일반 텍스트, 암호화, 구조화(XML, JSON..)를 적절히 사용하기
  • 조개 놀이 (Shell Games) (p. 139)
    • 반복적이고 번거로운 GUI 작업을 Shell 명령어로 만들라
    • Windows의 경우 Cygwin을 이용해 유닉스 호환 레이어와 유닉스용 유틸리티를 사용할 수 있다.
  • 디버깅 (p. 157)
    • 디버깅 = 문제 해결, 디버깅을 할 때 당황하지 마라
    • 데이터를 시각화하면 디버깅하기 좋다. (DDD 디버거 참고)
    • 트레이싱(Tracing)은 값을 추적하기 어려운 동시성 프로세스, 이벤트 기반 애플리케이션에서 유용하다.
    • 고무 오리: 문제의 원인은 누군가에게 설명하는 것만으로도 해결할 수 있다. (설명을 듣는 상대방이 고개를 계속 끄덕이는 것이 욕탕에서 고무 오리가 까닥이는 것과 비슷하다는 의미에서 유래되었다.)
    • 뭔가 예상 못한 '놀라운' 실패를 대면했을 때 자신이 세운 가정들이 잘못되었다는 것을 깨달아야한다. (p. 166)
    • 버그를 마주쳤을 때
      • 왜 이 실패가 더 일찍 발견되지 않았을까?
      • 이와 동일한 버그가 있을만한 다른 코드를 지금 바로 고쳐라
      • 버그를 고치는 데 긴 시간이 걸린다면 왜 그런지 자문하라
  • 텍스트 처리 (p. 169)
    • 유닉스용 좋은 텍스트 처리 툴: awk, sed, tcl
  • 코드 생성기 (p. 175)
    • 자동으로 코드를 만드는 코드
    • 예시로 DB 스키마와 그 DB를 접근하는 코드를 동일하게 유지해야하는 경우, 스키마를 이용해 코드를 자동으로 생성하는 방법을 활용
    • 꼭 코드가 아니라 HTML, XML plain 텍스트를 생성해도 된다. 
💭 오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보기
  • 실무에서 겪었던 일들이 책에 나와있으면 깜짝 놀라게된다. 책이 먼저일까.. 사람들의 경험이 먼저일까. 책이 오래되긴 했지만 이 책에 나와있는 대로 행동하는 사람들은 이 책을 읽었기 떄문에 그렇게 행하는 것일까 궁금하다. 이미 지나간 경험이지만 앞으로 만나게 되는 사람들에게는 이 책을 읽었는지 물어봐야겠다.
  • 오늘 장애로 회의를 하고 문제점을 찾아내는데 하루종일 시간을 허비해서 그런지 버그에 대한 부분에 집중하게 되었다. 예상치 못한 버그여서 놀랐고 금방 해결은 했지만 꼭 발생했어야만 했는지 의문이 들어서 아쉬움이 남았다. 앞으로 같은 유형의 실수를 반복하지 않도록 회의를 통해 절차를 추가하기로 결정했다.
🔍 궁금하거나 잘 이해되지 않는 내용
  • DDD(Data Driven Document): 데이터 기반의 시각화, D3.js 라이브러리가 대표적이다.
  • DDD 디버거 - Data Display Debugger https://www.gnu.org/software/ddd/

오늘의 TIL 3줄 요약

  • 문제의 원인은 누군가에게 설명하는 것만으로도 해결할 수 있다.
  • 뭔가 예상 못한 '놀라운' 실패를 대면했을 때 자신이 세운 가정들이 잘못되었다는 것을 깨달아야한다.
  • 버그를 마주쳤을 때 1. 왜 이 실패가 더 일찍 발견되지 않았을까? 2. 이와 동일한 버그가 있을만한 다른 코드를 지금 바로 고쳐라 3. 버그를 고치는 데 긴 시간이 걸린다면 왜 그런지 자문하라