2020-11-19(Thu)

  1. 학습 날짜 // 2020-11-19(목)

  2. 학습시간 // 9:00~22:00

  3. 학습 범위 및 주제 // 메소드 구현

  4. 동료 학습 방법 // sanam님과 페어프로그래밍, yohai님과 토의

  5. 학습 목표 // 남은 메소드를 구현한다.

  6. 상세 학습 내용

    현대오토에버 강연을 듣고 아래처럼 메모하였다.

    https://www.notion.so/humblego/42-IT-CTO-8a3ef2d97e764d78a5b5ed2efd5e179a

HEAD, TRACE, OPTIONS, PUT, DELETE 메서드들을 아래 PR과 같이 구현하였다.

1. HEAD:

  • GET과 동일한 과정을 거치고 body만 제외하여 response합니다.

2. TRACE:

  • request 내용을 transmitting_body 에 저장하여 response합니다.

3. OPTIONS:

  • 설정파일과 요청된 리소스 URI를 확인하여 해당하는 location에 허용된 메소드 목록을 response합니다.

4. PUT:

  • request로 전달된 데이터를 Server URI에 업로드합니다.

5. DELETE

  • request로 요청된 URI의 리소스를 삭제합니다.

  • RFC 검토하여 권한 없는 파일 삭제의 경우 서버의 재량에 달린 것을 확인하였습니다. 이에 '권한' 관련된 동작들은 nginx와 다르게 일관성있도록 재량껏 구현하였고, 나머지는 nginx와 동일하게 구현하였습니다. 자세한건 아래 참조하세용~~

'권한'조건에 따른 동작

  1. '권한 없는 파일'을 삭제요청했을 경우

  2. nginx: 삭제 실행 후 204 상태코드를 response

  3. gbp_server: 삭제 실행 후 204 상태코드를 response

  4. '권한 없는 디렉토리'를 삭제요청했을 경우

  5. nginx: 500 상태코드를 response

  6. gbp_server: 삭제 실행 후 204 상태코드를 response

  7. '권한 있는 디렉토리' 안에 '권한 없는 디렉토리/파일'을 삭제요청했을 경우

  8. nginx: 삭제 실행 후 204 상태코드를 response

  9. gbp_server: 삭제 실행 후 204 상태코드를 response

Delete의 경우 재귀를 이용하니 쉽게 구현할 수 있었다.

한편 테스터를 돌리기 위해 connection 헤더가 구현되어야하는 점, 처리되지 않은 예외가 있다는 점을 알게되어 추가구현하였다.

  1. 학습 내용에 대한 개인적인 총평

delete 메소드를 구현할 때 재귀를 이용하는 것이 너무나 쉽고 재밌게 느껴졌습니다. 마치 문제풀이하는 듯한 이 느낌.. 에러만 잡다가 기능을 구현하고, 또 성공하니 즐겁네요.

역시 스트레스는 '자신이 통제하지 못하는 상황'에서 오는 것 같습니다. 감옥에 갇힌다고 해도 그 감옥이 내가 정말 원했던 곳이어서 나를 통제해서 스스로 간 곳이라면 즐거운 공간일 것이고, 하와이 해변 비치베드에 누워 모히또를 마시더라도 내 뜻이 향하는 곳이 아니라면 스트레스를 받을 것입니다. 운동하며 게임하며 악기를 연주하며 스트레스를 푸는 사람들은 이 활동들을 통해 자기통제감을 회복하는 사람들일 것이고, 이 활동들을 '잘' 하려는 마음이 큰 나머지 오히려 자기통제감이 떨어지는 사람들에겐 스트레스이겠지요.

이런 맥락에서 보자면 이번에 발생하는 스트레스는 통제감을 잃은 코드(원인을 알 수 없는 버그)에서 왔고, 스트레스의 해소는 함수 구현 성공이라는 통제감 회복을 통해 이루어졌던 것 같습니다. 어차피 인생사 통제하는 것은 불가하니만큼 분할정복법 마냥 작은 것 하나하나에 '통제감'을 실감하며 코딩해나가면 스트레스 적게 즐겁게 코딩할 수 있겠다는 생각이 듭니다 :)

현대오토에버 CEO님의 강연을 들으니 '끈기'가 중요하다는 것을 실감합니다. 문제를 마침내 해결하려면 끝까지 파내려는 근성이 있어야한다는 것이겠죠. 이건 뭐 기존에 일했던 직장에서도 문제하나를 퀄리티있게 처리하려면 끈기있게, 깊게, 한번 더 생각해야한다는 것을 배웠던터라 새롭진 않았습니다. 하지만 근성을 발휘해서 이 프로젝트를 퀄리티있게 끝내봐야겠다는 다짐을 했네요. 치열하게 고민을 하는 만큼 성장할 수 있으면 좋겠습니다.

다음 학습 계획

  • Webserv 테스터 돌릴 수 있도록 만들기

Last updated