개요 REST API를 설계하다보면, 하나의 API 요청 사이클을 처리함에 있어 가장 앞 단계에서 이미 유효한 인증을 통해 획득했던 회원 오브젝트를 반복적으로 다시 획득해야 문제에 부딪히게 된다. (데이터베이스에서 다시 조회하는 것은 퍼포먼스 측면에서 비효율적이다.) 일반적으로 하나의 요청이 하나의 쓰레드로 처리되는 것을 감안하면, 특정 쓰레드의 생명 주기 안에서 전역으로 접근할 수 있는 변수를 설계하면 이러한 상황에서 고민 없이 재사용할 수 있을 것이다. 이번 글에서는 이 방법을 통해 하나의 쓰레드 안에서 특정 오브젝트를 재사용할 수 있는 방법을 예제를 통해 소개하고자 한다. 작성 예 아래는 하나의 쓰레드 안에서 전역으로 참조할 수 있는 RequstContext라는 클래스를 작성한 예이다. 프로덕션 레..
개요 JWT(JSON Web Token)는 전통적인 Opaque Token과 반대되는 개념으로 제 3자가 토큰 문자열에서 주요 정보를 확인 가능한 것이 특징이다. (반면에 Opaque Token은 UUID와 같이 의미 없는 랜덤 문자열을 의미하며, 주요 정보는 서버 사이드에 안전하게 격리된 저장소에 랜덤 문자열과 매칭하여 저장한다.) JWT 도입의 장점은 토큰 관리에 있어 별도의 저장소가 필요하지 않아 진정한 의미의 상태 없는 마이크로서비스 구현이 가능하다는 것이고, 단점은 한번 발급한 토큰에 대한 일괄 만료 등의 직접적인 제어가 힘들다보니 보안을 위한 추가 절차의 설계가 필요하다는 것이다. (이에 대한 보완책으로 Access Token은 JWT 방식으로 수명을 짧게 설정하고, Refresh Token은..
개요 이번 글에서는 PDFBox 라이브러리를 이용하여 TTF(트루타입), OTF(오픈타입) 글꼴 파일의 메타 정보를 확인하는 방법을 소개하고자 한다. build.gradle.kts 프로젝트 루트의 build.gradle.kts 파일에 아래 내용을 추가한다. dependencies { implementation("org.apache.pdfbox:pdfbox:2.0.23") } 글꼴 파일 인식 글꼴 파일을 인식하는 방법은 아래처럼 매우 간단하다. import org.apache.fontbox.ttf.OTFParser import org.apache.fontbox.ttf.OpenTypeFont import org.apache.fontbox.ttf.TTFParser import org.apache.fontbox..
개요 Apache Spark는 분산 컴퓨팅을 위한 인메모리 데이터 프레임워크이다. 어떤 크기의 데이터라도 클러스터로 서로 연결된 n대의 노드에 인메모리 데이터 처리를 통해 분석 및 가공이 가능하다. 현재 관련 기술에서는 적수가 없을 정도로 명성을 얻고 있다. Apache Parquet은 컬럼 기반의 구조체의 특화된 데이터 파일 형식이다. 적절하게 파티셔닝되고 압축 처리된 Apache Parquet 파일은 대용량에서도 좋은 조회 성능을 보여준다. 이번 글에서는 Apache Spark 프레임워크를 이용하여 원격지에 위치한 다양한 데이터 소스로부터 가공과 Apache Parquet으로의 변환, 적재하는 방법을 설명하고자 한다. (잠재적으로 Amazon EMR에서 제출 가능한 작업을 만드는 것을 고려했다.) W..
- Total
- Today
- Yesterday
- Spring MVC 3
- jstl
- 로드바이크
- Docker
- node.js
- chrome
- Tomcat
- DynamoDB
- 구동계
- jsp
- java
- bootstrap
- Spring Boot
- Kendo UI Web Grid
- 태그를 입력해 주세요.
- Eclipse
- jpa
- 평속
- maven
- spring
- 로드 바이크
- graylog
- Kendo UI
- kotlin
- 알뜰폰
- CentOS
- JavaScript
- MySQL
- JHipster
- 자전거
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |