분류 전체보기 563

Java에서 c 소스 miniLZO 압축 라이브러리 Java JNI 연동하기

이번 포스팅에서는 Java 애플리케이션에서 miniLZO 압축 라이브러리를 JNI를 통해 사용하는 방법을 정리합니다.OS 는 알마리눅스9 에서 테스트 합니다.minilzo.h minilzo.c 다운로드1. Java 클래스 작성먼저, native 메서드를 선언할 Java 클래스를 작성합니다.// LzoCompressor.javapublic class LzoCompressor { static { System.loadLibrary("minilzojni"); // libminilzojni.so 로드 } public native int compress(byte[] input, int length, byte[] output); public native int decompress(b..

gitlab 설치후 계속 502 발생할때

GitLab 설치 후 502 Bad Gateway 오류가 계속 발생할 경우, 다음 항목들을 순차적으로 확인해보시는 것이 좋습니다.대부분은 GitLab의 구성 요소(gitlab-workhorse, unicorn/puma, nginx 등) 중 하나가 제대로 작동하지 않아서 발생합니다.1. GitLab 서비스 상태 확인sudo gitlab-ctl status 모든 서비스가 run: ... 상태인지 확인하세요.run:이 아니고 down:이라면 해당 서비스에 문제가 있는 것입니다.2. 로그확인 sudo gitlab-ctl tail​로그를 확인한후 충돌되는 포트 있는지 확인한다.# 포트 확인sudo ss -tuln# 특정포트 확인sudo ss -tuln | grep :80803.Puma (또는 Unicorn) 오류..

인프라 2025.04.09

알마리눅스 9에서 WebtoB 4.1 설치 및 오류 해결

1. WebtoB 4.1 설치 파일 다운로드 및 실행먼저 WebtoB 4.1 설치 파일인 WEBTOB4_1_SP9_Fix1_LinuxK2_6_x64.bin을 다운로드합니다. 이 파일을 실행하기 전에 실행 권한을 부여해야 합니다.chmod +x WEBTOB4_1_SP9_Fix1_LinuxK2_6_x64.bin이제 설치 파일을 실행합니다../WEBTOB4_1_SP9_Fix1_LinuxK2_6_x64.bin2. 설치 도중 발생하는 오류설치 중에 다음과 같은 오류 메시지가 출력됩니다:strings: '/lib/libc.so.6': No such fileLaunching installer...오류: 기본 클래스 cohttp://m.zerog.lax.LAX을(를) 찾거나 로드할 수 없습니다.원인: java.lang..

인프라 2025.03.26

Spring Boot와 HMAC을 활용한 데이터 서명 및 검증 구현

개요애플리케이션에서 데이터를 보호하고 무결성을 보장하기 위해 HMAC(Hash-based Message Authentication Code)를 활용할 수 있습니다. 본 글에서는 Spring Boot를 이용한 HMAC 기반의 전자서명 및 검증 API를 구현하는 방법을 설명합니다. HMAC 이란?HMAC은 키를 사용하여 데이터를 해싱하여 서명을 생성하는 방법입니다. HMAC을 사용하면 데이터가 변경되지 않았음을 검증할 수 있으며, 공유된 비밀 키를 통해 보안성을 유지할 수 있습니다.HMAC-SHA256 알고리즘을 사용하여 JSON 데이터를 서명하고 검증하는 API를 구현합니다. HMAC 서명 및 검증 API 구현import org.springframework.web.bind.annotation.*;impor..

프로그래밍 2025.03.19

TODO 관리 시스템

이 코드는 할 일(Task) 관리 시스템을 구현한 것입니다.Task 클래스: 개별 할 일 객체TaskList 클래스: 여러 개의 할 일 목록을 관리하는 리스트정렬 기능: 할 일 목록을 제목(title), 생성 날짜(date), 등록 순서(register) 기준으로 정렬https://www.youtube.com/watch?v=yMyDUpTjwCw&list=PLBA53uNlbf-ud8ttaC5QoC3XwJ04eOWbU&index=5 const Task = class { constructor(title) { this._title = title; this._date = Date.now(); this._isComplate = false; ..

프로그래밍/Js 2025.03.18

정렬 - 선택정렬

