본문 바로가기

STUDY

(107)
Java 8 ~ 11 버젼별 특징 1. Java 1.8 2014년 3월 발표. 일반 지원은 2019년 1월에 종료되었고, 연장 지원은 2030년 12월에 종료될 예정이다. 1) Interface static And default method 본래 Interface는 함수의 구현체 즉 body를 가질 수 없었다. 하지만 Java 1.8 부터는 인터페이스에 body를 가지는 static method와 default method가 추가되었다. // JavaInterface.java public interface JavaInterface { static public String interfaceStaticMethod() { return "interfaceStaticMethod"; } } // main 영역 public static void ma..
3-3) 스프링 입력값 검사: Bean Validation, Hibernate Validator, @Valid, @Constraint, ConstraintValidator - 입력값 검사 웹서비스를 이용하다보면 다양한 입력창과 유형에 따른 유효성 검사를 볼 수 있다. 예를들어, 이메일 입력창이 있으면 이메일 양식에 맞는지 검사가 이루어진다. Front에서 유효성 검사로 Server 호출을 막지만, 세상에는 짖굳은 사람들이 많기에 Front 유효성 검사를 무력화 시키는 경우도 있다. 따라서, 서버에서도 동일하게 입력값 체크를 해야한다. - 스프링에서의 입력값 검사: Bean Validation, Hibernate Validator 스프링에서는 데이터 검사 표준인 Bean Validation를 사용한다. 더 정확히는 그 구현체인 Hibernate Validator를 사용한다. 먼저 아래와 같이 Hibernate Validator를 사용할 수 있도록 dependency를 추가한..
3-2) 스프링 MVC 핸들러(Handler): @ReqeustMapping, @GetMapping, @PostMapping, @PutMapping, @DeleteMapping, @RequestParam - 스프링 MVC 핸들러 MVC의 Controller 안에서 실제 요청을 처리하는 메소드를 핸들러(Handler)라고 한다. 사용자로부터 서버로 요청이 가면, 해당 요청에 맞는 컨트롤러의 핸들러로 요청 정보가 전해지고, 핸들러는 이를 처리하여 적절한 값을 반환 한다. 그리고 요청과 핸들러를 연결하는 것을 핸들러 맵핑(Handller Mapping)이라고 하고, @RequestMapping 어노테이션을 사용하여 맵핑이 이루어진다. - 요청 맵핑: @RequestMapping Http Request, 즉 서버로의 요청 정보는 다음과 같은 구조로 되어있다. 먼저 요청하는 첫번쨰 줄(start-line)에 메소드와 URL 요청경로가 나오고, 그 다음 헤더(http headers)에 요청자의 정보와 주고받을 데이..
[오픈뱅킹 API] 1. 사용자 인증, 토큰 발급 사용자 인증과 토큰 발급 오픈뱅킹 API를 이용하기 위해서는 먼저 인증 과정을 거쳐야한다. 서비스 사용자의 정보에 접근하기 위해서는, (1~2)먼저 사용자가 본인임을 증명하는 과정을 거친 후, 해당 인증 정보를 서비스에 넘겨준다. (3~4) 그리고 해당 인증 정보로 서비스 사용자에게 정보 조회 동의를 받았다는 것을 증명하고 인증 토큰을 받아야한다. (5~6) 이후 이 토큰을 사용하여, 사용자 정보에 접근하는 각종 오픈뱅킹 API를 호출한다. 사용자 인증 사용자 인증과정은 다음과 같다. 1. 서비스 정보를 들고, 사용자를 오픈뱅킹 본인 인증 페이지로 보낸다. 2. 사용자가 본인인증이 끝나면, 인증 정보(인증 코드)를 포함한 정보를 들고 서비스로 돌아온다. 3. 서비스는 해당 인증 정보를 획득하고 이후 과정..
[오픈뱅킹 API] 0. 오픈뱅킹 API란 오픈뱅킹 API란 최근 "뱅크샐러드" 라는 어플리케이션을 애용한다. 해당 어플은 한번의 인증으로 여러 은행, 증권 등 금융기관의 자산을 한번에 조회하고 요약하여 사용자에게 제공해준다. 그렇다면 뱅크샐러드는 어떻게 그러한 서비스를 제공할 수 있을까? 바로 오픈뱅킹 API다. 공식 사이트에서는 "오픈뱅킹은 핀테크기업이 금융서비스를 편리하게 개발할 수 있도록 은행 등 참가기관의 금융서비스를 표준화된 형태로 제공하는 인프라를 말하며, 오픈 API와 테스트베드로 구성됩니다." 라고 설명이 나와있다. 오픈뱅킹 API를 이용하면 힘들게 금융기관들에 협조 요청을 할 필요 없이, 잔액 조회 등 여러 기능을 사용할 수 있다. 학습 목표 지인들과 함께 하는 모임에서 매달 회비를 걷고, 그돈을 모아 주기적으로 만남을 가진다...
[알고리즘] SW Expert Academy 10806. 수 만들기 문제 풀이 (사고의 흐름) 문제를 읽어보면, N개의 수 a,b,c....(>=2) 가 주어지고 이 수들을 곱한 값들을 더해서 K를 만드는 문제이다. 이때, K를 만들기위해 수를 더하는 회수를 최소로 해야한다. 처음에 문제를 풀기위해 "답을 구하기 위한 하나의 정확한 로직이 있을것이다" 라는 생각을 해버렸다. 계속 반복문을 돌려가서 정답을 찾아가는 것이 아닌, K에 a,b,c...를 곱하여 만들 수 있는 K보다 작거나 같은 수를 빼고... 남은값에서 이를 다시 반복하면 정답이 나올거라고 생각했다. 하지만 반례가 계속해서 나왔고 로직을 수정해보아도 새로운 반례가 나왔다. 그래서 다시 처음부터 생각을 고쳤다. "답을 한번에 구하는 완벽한 로직은 없다. 최선으로 계속 시도해서 답을 찾아보자". 수를 더하는 회수..
[알고리즘] SW Expert Academy 10033. 카드 뒤집기 문제풀이(사고의 흐름) 문제를 보고 처음에는 어떻게 풀어야할지 바로 감이 오지 않았다. 문자열과 문자열을 바꿀수 있는 동작을 주고, 동작이 최대 몇번 수행되어야 하는지 조건이 주어졌지만, 바로 풀이 코드가 떠오르지 않았다. 이런 상황에서는 샘플을 만들고 이를 조건대로 수행하며 법칙을 찾아내는 편이다. 그래서 예제 문자열을 조건에 따라 동작을 수행하여 보았다. BWBWBW // 시작 문자열 WBBWBW // 동작수행 1 WBWBBW // 동작수행 2 WWBBBW // 동작수행 3 WWBBWB // 동작수행 4 WWBWBB // 동작수행 5 WWWBBB // 동작수행 6 이렇게 샘플을 한번 돌려보니, 바로 직감이 떠올랐다. "모든 수행의 끝에는 결국 모든 W는 왼쪽으로 가고, 모든 B는 오른쪽으로 가는구나!..
3-1) 스프링 MVC 기초: WebApplicationInitializer, WebMvcConfigurerAdapter, @EnableWebMvc, @Controller, InternalResourceViewResolver, jsp - MVC 패턴 MVC 패턴은 다양한 웹 프레인워크에 적용된 디자인 패턴이다. 클라이언트로부터 요청을 받고, 요청에 맞는 처리를 하고, 응답을 만드는 과정을 분리하여 유연하고 효율적으로 코드를 작성할 수 있도록 한다. 이때 요청에 따른 처리를 하는 부분을 Model, 응답을 만드는 부분을 View, 요청을 받는부분을 Controller라고 하고, 각 앞글자를 따서 MVC 패턴이라고 부른다. Model(모델) 어플리케이션의 데이터나 로직을 처리하는 역할 View(뷰) 클라이언트에 반환할 응답을 생성하는 역할 Controller(컨트롤러) 클라이언트의 요청에 따라 모델과 뷰의 호출을 제어하는 역할 Spring MVC는 MVC 패턴을 채택한 프레임 워크로, 스프링 웹 어플리케이션 개발에 필수적으로 사용된다. ..