IT 관련 공부 49

RHEL 리눅스 권한 체계

Overview최근 업무 상 RHEL(Red Hat Enterprise Linux)을 사용하는 경우가 증가하면서, 해당 시스템의 파일 권한 체계를 이해하고 문제 발생 시 원활하게 대응할 필요가 있다. 본 문서에서는 기본적인 권한 체계를 설명한 후, 권한이 다를 경우 발생할 수 있는 문제와 해결 방안을 살펴본다.파일 권한 관리모든 파일 또는 디렉토리에는 세 가지 수준의 소유권이 있다.사용자(Owner, u) – 파일을 소유한 계정그룹(Group, g) – 소유자가 속한 그룹기타(Others, o) – 위 두 그룹에 속하지 않는 사용자그리고 각 소유권에는 아래와 같이 세 가지의 권한이 할당 될 수 있다.읽기(r) – 파일 내용을 읽을 수 있음쓰기(w) – 파일을 수정하거나 삭제할 수 있음실행(x) – 실행 ..

인프라 2025.02.20

RHEL 디렉토리 구조

Overview최근 RHEL을 사용할 경우가 많아 해당 시스템에 대한 디렉토리 구조를 살펴보려 한다Root 디렉토리 구조리눅스의 디렉토리 파일은 트리 구조로 구성되어 있다. 리눅스에서는 수많은 파일을 관리하기 위해 이러한 디렉토리 개념을 사용한다.모든 디렉토리의 최상위 디렉토리가 Root 디렉토리이다. / 로 표시 한다.디렉토리 구성 및 기능디렉토리 위치디렉토리 이름디렉토리 설명/bin바이너리필수적인 실행 파일(명령어) 저장 (ls, cp, mv 등)/sbin시스템 바이너리시스템 관리용 명령어 (fdisk, iptables, shutdown 등)/boot부트리눅스의 부팅에 필요한 정보를 가진 파일들이 있는 디렉토리/dev디바이스시스템 장치 파일을 저장하는 디렉토리 (예: /dev/sda - 하드디스크, ..

인프라 2025.02.20

PF4J에서 Plugin을 상속 받는 이유

Overview플러그인 환경을 구축할 일이 있어 PF4J 라이브러리를 사용하던 도중 고민하게 만드는 에러가 생겼다, 관련 에러에 대해 알아보자기존 설정파일구조├─src│ ├─main│ │ ├─java│ │ │ └─com.plugin.test│ │ │ └─UserExtension.java│ │ │ └─mapper│ │ │ └─UserMapper.java│ │ └─resources│ │ └─plugin.properties​plugin.propertiesplugin.id=EntryPointPlugin2plugin.class=com.plugin.test.UserExtensionplugin.version=1.0.0plugin.requires=pf4j>..

rhel 환경에서 PDF 용량 줄이기

Overviewrhel 환경에서 Chrome을 활용하여 html을 pdf 변환 하는 작업이 완료되었다. 하지만 변환된 파일이 기존 파일인 html 파일보다 최대 3~4배까지 용량이 늘어나는 현상이 있으므로 이걸 줄이는 방법을 알아보도록 하자.PDF 용량이 큰 이유HTML 파일이 PDF 파일로 변환 될 때 파일크기가 증가하는 이유는 여러가지가 있지만 크게 3가지로 정리할 수 있다Rendering Contents : HTML 페이지는 텍스트 기반의 코드로 구성되어 있지만, PDF 파일은 이를 완전한 페이지 이미지로 렌더링한다. 페이지에 CSS 스타일링, 복잡한 레이아웃, 폰트 임베딩 등 추가되면 파일의 크기가 커진다이미지 및 자원 : HTML 페이지에 포함된 이미지가 고해상도이거나 외부 자원을 사용하는 경우..

인프라 2025.02.18

Docker에서 rhel8.8 설치하기/rhel8.8 Container에 chrome headless 설치하기

Overviewrhel 환경에서 Chrome을 활용한 PDF 변환이 필요한 상황이 생겼다. 그에 대한 테스트로 도커 컨테이너 내부에 rhel을 설치하고, rhel 환경에서 chrome headless를 설치해보도록 하자, 그 다음 pdf 변환 테스트를 진행해보자Doker에 rhel8.8 설치하기도커를 사용하여 rhel 8.8환경의 컨테이너 설치를 먼저 해보자 Red Hat Container Catalog에서 사용 가능한 rhel 8.8의 이미지를 찾아본다.image를 찾아보면 최소화된 버전만 존재하는데, 이유는 컨테이너는 경량화를 목표로 사용하기 때문에 취지에 맞는 경량화 버전만 제공한다고 한다. 그래서 필요한 설정과 명령어들은 직접 설치를 해야한다.(dockerfile을 활용한 표준버전 설치도 가능하지..

인프라 2025.02.18

Netty Bytebuf

Overview네티를 공부하면서 ByteBuf가 핵심 클래스 중 하나로 생각된다. ByteBuf에 대해 더 알아보자.What is Buffer?ByteBuf를 알아보기 전에 Buffer란 무엇인지 먼저 알아보자.Buffer는 중간 저장소의 역할이다. 데이터를 생성 할 때 버퍼에 넣어두고, 데이터를 사용하는 곳은 처리 가능한 속도로 항목을 가져온다. 데이터 처리 속도가 데이터 생성 속도보다 느려도, 공급된 데이터를 버퍼에 쌓아두기 때문에 끊김 없이 사용할 수 있다.버퍼의 유용한 점이 이것이다. 데이터 생성 속도와 데이터 처리 속도가 다를 때 유용하다.What is ByteBuf?ByteBuf는 논리적인 바이트 컨테이너이다.Java NIO는 바이트 컨테이너로 ByteBuffer를 제공하지만, 사용하기에 번거..

PM2 살펴보기

OverviewNode js로 제작한 홈페이지를 AWS 상에서 서버를 돌려야하는 상황이 생긴다면, 항상 관리를 수동으로 할 수는 없다. Node 진영에는 프로세스 매니저인 PM2가 존재하고 있으므로 이것을 살펴보고 실제 적용시키도록 하자.PM2가 필요한 이유?노드는 기본적으로 싱글 스레드로 동작한다. 노드 애플리케이션은 단일 CPU에서 돌아가기 때문에 CPU의 멀티코어 시스템은 사용할 수 없다. 싱글 스레드의 단점이 모든 코어를 사용하지 못해 최대 성능을 내지 못하는 경우가 생기는 것이다.그래서 노드는 클러스터 모듈을 통해 단일 프로세스를 멀티 프로세스로 늘리는 방법을 제공한다.하지만 클러스터를 사용하는 방법도 완벽하게 자동 매니지먼트가 되진 않는다. 따라서 이런 최적화 작업들을 직접 구현하는 것보다 솔..

인프라 2025.02.18

log4j → log4j2 Migration 작업

Overviewlog4j는 2015년에 종료 되었고 보안에 취약한 문제가 발견되어 log4j2로 migration하는 작업이 필요하다.log4j 란?log4j란 log for java라는 의미이다.로그문 출력을 다양한 대상으로 할 수 있도록 도와주는 도구이다.log4j의 구조Logger : 로그파일을 작성하는 클래스, Appender에 메세지 전달Appender : 로그출력 위치를 결정 (file, console, DB 등)Layout : Appender로 로그 생성 전에 메세지 형식을 만드는 클래스log4j levelTRACE log4j download 및 방법 차이우선 아래 사이트에서 log4j 파일을 다운로드 한다. Log4j – Download Apache Log4j™ 2logging.apache..

IT자료실/Java 2024.05.08

오브젝트 - 기술서적 스터디 15단원-디자인패턴과 프레임워크

디자인패턴과 프레임워크 디자인패턴 : 소프트웨어 설계에서 반복적으로 발생하는 문제에 대해 반복적으로 적용할 수 있는 해결 방법 (설계를 재사용) 프레임워크 : 설계와 코드를 함께 재사용하기 위한 것 소프트웨어 패턴 패턴이 지닌 가장 큰 가치는 경험을 통해 축적된 실무지식을 효과적으로 요약하고 전달할 수 있는 것 패턴의 종류 : 패턴의 범위나 적용단계에 따라 분류한다 아키텍쳐 패턴 : 디자인패턴의 상위 패턴으로 소프트웨어의 전체적인 구조를 결정 분석 패턴 : 도메안 내의 개념적인 문제를 해결하는 데 초점 디자인 패턴 : 중간 규모의 패턴, 특정한 설계 문제를 해결하는 것을 목적 이디엄 : 특정 프로그래밍 언어에만 국한된 하위 레벨의 패턴 패턴에서 중요한 것은 패턴을 따르면 특정한 상황에 적용할 수 있는 설..

오브젝트 - 기술서적 스터디 14단원-일관성 있는 협력

일관성 있는 협력 객체는 협력을 위해 존재한다. 협력은 객체가 존재하는 이유와 문맥을 제공 갹체지행 패러다임의 장점은 설계를 재사용할 수 있다는 것 구현 유사한 기능은 유사한 방식으로 구현해야 한다 설계에 일관성 부여하기 설계의 일관성을 유지하려면 디자인 패턴을 학습하고 변경이라는 문맥안에서 디자인패턴을 적용한다 협력을 일관성 있게 만들기 위한 기본 지침 변하는 개념을 변하지 않는 개념으로부터 분리 변하는 개념을 캡슐화하라 캡슐화 단순히 테이터를 감추는 것이 아니라 소프트웨어 안에서 변할 수 있는 어떤 개념이라도 감추는 것 서브타입 캡슐화와 객체 캡슐화를 적용하는 법 변하는 부분을 분리해서 타입 계층을 만든다 변하지 않는 부분의 일부로 타입 계층을 합성한다 패턴을 찾아라 일관성 있는 협력의 핵심은 변경을..