개요 이번 글에서는 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..
Origin이란? Origin은 아래와 같이 protocol, host, port 3개 부분으로 구성된다. http://www.jsonobject.com:8080/ # protocol: http # host: www.jsonobject.com # port: 8080 2개의 Origin을 비교시 3개 부분 중 단 1개만 일치하지 않아도 서로 다른 Origin이 된다. 즉, http, https의 차이, 80, 8080의 차이만 나도 서로 다른 Origin이 된다. 브라우저에서 현재 페이지의 Origin 알아내기 브라우저에서 현재 페이지의 정확한 Origin을 알고자 한다면 JavaScript에서 아래 명령을 실행한다. # IE를 제외한 모든 브라우저 window.location.origin # IE win..
개요 Google Drive는 구글의 클라우드 파일 저장소 상품이며, Google Sheets는 클라우드 스프레드시트 상품이다. 이번 글에서는 Google Drive/Google Sheets의 특정 계정에 업로드된 파일/시트를 UI 없이 완전히 프로그램으로 다운로드/제어할 수 있는 방법을 소개하고자 한다. 구현 시나리오 개발자는 구글이 제공하는 웹 콘솔에서 서비스 계정(Service Account)를 생성한다. 생성 후 .json 파일을 다운로드하여 프로젝트에 사용하기 위해 추가한다. 사용자는 자신의 구글 드라이브에서 애플리케이션에 공유할 파일에 위 개발자가 생성한 서비스 계정을 공유 계정을 추가한다. (공유할 계정 이름은 앞서 다운로드한 .json 파일의 client_email 값이다.) 개발자는 Go..
개요 백엔드에서의 통신 방법은 요청에 대해 즉시 응답하는 동기식 통신이 일반적이지만, 비동기 통신 또한 백엔드 아키텍쳐에서 중요하다고 말할 수 있다. 갑작스럽게 요청이 집중되는 명절 기차표 예매, 대학교 수강신청 등이 비동기 통신이 요구되는 대표적인 사용 사례라고 볼 수 있다. (이를 동기식으로 처리하면 백엔드와 데이터베이스에 엄청난 부하가 발생한다.)RabbitMQ는 AMQP(플랫폼 독립적인 비동기 메시징을 다룬 프로토콜)을 준수하여 제작된 메시지 브로커이다. 설치가 쉽고, 기능이 직관적인데다 성능이 뛰어나기 때문에 현재 비동기 메시징에 있어서는 광범위하게 사용되고 있다. 이번 글에서는 Spring Boot에서 RabbitMQ 사용 방법을 소개하고자 한다. AMQP 통신 원리 AMQP에서는 브로커의 양..
- Total
- Today
- Yesterday
- 로드 바이크
- DynamoDB
- 자전거
- jsp
- MySQL
- Spring Boot
- Kendo UI
- spring
- chrome
- 구동계
- Tomcat
- kotlin
- 로드바이크
- jpa
- 태그를 입력해 주세요.
- jstl
- bootstrap
- Eclipse
- node.js
- 알뜰폰
- Docker
- graylog
- JavaScript
- Kendo UI Web Grid
- java
- JHipster
- CentOS
- Spring MVC 3
- maven
- 평속
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |