전체 글

다양한 경험을 기록해요
· TIL
오늘 한 일 Spring Data JPA를 쓰는데 쿼리 메소드로 여러 연관관계를 표시하는게 복잡해서 JPQL을 공부하고 사용했다. 조금 복잡한 조회 조건(좋아요 누른 글 목록을 얻는데, 글 작성자가 비공개 계정이라면 얻을 수 없다)을 쿼리로 작성하려고 하니 서브쿼리 때문에 가독성이 많이 나빠졌다. 그래서 서버에서 글 필터링 조건을 처리할지 고민했는데, 글이 많아지는 경우에 서버가 처리하는 것보다 DB에서 처리할 때 인덱스를 걸어서 가독성은 나쁘지만 조회 속도는 최적화 할 수 있다고 생각했다. 그냥 흘깃 봐도 아래의 쿼리는 보기가 싫어진다.. 더 가독성 좋은 쿼리를 위해서 다음엔 QueryDsl를 사용해야겠다. // 좋아요를 누른 글 목록 조회(글 작성자가 비공개 상태라면 팔로잉 중일 때만 조회) @Que..
· TIL
오늘 한 일 Spring boot가 jackson에 추가하는 설정을 공부했다. gradle로 빌드할 때와 intellij idea로 빌드할 때 jackson의 직렬화/역직렬화에 필요한 생성자와 접근자가 달라지더라.. SNS 프로젝트에 좋아요와 관련된 기능을 개발했다. 유저가 여러 글에 좋아요를 할 수 있기 때문에 N:M이라 유저-좋아요-글을 1:N:1로 풀었다. 알고리즘 문제 1개 풀었다.
프로그래머스의 레벨 2 문제 최솟값 만들기 문제 요구 조건 두 리스트에서 원소 하나씩을 꺼내 곱한 값을 모두 더했을 때, 최소가 되는 값을 구해야 한다. 풀이 방법 a에서 가장 작은 수 순서대로, b에서 가장 큰 수 순서대로 곱하면 그게 최소다. def solution(A,B): answer = 0 A.sort() B.sort(reverse=True) for i in range(len(A)): answer += A[i]*B[i] return answer
· TIL
오늘 한 일 아웃소싱 프로젝트의 주제로 SNS 백엔드 서버를 만들기로 했다. 인스타그램으로 가입할 수 있는 Thread의 기능을 비슷하게 만드는게 목표다. 기능을 분석하면서 게시글을 조회하는 방법이 생각보다 다양해서 놀랐다. ㅋㅋㅋㅋ 하나씩 해봐야지.. 추천 시스템은 흉내만 내야겠다. 프로젝트 S.A 문서를 작성하는데 오늘 하루를 거의 다 썼다. 기능을 기획하면서 의견을 나누다 보니 시간이 순식간에 지나가네.. 그래도 (쉬운)알고리즘 문제 1개 풀었다. [프로그래머스] Python3 - 최솟값 만들기 프로그래머스의 레벨 2 문제 최솟값 만들기 문제 요구 조건 두 리스트에서 원소 하나씩을 꺼내 곱한 값을 모두 더했을 때, 최소가 되는 값을 구해야 한다. 풀이 방법 a에서 가장 작은 수 순서대로 ouohoo..
· TIL
오늘 한 일 Spring boot + spring security 환경에서 Junit5와 Mockito로 dto, entity, controller, service, repository 및 통합 테스트 하는 방법을 공부하고 테스트 코드를 작성했다. [Spring boot] controller layer 테스트 코드 작성하기 service layer의 테스트 코드에 이어서 controller layer의 테스트 코드 작성하는 방법을 정리해두자. controller를 테스트하기 위해서 주로 @WebMvcTest 애너테이션(이름대로 WebMvc와 관련된 Bean이 등록된다)을 ouohoon.tistory.com [Spring boot] Service layer 테스트 코드 작성하기 Spring boot와 JU..
· Tool/Spring
service layer의 테스트 코드에 이어서 controller layer의 테스트 코드 작성하는 방법을 정리해두자. controller를 테스트하기 위해서 주로 @WebMvcTest 애너테이션(이름대로 WebMvc와 관련된 Bean이 등록된다)을 적용한 테스트 클래스에서 테스트 한다. MockMvc: 요청과 응답을 모방하는 클래스다. DispatcherServlet에 요청을 보내는 식으로 작동한다. 배운 것과 나의 생각 Spring security를 사용할 때, 유저 인증 정보를 단위 테스트에서 받을 수 없다. @WebMvcTest는 Spring security configuration을 등록하지 않기 때문에 내가 SecurityConfig에 등록한 필터가 적용되지 않는다. 그래서 SecurityC..
도_유
대도유서관