전체 글 63

Baekjoon[JAVA] - 2529번 부등호(백트래킹)

https://www.acmicpc.net/problem/2529 2529번: 부등호 두 종류의 부등호 기호 ‘’가 k개 나열된 순서열 A가 있다. 우리는 이 부등호 기호 앞뒤에 서로 다른 한 자릿수 숫자를 넣어서 모든 부등호 관계를 만족시키려고 한다. 예를 들어, 제시 www.acmicpc.net 문제 두 종류의 부등호 기호 ‘’가 k개 나열된 순서열 A가 있다. 우리는 이 부등호 기호 앞뒤에 서로 다른 한 자릿수 숫자를 넣어서 모든 부등호 관계를 만족시키려고 한다. 예를 들어, 제시된 부등호 순서열 A가 다음과 같다고 하자. A ⇒ 부등호 기호 앞뒤에 넣을 수 있는 숫자는 0부터 9까지의 정수이며 선택된 숫자는 모두 달라야 한다. 아래는 부등호 순서열 A를 만족시키는 ..

Problem Solving 2022.10.14

Baekjoon[JAVA] - 10819번 차이를 최대로(DFS)

https://www.acmicpc.net/problem/10819 10819번: 차이를 최대로 첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다. www.acmicpc.net 문제 N개의 정수로 이루어진 배열 A가 주어진다. 이때, 배열에 들어있는 정수의 순서를 적절히 바꿔서 다음 식의 최댓값을 구하는 프로그램을 작성하시오. |A[0] - A[1]| + |A[1] - A[2]| + ... + |A[N-2] - A[N-1]| 입력 첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보..

Problem Solving 2022.10.14

[Spring boot] Swagger로 API 문서화하기

목차 swagger란? springdoc과 springfox spring boot에 적용하기 결론 Swagger란? https://swagger.io/ API Documentation & Design Tools for Teams | Swagger swagger.io Swagger는 OpenAPI Specification(OAS)의 구현을 위한 라이브러리이다. API의 사양을 명세하고 문서화하여 관리할 수 있도록 도와준다. 여기서 OpenAPI Specification(OAS)란, What is the OpenAPI Specification? The OpenAPI Specification (OAS) defines a standard, programming language-agnostic interface ..

Backend/Spring 2022.07.02

[Spring Boot] Redis와 함께 Refresh Token 구현하기

https://hou27.tistory.com/entry/Spring-Security-JWT Spring Security - JWT 이번에는 지난번 세션 인증을 적용한 포스트에 이어서 JWT를 이용한 로그인을 구현해보도록 하겠다. 지난 포스트 https://hou27.tistory.com/entry/Spring-Security-%EC%84%B8%EC%85%98-%EC%9D%B8%EC%A6%9D Spring.. hou27.tistory.com 이번엔 위 포스트에서 진행한 것에 약간의 수정과 추가를 통해 Spring Security + JWT + Spring Data Redis 의 조합을 완성해보도록 하겠다. 진행 순서 Redis 설치 Spring Boot 프로젝트에 Redis 적용 실습을 통한 동작 확인 ..

Backend/Spring 2022.06.17

Spring Security - JWT

이번에는 지난번 세션 인증을 적용한 포스트에 이어서 JWT를 이용한 로그인을 구현해보도록 하겠다. 지난 포스트 https://hou27.tistory.com/entry/Spring-Security-%EC%84%B8%EC%85%98-%EC%9D%B8%EC%A6%9D Spring Security - 세션 인증 지난번에 Spring Security를 적용했었는데, Spring Security 적용하기 [Spring Boot] Spring Security 적용하기 - 암호화 프로젝트를 진행하면서 사용자 시스템을 구축한다면 필연적으로 인증 로직도 구현해야한 hou27.tistory.com 이번 포스트는 https://github.com/murraco/spring-boot-jwt GitHub - murraco/sp..

Backend/Spring 2022.06.11

Spring Security - 세션 인증

