전체 글

하고 싶은 것들을 하며 성공하기
· 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..
개요 프로젝트를 진행하며 User에 대해 ERD를 설계했다. 이때 왜 이렇게 설계했는지 판단의 기준 등을 기록해보려 한다. 본문 User(회원) id는 Primary key이며 정수이고, NULL이 아닌 항상 값을 할당 받아야 한다. 속성은 1부터 Auto increment를 갖고 있다. nickname은 서비스에서 사용할 별명을 저장하며 아직 길이 제한을 갖지 않았다. 제한된 길이를 가질 예정이다. email 의 최대 길이는 320이다. RFC 2811에서 찾은 길이 정보는 다음과 같다. '${local-part}''@''${domain}' 1) local-part: The maximum total length of a user name or other local-part is 64 characters..
개요 개발 팀 프로젝트는 github에서 버전 관리를 주로 한다. 이때 누군가 작업을 했고, PR 같이 직후에 팀원의 확인이 필요한 작업이 있을 수 있다. 이때 팀원들에게 '나 작업했어!'라고 일일이 팀 단체 채팅방에 올릴 수도 있지만, 이를 이벤트로써 감지하여 '관련 메시지를 바로 받아볼 수 없을까?'라는 생각을 해볼 수 있다. 해당 부분에 대해 만족할 수 있는 방법이 있고, 이를 웹 후크라고 한다. 이번에 팀 프로젝트를 진행하는 김에 웹 후크를 이용한 자동화 기능을 사용해보기로 했고, 사용 방법에 대해 포스팅하려 한다. 본문 방법 Discord 서버에서 채널을 생성한다. 생성된 채널 설정에 들어간다. 연동의 웹후크에 들어간다. 새 웹후크를 생성하고, 웹후크 URL을 복사한다. Github Reposi..
· JAVA
개요 Bean으로 등록한 객체의 타입이 같지만 다른 이름일 때, 스프링 컨테이너 객체인 ApplicationContext는 타입으로만 Bean을 탐색하려 하면 어떻게 될까를 보기 위해 테스트를 진행했다. 이때 중첩 클래스를 사용하여 진행했고, 실행 중 오류를 맛보게 되었다. 어떤 문제가 있을까? 본문 다음은 내가 작성한 코드이다. // 변경 전 public class ApplicationContextSameBeanFindTest { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(SameBeanConfig.class); @Test @DisplayName("타입으로 조회 시 같은 타입이 둘 이상 있으면, 중복 오류..
jayoon
자윤 블로그