728x90

Library 52

wkhtmltopdf CLI 기반 PDF 변환 프로그램

wkhtmltopdf – CLI에서 바로 사용 가능한 HTML to PDF 변환도구로 리룩스 환경에서 유용합니다.Rocky Linux (RHEL 호환)에서 wkhtmltopdf를 설치하려면 다음과 같이 하면 됩니다.Precompiled binary (공식 사이트) 사용1. 다운로드wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox-0.12.6-1.centos8.x86_64.rpm 최신 릴리스는 공식 GitHub Packaging Releases에서 확인할 수 있습니다. 2. 설치sudo dnf install ./wkhtmltox-0.12.6-1.centos8.x86_64.rpmCentOS 8용 패키지는 Roc..

Library 2025.07.15

람다 표현식(Lambda Expression)

람다 표현식이란? 람다 표현식(Lambda Expression)은 익명 함수(anonymous function)라고 할 수 있습니다. 자바에서는 메서드를 객체처럼 취급할 수 없기 때문에, 함수형 인터페이스라는 단일 추상 메서드를 갖는 인터페이스를 정의한 후 그 인터페이스를 구현하는 방식으로 함수형 프로그래밍을 지원합니다. 이때 메서드 구현을 간단하게 표현할 수 있도록 도와주는 것이 바로 람다 표현식입니다.  간단히 말하면, 람다 표현식은 이름이 없는 함수로, 간단한 식이나 메서드를 더욱 짧고 간결하게 표현할 수 있게 해주는 문법입니다. 전통적으로 메서드를 정의하는 방식보다 훨씬 간결하게 코드를 작성할 수 있습니다.람다(Lambda)의 의미 람다(Lambda)라는 용어는 람다 계산법(Lambda Calcu..

Library 2024.10.21

Java 제네릭스(Generics) 이해 하기

제네릭스(Generics) 제네릭스는 컴파일 시점에 타입 검사를 수행하여 코드의 안정성을 높이고, 런타임에 발생할 수 있는 불필요한 캐스팅 에러를 방지합니다. 제네릭스를 통해 개발자는 타입의 불일치로 인한 ClassCastException을 예방할 수 있습니다.  Java 제네릭스를 사용하면 컴파일 시점에 타입 검사를 수행하여 잘못된 타입 변환을 방지하고, 이에 따라 ClassCastException을 효과적으로 피할 수 있습니다. 제네릭스를 통해 코드의 타입 안전성을 높이고, 형 변환과 관련된 오류를 줄이는 것이 가능하므로, Java에서는 제네릭스를 적극적으로 활용하는 것이 좋습니다.1. 제네릭스를 사용한 리스트 Java에서 제네릭스를 사용하면 컴파일러가 타입을 명확히 알 수 있기 때문에 타입 변환을 ..

Library 2024.10.21

DevSecOps에서 자동화를 적용하는 방법

DevSecOps 환경에서 자동화는 보안을 개발 과정 전반에 걸쳐 효과적으로 통합하기 위한 중요한 수단입니다. 자동화를 통해 개발 속도를 유지하면서도 보안을 강화할 수 있습니다. 다음은 DevSecOps에서 자동화를 적용하는 몇 가지 주요 방법입니다: 1. 코드 검사 자동화정적 코드 분석(SAST): 소스 코드를 자동으로 검사하여 보안 취약점이나 코드 결함을 찾아내는 도구를 개발 프로세스 초기에 통합합니다. 예를 들어, SonarQube, Checkmarx 같은 도구가 이에 해당합니다.동적 코드 분석(DAST): 배포된 애플리케이션을 실시간으로 검사하여 실행 중에 발생할 수 있는 보안 문제를 식별합니다. OWASP ZAP, Burp Suite 등이 동적 분석 도구로 사용됩니다. 2. 취약점 스캐닝 자동화..

Library 2024.10.10

DevSecOps 란 무엇인가

DevSecOps는 소프트웨어 개발 생명 주기의 모든 계층에 보안을 포함하는 도구와 관행을 통해 DevOps 개념을 발전시킵니다.  DevSecOps는 개발(Dev), 보안(Sec), 운영(Ops)을 통합하여 보안을 소프트웨어 개발 및 배포 과정 전반에 걸쳐 내재화하는 접근 방식입니다. 이는 전통적인 개발 및 운영 프로세스에서 발생할 수 있는 보안 문제를 초기 단계에서 발견하고 해결하여, 보안 사고의 위험을 감소시키고자 합니다.DevSecOps의 핵심 목표는 보안을 개발 초기 단계부터 통합하여 보안이 소프트웨어 개발 생명주기의 자연스러운 일부가 되도록 하는 것입니다.DevSecOps가 중요한 이유소프트웨어 개발 및 배포 과정에서 보안을 강화하고, 빠르게 변화하는 기술 환경 속에서 조직의 민첩성과 보안을 ..

Library 2024.10.10

NGINX 부하 분산 및 Proxy

NGINX는 HTTP, TCP, 그리고 UDP 트래픽에 대한 부하 분산을 지원하여, 다양한 유형의 트래픽과 서비스에 유연하게 대응할 수 있습니다. 각 프로토콜에 대한 부하 분산 설정 방법과 기법을 자세히 살펴보겠습니다.1. HTTP 부하 분산HTTP 부하 분산은 웹 애플리케이션 서버에 대한 요청을 관리하는 가장 흔한 경우입니다. NGINX는 HTTP 레벨에서 세션 지속성, 다양한 로드 밸런싱 알고리즘 및 동적 콘텐츠 관리를 지원합니다.http { upstream myapp { server server1.example.com; server server2.example.com; server server3.example.com; } server { ..

Library 2024.09.23

NGINX 설정

NGINX의 nginx.conf 파일은 서버의 모든 주요 설정을 포함하고 있으며, 이 파일을 통해 NGINX의 동작을 제어합니다. 아래에서는 NGINX의 기본 구성 파일 구조와 주요 섹션에 대해 자세히 설명하겠습니다.NGINX 설정 파일의 기본 구조nginx.conf 파일은 몇 가지 주요 블록으로 구성되어 있습니다:Global Block: 이 부분에는 전역 설정이 포함되며, NGINX 서버 전체에 적용됩니다.Events Block: 연결 처리에 관련된 설정을 포함합니다.HTTP Block: HTTP 서비스에 관련된 설정을 포함하며, 여러 개의 server 블록을 포함할 수 있습니다.Server Block: 특정 도메인에 대한 설정을 담당하며, 하나의 http 블록 안에 여러 개가 있을 수 있습니다.Loc..

Library 2024.09.10

NGINX 기본 개념 및 설치하기

NGINX(엔진엑스라고 발음)는 매우 인기 있는 오픈 소스 웹 서버 소프트웨어로, 웹 서버 기능 외에도 리버스 프록시, 로드 밸런싱, 메일 프록시, HTTP 캐시 등 다양한 기능을 제공합니다. 이 소프트웨어는 특히 동시 접속 처리에 탁월하여 고성능과 높은 안정성을 요구하는 웹 애플리케이션 서버로 널리 사용됩니다.주요 특징고성능: NGINX는 비동기 이벤트 기반 구조를 사용하여, 많은 수의 동시 연결을 효율적으로 처리할 수 있습니다. 이는 C10K 문제(동시에 수천 개의 클라이언트를 처리하는 문제)를 해결하기 위해 설계되었습니다.다양한 기능:리버스 프록시와 로드 밸런싱: 애플리케이션 서버로의 트래픽 분산을 관리하여 성능을 최적화하고 장애 복구를 지원합니다.웹 캐시: 자주 요청되는 웹 컨텐츠를 캐싱하여 응답..

Library 2024.09.09

Java ProcessBuilder와 Process API

ProcessBuilder와 Process 클래스는 자바에서 외부 프로세스를 실행하고 관리하기 위해 사용됩니다. 이 클래스들을 사용하면 자바 코드 내에서 다른 애플리케이션을 실행하고, 그 입력과 출력을 관리할 수 있습니다. 아래에서는 ProcessBuilder와 Process 클래스의 주요 기능과 메소드들을 상세히 설명하겠습니다. ProcessBuilder 클래스ProcessBuilder 클래스는 프로세스의 실행 환경을 설정하는 데 사용됩니다. 이 클래스의 인스턴스는 실행할 프로그램과 그 인자들을 설정하고, 프로세스의 환경 변수와 작업 디렉토리를 구성할 수 있습니다. 주요 생성자와 메소드생성자ProcessBuilder(String... command): 실행할 명령과 그 인자들을 받습니다.ProcessB..

Library 2024.04.26

Java 22 ScopedValue와 StructuredTaskScope

ScopedValue는 Java의 최신 동시성 모델에서 제공하는 개념으로, 특정 스코프나 실행 컨텍스트 내에서 값을 제공하는 메커니즘입니다. 이는 구조화된 동시성을 지원하며, 특히 프로젝트 Loom과 같은 새로운 Java 기능들과 함께 도입되어, 가벼운 스레드(가상 스레드)와 같은 현대적인 동시성 패턴을 더 잘 지원하고자 합니다. ScopedValue의 핵심 아이디어는 스레드 또는 작업에 따라 달라지는 값들을 관리하고, 실행 컨텍스트가 변경될 때 이러한 값들이 자동으로 적절하게 관리되도록 하는 것입니다. 사용 방법 ScopedValue의 사용 방법은 특정 스코프 내에서 값을 설정하고, 그 값을 스코프가 적용되는 범위 내에서 접근하는 것입니다. 기본적으로 ScopedValue는 스코프에 진입할 때 값을 설..

Library 2024.03.12

jQuery 4.0

jQuery 4.0의 개발 및 출시는 다음과 같은 주요 목표들을 중심으로 진행되었습니다: 성능 향상: jQuery는 항상 사용자에게 더 나은 성능을 제공하기 위해 노력해 왔습니다. jQuery 4.0은 이러한 노력의 일환으로, DOM 조작, 이벤트 처리, AJAX 호출 등의 핵심 기능들에서 실행 속도와 효율성을 더욱 개선하고자 했습니다. 모던 JavaScript 지원 강화: 최신 JavaScript 표준(ES6 이상)과의 통합 및 호환성 개선을 통해 현대적인 웹 개발 흐름에 부합하도록 설계되었습니다. 이를 통해 개발자들은 최신 JavaScript 기능을 jQuery와 함께 더욱 효율적으로 사용할 수 있게 되었습니다. 모듈화 및 사용자 정의 빌드: jQuery 4.0은 라이브러리의 모듈화를 더욱 강화하여 ..

Library 2024.02.15

개발자의 행복을 파괴하는 10가지 방법

https://www.infoworld.com/article/3711840/10-ways-to-destroy-developer-happiness.html 10 ways to destroy developer happiness Nothing hurts developer productivity like bad management. Keep your dream team motivated by avoiding these common mistakes. www.infoworld.com 위 글은 소프트웨어 개발자들을 행복하게 유지하는 방법과 그렇지 못한 관리 실수들에 대해 다루고 있습니다. 요약하면 다음과 같습니다. 무의미한 회의 줄이기: 개발자들은 코딩하는 시간을 회의하는 시간보다 더 중요하게 생각합니다. 효율적이고..

Library 2024.01.09

Deno(Next-generation JavaScript runtime)

Deno는 Node.js의 창시자인 라이언 달이 만든 자바스크립트 및 타입스크립트 런타임입니다. 2018년 5월 13일에 처음 출시되었으며, 보안 및 생산성에 중점을 둡니다. Deno의 탄생 배경은 크게 두 가지로 나눌 수 있습니다. 첫째, Node.js의 보안 문제입니다. Node.js는 초기에 보안이 취약하다는 지적을 받아왔습니다. 특히, Node.js는 기본적으로 모든 모듈을 로컬에서 실행하기 때문에, 악성 코드가 포함된 모듈을 실행하면 시스템에 심각한 피해를 줄 수 있습니다. 둘째, Node.js의 생산성 문제입니다. Node.js는 모듈 시스템이 복잡하고, 타입스크립트를 지원하지 않기 때문에 개발자가 코드를 작성하고 관리하기가 쉽지 않습니다. Deno는 이러한 문제를 해결하기 위해 다음과 같은 ..

Library 2023.12.01

Protocol buffers vs. JSON

Protocol buffers와 JSON은 모두 데이터를 직렬화하고 역직렬화하는 데 사용되는 인기 있는 형식입니다. 두 형식 모두 장단점이 있으므로 프로젝트에 적합한 형식을 선택하는 것이 중요합니다. Protocol buffers는 Google에서 개발한 형식입니다. 바이너리 형식으로 데이터를 직렬화하므로 JSON보다 크기가 작습니다. 또한 Protocol buffers는 데이터 구조를 정의하는 데 사용할 수 있는 스키마를 제공하므로 개발자가 데이터를 더 쉽게 이해하고 사용할 수 있습니다. JSON은 자바스크립트의 표준 데이터 형식입니다. 텍스트 형식으로 데이터를 직렬화하므로 Protocol buffers보다 크기가 큽니다. 그러나 JSON은 더 읽기 쉽고 이해하기 쉬우며 다양한 언어에서 지원됩니다. 특..

Library 2023.11.30

CPU와 GPU

CPU (Central Processing Unit)와 GPU (Graphics Processing Unit)은 컴퓨터 시스템의 핵심 컴퓨팅 장치로서 다른 목적과 기능을 가지고 있습니다. CPU (중앙 처리 장치): CPU는 컴퓨터의 "두뇌"로 불릴만큼 중요한 역할을 합니다. 주로 일반적인 작업을 처리하며, 다음과 같은 작업을 수행합니다: 명령어 해석 및 실행 작업 관리 데이터 처리 입출력 제어 프로그램 실행 다양한 애플리케이션 및 운영 체제 작업을 처리하는 데 사용됩니다. GPU (그래픽 처리 장치): GPU는 주로 그래픽 처리 작업을 수행하기 위해 설계되었지만, 최근에는 범용 병렬 처리 작업에도 사용됩니다. 주로 다음과 같은 작업을 수행합니다: 그래픽 렌더링: 2D 및 3D 그래픽 처리, 게임 그래픽..

Library 2023.11.10

The best open source software of 2023

InfoWorld의 2023 Bossie Awards는 올해 소프트웨어 개발, 데이터 관리, 분석, 인공 지능 및 기계 학습을 위한 선도적인 오픈 소스 도구를 선정하였습니다. Apache Hudi 개방형 데이터 레이크 또는 데이터 레이크하우스를 구축할 때 많은 산업에서는 더욱 발전하고 변경 가능한 플랫폼이 필요합니다. 게시자, 광고주, 미디어 구매자를 위한 광고 플랫폼을 살펴보세요. 빠른 분석만으로는 충분하지 않습니다. Apache Hudi는 빠른 데이터 형식, 테이블 및 SQL을 제공할 뿐만 아니라 지연 시간이 짧은 실시간 분석도 지원합니다. Apache Spark , Apache Flink 및 Presto , StarRocks(아래 참조) 및 Amazon Athena와 같은 도구 와 통합됩니다 . 간..

Library 2023.11.06

HTMX(Hypertext Markup X)

HTMX는 웹 개발을 위한 자바스크립트 라이브러리로, 클라이언트 측 웹 애플리케이션을 구축할 때 사용할 수 있는 도구입니다. HTMX는 HTML, CSS, JavaScript와 함께 작동하며, 웹 페이지의 동적인 부분을 업데이트하고 새로고침하지 않고도 서버와 소통할 수 있도록 해줍니다. HTMX의 핵심 개념은 "Progressive Enhancement" 입니다. Progressive Enhancement는 기본적인 웹 페이지가 모든 기능을 지원하면서도, 더 나은 사용자 경험을 위해 자바스크립트 및 기타 기술을 사용하여 기능을 향상시키는 웹 개발 접근 방식을 의미합니다. HTMX는 이 접근 방식을 채택하여, 기본 HTML 폼이나 링크를 사용하여 웹 페이지를 렌더링하면서도 필요한 경우 자바스크립트를 사용하..

Library 2023.10.20

JSON-LD(JavaScript Object Notation for Linked Data)

JSON-LD(JavaScript Object Notation for Linked Data)는 데이터를 구조화하고 공유하기 위한 형식 중 하나로, 특히 웹의 맥락에서 데이터를 표현하고 연결하는 데 사용됩니다. JSON-LD는 JSON 형식을 기반으로 하며, 데이터를 기계가 이해하기 쉽게 만드는 데 중점을 두고 있습니다. JSON-LD의 중요한 특징은 다음과 같습니다: 링크된 데이터: JSON-LD는 링크된 데이터를 나타내는 데 사용됩니다. 이것은 다른 데이터 또는 웹 리소스와의 관계를 표현하고, 데이터를 웹의 Semantic Web 개념과 연결할 수 있는 강력한 도구를 제공합니다. 맥락: JSON-LD 문서는 맥락(Context)을 사용하여 데이터 요소의 의미를 정의합니다. 이 맥락은 데이터의 필드와 값..

Library 2023.10.19

Java "ClassLoader"

Java 클래스 로더(Class Loader)는 JVM(Java Virtual Machine)에서 클래스 파일들을 로드하는데 사용되는 일종의 추상 클래스입니다. 이는 런타임에 동적으로 자바 클래스를 로드하거나 네트워크에서 다른 소스로부터 클래스를 로드하는 역할을 합니다. 클래스 로더의 주요 기능은 다음과 같습니다: 로딩(Loading): 이 단계에서 클래스 로더는 클래스나 인터페이스의 바이너리 데이터를 메모리에 로드합니다. 클래스 로더는 이 프로세스를 통해 완전한 바이너리 트리를 생성하고, 이를 JVM 메모리에 로드합니다. 연결(Linking): 로딩이 완료되면 연결 단계가 시작됩니다. 이 단계는 검증, 준비, 그리고 (선택적으로) 해석의 세부 단계로 구분될 수 있습니다. 검증(Verification):..

Library 2023.07.06

SDKMAN 가이드

SDKMAN은 Software Development Kit Manager의 약자로, JVM 기반 언어와 프레임워크를 쉽게 관리할 수 있게 해주는 도구입니다. 이 도구를 사용하면, JDK, Groovy, Scala, Kotlin 등과 같은 JVM 기반의 언어와 Gradle, Maven 등의 빌드 도구를 손쉽게 설치하고 관리할 수 있습니다. SDKMAN 설치하기 SDKMAN은 Unix 기반 시스템 (예: Linux, Mac)에서 사용할 수 있습니다. 설치는 매우 간단합니다. 다음 명령을 터미널에 입력하면 됩니다. curl -s "https://get.sdkman.io" | bash 설치 후에는, 터미널을 재시작하거나 다음 명령을 실행하여 SDKMAN을 초기화합니다: source "$HOME/.sdkman/b..

Library 2023.06.15

Intelij 단축키

IntelliJ IDEA는 JetBrains에서 개발한 Java IDE입니다. 효과적인 코딩을 위해 다양한 단축키가 제공되는데, 여기에는 코드 작성, 검색, 디버깅 등의 기능이 포함됩니다. 다음은 IntelliJ에서 자주 사용되는 단축키 및 그들의 기능에 대한 몇 가지 예입니다: Ctrl + Space: 기본 코드 완성을 제공합니다. 변수, 클래스, 메소드 이름 등을 빠르게 입력할 수 있습니다. Ctrl + Shift + Space: 스마트 코드 완성을 제공합니다. 현재 컨텍스트에 맞는 코드를 제안합니다. Alt + Enter: 현재 컨텍스트에 맞는 액션을 실행합니다. 예를 들어, 빠른 수정, 코드 재구성, 라이브 템플릿 등을 제안합니다. Ctrl + B 또는 Ctrl + Click: 선언으로 이동합니다..

Library 2023.06.09

Gradle 구조와 사용법

Gradle에는 다양한 기본적인 태스크와 라이프 사이클이 있습니다. 각 태스크는 특정 작업을 수행하며, 라이프 사이클은 프로젝트 빌드의 단계를 설명합니다. 기본 태스크 clean: 이 태스크는 빌드 디렉토리를 삭제하여 이전 빌드 출력을 제거합니다. assemble: 이 태스크는 모든 아티팩트를 만듭니다 (예: JAR 파일). check: 이 태스크는 모든 테스트를 실행하고 다른 검사를 수행합니다. build: assemble과 check를 모두 실행합니다. 즉, 아티팩트를 만들고 테스트를 실행합니다. test: 이 태스크는 단위 테스트를 실행합니다. jar: 이 태스크는 JAR 파일을 만듭니다. 플러그인에 따라 추가적인 태스크가 있을 수 있습니다. 예를 들어, war 플러그인은 WAR 파일을 만드는 wa..

Library 2023.05.19

Web 더블클릭 방지하는 방법

웹 화면에서 더블 클릭을 방지하는 방법 중 일반적으로 사용되는 방법은 JavaScript를 사용하여 이벤트 처리를 조절하는 것입니다. jQuery를 사용한 예제를 들어 설명드리겠습니다. 1. 먼저 웹 페이지에 jQuery를 추가합니다. 다음 코드를 HTML 파일의 `` 영역에 추가하세요.2. 이제 jQuery를 사용하여 더블 클릭 방지 코드를 작성합니다. 다음 코드를 HTML 파일의 `` 태그 내에 추가하세요.$(document).ready(function() { // 더블 클릭 방지 기능을 추가할 요소를 선택합니다. // 예를 들어, 버튼에 대한 더블 클릭 방지 기능을 추가하려면 아래와 같이 작성할 수 있습니다. $("button").on("dblclick", function(e) { ..

Library 2023.05.09

JavaScript vs. TypeScript: What's the difference?

JavaScript와 TypeScript는 웹 개발에 주로 사용되는 관련 프로그래밍 언어로, TypeScript는 JavaScript의 상위 집합입니다. 두 언어는 몇 가지 주요한 차이점이 있습니다: 1. 문법 및 타입 검사: JavaScript는 동적 타입 언어로, 변수 타입이 런타임에 결정됩니다. 이로 인해 예측하기 어려운 동작이 발생하고 런타임 오류 가능성이 높아질 수 있습니다. 반면 TypeScript는 정적 타입 언어로, 컴파일 시간에 변수 타입이 확인됩니다. 이는 개발 과정에서 타입 관련 오류를 조기에 발견하는 데 도움이 되어 코드를 더 신뢰할 수 있게 만들고 유지 관리가 쉬워집니다. 2. 타입 주석 및 인터페이스: TypeScript는 타입 주석과 인터페이스를 도입하여 개발자가 코드 내 객체..

Library 2023.05.09

ECMAScript 5와 ECMAScript 2015 비교

ECMAScript는 JavaScript 언어의 표준 사양입니다. ECMAScript 5 (ES5)와 ECMAScript 2015 (ES6, ES2015라고도 함)는 ECMAScript의 서로 다른 버전으로, 여러 가지 차이점이 있습니다. 주요 차이점은 다음과 같습니다: 1. let과 const 키워드: ES5에서는 변수를 선언할 때 `var` 키워드를 사용합니다. ES6에서는 `let`과 `const` 키워드가 도입되어 블록 범위의 변수와 상수 선언을 지원합니다. ES5 예제: function example() { var x = 10; if (true) { var x = 20; // 이 변수는 함수 범위로 호이스팅됩니다. console.log(x); // 출력: 20 } console.log(x); /..

Library 2023.05.09

How to use ForkJoinPool in Java

ForkJoinPool은 Java 7에서 도입된 병렬 작업 처리를 위한 프레임워크의 핵심 구성 요소입니다. 병렬 작업 처리는 작업을 여러 개의 하위 작업으로 분할하고, 결과를 결합하여 최종 결과를 생성하는 과정입니다. 이는 대규모 작업을 빠르게 처리하는 데 도움이 됩니다. ForkJoinPool은 "분할 정복(Divide and Conquer)" 알고리즘과 유사한 아키텍처를 사용하여 이를 지원합니다. ForkJoinPool의 주요 구성 요소 및 아키텍처는 다음과 같습니다. ForkJoinPool: 작업자 스레드 풀입니다. 작업을 병렬로 실행하고 결과를 결합하는 데 사용됩니다. 각 스레드는 자체 데크(Deque)를 가지며, 작업을 실행할 때 새로운 하위 작업을 생성할 수 있습니다. 작업자 스레드가 데크에서..

Library 2023.05.08

SSL인증서 PEM (Apache)과 JKS (Tomcat)로 상호 변환

Apache와 Tomcat은 서로 다른 형식의 SSL 인증서를 사용합니다. Apache는 PEM 형식을 사용하는 반면, Tomcat은 Java KeyStore(JKS) 형식을 사용합니다. 따라서 Apache용 인증서를 Tomcat에 사용하거나 그 반대의 경우에는 인증서를 변환해야 합니다. 아래에서는 Apache에서 사용하는 PEM 형식의 인증서를 Tomcat에서 사용하는 JKS 형식으로 변환하는 방법과 그 반대로 JKS 형식의 인증서를 PEM 형식으로 변환하는 방법을 설명합니다. 1. PEM (Apache)을 JKS (Tomcat)로 변환하기: 먼저, OpenSSL과 keytool이 설치되어 있는지 확인하세요. 설치되어 있지 않다면 각각 설치해야 합니다. 아래의 명령어를 사용하여 PKCS12 형식의 파일..

Library 2023.05.02

REST API TEST "Postman"에서 로그인 후 JWT을 Header에 자동 등록하는 방법

Postman은 REST API 테스트를 위한 강력한 도구로, API 호출에 대한 테스트 및 디버깅을 쉽게 수행할 수 있게 해줍니다. JWT 토큰을 사용하는 API를 테스트할 때는, 로그인 후 JWT 토큰을 헤더에 자동으로 삽입하는 방법이 편리합니다. Postman에서 이 작업을 수행하는 방법은 다음과 같습니다. 로그인 요청 만들기: 먼저 로그인 API를 호출하는 요청을 만들고, 이를 통해 JWT 토큰을 받아옵니다. 일반적으로 이 요청은 POST 방식이며, 사용자 이름과 비밀번호를 포함합니다. JWT 토큰 추출: 로그인 API 호출이 성공하면, 응답 본문에서 JWT 토큰을 추출해야 합니다. 이 작업을 자동화하기 위해 Postman의 "Tests" 탭에 스크립트를 작성할 수 있습니다. 다음과 같은 코드를 ..

Library 2023.04.24

Docker, docker-compose 사용법

`docker-compose`는 여러 Docker 컨테이너를 정의하고 관리하기 위한 도구입니다. `docker-compose.yml` 파일을 사용하여 컨테이너, 네트워크, 볼륨 등의 설정을 기술할 수 있습니다. 이를 통해 애플리케이션과 관련된 모든 서비스를 한 번에 관리할 수 있습니다. 1. `docker-compose.yml` 파일 작성 `docker-compose.yml` 파일은 YAML 문법을 사용하며, 각 서비스, 네트워크, 볼륨 등의 설정을 포함합니다. 간단한 예시는 다음과 같습니다. version: '3' services: web: image: nginx ports: - "80:80" db: image: mysql environment: MYSQL_ROOT_PASSWORD: mypassword..

Library 2023.04.24

Docker Container의 Script Reverse

실행 중인 Docker 컨테이너에서 컨테이너 실행 스크립트를 리버스하는 것은 컨테이너가 생성된 이미지와 관련 메타데이터를 검사하여 원래 실행 명령 및 관련 설정을 찾는 것을 의미합니다. 1. 컨테이너의 실행 명령 및 기본 설정 확인: `docker inspect` 명령어를 사용하여 컨테이너의 메타데이터를 확인할 수 있습니다. 실행 중인 컨테이너의 ID 또는 이름을 사용하여 `docker inspect`를 실행합니다. docker inspect 출력된 JSON 결과에서 `Config.Cmd` 및 `Config.Entrypoint` 값을 찾아 컨테이너의 실행 명령을 확인할 수 있습니다. 또한, `Config.Env`에서 환경 변수, `HostConfig.PortBindings`에서 포트 바인딩, `HostC..

Library 2023.04.24
728x90