TIL 43

9/5

👣 개요 오늘은 Lv 3 과제를 끝내고 제출을 했다. Lv 3를 끝마치고 하루종일 QueryDSL에 투자를 했다. 여기서 실수를 한 것이 Tistory의 장점 중 하나가 새로운 글을 작성하기 전이라면 자동으로 임시저장 기능을 제공해서 글 작성 창이 꺼져도 내용이 보존된다. 하지만, 나는 기존의 작성된 게시글을 수정하는 방법으로 QueryDSL 내용을 작성했다. 이는 내가 하루종일 작성한 QueryDSL 내용을 모두 날려먹는 참사를 일으켰고 이 참사 이후 5분간 말을 잃은 채로 멍하니 있었다. 하지만 오늘 게시글을 작성하는 대부분의 시간은 코드를 작성하며 테스트를 하는 시간이 길어서 그렇지 알고 있는 내용을 다시 작성하는 것은 얼마 안 걸릴 것이라 믿고 있기에 오늘 취침 전에 모든 내용을 복구할 계획이다...

TIL 2023.09.05

9/4

👣 개요 오늘은 Lv 3 과제를 시작하는 날이었으나 Spring Security에 대한 공부가 필요하다는 페어 분의 의견에 따라 하루 정도는 원하는 공부를 하도록 했다. 나 또한 QueryDSL에 대한 공부를 하길 원했기도 했고 상대방이 기술에 대한 이해도가 높은 것은 여러모로 이점이 많은 일이었기에 해당 방식에 동의했다. 그리하여 오늘은 JPQL에 대한 깊은 공부를 함과 동시에 QueryDSL에 대한 공부도 진행했다. 하지만 역시 만만치 않았다. 항상 쿼리를 JPQL을 이용해서 복잡한 쿼리도 만들어 봤고 QueryDSL도 얕게 나마 프로젝트에서 사용해본 적도 있었기에 어렵지 않게 코드로 구현할 거라 생각했다. 하지만 지식에 구멍이 매우 많았고 이것을 코드로 구현하기 까지 문제가 너무 많았다. 우선 JD..

TIL 2023.09.04

WIL - 8/28 ~ 9/3

👣 개요 이번주는 주특기[Spring] 2주차로서 2인 1조로 페어를 맺어 Spring 관련 과제를 수행하는 주간이었다. 주제는 Spring Security와 Spring Data JPA를 이용해서 블로그 웹 사이트의 API 서버를 만드는 것이었다. 구체적으로 말하자면 회원 가입, 로그인과 같은 인증, 인가 API를 설계하는 것과 게시글을 단일 조회, 일괄 조회, 생성, 수정, 삭제를 수행하는 API를 설계하는 것이다. 이전의 프로젝트들에서는 Spring Security를 이용하기만 했지 Spring Security의 이론적 배경과 라이브러리의 코드들을 자세하게 살펴본적은 없었다. 하지만 이번 주차에 체계적으로 이론들을 다지고 인증, 인가에 관한 코드들을 천천히 뜯어봤다. 그에 대한 결과들은 다음과 같다..

TIL 2023.09.03

9/2

👣 개요 오늘은 Lv 2에 대한 리뷰를 진행했다. 리뷰 간 직접 작성한 코드에 대해 상대 리뷰어에게 설명을 하니 오히려 코드에 대한 이해가 깊어지고 수정해야 하는 부분이 보였다. 로그인 API를 설계할 때, 로그인 성공 시 로그인 성공 메시지를 올려야 하는데 그 부분이 누락되기도 했다. 문제가 되었던 코드는 다음과 같다. 그래서 해당 코드를 다음과 같이 수정했다. 권장하는 방법은 아니지만 필터로 로그인을 구현하고 싶다면 이렇게 직접 HttpServletResponse 객체에 Body 내용을 print해야 한다.

TIL 2023.09.02

9/1

👣 개요 오늘 오전엔 Lv 2 과제를 끝마치기 위해 팀원과 코드 병합을 진행하고 4시까지 API 명세서, 각종 문서화를 진행했다. 그리고 그 이후에는 부족한 Spring Security 관련 공부를 진행했다. 👣 Lv 2 코드 병합 Lv 2부터 본격적으로 팀을 이뤄서 과제를 수행하는 활동을 진행했다. 본격적인 항해 99과정을 진행하기 전에 웹 종합반에서 협업을 경험하긴 했으나 이번 협업도 너무 서툴렀다. 아무래도 기술 파악이 확실히 되지 않은 채로 계획을 짜니 빗나가는 것도 많고 놓치는 부분이 많았다. 아직 API 명세서와 DB 스키마 명세서를 구체적으로 적어야 하는 이유에 대해 공감할 수 있는 단계가 아니다보니 작업을 할당하는 것이 불가능했다. 작업을 잘게 쪼개기 위해선 위와 같은 규칙을 세심하게 정해..

TIL 2023.09.01

8/31

