들어가며...

이번 주는 우아한테크코스 레벨 3이 시작하는 주이다. 그에 따라 몇 가지 다짐을 해보자.

  • 미션은 최대한 교육장에 있을 때 끝내자. 주어진 시간에 집중하는 연습을 하고 싶다.
  • 레벨 1, 2 때 배운 점을 꾸준히 복습하자.
    • 필요한 것은 블로그에 정리하자.

이 주의 계획

  • 토비의 스프링 1권 6장(AOP) 정리하기
  • 토이 프로젝트를 꾸준히 하면서 필요한 부분 정리하기(레벨 2 복습)
  • 레벨 3 필요한 부분 정리하면서 진행하기
  • 매일 알고리즘 한 문제씩 풀기

2019-O9-15 일요일 TIL

  • 프로그래머스 SQL 문제풀기
  • 소프트웨어 장인 책 정리
  • 질문 CRUD 백엔드 부분 완성

2019-O9-16 월요일 TIL

  • 소프트웨어 장인 책 정리 마무리

2019-O9-17 화요일 TIL

  • 우테코 레벨 3 미션 시작을 하면서 HTTP request 헤더 출력과 html 파일 읽어오는 기능을 구현하였다.
    • 리펙토링과 테스트 공부가 필요하다.

2019-O9-18 수요일 TIL

  • [도서 리뷰] 소프트웨어 장인, Entity에서 매핑 정보 분리하기 블로그에 글 올림.

2019-O9-19 목요일 TIL

  • 10월 2일에 Context Switching(interrupt) 주제로 발표 일정이 잡혔다.
  • HTTP 메시지에 대해 정리하였다.
  • HTTP 웹 서버 GET, POST 기능을 구현하였고, 리펙토링을 위해 쓰레드 풀, 싱글톤 등에 대해서 찾아보았다.

우아한테크코스 레벨 3 난이도가 매우 어려워졌다... 어렵고 모르는 부분을 해결하는 과정에서 가장 힘든 부분은 의욕이 없어지는 것이다. 모르는 부분을 찾아보면서 이렇게도 해야할 것 같고 저렇게도 해야할 것 같고 머리로만 생각하다보니 정리가 안된다. 포비가 말한 것처럼 무작정 구현을 하면서 조금씩 알아가고 싶은데 쉽지 않다.

2019-O9-20 금요일 TIL

포비 강의 - 테스트하기 쉬운 코드로 개발하기

  • WAS 구현 미션이 이전 미션보다 어려운 이유 중 하나는 소켓이라는 외부 종속이 생기기 때문이다. 이러한 종속이 생기면 테스트와 리펙토링이 훨씬 어려워진다.
  • 왜 어렵고 힘들까?
    • 내 의견: inputstream/outputstream과 같은 익숙하지 않은 개념으로 입출력을 하기 때문이다.
  • 테스트하기 어려운 코드와 테스트하기 쉬운 코드가 섞여있기 때문에 테스트가 어려운 것이다. 이를 구분할 줄 알아야 한다.
  • 테스트하기 쉬운 코드란?
    • 항상 같은 결과를 반환하는 메서드(불변 함수, 불변 객체)
    • 외부상태를 변경하지 않음
  • 대표적인 테스트하기 어려운 코드
    • Web API, DB와 같이 외부 저장소를 접근하는 코드
    • Input/Output 스트림과 같이 외부 자원을 접근하는 코드
    • Random, Date와 같이 값을 임의로 조작하는 코드
  • 테스트 쉬운 코드와 어려운 코드를 분리해야 한다.
    • 그런데, 분리한 후 어디서 만나느냐가 중요하다.
    • 최대한 가장자리에서 만나게 한다.

테스트하기 어려운 코드와 테스트하기 쉬운 코드를 분리해 최대한 가장 자리에서 만나게 한다.

  • 위와 같이 하려면 도메인에 대한 지식이 있어야 한다. 이를 위해서는 처음에는 단순 구현만 하고 이를 지우고 새로 시작하는 방법이 좋다.
  • 테스트하기 쉬운 코드가 핵심 로직인 경우가 많다.
  • TDD의 핵심 원칙은 현재 요구사항에 맞춰서 구현하는 것이다. 더 앞서는 것은 최대한 자제하자.

2019-O9-21 토요일 TIL

  • 토비의 스프링 6장 AOP 정리하기
    • 앞 부분만 조금 읽었다.

마치며...

우아한테크코스 레벨 3을 처음 시작했다. 방학을 하고 와서 인 것 같기도 하고, 헬스를 등록해서 또 다른 하루의 할 일이 생겨서 인 것 같기도 하고, 레벨 3의 시작으로 의욕적으로 계획을 짜서 인 것 같기도 해서인지 하루하루가 매우 매우 어수선했다. 계획한 것을 거의 못지킨 것 같아 조금은 우을한 한 주였다. 하지만 시작인 만큼 너무 조급해 하지 말자. 우선순위를 정해서 차근차근 할 일을 해나아갔으면 좋겠다.

다음주 할 일 우선순위

  1. 스프링 AOP 정리(월요일까지)
  2. Context Switching 테코톡 준비
  3. 레벨 3 한 주 미션 복습
  4. 블로그에 글 하나 포스팅하기