본문 바로가기
'실용주의 프로그래머' 리뷰

실용주의 프로그래머 5일차. 3장 기본 도구

by 나는관리자 2022. 3. 24.

오늘 TIL 3줄 요약

  • 각 도구마다 개성이 있기 때문에 거기에 걸맞게 다루어라. - 특정 IDE만 고집하지 마라. 
  • 명령어 셸의 힘을 이용하라.
  • 디버깅 - 단위 테스트 또는 다른 테스트의 중요성

TIL (Today I Learned)

2022.03.23

 

오늘 읽은 범위

3장 기본 도구

 

책에서 기억하고 싶은 내용을 써보세요.

자신의 도구 상자에 주기적으로 뭔가를 추가하게 될 것을 예상하라. 더 나은 방법 찾기. => IDE 가 갖는 한계를 넘어서야 한다. 

 

지식을 일반 텍스트(plain text)로 저장하라.우리가 지식을 저장하는 최고의 포맷은 일반 텍스트이다. => 우리가 포맷을 잘 모르더라도 파싱할 수 있기 때문. => 일반 텍스트를 버전 관리 시스템에 보관하면 변경 사항 관리에 용이하다. (책에서는 블록체인 기반 시스템에서도 일반 텍스트는 살아남을 거라고 예측함.)

 

 

GUI의 한계를 보완하는 좋은 방법은 셸에 익숙해지는 것이다.=> 생산성 높이기. 

: 색깔 조합 설정

: 프롬프트 설정

: 별칭(alias) 만들어 작업을 단순화 하기

ㄴ update와 upgrade 순서가 헷갈린다면 : 

    => alias apt-up = 'sudo apt-get update && sudo apt-get upgrade'

ㄴ 삭제할 때 확인작업 거치도록 하려면 :

    => alias rm = 'rm-iv'

: 명령어 자동 완성

 

에디터를유창하게 쓸 수 있게 하라.=> 시간 절약. 자동 반복 줄임.

 

언제나 버전관리 시스템을 사용하라. 

: 소스코드가 아닐지라도 모든 것(각종 문서, 전화번호 목록, 외부 업체에 보내는 메모, 로그 파일 등등 )을 버전관리 시스템에 저장한다. 

ㄴ 언제든지 roll back (되돌리기) 가능.

브랜치 사용하기 => 다른 브랜치와 격리와 병합(merge, pull request)을 이용하여 여러 사람이 하나의 브랜치에서 함께 작업할 수 있다. 

ㄴ 별도 서버를 두지 않아도 되지만, 분산하여 협업하는 것보다 중앙 저장소를 두는 방식을 검토해 보는게 좋다. => 많은 확장 기능을 이용할 수 있기 때문.

 

디버깅 전략

: 테스트를 작성하는 행위가 해결책을 알려준다.

: 옆에 종이와 펜을 두고 메모하면 도움이 될 때가 많다.

: 이진 분할(binary chop) 방법보다 분할 정복(devide and conquer) 방식이 버그 찾는데 더 빠르다.

    ㄴ 현재 릴리스에서 버그 발생할 때.

        중간 정도에 위치한 릴리스를 골라라.

        테스트를 수행한 후 결과에 따라 어느쪽을 탐색할지 골라라. 이 과정을 반복하여 문제를 찾는다.

    ㄴ 거대한 스택 트리이스에 프레임이 64개라면 이 방법을 사용하여 6번 안에 답을 찾을 수 있다.

: 소거법 OS나 컴파일러 혹은 외부 제품에 버그가 있을 가능성보다 내가 개발하고 있는 애플리케이션의 코드에 버그가 존재할 가능성이 훨씬 더 크다.

: 업그레이드를 고려할 때 일정을 면밀히 살펴라. 

ㄴ OS나 컴파일러 혹은 외부 제품, API 등 버전이 바뀌면 코드가 완전히 쑥밭이 될 수 있다. 따라서 새로운 버그 생길 가능성이 있음. 

: 버그를 미리 잡기 위해 단위 테스트나 다른 테스트를 수정할 필요가 있는지 고민해 봐라.

ㄴ 버그를 고치는 데 시간이 오래 걸린다면 고민하기.

    ㄴ 더 나은 테스트 훅 만들거나 로그 파일 분석기 이용하기.

 

텍스트 처리하기. => 어려운 변환 작업 등을 하기 위해 방법 익히기.

 

엔지니어링 일지 작성하기 => 기억보다 메모하는게 믿을만 하다. 기록하면 일의 순서대로 현재 작업에 집중 가능 등등

 

 

오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요.

역시 셸 명령어를 익숙하게 다뤄야 겠다고 다시 다짐한다. 단위 테스트 코드 습관을 길러야 하는 것도.

 

 

 

오늘 읽은 다른사람의 TIL : https://www.notion.so/Assignment-04-984567452e2247e1af668fc478048c43 혜원님 

                                  https://velog.io/@ohdowon064/%EB%85%B8%EA%B0%9C%EB%B6%81-pragmatic-3%EC%9E%A5.-%EA%B8%B0%EB%B3%B8-%EB%8F%84%EA%B5%AC   남한사람님 

 

 

댓글