본문 바로가기

전체 글

(224)
Docker-compose 사용하기 1. 개요다음은 이전 포스팅에서 사용한 docker에 postgres를 띄우기 위한 명령어이다.docker run -p 5432:5432 --network doc-net --name test-postgres -e POSTGRES_PASSWORD=root -d postgres:latest바로 문제가 보인다. 너무 길다. 만약 프로젝트가 더 복잡해지고, 더 많은 컨테이너가 필요하다면 이런 명령어를 모두 쳐야 한다. 이를 개선하기 위해 docker compose를 사용해보자.2. docker-compose.ymlservices: test-postgres: image: postgres:17 restart: always ports: - "5432:5432" volumes: ..
백준 7490 0 만들기 (Java) https://www.acmicpc.net/problem/74901. 문제1부터 N까지의 수를 오름차순으로 쓴 수열 1 2 3 ... N을 생각하자.그리고 '+'나 '-', 또는 ' '(공백)을 숫자 사이에 삽입하자(+는 더하기, -는 빼기, 공백은 숫자를 이어 붙이는 것을 뜻한다). 이렇게 만든 수식의 값을 계산하고 그 결과가 0이 될 수 있는지를 살피자.N이 주어졌을 때 수식의 결과가 0이 되는 모든 수식을 찾는 프로그램을 작성하라.입력첫 번째 줄에 테스트 케이스의 개수가 주어진다(각 테스트 케이스엔 자연수 N이 주어진다(3 출력각 테스트 케이스에 대해 ASCII 순서에 따라 결과가 0이 되는 모든 수식을 출력한다. 각 테스트 케이스의 결과는 한 줄을 띄워 구분한다. 2. 풀이총 9까지의 자연수가 들..
백준 22251 빌런 호석 (Java) 1. 문제치르보기 빌딩은 1층부터 N층까지 이용이 가능한 엘리베이터가 있다. 엘리베이터의 층수를 보여주는 디스플레이에는 K 자리의 수가 보인다. 수는 0으로 시작할 수도 있다. 0부터 9까지의 각 숫자가 디스플레이에 보이는 방식은 아래와 같다. 각 숫자는 7개의 표시등 중의 일부에 불이 들어오면서 표현된다.빌런 호석은 치르보기 빌딩의 엘리베이터 디스플레이의 LED 중에서 최소 1개, 최대 P개를 반전시킬 계획을 세우고 있다. 반전이란 켜진 부분은 끄고, 꺼진 부분은 켜는 것을 의미한다. 예를 들어 숫자 1을 2로 바꾸려면 총 5개의 LED를 반전시켜야 한다. 또한 반전 이후에 디스플레이에 올바른 수가 보여지면서 1 이상 N 이하가 되도록 바꿔서 사람들을 헷갈리게 할 예정이다. 치르보기를 사랑하는 모임의 ..
로그인 인증 과정 추가해보기 - AuthenticationProvider 커스텀 1. 개요해당 프로젝트에서는 관리자 계정으로만 Username password 방식으로 로그인이 가능해야 한다. 이전 포스팅에서의 동작을 기반으로 해당 인증과정을 추가해보고자 한다.2. AuthenticationProvider지난 포스팅에서 언급했듯이 인증 자체는 AuthenticationProvider에서 진행되고, 그 결과를 AuthenticationManager가 받는다. 인증 과정을 추가하려면 AuthenticationProvider를 수정하면 될 것이다. protected void additionalAuthenticationChecks(UserDetails userDetails, UsernamePasswordAuthenticationToken authentication) throws Aut..
Json 로그인 분석하기 - 스프링 시큐리티의 동작 과정 1. 개요앞의 게시글에서 json을 사용한 로그인을 스프링 시큐리티를 사용하여 구현해보았다. 구글 코드를 참고하여 작성하다가  해당 코드를 보았다.UsernamePasswordAuthenticationToken authRequest = new UsernamePasswordAuthenticationToken(username, password);//principal 과 credentials 전달return this.getAuthenticationManager().authenticate(authRequest); 해당 코드가 실제로 어떻게 동작하여 인증을 진행하는 지 궁금하여 이 게시글을 작성해보면서 공부하기로 하였다. https://runawayfromlazy.tistory.com/16 Hello, Sprin..
application/json 형식으로 관리자 로그인 구현하기 1. 개요해당 프로젝트에서 관리자 페이지를 만들어 운영하기로 했다. 운영하게 될 서비스는 소셜 로그인만 지원하도록 했지만 관리자 페이지는 username/password 형식으로 구현하도록 할 것이다. 해당 프로젝트는 스프링 시큐리티를 사용하므로 필터를 사용하여 로그인을 구현하고자 한다.2. 사용한 코드2-1. LoginFilterpublic class JsonUsernamePasswordAuthenticationFilter extends AbstractAuthenticationProcessingFilter { private static final String DEFAULT_LOGIN_REQUEST_URL = "/api/v1/login/admin"; // /login 으로 오는 요청을 처리할 것이..
백준 1074 Z (Java) https://www.acmicpc.net/problem/1074import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.StringTokenizer;public class Main { static int cnt = 0; static int r; static int c; public static void main(String[] args) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); StringT..
스프링부트 테스트코드 작성하기: Controller 1. 개요이전 포스팅에서 repository, service 계층의 단위 테스트를 작성해보았다. 이번에는 controller 계층의 단위테스트를 작성해보고자 한다.2. Controller@WebMvcTest(MemberController.class)@MockBean(JpaMetamodelMappingContext.class) //JPA 관련 빈들을 mock으로 등록class MemberControllerTest { @Autowired MockMvc mockMvc; @MockBean MemberService memberService; @Autowired ObjectMapper objectMapper; @Test @DisplayName("회원 활성화 완료 응..