👣 개요 오늘은 목요일이라서 주특기 1주차의 내용을 토대로 시험을 봤다. 내용은 회원 일괄 조회 API와 회원 단일 조회 API를 구현한 서버 구축이었다. 해당 시험을 응시한 뒤, '자바 ORM 표준 JPA' 책을 읽으면서 블로그에 기록했다. 6장 다양한 연관관계 매핑 👣 개요 해당 게시물에서는 '다대일', '일대다', '일대일', '다대다' 의 연관관계를 다룰 예정이었다. 하지만 앞선 5장과 다소 중복이 많기 때문에 '다대다' 관계에 대해서만 다루고 넘어갈 것이다 ikadnorth.tistory.com 7장 고급 매핑 👣 개요 해당 게시물은 OOP와 SQL에서의 간극을 메꾸는 여러 기술을 나열하는 방식으로 서술된다. 아직 OOP와 SQL 사이에 간극이 존재하는데 내용은 다음과 같다. 1. OOP의 상속..

TIL 2023.08.31

8/30

👣 개요 오늘은 Lv 2 과제를 수행하기 위해 팀원과 회의를 진행했다. 해당 회의로 API를 결정하고 같이 작업할 git repo를 정했다. 그리고 각자의 Branch를 정해서 코드 충돌이 알어나지 않게 전략을 짰다. 다만 구체적인 구현에 대해서 결정하지는 못했다. 아직 강의에서 제안된 기술들에 대해 능숙하지 못했기에 추가적인 공부를 진행한 후에 코드를 작성하기로 했다. 때문에 다음 강의를 들어볼까 생각도 했지만 그렇게 되면 실제로 적용하게 될 과제에 혼동을 줄 수도 있어서 이미 공부하던 '자바 ORM 표준 JPA 프로그래밍' 책을 마저 공부하기로 했다. 오늘 공부한 내용은 '엔티티 매핑법'과 '연관관계 매핑'에 대해 배웠다. 아래 게시물이 오늘 작성했던 게시물이다. 4장 엔티티 매핑 👣 개요 해당 게시..

TIL 2023.08.30

8/29

👣 개요 오늘은 Spring 숙련주차 2주차를 모두 들었다. 정확히는 'My Select Shop' 설계 강의 이후로 듣기 시작해서 끝까지의 강의를 들었다. 해당 강의들은 앞서 배웠던 JPA 연관 관계, RestTemplate을 이용해서 네이버 상품 검색 API를 이용해 상품을 불러오고 해당 상품들의 찜하기 버튼을 만들어 찜한 목록을 따로 불러오는 기능을 구현했다. 이 중 새롭게 배울 수 있던 기술은 Scheduler 기능이었다. 해당 기능은 변동되는 상품들의 가격을 최신화하기 위해 매일 새벽 1시마다 일괄 검색 후 가격 갱신을 하면서 사용한 기술이었다. 여태까지 Spring Batch만이 정기적인 업무를 수행할 것이라 생각했는데 그저 @Scheduled 어노테이션을 이용해서 구현할 수 있음을 깨달았다...

TIL 2023.08.29

8/28

👣 개요 3주차 강의 중 숙련 part의 강의는 굉장히 영양가 있는 강의들로 가득찼다. 해당 강의는 보안을 위한 Spring Security 강의와, Validation, RestTemplate, JPA 연관관계에 대한 내용으로 이뤄져 있고 모두 내가 주먹구구식으로만 배워왔던 지식들이었다. 이러한 강의를 체계적으로 배울 수 있어서 새롭게 알게 된 내용과 그동안 알지 못해 불편했던 것들을 많이 알 수 있었다. 👣 JWT를 위한 UsernamePasswordAuthenticationFilter 확장 그 동안 JWT를 구현하기 위해 OncePerRequestFilter를 확장해서 사용하기만 했다. 그러다 보니 로그인 기능 구현 시, 직접 Authentication 객체를 인증 처리하고 SecurityConte..

TIL 2023.08.28

WIL - 8/21 ~ 8/27

👣 개요 이번주는 본격적으로 Spring에 대한 공부가 시작되는 주였다. 이건 강의를 들어보면서 느낀 점은 생각보다 JPA에 대한 기초가 부실했다는 것이다. Spring Data JPA는 알고 있어도 JPA 문법 및 기초 지식에 균열이 있음을 확인하고 추가적인 공부를 진행하고자 했다. '자바 ORM 표준 JPA 프로그래밍'라는 책을 사서 부족한 부분을 채워나가고자 했다. 하지만 항해 99에서 제시한 강의와 과제가 비교적 많은 시간을 요구했기에 빠르게 나의 공부를 진행하지 못했다. 비록 적은 시간을 투자할 수 밖에 없는 환경이라지만 이번 책은 꼭 코드로 구현해나가며 공부하고자 한다. JPA의 경우, 특히나 자주 사용하게 될 기술이며 'Effective Java'와 달리 구체적인 상황에 자주 제시되므로 코드..

TIL 2023.08.27