전체 글
-
Sneakers Mania - @ControllerAdvice, @ExceptionHandler를 이용한 전역 예외 처리Projects/Problem & Solution 2022. 1. 3. 13:42
개요 문제점 존재하지 않는 게시물을 조회하거나 존재하지 않는 게시물을 수정하는 등 예기치 못한 상황에서 발생하는 예외들을 전역적으로 처리할 필요가 있었다. 기존에는 각 비즈니스 로직을 담당하는 메서드 내 try-catch 문을 사용해서 예외처리를 하였으나, 이런 방식으로 예외처리를 하면 프로그램이 커지고 기능이 추가됨에 따라 유지보수가 어렵고, 코드가 복잡해지겠다고 생각하였다. 이러한 문제를 개선시키고자 전역적으로 예외를 관리할 수 있는 방법을 모색하였다. 해결 방안 애너테이션 설명 @ControllerAdvice 모든 Controller에서 발생할 수 있는 Exception을 전역으로 처리하기 위해 사용 @ExceptionHandler 컨트롤러 내 특정 Exception을 처리하기 위한 애너테이션 "@..
-
Git - Git의 3가지 영역Git/Git 기초 2022. 1. 3. 00:45
Git의 3가지 영역 Git은 Working Directory, Staging Area, Git Directory(Repository) 3가지 작업 영역으로 파일들을 관리한다. Working Derectory Git이 추적 중인 파일들이 위치하는 영역이다. git init이라는 명령어을 통해서 git이 관리하도록 지정된 디렉터리이다. 정확이 말하자면 지정된 디렉터리에서 .git 디렉터리를 제외한 모든 것을 말한다. 작업한 파일(생성, 수정한 파일)들이 저장되는 곳이다. Staging Area commit 할 준비가 된 파일들이 위치하는 영역이다. 해당 영역은 .git 디렉터리에 단순한 파일로 존재한다. 작업한(수정한) 파일들 중 버전으로 만들고자(commit 하고자) 하는 파일을 저장한다. git에서는 ..
-
Network - HTTPS & SSLComputer Science/Network 2022. 1. 1. 17:51
HTTP HTTP란? ㆍ 인터넷 상에서 정보를 주고받기 위한 프로토콜이다. ㆍ 클라이언트와 서버 사이에서 이루어지는 요청과 응답에 대한 프로토콜이다. ㆍ 암호화되지 않은 방법으로 데이터를 전송한다는 특징이 있다. 따라서, 악의적인 감청과 데이터가 변조될 가능성이 존재한다. HTTPS HTTPS란? ㆍ 보안이 강화된 HTTP이다. ㆍ 모든 HTTP 요청과 응답 데이터는 네트워크로 보내지기 전에 암호화된다. ㆍ HTTPS는 HTTP의 하부에 SSL과 같은 보안 계층을 제공함으로써 동작한다. HTTPS의 사용 이유 1. 내가 특정 웹 사이트에 보내는 정보를 다른 누군가가 훔쳐보지 못하게 하기 위해서이다. 2. 내가 접속한 웹 사이트가 신뢰할 수 있는 사이트인지 판별하기 위해서이다. (기관으로부터 검증된 사이트..
-
Sneakers Mania - ENUM 타입을 이용한 사용자 권한 처리Projects/Problem & Solution 2021. 12. 31. 23:35
개요 문제점 사용자가 회원가입을 할 때, 사용자의 권한에 대한 속성을 지정할 필요가 있었다. 사용자의 권한은 일반 사용자를 뜻하는 USER, 관리자를 뜻하는 ADMIN이 있다. 단순히 문자열 형태로 설정할 수 있었지만, 개발자가 권한을 설정하는 과정에서 USER, ADMIN 권한 외에 다른 값을 넣을 수도 있다는 위험이 존재했다. 따라서, 사용자 권한에 대해 강제성을 부여할 수 있는 방법이 필요했다. 해결 방안 RoleType이라는 ENUM 타입의 클래스를 생성하고, 해당 클래스의 속성으로 일반 사용자를 뜻하는 USER, 관리자를 뜻하는 ADMIN을 선언하였다. 사용자 권한에 대한 속성을 RoleType으로 지정하고, 해당 권한 값을 강제로 2개만 설정할 수 있게 한다. 이렇게 함으로써, 개발자가 사용자..
-
프로그래머스 (Level 2) - 더 맵게Coding Test/Coding Test 문제 풀이 2021. 12. 28. 16:40
문제 설명 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같 programmers.co.kr 풀이 주어진 모든 음식들을 조합해서 음식들의 스코빌 지수가 K 이상이 되도록 하는 조합 횟수를 구하는 문제이다. 음식을 조합하기 위한 계산식은 다음과 같다. 섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2) 스코빌지수가 가장 낮은 음식을 계속해서 조합해야 하기 때문에 우선순위 큐를 사용하기로 했다. 우선순위 큐의 음식들을 조합하면서 모든 음식의 스코빌 지수가 K이상이 되..
-
Sneakers Mania - 카카오 로그인(4)Projects/Problem & Solution 2021. 12. 28. 15:01
액세스 토큰 자바 객체로 매핑 1. OAuthToken 클래스 생성 @Data public class OAuthToken { private String access_token; private String token_type; private String refresh_token; private int expires_in; private String scope; private int refresh_token_expires_in; } ㆍ 카카오 서버로부터 전달받은 액세스 토큰을 자바 객체로 매핑하기 위한 클래스를 생성한다. 2. 자바 객체로 매핑 ObjectMapper objectMapper = new ObjectMapper(); OAuthToken oAuthToken = objectMapper.readVal..