Skip to content

2조 그룹 리뷰

Semin Choi edited this page Jul 28, 2024 · 8 revisions

이영민

  • 인풋스트림을 받아서 버퍼드리더로 받으면 바이너리 파일이 손상될 수 있습니다. 이유는 인코딩에서 오류가 나면서 정확한 글자로 변환이 되지 않으면 바이트로 다시 변경할 때, 다른 바이트가 만들어지거나 바이트가 추가되거나 등 처음 바이트 입력과 결과가 달라질 수 있습니다.
  • 그리고 인풋스트림은 바이트를 하나 읽을 때마다 io 가 있으므로 버퍼드인풋스트림을 사용해야겠습니다.

김현수

  • 쿠키로 타겟 페이지를 지정한다.
  • test 가 터져서 DI 를 적용했다.
  • I/O Stream에 대해서 더 공부해봐야겠다

박민지

▶️ 구현 내용

  • WAS 7/8 단계 구현
    • 게시글 작성, 댓글 작성, 게시글/댓글 목록 조회 기능 구현
    • 멀티 파트 파싱 및 이미지 업로드, 조회 기능 구현
  • setting.properties 기반 설정 기능 구현

▶️ 배운 점

  • JDBCTemplate을 구현한 코드를 봤는데, 데이터 관리 코드가 엄청 간단해져서 정말 좋았습니다! 저도 구현해보려고 합니다!!
  • 여러 객체들을 생성해야 하다보니, 어노테이션, xml 등으로 객체 생성 기능을 구현하신 분들이 많으셨습니다. 특히, 의존성 주입까지 리플렉션으로 구현하는 코드는 처음 봤는데, 신기했습니다!
    • 현재 만드려는 객체보다 해당 객체의 의존 객체를 더 먼저 만들어야 하다보니, 생성 시 순서가 필요한데, 이를 큐나 재귀, 위상 정렬로 해결하신 것이 인상 깊었습니다.
  • 파일 기반 Database는 사용 중임을 알리기 위해 락 파일을 만드는 것이 싫어 TCP 서버를 띄우신 분들이 계셨습니다. 아무런 생각 없이 파일로 해야지, 한 걸 고민하신 게 좋았습니다!
  • InputStream은 커널 io가 많으니 BufferedInputStream을 사용해야겠습니다!

▶️ 후기

  • 내가 해보지 않은 리팩토링을 적용했을 때, 코드가 이렇게 되겠구나, 미리 보기 코드가 생긴 것 같아 좋았습니다.
  • 다양한 구조, 리팩토링, 기능들을 보니 할 수 있는 것들이 이만큼 남았구나 싶습니다..! 열심히 해보겠습니다!

이경민

💡 키 포인트!

  • 개별 스레드를 할당해서 H2 TCP 서버를 띄워 TCP 통신으로 H2를 연결합니다!
    • 생성 시 .db 파일이 존재하지 않는 경우 init.sql을 활용해서 .db 파일을 생성해주는 로직도 포함되어 있어요!
  • BufferedInputStream을 활용해서 멀티파트 파싱을 준비하고 있습니다 :D
    • .mark(), .reset()을 활용해서 가변 길이 byte[]에 대응하고 있습니다.
  • xml 기반의 빈 팩토리 비스무리한 걸 만들었습니다.
    • 싱글톤을 보장하기 위해서 싱글톤 객체는 모두 private 생성자를 갖게 했습니다.
    • 이를 기반으로 리플랙션을 활용해서 BeanStorage에 빈을 저장해요!
    • postBeanProcessing을 활용해서 오토와이어와 순환 참조 문제를 해결했습니다.

📝 앞으로 할것들

  • 멀티파트 파싱을 빨리 구현하는게 목표입니다.
  • 오늘 안에 8단계 끝내기!

지찬우

  • Connection, Statement 등을 관리를 편리하게 하기 위해 JdbcTemplate를 구현했습니다.
  • DataSource 인터페이스의 h2 구현체인 JdbcConnectionPool을 사용했습니다.
  • 지금은 모든 객체를 직접 싱글톤으로 만들어 필드에서 바로 객체를 가져와 세팅하는데, 다른 분들께서 reflection을 활용해 객체를 생성하고 주입해주는 방식으로 구현한 게 좋아 보였습니다. 시간이 된다면 리팩토링 하고 싶습니다.
  • 지금 JdbcTemplate에서 JdbcConnectionPool을 직접 생성해 사용하기 때문에 테스트 시에 프로덕션 DB를 사용하게 되는 문제가 있습니다. 이를 해결하기 위해 H2Config 객체에 DB url, username, password을 담아 외부에서 주입하도록 변경했습니다.

최세민

  • InputStream의 mark, reset 메소드에 대해서 활용해야 겠다는 생각을 해보지 못했는데, 잘 활용한 분이 있어서 인상적이었습니다.
  • 의존성 주입을 Queue를 통해 구현한 부분이 인상깊었습니다. 구현 방법은 다음과 같습니다.
    1. Queue에서 생성해야할 클래스를 가져옵니다.
    2. 만약 주입되어야 하는 생성자 인자가 컨테이너에 없다면 다시 Queue에 담습니다.
    3. 반복해서 Queue를 순회하다가 순환참조가 감지되면 예외를 발생시킵니다.

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

개인 활동 페이지

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

그룹 활동 페이지

🎤 미니 세미나

미니 세미나

🤔 기술 블로그 활동

기술 블로그 활동

📚 도서를 추천해주세요

추천 도서 목록

🎸 기타

기타 유용한 학습 링크

Clone this wiki locally