선택 정렬(Selection Sort)이란?선택 정렬은 배열을 정렬하는 가장 기본적인 알고리즘 중 하나로, 다음과 같은 방식으로 동작합니다:배열에서 가장 작은 요소를 찾아 첫 번째 위치로 이동합니다.그다음, 두 번째 요소부터 남은 요소 중 가장 작은 값을 찾아 두 번째 위치로 이동합니다.이 과정을 반복하여 배열 전체를 정렬합니다.🔹 시간 복잡도최선, 평균, 최악의 경우 모두 O(n²)이유: 각 요소를 확인하며 남은 요소에서 최솟값을 찾기 때문   const selectionSort = (arr) => { const len = arr.length; for (let i = 0; i 첫 번째 반복문 (i)배열을 한 요소씩 순회하면서 정렬할 위치를 결정합니다.minIndex를 현재 i로 설정합니다. (..

알고리즘 2025.03.14

정렬 - 버블정렬(Bubble Sort)

버블 정렬(Bubble Sort)란?버블 정렬은 서로 인접한 두 개의 값을 비교하면서 정렬하는 방식으로, 작은 값을 왼쪽으로, 큰 값을 오른쪽으로 이동시킵니다.마치 거품(Bubble)이 물 위로 올라가는 것처럼 가장 큰 값이 반복적으로 오른쪽 끝으로 이동하므로 **버블 정렬(Bubble Sort)**이라고 불립니다.정렬 동작 과정예제 배열:[5, 3, 6, 4, 1]1회전(첫 번째 바깥 루프)각 숫자를 비교하여 큰 값을 오른쪽으로 이동[5, 3, 6, 4, 1] → [3, 5, 6, 4, 1] (5와 3 교환)[3, 5, 6, 4, 1] → [3, 5, 6, 4, 1] (5와 6 그대로 둠)[3, 5, 6, 4, 1] → [3, 5, 4, 6, 1] (6과 4 교환)[3, 5, 4, 6, 1] → ..

알고리즘 2025.03.14

리버스 프록시 서버 (Reverse Proxy)

리버스 프록시 서버(Reverse Proxy Server)는 클라이언트의 요청을 받아 적절한 백엔드 서버(예: 애플리케이션 서버, 데이터 서버 등)로 전달하고, 응답을 클라이언트에게 반환하는 역할을 하는 서버입니다.즉 DMZ 구간에 리버스 프록시 서버를 구성하고 백엔드 서버로 라우팅 하는 역할을 합니다.한개의 도메인으로 서로 다른 프로젝트 즉 다른 서버를 연결하고 싶을때 사용합니다.  [인터넷] │ ┌───────────┴───────────┐ │ 방화벽 (FW1) │ └───────────┬───────────┘ │ ┌─────..

인프라 2025.03.13

Apache HTTP 서버와 Tomcat WAS 서버 간의 로드 밸런싱 설정 (mod_jk 사용)

하나의 도메인에서 URL 패턴에 따라 트래픽을 여러 WAS 서버로 분배할 수 있습니다.예를 들어http://your-domain/abc와 같은 요청은 aa_ajp13_worker라는 Tomcat 서버로 전달되고http://your-domain/bb/something과 같은 요청은 bb_ajp13_worker라는 다른 Tomcat 서버로 전달됩니다.여기서 중요한 점은 JkMount 지시어로 URL 패턴을 정의하여 각 요청이 어떤 서버로 전달될지 결정할 수 있다는 것입니다.이 방식으로 여러 WAS 서버를 한 도메인 내에서 효율적으로 분배하고 관리할 수 있습니다.즉, 도메인 하나에서 다양한 URL 경로에 맞춰서 트래픽을 분산시킬 수 있어, 트래픽 분배 및 부하 분산이 가능합니다.1. mod_jk 설치 및 설정..

인프라 2025.03.07

console.log 출력 내용을 <div>에 표시하는 방법

웹 개발을 하다 보면 console.log()를 사용하여 디버깅해야 합니다.하지만 모바일에서는 확인할 수 없어 불편할 때가 있습니다.이 글에서는 console.log의 출력을 웹 페이지의 특정 영역에 표시하는 방법을 소개합니다.기본적으로 console.log()는 브라우저의 개발자 도구에 출력됩니다.하지만 이를 가로채서 웹 페이지 내의 에 출력하도록 만들면, 개발자 도구 없이도 디버깅 정보를 쉽게 확인할 수 있습니다.주요 기능:console.log()의 기본 기능 유지div 안에 로그 출력객체(Object)와 배열(Array) 변환하여 가독성 높이기Promise 처리하여 해결된 값 출력 Console Output

프로그래밍/Js 2025.02.28