지난번에 Spring Security를 적용했었는데, Spring Security 적용하기 [Spring Boot] Spring Security 적용하기 - 암호화 프로젝트를 진행하면서 사용자 시스템을 구축한다면 필연적으로 인증 로직도 구현해야한다. 이 과정에서 만약 사용자의 비밀번호를 평문(Plain Text)으로 저장한다면, 심각한 보안상 문제를 초래 hou27.tistory.com 이번엔 이어서 세션을 기반으로 한 로그인을 구현해보도록 하겠다. 가장 먼저 스프링 시큐리티의 설정을 마무리하고, 타임리프를 통해 간단한 페이지를 구현하여 테스트까지 해볼 예정이다. 우선 변경된 Spring Security 설정 파일의 모습이다. 참고로 이 포스트에서 다루는 Spring Security의 버전은 5.7.1...

Backend/Spring 2022.05.29

Intellij 단축키 정복하기

Intellij를 사용한 지 얼마 되지 않아 vscode를 사용할 때와 달리 자꾸 마우스에 손이 가서 흐름이 끊긴다는 느낌을 받고, 또 그 때문에 단축키를 찾느라 심심찮게 스트레스를 받았다. 그런데 조금 전, 구글링을 하다가 단축키를 알려주는 플러그인이 있다는 사실을 알게 되었다. Key Promoter X https://github.com/halirutan/IntelliJ-Key-Promoter-X GitHub - halirutan/IntelliJ-Key-Promoter-X: Modern IntelliJ plugin to learn shortcuts for buttons Modern IntelliJ plugin to learn shortcuts for buttons - GitHub - halirutan..

Dev 2022.05.22

@RequestBody, @ModelAttribute 그리고 Argument Resolver

Spring을 공부하던 중 @ModelAttribute 와 @RequestBody 이 둘의 차이를 명확히 정리하지 못해 이렇게 해보고 저렇게 해보는 삽질 끝에 결국 깨닫게 되어 정리해두고자 한다. 기존 form data를 넘겨받아 유저의 회원가입을 진행하는 필자의 controller는 아래와 같았다. @RestController @RequestMapping("/user") @RequiredArgsConstructor public class UserController { private final UserService userService; @PostMapping("/signUp") public User signUp(@ModelAttribute @Validated UserSignUpRequest signUp..

Backend/Spring 2022.05.20

[Spring Boot] Spring Security 적용하기 - 암호화

프로젝트를 진행하면서 사용자 시스템을 구축한다면 필연적으로 인증 로직도 구현해야한다. 이 과정에서 만약 사용자의 비밀번호를 평문(Plain Text)으로 저장한다면, 심각한 보안상 문제를 초래하게 된다. 그렇기 때문에 반드시 암호화하여 관리해야만 한다. 암호화? 해싱? 해싱과 암호화 두 단어가 이런 류의 포스트에서 마구 등장해 헷갈릴 수 있다. 해싱(Hashing)과 암호화(Encryption) 모두 데이터의 보안을 위해 사용하는 것이지만, 가장 큰 차이점은 Hash는 단방향 암호화 기법이고 Encryption는 양방향 암호화 기법이라는 것이다. 때문에 비밀번호를 저장할 때는 행여나 탈취될 가능성을 염두에 두어 평문을 암호화하는 것은 가능하지만 다시 평문으로 복호화하는 것은 불가능한 단방향 암호화 방식을..

Backend/Spring 2022.05.20

Singleton Pattern(싱글톤 패턴)

싱글톤 패턴이란 것을 Spring을 공부하면서 접했는데, 희미하게 머릿속에 떠다니는 것 같아 글로 정리하고자 한다. Singleton Pattern이란? 클래스의 인스턴스가 1개만 생성되는 것을 보장하는 디자인 패턴 어플리케이션이 시작될 때 어떤 클래스가 최초 1회만 메모리에 인스턴스를 생성하는 방식이다. 예제 기존 코드를 기반으로 한 Test 코드(spring X) @Test @DisplayName("Pure DI Container without Spring") void pureContainer() { AppConfig appConfig = new AppConfig(); // 호출 시마다 객체 생성됨. UserService userService1 = appConfig.userService(); User..

Dev 2022.05.10