Skip to content

2조 랜덤 그룹 리뷰

Park minji edited this page Jul 20, 2024 · 1 revision

지찬우

  • 다들 9단계까지 잘 돌아가는 프로그램을 만드신 것 같아 멋있었습니다. 개인적으로 코드 품질도, 기능 구현도 놓친 것 같아 아쉬움이 남는 미션이었습니다.
  • 작업을 처리하는 스레드와 IO 담당 스레드를 분리해 비동기로 처리한 부분이 인상깊었습니다.
  • 하나의 강결합된 애플리케이션이 아닌 프레임워크 수준으로 분리한 것이 배울점이었습니다.
  • XSS 공격을 예방할 수 있도록 수정해야겠습니다.

강승훈

  • csv파일에 저장할 때 여러 SQL 연산들이 적용되는 점이 인상깊었습니다. 특히 조인 기능까지 제공하는 것이 잘 만든 것 같습니다.
  • 다들 기능별로 역할 구분을 잘 해서 상속을 잘 활용한 점이 인상깊었습니다.
  • 테스트코드를 단계별로 처리하고 다양한 테스트를 작성한 점을 배워 저도 테스트를 더 열심히 작성할 필요를 느꼈습니다.

박정제

  • join을 구현한 부분이 인상적이었다
  • Argument Resolver를 통해서 Request Param도 구현했던 부분을 배웠다
  • 비동기 처리를 모니터 처치를 사용하는 부분을 배웠습니다.
  • content length를 막아서 용량 조정을 해야겠다
  • 스크립트가 시작되는것을 막아야겠다

김민주

Request내에서 login할 때 사용할 userDao를 이용하여 Principal을 반환하게 만든 부분이 인상적이였음, 비슷한 로직을 프로그래머스 과제테스트에 구현돼있는 걸 본 적이 있었는데, 다시 보고 공부해볼 것 같음

파라미터 바인딩을 위해 v파라미터 리스트를 받아서, 타입체크 전부 돌고, 배열로 완성하는 부분이 인상적이였음

synchronized block에서 monitor 개념, 조금 더 공부해야할 거 같음

server configuration을 외부에서 했던 부분이 마음에 들었음

박민지

[구현 내용]

  • 9단계 CSV JDBC 드라이버 구현
    • 기존 H2 Database를 CSV JDBC로 교체

[배운 점]

  • 성능 향상을 위해 파일 IO를 비동기 처리를 고려하신 분 코드를 봤습니다. 실제로 얼마나 성능 차이가 날지 궁금했습니다!
  • virtual thread가 나오면 기존의 ThreadLocal 로직이 변경되어야 할 텐데, 실제로 if 구문이 추가된 것 같다는 말이 있으셨습니다!
  • 요청을 처리해야 하는 절차가 비슷하다 보니, 절차만 구현하고, 각 절차의 로직을 구현할 수 있도록 구조를 고려하신 분이 계셨는데, 이런 설계는 처음 봐서 신기했습니다!
  • 쿼리 파라미터를 각 핸들러에 넣어줄 수 있도록 어노테이션을 구현하신 분 코드를 봤는데, 신기했습니다! 스프링에서는 타입 체크를 어떻게 하고 있을지 궁금해졌습니다.
  • join을 구현하신 분이 계셨는데, 실제로 join 과정을 구현하면 재밌을 것 같다는 생각이 들었습니다!
  • 로그인 시에 Principal을 이용해 인증 객체를 추상화한 점이 인상적이었습니다!

[후기]

  • 락, 모니터 등 동기화 관련 CS 지식이 부족한 점을 체감했습니다…
  • 기능 구현, 완성도, 리팩토링에서 무엇을 중요하게 여겼는지가 코드로 보여서 좋았습니다. 저한테 지금 필요한 건 무엇인지 고민해보아야 할 것 같습니다!

김수현

  • E2E 테스트하는 방법: random port로 server socket열어서 쓰지 않는 port 얻은 후 소켓 닫고 일정시간 후에 그 포트로 서버 띄운 후 java.net.URL을 사용해서 테스트가 가능함.
  • 이번주도 코드 품질을 포기하고 기한 내에 요구사항을 만족했어야하는데 계속해서 설계 고민을 하느라 진도를 많이 못나갔다. 많이 느린 게 내 문제라는게 시간이 갈수록 드러나는 것같다. 그렇게 고민했다고 다른 사람들보다 코드 품질이 좋은지도 모르겠다. 마지막에 시간에 쫓기니 결국 코드 품질을 포기하게 되었다. 찝찝해도 일단 빨리 구현하고 많이 변경되는 곳을 보고 그곳을 리팩터링 하도록 고쳐야한다.
  • 이번 미션에서는 db가 인메모리 → h2 → csv로 많이 바뀌었는데 실제로도 db 접근 로직이 가장 많이 바뀔까?
  • 인증 결과를 thread local에 저장하는 것 vs request에 저장하는 것 둘다 가능. virtual thread로 바뀌고나서도 thread local을 지원하고 있음.
  • 나는 RowMap 인터페이스를 dto별로 구현했는데, 리플렉션을 사용해서 구현할 수도 있다는 것을 깨달았다. 조인 결과에 따라서 DTO만 만들어주면 되니깐 편할 거 같다.

👼 개인 활동을 기록합시다.

개인 활동 페이지

🧑‍🧑‍🧒‍🧒 그룹 활동을 기록합시다.

그룹 활동 페이지

🎤 미니 세미나

미니 세미나

🤔 기술 블로그 활동

기술 블로그 활동

📚 도서를 추천해주세요

추천 도서 목록

🎸 기타

기타 유용한 학습 링크

Clone this wiki locally