질문 노트
·
이것저것
안녕하세요 백엔드 개발자를 희망하는 대학생입니다. api 명세서 작성중에 궁금증이 있어 여러분들께 질문드리고자합니다! 클아이언트의 요청에 따라 백엔드 단에서 수행되는 로직에서 발생되는 오류는 다양합니다. HTTP 표준 응답 코드로 이를 전부 표현하는데 있어 부족함이 있으므로, 응답 바디에 추가적인 파라미터를 이용해 발생된 에러에 대한 추가적인 정보를 제공한다고 알고 있습니다. 이에따라, 다음과 같은 두가지 방법이 존재합니다. 1. HTTP 응답 코드를 단일화 하고, 바디의 통해서만 에러 발생 여부, 구체적인 에러 메시지를 포함하는 방법 2. HTTP 응답 코드와 바디 메시지를 적절히 조합하여 사용하는 방법 저는, 위 두가지 방법 중 HTTP 프로토콜이 제공하는 기능을 최대화하고, 의미 없는 응답코드를 사..
[Java] 제네릭 - 와일드 카드
·
Java
이전의 포스팅에서 자바 제네릭의 기초와 간단한 사용방법에 대해 알아 봤습니다. 이번 포스팅에서는, 자바5에 제네릭과 함께 추가된 와일드 카드에 대해 다뤄 보겠습니다. 제네릭의 등장 이전, 자바는 컬렉션에서 내부적으로 객체들을 Object로 관리하고 있었습니다. Object를 사용함으로써 하나의 컬렉션 안에 여러 객체들을 저장할 수 있는 유연성이 있었지만, 이와 동시에 타입 안정성을 떨어뜨려 런타임 에러가 빈번히 발생하는 문제가 있었습니다. 제네릭이 등장하며 이런 런타임 에러를 미연에 방지할 수 있었지만, 이와 동시에 컬렉션에는 연관된 타입만 삽입할 수 있게 되었습니다. 즉, 제네릭은 자바의 타입 안전성은 높였지만, 유연성은 떨어뜨렸습니다. 문제 제기 Java5 이전의 컬렉션은 모두 동일하게 Object를..
프로그래머스 - 산 모양 타일링
·
프로그래머스 문제풀이
https://school.programmers.co.kr/learn/courses/30/lessons/258705 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 해설 정삼각형과 정삼각형 두개를 이어붙인 사다리꼴을 이용해 주어지는 모양을 완성할 수 있는 모든 경우의 수를 구해야합니다. 먼저, tops[] 파라미터로 주어지는 그림을 배열로 표현해보겠습니다. 위와 같은 그림은 아래와 같은 배열로 표현할 수 있습니다. 위 배열의 각 요소는 하나의 정삼각형을 의미함으로 인접한 칸과 사다리꼴로 합쳐질 수 있습니다. 여기서, 상층 삼각형의 존재 여부에 따라 사..
[Java] Collection Framework
·
Java
이번 포스팅에서는 자바의 핵심 중 하나인 Collection Framework에 대해 알아보는 시간을 가지겠습니다. Collection Framework란 무엇인지, 그 구성은 어떻게 이루어져 있는지에 대해 알아보겠습니다. Collection이란? Collection은 여러 객체(데이터)들을 그룹화 하여 관리하는 하나의 객체입니다. 여러 개별적인 객체들을 구조화하여 저장, 검색, 조직하는데 사용되며, 각각의 Collection은 자신만의 구조를 가집니다. 예를들면 Set, List, Queue 와 같은 자료구조가 있습니다. Collection Framework란? Collection Framework는 Collection들을 표현하고 조작하기 위한 하나의 아키텍쳐 입니다. 주요 구성으로 인터페이스, 구현..
[Java] 제네릭의 기초
·
Java
본 포스팅에서 제네릭이란 무엇인지, 왜 필요한지에 대해 다루며, 이를 활용하는 기초적인 방법에 대해서 다루겠습니다. 제네릭의 고급 내용인 와일드 카드 및, Upper Bound, LoweBound에 대한 설명은 다음 포스팅을 참조해주시기 바랍니다 :) Generic 이란? 제네릭이란 타입의 일반화를 말합니다. " 타입의 일반화 " 란 어떤 클래스를 작성할때, 클래스 내부에서 타입을 지정하는것이 아닌, 클래스를 사용하는 외부에서 타입을 지정할 수 있게끔 한다는 것입니다. " 외부에서의 지정 " 란 사용자가 정의된 클래스를 사용할때, 즉 인스턴스를 생성하거나 클래스의 제네릭 메소드를 사용 할때 타입을 지정한다는 의미입니다. 이번 포스팅에서는 한가지 질문과 함께 제네릭의 필요성과 이점에 대해 설명드리겠습니다...
[Spring] Spring Security 인증 구성
·
SpringBoot
스프링 시큐리티는 스프링 컨테이너 외부인 서블릿에 대해 필터를 추가함으로써 그 기능을 수행합니다. 개발자가 직접 이 필터들을 서블릿 컨테이너에 개발하는 대신 FilterChainProxy를 이용해 스프링 컨테이너 내에 존재하는 빈을 필터로 등록할 수 있도록 했습니다. 이번 포스팅에서는 더 나아가 이 필터 중 인증 관련 필터를 스프링 시큐리티가 어떻게 구성했는지, 개발자는 이를 어떻게 확장할 수 있을지에 대해 알아보겠습니다. 스프링 시큐리티 인증 처리 과정 첫번째로, 요청에 대한 인증입니다. HTTP의 Stateless특성으로 HTTP를 사용하는 서버는 매 순간의 접속이 어떤 클라이언트의 요청인지에 대한 상태를 저장하지 않습니다. 서버는 이 요청이 리소스에 대한 권한을 가지고 있는지만을 판단함으로써 접근을..
[Spring] 다수의 SecurityFilterChain 구성 방법
·
SpringBoot
SecurityFilterChain 빈을 스프링 컨테이너에 등록함으로써 저희는 서블릿에 필터를 적용할 수 있음을 저번 포스팅에서 다뤘습니다. 또한, 여러 SecurityFilterChain 을 구성함과 동시에 요청에 부합하는 단 하나의 SecurityFilterChain을 실행시킬 수 있음을 알았습니다. FilterChainProxy에 등록되는 SecurityFilterChain은 이를 결정하기 위해 SecurityMatcher를 사용하며, FilterChainProxy는 이를 바탕으로 요청에 따라 실행될 SecurityFilterChain을 선택합니다. FilterChainProxy는 이전 포스팅에서 언급했듯이 여러 SecurityFilterChain을 관리하는 스프링 컨테이너의 빈입니다. 서블릿 컨테..
[Spring] Spring Security Architecture
·
SpringBoot
이번 포스팅에서는 스프링 프레임워크의 하위 프레임워크인 Spring Security의 아키텍쳐에 대해 알아보겠습니다. 이 글을 명확하게 이해하기 위해선 서블릿 컨테이너에 의해 관리되는 디스패쳐 서블릿, 스프링 컨테이너와 디스패쳐 서블릿의 관계, Proxy 패턴에 대한 선수지식이 필요합니다. Spring Security - Filter 이름에서도 알 수 있듯이 Spring Security는 Spring 어플리케이션에 보안 서비스를 제공하는 프레임워크 입니다. Spring Security가 제 기능을 하려면 네트워크를 통해 스프링 어플리케이션에 접근하는 모든 request들에 대해 적용되어야 하므로 이는 모든 네트워크 요청을 수신하고 그에 대해 응답하는 Dispatcher Servlet에 대하여 이루어 져야..