분류 전체보기 83

[Security] Form Login 인증 필터 (UsernamePasswordAuthenticationFilter)

사용자가 로그인을 실행하면 인증처리가 이루어지는데 인증처리를 담당하고 그에 관련된 요청을 처리하는 필터가 UsernamePasswordAuthenticationFilter 이다. UsernamePasswordAuthenticationFilter 내부적으로 각각의 인증처리의 역할에 따라서 여러 클래스를 호출하여 처리하게 되며 전체적인 인증처리의 흐름을 살펴보자. 1. 인증 처리 전 작업 우선 처음 사용자 인증 시도를 하면 UsernamePasswordAuthenticationFilter가 요청을 받는다 그리고 AntPathRequestMatcher(/login)에서 사용자가 요청한 요청 정보가 매칭이 되는지 확인한다. (Default는 "/login"이다.) 매칭 실패 시 chain.doFilter으로 호..

Spring Security 2021.10.04

[Algorithm] 백준1463_1로 만들기(DFS, DP)

1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 설명 정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다. X가 3으로 나누어 떨어지면, 3으로 나눈다. X가 2로 나누어 떨어지면, 2로 나눈다. 1을 뺀다. 정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오. 입력 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. 출력 첫째 줄에 연산을 하는 횟수의 최솟값을 출력한다. 예시 입력 / 출력 입력 출력 2 1 10 3 풀이 과정) 1. 재귀함수를 이용하여 풀이 완전탐색으로 진행하되 구한 카운트(cnt)값이 이전에..

Algorithm 2021.10.04

[Security] 스프링 시큐리티 설정 및 사용자 정의 보안기능 구현

의존성 추가 (gradle) implementation 'org.springframework.boot:spring-boot-starter-security' 스프링 시큐리티 의존성을 추가 후 서버를 기동하면 기본적으로 시큐리티의 초기화 작업 및 보안설정이 이루어진다. 별도의 설정이나 구현을 하지 않아도 기본적인 웹 보안 기능이 현재 시스템에 연동이 되어 작동한다. WebSecurityConfigurerAdapter 클래스는 기본적인 웹보안 기능의 활성화 및 설정등.. 모든 처리를 한다. HttpSecurit 클래스는 세부적인 기능을 설정할 수 있는 인증API, 인가API를 제공한다. 사용자 임의 설정이 없을 경우 기본으로 아래의 api들을 호출하여 설정을 초기화 한다. (Default) private vo..

Spring Security 2021.10.03

[Algorithm] 백준1018_체스판 다시 칠하기(브루트포스)

1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 설명 지민이는 자신의 저택에서 MN개의 단위 정사각형으로 나누어져 있는 M*N 크기의 보드를 찾았다. 어떤 정사각형은 검은색으로 칠해져 있고, 나머지는 흰색으로 칠해져 있다. 지민이는 이 보드를 잘라서 8*8 크기의 체스판으로 만들려고 한다. 체스판은 검은색과 흰색이 번갈아서 칠해져 있어야 한다. 구체적으로, 각 칸이 검은색과 흰색 중 하나로 색칠되어 있고, 변을 공유하는 두 개의 사각형은 다른 색으로 칠해져 있어야 한다. 따라서 이 정의를 따르면 체스판..

Algorithm 2021.09.28

[JPA] 변경 감지(Dirty Checking) 와 병합(merge)

변경 감지(Dirty Checking) 와 병합( merge ) * 준영속 상태? - 영속 상태였다가 더는 영속성 컨텍스트가 관리하지 않는 상태 - 영속성 컨텍스트로부터 분리된 상태 * 준영속 상태를 만드는 3가지 방법 - em.detach(entity) : 특정 엔티티만 준영속 상태로 전환 - em.clear() : 영속성 컨텍스트를 완전히 초기화 - em.close() : 영속성 컨텍스트를 종료 * 준영속 엔티티? - 영속성 컨텍스트가 더는 관리하지 않는 엔티티를 말한다. - 엔티티의 데이터를 가지고 있는 클라이언트 사이드로 넘기기 위한 객체 * 준영속 엔티티를 수정하는 2가지 방법 1. 변경 감지 기능 사용 2. 병합( merge ) 사용 * 변경 감지 기능을 사용하면 원하는 속성만 선택해서 변경할..

JPA 2021.09.16

[Algorithm] 백준1541_잃어버린 괄호(수학, 문자열, 그리디, 파싱)

1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net 문제 세준이는 양수와 +, -, 그리고 괄호를 가지고 식을 만들었다. 그리고 나서 세준이는 괄호를 모두 지웠다. 그리고 나서 세준이는 괄호를 적절히 쳐서 이 식의 값을 최소로 만들려고 한다. 괄호를 적절히 쳐서 이 식의 값을 최소로 만드는 프로그램을 작성하시오.] 입력 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자..

Algorithm 2021.09.15

[Git] fork, 버전 관리, pull request

fork? 다른 사람의 repository를 그대로 내 git으로 가져오는 작업. 즉 협업을 위해 어떤 부분을 수정하거나 추가 기능을 넣기 위해 해당 원본 repository를 나의 git repository로 그대로 복제하는 기능이다. fork한 저장소는 기존 원본 저장소와 연결되어 있어 아래와 같이 사용하게 된다. 1. 작업 전 fork한 소스를 최신 버전으로 업데이트를 해야 한다. * fork한 후 시간이 지나 원본repo가 업데이트 됬을 경우에 해당한다. (repo를 삭제 후 다시 새로 fork해도 된다. 기록들은 빠이) 2. 작업 후 pull request로 요청한다. 관리자의 merge(합병)을 승인 받으면 나의 소스들이 원본과 합쳐지게 된다. * 1. 작업 전 fork repository 업..

Git 2021.09.15

[Algorithm] 프로그래머스_소수 찾기_완전탐색(순열 알고리즘 사용)

코딩테스트 연습 - 소수 찾기 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 programmers.co.kr 소수 찾기 [문제 설명] 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 조각으로 만들 수 있는 소수가 몇 개인지 return 하도록 solution 함수를 완성해주세요. [제한사항] numbers는 길이 1 이상 7 이하인 문자열입니다. numbers는 0~9까지 숫자만으로 이루어져 있습니다. "0..

Algorithm 2021.09.07

[Algorithm] 프로그래머스_가장 큰 수_정렬(Comparator 사용)

코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 가장 큰 수 [문제 설명] 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다. 0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가..

Algorithm 2021.09.06

[Algorithm] 프로그래머스_튜플_2019 카카오 개발자 겨울 인턴십

코딩테스트 연습 - 튜플 "{{2},{2,1},{2,1,3},{2,1,3,4}}" [2, 1, 3, 4] "{{1,2,3},{2,1},{1,2,4,3},{2}}" [2, 1, 3, 4] "{{4,2,3},{3},{2,3,4,1},{2,3}}" [3, 2, 4, 1] programmers.co.kr 설명 셀수있는 수량의 순서있는 열거 또는 어떤 순서를 따르는 요소들의 모음을 튜플(tuple)이라고 합니다. n개의 요소를 가진 튜플을 n-튜플(n-tuple)이라고 하며, 다음과 같이 표현할 수 있습니다. (a1, a2, a3, ..., an) 튜플은 다음과 같은 성질을 가지고 있습니다. 중복된 원소가 있을 수 있습니다. ex : (2, 3, 1, 2) 원소에 정해진 순서가 있으며, 원소의 순서가 다르면 서로..

Algorithm 2021.09.01