전체 글

1. 왜 읽었나요?이전 프로젝트를 진행하면서 영속성 계층이 비대해졌다는 느낌을 받았다. 구글에게서 사용자 정보를 받아오는 GoogleProvider나 요청 헤더에서 액세스 토큰을 추출하는 AccessTokenExtractor까지 영속성 계층에 속해있었다. 우리 팀에 각 계층은 하위 계층만 참조할 수 있다는 룰이 있었기 때문이다. 서비스 계층에서 참조하려면 영속성 계층밖에 없었고, 그 결과 저 클래스들은 전부 영속성 계층이 되었다. 따지고 보면 데이터를 저장하거나 보관하는 역할이 아니었는데 말이다. 입력값 검증을 진행하면서 팀원과 의견이 갈렸던 경험도 하나의 원인이었다. 나는 단순 입력값 검증은 컨트롤러 계층에서 검증 어노테이션을 이용해 진행하고, DB 조회가 필요한 검증(ex: 중복된 태그명인지 등)은 ..
하반기에 1차 면접 탈락률 80%를 찍었다. 그래서 이번에는 잘 보자! 했는데 어김없이 망해서 쓰는 매쉬업 면접 탈락 후기. 면접은 강남에서 (면접관) 4 : 2 (지원자) 로 이루어졌다. 정확히 정각에 들어갔고, 50분가량 진행되었다. 지원서에 블로그 링크를 제출했었는데, 관련 질문이 꽤 들어왔다. 내가 포스팅을 알고 썼는지 모르고 썼는지 확인한다는 느낌을 받아서, 블로그 글을 꼼꼼히 읽으신 것 같다는 생각을 했다. (오히려 포트폴리오 관련 질문은 별로 안들어왔던 것 같다.) 1. 면접 질문 다른 지원자분께서 받은 질문은 적지 않고 내가 받은 질문만 받았다. 질문 순서는 번갈아가면서 해주신다. 사실 면접이 끝나고 망했다! 는 생각에 시간이 좀 지나서 복기한지라 빠뜨린 질문이 있을 수 있다. 인성질문은 ..
문제: https://school.programmers.co.kr/learn/courses/30/lessons/42897 1. 시간 초과 코드 (Java) (1) 코드 class Solution { public int solution(int[] money) { int answer = 0; int N = money.length; int[][] dp = new int[N+1][2]; for (int i=2; i
1. 스프링 시큐리티를 쓰지 않은 이유 한마디로 말하자면 과도한 의존성 추가라고 생각했다. 프로젝트의 규모가 작고 진행 기간도 짧은 상황에서, JWT 검증만을 위해 Spring Security를 추가하는 건 과하다고 생각했다. 그래서 스프링 시큐리티 없이 ArgumentResolver를 이용해 JWT 검증을 구현하기로 했다. 2. 무엇을 구현할 건가요? 우리 서비스의 API는 크게 2가지로 나뉜다. 회원 전용 API 비회원도 호출 가능하지만, 회원과 비회원에게 다른 내용을 보여주는 API 회원 전용 API에서는 Authorization 헤더가 필수적이지만, 비회원도 사용 가능한 API에서는 Authorization 헤더가 필수적이지는 않다. 따라서 어노테이션에 required 속성을 추가하여, 비회원도 ..
7주차는 리프레시 기간이었기 때문에 8주차부터 시작하는 회고! 2023년이라고 썼다가 부랴부랴 2024로 바꿨다😂😂 1. 무슨 일이 있었나요? (1) 프로필 이미지 기능 구현 프로필 이미지 업로드 기능을 구현했다. 이미지 업로드는 이전에도 구현해본 적 있는 기능이지만, 그 때는 코드가 엄청 더러웠다. 그래서 이번에는 가독성 좋은 코드를 만들기 위해 노력했다. ImageUtil과 Image객체를 분리한 다음, 이미지 업로드 및 삭제는 유틸에서, 기타 파일 확장자 등의 반환은 이미지 객체에서 처리하도록 만들었다. (2) REST Assured를 이용한 E2E 테스트 진행 MockMvc로만 테스트를 진행하다가, 서블릿 컨테이너가 필요해져서 REST Assured를 이용한 통합 테스트를 진행했다. MockMvc..
1. 도입 계기 spring: servlet: multipart: max-file-size: 5MB spring.servlet.multipart.max-file-size 설정이 제대로 적용됐는지, 6MB짜리 파일을 업로드했을 때 정상적으로 예외가 발생하는지를 테스트하고 싶었다. 이를 위해서는 서블릿 컨테이너를 띄워야 했지만, 기존의 MockMvc는 가짜 서블릿 컨테이너를 띄워주기 때문에 이런 설정에 대한 테스트는 불가능했다. 그래서 RestAssured로 End-to-End 테스트를 작성해보기로 했다. 2. REST Assured란? REST Assured는 Java 기반의 오픈소스 라이브러리로, REST API 테스트를 편하게 작성할 수 있게 해준다. REST Assured는 아래와 같은 장점이 있다...
gorapaduckoo
진화의 돌