2020-11-19(Thu)
학습 날짜 // 2020-11-19(목)
학습시간 // 9:00~22:00
학습 범위 및 주제 // 메소드 구현
동료 학습 방법 // sanam님과 페어프로그래밍, yohai님과 토의
학습 목표 // 남은 메소드를 구현한다.
상세 학습 내용
현대오토에버 강연을 듣고 아래처럼 메모하였다.
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와 동일하게 구현하였습니다. 자세한건 아래 참조하세용~~
'권한'조건에 따른 동작
'권한 없는 파일'을 삭제요청했을 경우
nginx: 삭제 실행 후 204 상태코드를 response
gbp_server: 삭제 실행 후 204 상태코드를 response
'권한 없는 디렉토리'를 삭제요청했을 경우
nginx: 500 상태코드를 response
gbp_server: 삭제 실행 후 204 상태코드를 response
'권한 있는 디렉토리' 안에 '권한 없는 디렉토리/파일'을 삭제요청했을 경우
nginx: 삭제 실행 후 204 상태코드를 response
gbp_server: 삭제 실행 후 204 상태코드를 response
Delete의 경우 재귀를 이용하니 쉽게 구현할 수 있었다.
한편 테스터를 돌리기 위해 connection 헤더가 구현되어야하는 점, 처리되지 않은 예외가 있다는 점을 알게되어 추가구현하였다.
학습 내용에 대한 개인적인 총평
delete 메소드를 구현할 때 재귀를 이용하는 것이 너무나 쉽고 재밌게 느껴졌습니다. 마치 문제풀이하는 듯한 이 느낌.. 에러만 잡다가 기능을 구현하고, 또 성공하니 즐겁네요.
역시 스트레스는 '자신이 통제하지 못하는 상황'에서 오는 것 같습니다. 감옥에 갇힌다고 해도 그 감옥이 내가 정말 원했던 곳이어서 나를 통제해서 스스로 간 곳이라면 즐거운 공간일 것이고, 하와이 해변 비치베드에 누워 모히또를 마시더라도 내 뜻이 향하는 곳이 아니라면 스트레스를 받을 것입니다. 운동하며 게임하며 악기를 연주하며 스트레스를 푸는 사람들은 이 활동들을 통해 자기통제감을 회복하는 사람들일 것이고, 이 활동들을 '잘' 하려는 마음이 큰 나머지 오히려 자기통제감이 떨어지는 사람들에겐 스트레스이겠지요.
이런 맥락에서 보자면 이번에 발생하는 스트레스는 통제감을 잃은 코드(원인을 알 수 없는 버그)에서 왔고, 스트레스의 해소는 함수 구현 성공이라는 통제감 회복을 통해 이루어졌던 것 같습니다. 어차피 인생사 통제하는 것은 불가하니만큼 분할정복법 마냥 작은 것 하나하나에 '통제감'을 실감하며 코딩해나가면 스트레스 적게 즐겁게 코딩할 수 있겠다는 생각이 듭니다 :)
현대오토에버 CEO님의 강연을 들으니 '끈기'가 중요하다는 것을 실감합니다. 문제를 마침내 해결하려면 끝까지 파내려는 근성이 있어야한다는 것이겠죠. 이건 뭐 기존에 일했던 직장에서도 문제하나를 퀄리티있게 처리하려면 끈기있게, 깊게, 한번 더 생각해야한다는 것을 배웠던터라 새롭진 않았습니다. 하지만 근성을 발휘해서 이 프로젝트를 퀄리티있게 끝내봐야겠다는 다짐을 했네요. 치열하게 고민을 하는 만큼 성장할 수 있으면 좋겠습니다.
다음 학습 계획
Webserv 테스터 돌릴 수 있도록 만들기
Last updated