171121-TIL

Reading time ~2 minutes

오늘 한일

- HTTP 웹 서버 구현 리팩토링

  • 인터페이스와 Map을 통한 다형성 구현

  • 추가 피드백을 받고 일부 수정

  • 남은 사항 :

    1. HttpRequest의 첫번째 라인에 대한 클래스 제작

    2. HttpRequest와 관련된 기능 일부 수정

- 포비와 Http 및 현재 진행중인 과제에 대한 질의시간

- 파이썬 장고로 만든 사이트에 소셜 로그인 기능 구현하기


오늘 느낀점

  • url에 따른 분기에 대한 리팩토링에 대한 아이디어는 여러가지 있었는데 다 마땅치 않았다. 아침에 포비가 사실상 힌트가 아닌 답을 주셔서 해당 부분은 후딱 구현이 완료 됐다. Map<K,V> 이 참 유용한거 같다. 아직은 Map을 활용하는게 익숙치 않은거 같다. Map이랑 인터페이스를 연결하니 이렇게 쉽게 해결되는데 각각은 떠올렸어도 그 두개를 붙이는건 미처 생각을 못했다. 그나마 가까웠던게 이전에 실습 해 봤던 Map에 BiFunction을 넣는 것이였으니 말이다. 미처 먼저 생각못해서 아쉽지만 Map의 가능성에 대해 제대로 느껴서 좀더 잘 활용 할 수 있을거 같다.

  • 리팩토링이 거의 끝나간다. 마지막에 시간이 애매해서 오늘 마무리는 안지었지만 내일 금방 끝나지 않을까 싶다. 근데 HttpResponse를 생성하는 부분이 마음에 안드는데 여러 방법은 떠오르지만 딱히 좋은 아이디어는 안난다. 나머지를 마무리하고 포비하테 조언을 들어 봐야겠다. 아, 내일 일차적으로 작업이 마무리 되면 “HTTP 웹 서버 리팩토링 실습” 파트를 한번 봐야겠다.

  • 포비와의 질의 시간을 위해 어제 자료 좀 찾다가 잤는데 그 과정에서 가장 큰 소득은 지금까지 헷갈리던 웹서버와 was의 차이였다. 이전까지의 학습을 통해 was가 무엇을 하는지는 개념적으론 알았지만 웹서버가 무엇인지 제대로 모르니 was와 webserver에 대한 차이점을 알지 못했다. 그런데 최근에 Http 웹서버 구현하기를 하면서 웹서버와 was가 하는 작업들을 일부 직접 구현하니까 그 둘이 무슨일을 하는지 알게 되었다. 그러면서 “아파치 톰캣”이란게 뭔지 궁금해서 찾아 봤는데 덕분에 “아파치 톰캣” 하나에 대해서 알려다가 “아파치”와 “톰캣”에 대해서 알수 있었다.
    질의 시간동안 직접적으로 가장 많이 알게 된건 세션인거 같다. 세션에 대해서 궁금했거나 잘못 알고 있던 부분들을 알게 되었고, 세션에 대해 배우면서도 was나 부하를 어떻게 관리 하는지 등에 대해서도 배우게 되면서 내가 부족하다고 느꼈던 지식들을 채울수 있어서 좋았다. 지식적인 부분에 대해서 학습할땐 내가 어떤 지식이 늘었는지 직접적으로 알수 있기때문인지 구현하는것과는 다른 방식으로 재미를 느낀느거 같다.

  • 나도 남한테 알려줄때 바로 답을 알려주기보다는 산파술 방식으로 정답에 도달하게 유도를 하는데, 포비도 그러는 편인거 같다. 생각해보니 1:1로 내가 배우는 입장에서 해당 방식은 처음 겪은거 같다. 왜 상대방이 그냥 정답을 알려달라면서 답답해 했는지 알거 같다. 확실히 해당 방식을 선호하지 않으면 답답하기만 했을거 같다…(죄송한 몇분이 떠오른다)다행히도 나한텐 맞는 편이라서 많은 도움이 된거 같다.(사실 알려주는 사람도 답을 바로 알려주는것보다 훨씬 힘들다)
    개인적으로도 스스로 학습하고자 하는 의지가 있는 사람한테는 해당 방법이 더 많은 도움이 된다고 생각한다.(답을 바로 알려주는건 학습보단 정보전달이 주가 된다고 생각된다. 그래서 경우에 따라선 답을 알려주는게 더 좋은 상황도 있다)여담으로 이방식의 장점 중 하나는 정답으로 유도를 해주긴 했지만 정답을 생각해내서 맞췄을때 기분도 더 좋고 스스로에 대한 자신감도 상승한다는 거다. 개인적으로 가장 큰 장점은 다음에 알려주는 사람이 없는 상황에서도 스스로 생각해서 해결 할수 있는 능력을 길러주는 것이 아닐까 싶다.

  • codacy 결과 분석 시간과 피드백을 받기 전까지의 남는 시간을 주말에 실패했던 파이썬&장고 소셜로그인 기능 구현을 잠시 해봤다. 끔찍하게도 localhost라서 제대로 동작이 안했던 거다. 혹시나해서 ec2에 올려봤는데 잘 된다. 호눅스가 영상을 찍을 당시 + 트램이 한달전쯤 노드로 해봤을때까진 가능했는데 어느순간 페이스북 내부적으로 바꼈나 보다.
    사람들이 화이트과정때부터 “오어서, 오어서” 얘기하는걸 보고 당장 중요한 개념은 아닌거 같은데다 흥미도 안가고 해서 해당 키워드만 대강 기억해 두고 있었는데 그게 “allauth” 이건가 싶다. db관련해서 orm이랑 친구인 용어인줄 알았는데 아니였던거 같다. 지식이 +1 되었다. (혹시 지금도 잘못 알고 있는거라면 제보 바랍니다)(내가 들었던 해당 용어는 OAuth였다. allauth는 파이썬의 OAuth관련 라이브러리)

  • 아 세션을 배우면서 나온 내용 중 Map<sessionId, name>, Map<name, data> 맵에 맵을 넣지 않고도 두개의 맵이 연결이 되었다. 사실 알고나면 어려울것 없는 방식이다. 하지만 처음으로 그런 발상을 하는건 쉽지 않을텐데 정말 대단한거 같다. 이런 발상들을 보면 신기하다. 충분히 다양하게 응용가능 할것 같으니 해당 방식을 기억해두자.


내일 할일

  • HTTP 웹 서버 리팩토링

  • 몇가지 개념 정리하는 시간