보안(Security)에는 크게 두가지 개념, 인증(authentication)과 인가(authorization) 부분으로 나뉜다. 인증은 이 사용자가 현재 사용자가 누구인지 확인하는 과정이며 인가는 이 사용자가 특정 리소스를 사용할 자격이 있는지에 대한 부분이다. 예를들어 로그인을 한다는 행위는 사용자가 누구인지 특정할 수 있는 인증에 해당하고, 로그인 한 사용자가 일반 사용자인지, 관리자인지에 따라 관리자 페이지를 보여줄지 등을 결정하는 과정이 인가 과정이다. 스프링 시큐리티는 애플리케이션에 대한 인증, 인가를 지원하기 위해 여러개의 필터들로 구성된 필터 체인과 연관된 여러 모듈로 구성되어 있다. 이러한 필터들을 개발자가 직접 생성 또는 수정할 수 있도록 되어있다. 오염된 물을 정수하기 위해서 여러개..
slf4j에서 로그를 쓸 때 아래와 같은 포맷이 매우 편해서 어떤 모듈을 사용하는지 궁금해서 라이브러리를 오픈해보았다. log.error("find by id = {}", id); 지금 프로젝트는 log4j 구현체를 사용하고 있었는데 org.apache.logging.log4j.message.ParameterizedMessage라는 구현체를 사용하고 있었다. Exception 메세지 +로 파라미터들을 메세지와 조합하는게 번거롭고 String.format을 사용하기엔 타입도 고려해줘야되고 귀찮은 점이 많았는데 이 구현체를 사용해서 아래 처럼 활용할 수 있을 것 같다. import org.apache.logging.log4j.message.ParameterizedMessage; public Class Cut..
Servlet Servlet(서블릿)이란 자바 클래스 종류 중 하나로 요청-응답 프로그래밍 모델을 제공하는 서버(일반적인 경우 web)의 기능을 구현, 확장하기 위한 클래스이다. javax.servlet, javax.servlet.http 패키지에 서블릿 구현을 위한 인터페이스와 클래스들이 있다. 모든 서블릿 구현체들은 서블릿 라이프사이클을 정의한 Servlet 인터페이스를 구현해야 하며 일반적인 서비스를 구현할 경우 GenericServlet를 사용/상속해서 구현할 수 있다. HttpServlet의 경우 HTTP 서비스를 핸들링하기 위한 doGet, doPost 메소드를 제공하고 있다. Servlet.java 총 5개 실제 서블릿 코드를 보면 총 5개의 미구현 메소드가 있다. 이 메소드들은 서블릿의 라..
프로세스, Process 실행 가능한 하나의 프로그램이 OS(Operation System)로부터 고유한 시스템 리소스 영역을 할당받아 실행 가능한 형태로 해당 영역에 적재(특히 메모리)되는 하나의 인스턴스이다. 일반적으로 프로그램을 하나 실행하면 그 프로그램이 OS가 할당한 시스템 리소스 영역에 적재되어 하나 이상의 프로세스가 실행된다. 즉 프로세스는 현재 실행 중인 프로그램의 하나의 형태이라고 할 수 있다. 여기서 OS로 부터 할당받는 다는 것은 OS의 스케쥴러에 의해 영향을 받는다는 의미이다. 예를들어 필요에 따라 OS 스케쥴러가 특정 프로세스의 리소스를 멈추게하는 등의 행위를 할 수 있다. 고유한 시스템 리소스 영역을 할당받기 때문에 다른 프로세스가 할당받은 영역에 접근할 수 없다. 이러한 이유로..
스프링 통합은 Enterprise Integration Patterns에 나오는 패턴들을 스프링 프레임워크에 구현해놓았다. Enterprise Integration Patterns은 엔터프라이즈 환경에서 사용하고 있는 다양한 분야(예. 결제, 메일, 각 부서에 필요한 서비스)의 애플리케이션을 통합, 즉 유기적으로 연결해서 효율적으로 적절하게 통합하는 방법을 여러 패턴을 통해 제시했다(고한다, 위키발..). SI라는 말을 처음 들었을 때도 그렇고 통합, integration이라는 단어의 의미가 참 햇갈렸는데, 여기서 통합이란 일반적으로 내가 알고있던 '독립적이였던 둘 이상의 어떤 것을 하나로 합치는 것'이 아니라 '융화'의 의미로 해석하는 것이 적절한 것 같다. Enterprise Integration P..
용어 정의 본 문서에서 사용할 용어의 혼동을 막기 위해 정의함. 인덱스(index), 인덱스 값 : 배열에서 요소의 위치값. 코드 arr[0] 에서 0에 해당하는 값 실제 값, 요소(element) : 배열의 특정 위치에 저장된 실제 값. 코드 [1,2,3,4]에서 print(arr[0])을 하면 나오는 값 선택 정렬(Selection Sort) 가장 작은 요소를 선택해서 앞으로 보냄. 크기가 10인 배열이면 0~9 중 가장 작은 요소 n1를 배열의 index 0으로 보내고 index 0에 있던 요소를 n1가 있던 위치로 보냄 1~9 중 가장 작은 요소 n2를 배열의 index 1으로 보내고 index 1에 있던 요소를 n2가 있던 위치로 보냄 위 과정을 반복하면 작은 순서데로 배열의 인덱스 0, 1, ..
JHistper라는 것을 알게되었는데 자동으로 세팅되는 여러 파일들 중 .editorconfig라는 파일이 있어 어떤 파일인지 찾아보았다. Concept 다수의 개발자들과 함께 일할 때 코딩 컨벤션(띄어쓰기 등)을 간단하게 맞출 수 있는 도구이다. eclipse를 쓸 때, 코드 포매팅 관련 자료를 찾다가 코드별 포맷등을 프로퍼티화 하여 xml형태로 배포하는 파일을 다운로드받아 적용시켜본 경험이 있다. editorconfig는 이와 매우 유사한데 프로젝트 최상단에 .editorconfig라는 파일에 값들을 설정하면 editorconfig를 지원하는 다양한 IDE, Editor tool 들이 해당 설정을 읽고 설정값을 해당 값으로 적용시켜 준다. Details .editorconfig 파일은 매우 간단한데 ..
본 문서는 아래 버전을 사용하였음 liquibase-4.4.0 postgres 13.3 docker community JHipster라는 자바 프로젝트 생성 툴을 사용했는데 자동으로 import해주는 여러 라이브러리들 중 모르는 것들이 많이 보여 그 중 하나인 liquibase가 어떤 것인지 찾아보았다. Concept 데이터베이스의 스키마를 xml, sql, yaml, json으로 관리해주는 툴입니다. 원하는 데이터베이스의 스키마의 변화를 버전별로 관리할 수 있다. 예를들어 liquibase로 초기 데이터베이스부터 관리한다고 하면 liquibase 툴의 포맷에 맞는, 테이블 생성/컬럼 설정 등 create 관련된 작업들이 기록된 xml을 생성한다. 대략적인 양식은 아래와 같다. 작업하다보니 컬럼3이 필요..
copy .pem/.crt/.cer file to /usr/local/shareca-certificates. you can use all theses files if you just change the file extenstion to .crt. Follow command execute then you can see the result $sudo update-ca-certificates 1 added, 0 removed; done. Running hooks in /etc/ca-certificates/update.d... done.
Calculate print(15/7) # 나눗셈, 2 print(15//7) # 몫, 2 print(15%7) # 나머지, 1 print(2**3) # 제곱근, 8Variable Type Type String Boolean Integer Float v = 1 print(type(v)) # int Tuple, Dictionary, Set Tuple 수정이 안되는 엘리먼트 집합 자료형 # define tuple = () tupleA = tuple() tupleA = (1, 2) tupleB = (3, 4) print( tupleA(0) ) # 1, 인덱스 접근 가능 tupleA + tupleB # (1, 2, 3, 4) tupleA * 2 # (1, 2, 1, 2) # use case ## switch x..