본문 바로가기

home

(268)
Spring Boot OAuth2 로그인 스프링 부트에서 OAuth를 사용하여 소셜 로그인 기능 구현하는 방법입니다. OAuth를 지원하는 서비스가 많은데 그중에서 네이버 로그인을 사용하겠습니다. 먼저 네이버 로그인 서비스가 등록되어 있어야 합니다. 등록이 끝나면 Client ID와 Client Secret가 생성되는데 이 키값들을 사용해 네이버 로그인 서비스를 통해 인증합니다. pom.xml에 OAuth 라이브러리를 추가합니다. application.properties 파일의 1번째 라인을 보게 되면 스프링 프로필 환경 설정을 통해 다른 추가적인 설정을 할 수 있습니다. 지금 oauth로 되어있는데 이는 applicatoin-oauth.properties 파일에 있는 설정값들을 스프링 환경에 적용할 수 있습니다. application-oaut..
가장 먼 노드 프로그래머스에서 가장 먼 노드 문제를 풀었습니다. https://school.programmers.co.kr/learn/courses/30/lessons/49189 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제에 대한 설명은 위의 링크에서 확인하시면 됩니다. 각 노드별 시작 노드부터의 거리를 저장하는 Map을 생성합니다.(23~31라인) 시작 노드에서 각 노드까지의 거리를 BFS 알고리즘 사용해서 구합니다.(33~62라인) 각 노드의 거리를 구하면서 최대 먼 거리를 구합니다.(42~44라인) 다음 노드가 아직 방문하지 않았고, 시작 노드가 아닌 경우..
GitHub token 생성 GitHub token이 만료되는 경우 다시 생성하는 방법입니다. GitHub 로그인 후 메인 화면에서 오른쪽 상단 설정에서 Settings를 선택합니다. Settings 화면에서 Developer settings를 선택합니다. 화면 왼쪽 Personal access tokens -> Token(classic)을 선택한 다음에 화면 오른쪽 Generate new token -> Generate new token(classic)을 선택합니다. token 정보 입력 화면에서 token 이름과 유효기간, 범위를 선택합니다. Generate token 버튼을 선택합니다. token이 생성된 것을 확인할 수 있습니다. token 값은 생성된 화면 지금에서만 확인할 수 있으니 따로 복사해야 합니다 이렇게 새로 생성..
JUnit5 Controller ParameterizedTest junit에서 컨트롤러에 파라미터 전달 테스트 하는 방법입니다. 테스트 코드가 이전 코드와 비슷해서 중복되는 부분은 설명 생략하겠습니다. 42라인: 테스트 메소드에 다양한 입력값으로 여러 번 테스트 실행할 수 있습니다. 단독으로 사용할 수 없기 때문에 @ValueSource나 @CsvSource 등의 어노테이션과 사용해야 합니다. 43라인: csv 형식으로 데이터를 전송합니다. 해당 코드를 테스트 실행하면 위와 같이 정상적으로 종료된 것을 확인할 수 있습니다. junit4에서는 @Parameters 어노테이션으로 2건 이상의 파라미터 테스트가 가능했지만 junit5에서는 @ParameterizedTest 어노테이션을 사용하면 됩니다.
JUnit5 Controller Test junit에서 컨트롤러 단위 테스트 하는 방법입니다. 테스트 코드를 설명드리면 아래와 같습니다. 25라인: junit5에 스프링 테스트 환경을 확장합니다. 26~29라인: 웹 MVC 컨트롤러 단위 테스트 합니다. 테스트 대상은 PayController이고, 스프링 시큐리티 설정은 제외합니다. 30라인: junit5에 테스트 메소드 실행순서를 지원하고 있습니다. 31라인: junit 테스트 클래스 이름을 지정하고 있습니다. 36~37라인: mockMvc 객체를 주입합니다. 39~40라인: PayController에서 사용하는 payService 빈을 Mock 객체로 대신합니다. 42라인: junit에서 테스트하는 메소드를 정의합니다. 43라인: 테스트 메소드 실행 순서를 지정합니다. 47~48라인: 컨트롤..
JUnit5 DB test junit에서 DB 테스트하는 방법입니다. 테스트 코드를 설명하면 아래와 같습니다. 15라인: 스프링 부트 어플리케이션의 컨텍스트를 초기화합니다. 이 어노테이션은 스프링 부트 프로젝트의 설정 및 빈들을 초기화하기 때문에 느리다는 단점이 있습니다. 테스트에 필요한 빈들만 사용하고 싶다면 classes 속성을 사용하면 됩니다. ex) @SpringBootTest(classes = {PayServiceImpl.class, PayRepositoryImpl.class}) 16라인: 해당 테스트 클래스의 메소드에 트랜잭션을 적용합니다. 19~20라인: PayServiceImpl에서 사용하는 payRepository 빈을 주입합니다. 22라인: junit에서 테스트하는 메소드를 정의합니다. 25~26라인: payRe..
달리기 경주 프로그래머스에서 달리기 경주 문제를 풀었습니다. https://school.programmers.co.kr/learn/courses/30/lessons/178871 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제에 대한 설명은 위의 링크에서 확인하시면 됩니다. 각 선수에 대한 인덱스 정보를 map에 저장합니다.(16~21라인) 추월이 발생하면 배열에서 바로 앞의 선수와 위치를 바꾸고 인덱스 정보를 갱신합니다.(23~33라인) LinkedList로 문제를 풀려고 하면 시간제한에 걸리는 문제가 발생하기 때문에 Map을 통해 각 선수에 대한 인덱스를 관리하..
Docker Kafka Cluster 설치 docker-compose로 zookeeper와 kafka를 각각 3대 구성으로 kafka 클러스터 설치하는 방법입니다. docker-compose.yml 파일을 아래와 같이 작성합니다. 1라인: docker-compose 버전으로 3.5로 지정합니다. 2라인: docker-compose로 실행할 서비스(컨테이너) 목록입니다. 3라인: docker-compose로 실행되는 zookeeper 서비스인데 이름은 zk1입니다. 4라인: zookeeper 컨테이너 이미지 정보입니다. 5라인: 컨테이너가 중단되는 경우 자동으로 재시작하는 옵션입니다. 6라인: 컨테이너 내부에서만 사용되는 hostname을 zk1으로 설정합니다. 7라인: 컨테이너 이름을 zk1으로 설정합니다. 8~9라인: 컨테이너 외부포트와 내부포..