전체 글

하고 싶은 것들을 하며 성공하기
· Spring
[개요] Spring을 통해 프로젝트를 진행하기 위해 로컬 DB인 MySQL을 연결하려 한다. Spring은 내부적으로 자체적인 DB 관련 애플리케이션이 존재한다. 그래서 미리 정의된 변수에 올바른 값만 넣어준다면 쉽게 DB와 연결할 수 있다. 해당 변수는 src/main/resources/application.properties 파일에서 할당할 수 있다. 그런데 값을 할당하는 과정에서 제대로 된 값을 넣었는데 연결을 실패하는 경우가 있다. 이들의 공통점을 분석해보고, 어떻게 하면 문제가 생기지 않을지 정리해보겠다. [본문] # MySQL spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql..
[개요] 서비스에는 인증 되지 않은 모든 유저가 접근할 수 있는 리소스가 있다. 하지만 특정 리소스는 로그인 인증이 되어야만, 인증이 되어도 특정 권한이 있어야만 접근할 수 있는 것이 필요할 수도 있다. 이를 Spring security로 쉽게 설정할 수 있다. 이 방법을 정리해보려 한다. [본문] package com.example.testsecurity.config; import lombok.Getter; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation...
[개요] 프로젝트를 진행하며 Front-end와 Back-end 사이에 주고 받을 API 명세서를 설계하게 되었다. 두 번의 웹 서비스 프로젝트를 거치며 적당하다 생각하는 정도를 담아 규칙 등을 이유와 함께 정리하려 한다. [본문] HTTP status code JWT 등 토큰이 만료 되었거나 유효하지 않은 토큰일 시 401(Unauthorized)를 응답한다. HTTP(하이퍼텍스트 전송 프로토콜) 401 Unauthorized 응답 상태 코드는 요청된 리소스에 대한 유효한 인증 자격 증명이 없기 때문에 클라이언트 요청이 완료되지 않았음을 나타냅니다. 이 상태 코드는 사용자에게 인증 자격 증명을 입력하라는 메시지를 표시한 후 클라이언트가 리소스를 다시 요청할 수 있는 방법이 포함된 HTTP WWW-Aut..
· JAVA
[개요] 프로젝트를 진행하다 class 내에서 사용할 상수 문자열들을 관리할 때가 온다. 이들을 다른 언어에선 enum으로 의미를 갖는 집합을 만들어 사용하곤 했는데 자바에서는 귀찮은 부분이 있는 것 같다. 이를 다뤄본 후기를 적어본다. [본문] 1. private 필드 및 getter 사용하기 private enum Role { ADMIN("ADMIN"), // enum 은 내부에서 private 생성자를 호출하여 문자열을 초기화 한다. USER("USER"); private final String value; private Role(String value) { this.value = value; } public String getValue() { return value; } } 특정 class 내에서..
[개요] 서비스 개발을 하면서 필수적으로 보안적인 부분을 생각할 수 밖에 없다. 이때 서비스에서 보안 중 가장 가깝게 생각해볼 수 있는 것이 인증과 인가이다. 여기에선 인증과 인과에 대해 알아보고, 변화과정과 장단점을 알아보려 한다. [개념] 나는 A이다. 서비스에서 B라는 자원을 조회할 것이다. 근데 서비스의 B라는 자원을 불러오기 위해선 해당 서비스의 유저여야하고, admin이라는 권한을 가지고 있어야 한다. B 자원을 조회한 뒤, A는 admin 권한이 필요한 C 자원도 조회할 것이다. 서비스는 유저가 B와 C라는 자원을 접근할 때 무엇인가 확인을 해야 할 것이다. 1. 인증 인증이란 식별 가능한 데이터로 서버에 등록된 유저의 신원을 입증하는 과정이다. 서비스의 B 리소스를 불러오기 위해선 A는 a..
· 알고리즘
[문제] 계산할 횟수 T를 입력 받아 해당 횟수만큼 이항연산자인 "+, -, /, *"를 사용하여 계산한 값을 전부 더하는 문제이다. [코드] import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int T = Integer.parseInt(scan.nextLine()); int res = 0; for (int i = 0; i < T; i++) { String[] input = scan.nextLine().split(" "); int n1 = Integer.parseInt(input[0]); int n2 = Integer.parseIn..
· 알고리즘
[문제] 첫 줄에 필요한 기능의 수 N, 두 번째 줄에 시간 T와 M, 이후 N만큼 시간(분) c가 주어진다. 시작 시간 T시 M분 부터 작업을 시작했을 때 N만큼 주어지는 시간 c의 총합을 더하면 어떤 시간이 될지 프로젝트 관리를 하는 문제이다. [코드] package week1; import java.util.Scanner; public class ProjectManaging { public static void main(String[] args) throws Exception { Scanner scanner = new Scanner(System.in); int N = scanner.nextInt(); int T = scanner.nextInt(); int M = scanner.nextInt(); f..
· 알고리즘
문제 표준 입력으로 받은 값을 각각 위 식의 W, R에 넣어 1RM을 출력하는 문제이다. 이는 아래와 같은 조건이 있다. 코드 import java.util.Scanner; class Main { public static void main(String[] args) throws Exception { Scanner scanner = new Scanner(System.in); int W = scanner.nextInt(); int R = scanner.nextInt(); int RM = (int)(W * (1 + (double)R / 30)); System.out.println(RM); } } 풀이 java.util.Scanner에 있는 Scanner 객체를 생성하여 표준 입력을 인자로 준다. 정수이면 ne..
jayoon
자윤 블로그