멋사 40

[HttpStatus] 401 UnAuthorized와 403 Forbidden의 차이

프로젝트를 진행하며 예외처리를 해줘야하는 경우가 생겼다. 글 수정, 삭제 시 본인이 작성한 글이 아닌 경우 예외를 발생하도록 했는데 본인이 작성한 글이 아니니 수정, 삭제 작업에 대한 권한이 없다고 생각해 UnAuthorized를 줘야한다고 생각했다. 근데 찾아보니 401 UnAuthorized는 인증되지 않은 사용자이거나 인증 정보가 부족한 경우에 요청이 거부되었음을 의미한다고 한다. 인증이 되지않은 상태에서 요청을 할 경우에 UnAutorized 상태가 되는 것이다. 로그인을 하지 않고 요청을 하는 경우를 예로 들 수 있다.. 403 Forbidden은 인증된 사용자이나 해당 요청에 관한 권한이 없을 경우를 의미한다. 인증은 되었지만 요청에 대한 권한이 없을 경우에 Forbidden 상태가 되는 것이..

멋사/TIL 2023.08.24

230725 15주 2일차 TIL. Spring Security 복습

Sprinc Security 인증 : 사용자가 자신이 누구인지를 증명하는 과정 인가 : 인증된 사용자가 어떤 작업을 수행할 수 있는지를 결정하는 과정 authorizeHttpRequests를 통해 어떤 URL에 접근 가능하고 어떤 URL에 접근 불가능한지 설정가능하다. 그 안에 requestMatchers를 통해 경로를 설정할 수 있다. 이 경로에 대해 다음 조건(permitAll(), authentication() 등)을 덧붙이겠다는 의미 JWT json으로 표현된 정보를 안전하게 주고받기 위한 Token의 일종으로 json을 인코딩한 것이다. 인코딩한 json을 바탕으로 어떤 암호화를 통해 만들어졌는지 위변조가 어렵게 만든 것이 jwt이다. 토큰 기반 인증 시 사용자 세션 기록할 필요 없으므로 Web..

멋사/TIL 2023.07.28

230724 15주 1일차 TIL. JavaScript, 변수, hoisting, 연산자

JavaScript 자바스크립트는 웹 브라우저에서 해석하여 웹 브라우저가 로드한 HTML 문서를 조작하고 사용자의 행동에 따라 UI의 변화를 일으킬 목적으로 만들어진 프로그래밍 언어이다. 사전에 기계어로 번역되지 않고 필요한 순간 브라우저로 인해 해석되는 스크립트 언어이다. JavaScript 변수 자바스크립트는 자료형이 존재하지만 변수 선언 시에는 자료형을 지정하지 않는다. 대신 변수 선언 방법은 다양하다. let let foo = 'a let variable' foo = 'let variables can be reallocated' java의 평범한 변수와 유사. let으로 선언한 변수는 재할당이 가능하다. 다른 타입으로도 재할당이 가능하나 권장되진 않는다. const const bar = 'a co..

멋사/TIL 2023.07.24

230718 14주 2일차 TIL. Entity 관계 설정

Entity 관계 설정 Entity 관계에는 1:1, N:1, M:N 관계가 있다. 1:1, One to One 관계 한 테이블의 레코드 하나 당 다른 테이블의 레코드 하나와 연관된 관계이다. 특정 데이터를 보안 또는 성능적 측면에서 나눌 때 사용한다. N:1, Many to One 관계 한 테이블의 레코드 0개 이상이 다른 테이블의 레코드 하나와 연관된 관계이다. 일반적인 데이터베이스의 가장 흔한 관계로 소속 관계를 생각하면 쉽다. ex) 게시글 - 댓글, 가게 - 상품, 학생 - 지도교수 . . . M:N, Many to Many 관계 한 테이블의 레코드 0개 이상이 다른 테이블의 레코드 0개 이상과 연관된 관계이다. 이를 표현하기 위해 양쪽 테이블의 PK를 FK로 갖는 제 3의 테이블을 만든다. 이..

멋사/TIL 2023.07.19

230714 14주 1일차 TIL. Moo 게임 Boj 5904, 데이터베이스 정규화

Moo 게임 boj 5904 https://www.acmicpc.net/problem/5904 5904번: Moo 게임 Moo는 술자리에서 즐겁게 할 수 있는 게임이다. 이 게임은 Moo수열을 각 사람이 하나씩 순서대로 외치면 되는 게임이다. Moo 수열은 길이가 무한대이며, 다음과 같이 생겼다. m o o m o o o m o o m o o o www.acmicpc.net import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Boj5904 { public char solution() throws IOException { BufferedReader reader = new..

멋사/TIL 2023.07.17

230713 13주 4일차 TIL. 카드 합체 놀이 boj 15903, WebSocket

카드 합체 놀이 boj 15903 https://www.acmicpc.net/problem/15903 15903번: 카드 합체 놀이 첫 번째 줄에 카드의 개수를 나타내는 수 n(2 ≤ n ≤ 1,000)과 카드 합체를 몇 번 하는지를 나타내는 수 m(0 ≤ m ≤ 15×n)이 주어진다. 두 번째 줄에 맨 처음 카드의 상태를 나타내는 n개의 자연수 a1, www.acmicpc.net import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.PriorityQueue; import java.util.StringTokenizer; public class Main { publ..

멋사/TIL 2023.07.13

230712 13주 3일차 TIL. Heap, Job Queue

Heap 힙은 특수한 형태의 완전 이진 트리이다. 다양한 요소를 가진 집합에 대해 최대값/최소값 찾기가 용이하여 우선순위 큐를 만드는데 용이하게 사용된다. 완전 이진 트리의 어떤 노드 C와 어떤 노드 P가 있을 때 C의 값보다 P의 값이 항상 크면 --> 최대힙 C의 값보다 P의 값이 항상 작으면 --> 최소힙 힙은 정렬을 위한 자료구조가 아닌 최대/최소를 구하기 위한 자료구조로 이진트리 안의 값들은 항상 정렬이 되어 있어야 한다. . 힙 삽입 연산 Job Queue 메시지를 주고받는 방식을 정의한 디자인 패턴의 일종 - 한 서버에서 처리해야 하는 작업을 만들어 Queue에 적재 - 처리 기능을 갖춘 소프트웨어가 Queue에서 작업을 순차적으로 처리 - 작업을 만든 서버는 작업이 어떻게 진행되는지를 살펴..

멋사/TIL 2023.07.13

230711 13주 2일차 TIL. 쿼드트리, 퀵소트, 이진탐색

쿼드트리 https://www.acmicpc.net/problem/1992 1992번: 쿼드트리 첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1 ≤ N ≤ 64의 범위를 가진다. 두 번째 줄부터는 길이 N의 문자열이 N개 들어온다. 각 문자열은 0 또 www.acmicpc.net public class Boj1992 { // 입력에 대한 정보를 클래스 필드로 저장한다. // 입력된 0과 1로 구성된 이미지 private char[][] image; // 결과를 저장하기 위한 StringBuilder public StringBuilder quadTreeBuilder; private void solution() throws IOException { Buf..

멋사/TIL 2023.07.11