팀원과 회의하면서 프론트엔드와 백엔드 사이에 oauth2를 어떤 방식으로 적용할 건지에 대해서 논의를 했다. 우선 기본적인 방식은 spring security에서 security Configuration에 적용만 하면 authroziation code부터 사용자 정보까
restTemplate.exchange() 메서드를 활용해 ResponseEntity<Map<String, Object>> 타입의 데이터를 가져와야 하는 상황이 있었다. 문제는 restTemplate에 들어갈 인수에 Class<T>가 있었는데 이것은 해
Docker is an open platform for developing, shipping, and running applications.Docker enables you to separate your applications from your infrastructur
실행중인 터미널 위치에서 Dockerfile을 실행한다면 굉장히 쉽게 명령어를 통해 이미지를 build할 수 있다.하지만 실제 Docker 프로젝트를 진행하다보면 다른 경로에 DockerFile들을 보관해야 하는 경우가 생긴다.java application에서 buil
객체지향적으로 설계하다보면 원시 객체 래핑이 필요할 때가 있다. 원시 객체 래핑에는 좋은 글이 많지만 요약해서 설명하자면 확장성이 좋고 원시 객체의 상태를 생성시 스스로 검증하면서 비즈니스에 적합한 타입을 만들 수 있다. 예를 들어 보자우리가 돈을 표현하고 싶다. 가장
java.net.UnknownHostException: Failed to resolve 'https:' \[A(1)] after 4 queries 예외 오류가 발생했다. 해당 오류 코드를 자세히 읽어봤지만 파악하기가 쉽지 않았다. 그래서 구글링 결과 해당 오류
java app image를 만들때 환경 변수 옵션으로 로케이션을 설정할 수 있도록 했다.내가 java image로 빌드하기 위해 짠 Dockerfile은 다음과 같다.위의 ENV를 주목해보면 LOCATION이 있는데 이는 빌드된 image의 jar 파일 실행시 --s
위의 메세지 같은 오류가 발생했다. jdbc가 mysql 컨테이너와의 연결을 실패하다니.. 이유가 뭘까??나의 application.yml에는 jdbc 연결 host 설정이 localhost:3306이였다. 이것은 docker container와 network에 대해서
EC2 서버에 아무런 요청을 하지 않으면 잘 동작하지만 요청을 하면 응답 후 몇 초에서 길면 몇 분 뒤에 서버가 터지기 시작했다. 갑자기 메모리와 cpu 사용량이 100% 찍으면서 모든 요청과 ssh 접속 마저 마비됬다.Free-tier ec2에 3개의 도커 컨테이너를
filter 단위 테스트 문제점 filter를 단위테스트하려고 했는데 문제가 생겼다. Spring security를 적용했던 나는 filter가 filterchain으로 계속해서 연결되기 때문에 중간에 연결을 끊고 로직만을 어떻게 테스트 해야 할 지 몰랐다. fil
mockito로 정의한 response의 응답이 테스트 결과 필요하다고 생각했다. 그 이유는 OncePerRequestFilter를 상속한 JwtAuthenticationFilter가 특정한 예외상황이나 문제점이 발생했을 때 예외가 실제 핸들링이 되었는지 알 필요가 있
리스트에서 랜덤하게 데이터를 중복없이 뽑아내는 방법은 어떤 것이 있을까? 우선 random을 활용해야 하고 다음과 같이 알고리즘을 짤 수 있다.random 인스턴스를 생성한다.random.nextInt(bound)를 활용해 인덱스로 접근할 랜덤한 정수 값을 받아온다.만
테스트 코드의 코드 수를 줄이기 위해 given을 전역 상태로 만들어서 테스트를 수행했다.https://github.com/Almondia/meca-backend/commit/084fb5fa72c14e6657e49e754506c9d5c75a2529그러나 주어진
https://jojoldu.tistory.com/415더티 체킹에 대해 간략하게 잘 설명되어 있는 블로그다.더티 체킹이란 트랜잭션 내에서 영속화 상태의 엔티티의 데이터가 변경되면 별다른 요청 없이 트랜잭션 종료시 변경값으로 update 된다.더티 체킹은 JP
API 개발중 카테고리 ID를 입력하면 이를 바탕으로 해당 카테고리 내부의 카드를 페이징 조회하는 쿼리를 만들어야 했다. 이 때문에 categoryId 인자가 반드시 필요하다.보통 NPE 문제를 막고 인자에 유연하게 동적으로 쿼리를 생성하기 위해 Querydsl에서 다
등록시 createdAt과 modifiedAt 속성이 모두 9시간 전으로 나왔다. 이것은 TimeZone이 Asia/Seoul로 설정되지 않아서 발생하는 문제이다. 이를 해결해야 한다sql에 저장해야 하므로 sql의 시간을 대한민국 서울 표준시로 설정이 되야 할 것이다
나의 카테고리 조회 로직은 다음과 같다그러나 해당 로직은 cardId.countDistinct()가 조회에 문제가 있었다. 도메인을 설계할때 삭제 상태를 나타내는 isDeleted 속성을 뒀는데 카드를 삭제하면 isDeleted = true가 되고 실제로 데이터를 삭제
rest docs build시 자동으로 .adoc 파일을 .html로 build하고 static파일에 옮기려면 build.gradle에 여러 설정을 해야한다. 그래서 build.gradle에 쓰이는 코드가 비대해지고 어떤 설정을 했는지 한눈에 파악하기가 쉽지 않다.이것
Nginx 적용 이유
회원 정보 수정을 요청하는 API를 만들었는데 DB에 수정사항이 반영되지 않는 이슈가 있었다. 문제의 코드는 다음과 같다.null을 체크하고 null 아니면 해당 속성을 업데이트한다. 이때 save 요청을 하지 않은 이유는 인자로 가져온 엔티티가 영속화 상태일 것이라
이번에 어플리케이션 서버에서 형태소를 분석해서 점수를 매기기 위해서 형태소 분석을 외부 API로 부터 호출하기로 했다. 문제는 WebClient로 호출할 API의 응답형태는 다음과 같았다.이러한 형태를 받기위해 NlpToken이라는 타입을 만들었다.그리고 이 타입을 응
외부 API 적용해야 하는 문제 카드 문제를 풀면 그때의 카드 상태와 점수를 채점해서 카드 결과를 리턴하는 API를 설계해야 했다. 이 때 구현해야 하는 로직은 다음과 같다. 채점은 카드 타입에 따라 분류되고 서술형 카드의 경우 형태소 분리를 통해 키워드를 분리하여
직접 이미지를 Spring 서버에 입력하는 것은 몇가지 문제점이 존재한다.용량 및 대역폭 문제이미지는 일반적인 json과 같은 데이터에 비해 용량 사이즈가 크다. 그렇기에 직접 업로드하는 방식은 서버 용량도 많이 차지할 뿐만 아니라 대역폭에도 신경써야 한다. 클라우드
실제 만든 서비스를 이용하려고 하니 도커로 인스턴스 서버에 생성한 DB가 불안했다. 그 이유는 MySQL 이미지를 컨테이너로 띄우면 메모리를 700M 정도 잡아먹는데 여기에 nginx, application server까지 띄우니 1GB 사용을 뛰어 넘는다. 결국 메모
이번에 카드 엔티티의 질문(Question) 속성과 설명(Description) 속성의 허용 길이를 늘려달라고 부탁받았다. Description의 경우 원래 CLOB이기에 큰 문제 없었지만 질문속성의 경우 VARCHAR2(2000)으로 정의되어있었다. 이를 5만자로 허
프로젝트를 진행하면서 서비스 로직의 수행시간과 에러 또는 경고에 대한 로그 정보를 얻어오고 관리하고 싶었다. 이를 위해서 logback의 상세 정보를 수정하고 관리하기 위해 logback-spring.xml을 추가하고 configuration 정보를 추가했다. 그러나
jacoco 사용시 특정 클래스를 커버리지 테스트에서 제외하고 싶었는데 잘 되지 않았다. 이것을 적용하려고 했는데 실제 결과에는 제외되지 않고 커버리지를 측정했다. 그래서 제외시킬수 있는 방법을 찾아야 했다. 그리고 롬복으로 생성된 코드 역시 커버리지 분석을 하기 때문