devops 111

유니코드 NFD to NFC 변환

유니코드 NFD 문자열을 NFC 문자열로 변환하는 방법을 Python 스크립트와 nfd2c 툴을 활용하여 설명합니다.이 글은 macOS 및 다양한 운영 체제에서 유니코드 호환성을 유지하기 위해 NFD와 NFC 간 변환이 필요한 상황에 유용합니다.NFD와 NFC유니코드는 다양한 언어와 문자를 일관되게 표현하기 위한 국제 표준입니다. 하지만 동일한 문자라도 운영 체제나 시스템에 따라 다른 유니코드 정규화 방식(NFD, NFC)으로 저장되거나 처리될 수 있습니다.이는 파일 시스템, 데이터베이스, 문자열 비교 등에서 예상치 못한 문제를 일으킬 수 있습니다.유니코드 정규화 방식NFD (Normalization Form Decomposition)문자 분해 방식: 기본 문자와 결합 문자(음절)를 별도로 분리해 표현합..

devops 2024.11.27

TLS와 SSH 프로토콜 기능 비교

TLS와 SSH 프로토콜의 서버-클라이언트 협상 항목과 기능 비교TLS와 SSH 프로토콜 정의1. TLS(Transport Layer Security)TLS 프로토콜은 인터넷 상에서 안전한 통신을 위해 사용되는 암호화 프로토콜입니다.TLS는 SSL(Secure Sockets Layer) 프로토콜의 후속 버전으로, 웹 브라우저와 웹 서버 사이의 통신을 암호화하여 데이터 보안을 강화하는데 사용됩니다.TLS 프로토콜의 주요 기능암호화: 클라이언트와 서버 간의 통신 내용을 암호화하여 보호인증: 서버의 신원을 인증하고, 클라이언트 인증도 지원무결성: 전송 데이터의 변조를 방지TLS는 HTTP, SMTP, IMAP 등 다양한 프로토콜의 보안 계층으로 사용됩니다. TLS 1.0/1.1은 더 이상 권장되지 않으며, 현..

devops 2024.11.26

localhost.run과 ngrok - 로컬 서비스의 외부 노출 도구

로컬(localhost) 서비스를 터널링을 통해 외부에서 접근 가능하도록 만들어주는 도구들을 소개합니다.주요 사용 사례:외부 API의 웹훅(webhook) 테스트클라이언트에게 개발 중인 기능 데모모바일 기기에서 로컬 개발 서버 접근협업 시 로컬 개발 환경 공유개발 단계에서 로컬에서 실행 중인 서비스를 외부에 임시로 공개해야 할 때 유용합니다.(보안 및 안정성 문제로 실제 프로덕션 환경에서는 사용하지 않는 것을 권장합니다)localhost.runhttps://localhost.run/{:target="_blank"}SSH 리버스 터널링을 활용하여 로컬 서비스를 외부에 노출별도의 프로그램 설치가 필요 없고 SSH 클라이언트만 있으면 사용 가능무료로 사용 가능하며 커스텀 도메인 지원테스트용 서비스 실행아래 예..

devops 2024.11.22

Docker Multi-Architecture Build Guide

Docker 이미지 다중 아키텍처(Multi-Architecture) 빌드 가이드Docker buildDocker 이미지를 빌드할 때는 기본적으로 빌드하는 머신의 CPU 아키텍처(Platform)에 맞춰 빌드됩니다. 이는 Docker의 기본 동작이며, 호스트 시스템의 아키텍처와 일치하는 이미지를 생성합니다.아키텍처의 중요성: 컨테이너는 호스트 OS의 커널을 공유하지만, CPU 아키텍처에 맞는 바이너리가 필요합니다. 예를 들어, ARM64용으로 빌드된 이미지는 AMD64 시스템에서 직접 실행할 수 없습니다.macOS arm64 테스트$ uname -aDarwin glass 20.6.0 Darwin Kernel Version 20.6.0: Wed Jun 23 00:26:27 PDT 2021; \root:xn..

devops 2024.11.20

Git 커밋 메시지 수정

Git 커밋 메시지 수정Git 커밋 메시지 수정 가이드Git을 사용하다 보면 커밋 메시지를 수정해야 할 경우가 자주 발생합니다.이 글에서는 가장 기본적인 방법부터 고급 기술까지 모든 커밋 메시지 수정 방법을 다루겠습니다.기본적인 커밋 메시지 수정 방법1. 가장 최근 커밋 메시지 수정가장 최근의 커밋 메시지를 수정하는 것은 매우 간단합니다.git commit --amend또는 에디터를 열지 않고 직접 메시지를 입력할 수우도 있습니다:git commit --amend -m "새로운 커밋 메시지"2. 커밋 내용과 메시지 함께 수정파일 변경사항을 포함하여 최근 커밋을 수정할 수 있습니다:# 파일 수정 후git add 수정된_파일git commit --amend3. 커밋 날짜 업데이트커밋의 날짜를 현재 시간으로 ..

devops 2024.11.16

네트워크 스캐닝 도구 비교: Nmap vs. Netcat

Nmap vs. nc (Network Mapper vs. Netcat) 네트워크 스캐닝 도구로서 비교Nmap vs. nc (Netcat): 네트워크 스캐닝 도구 비교Nmap (Network Mapper)네트워크 스캐닝 및 보안 평가 도구로, 대규모 네트워크에서 호스트, 서비스, 오픈 포트를 탐지하는 데 사용네트워크 호스트, 서비스, 오픈 포트 스캐닝, 운영 체제 감지, 버전 감지, 서비스 식별 등 다양한 네트워크 탐지 및 보안 평가 기능옵션설명예제-p특정 포트를 스캔합니다nmap -p 80,443 192.168.1.100-p-모든 포트를 스캔합니다nmap -p- 192.168.1.100-sV서비스 버전을 탐지합니다nmap -sV 192.168.1.100-O운영 체제를 탐지합니다nmap -O 192.168..

devops 2024.11.15

Docker 독립적인 네트워크 인터페이스 - Macvlan

Docker Macvlan 네트워크 소개, 활용 및 이슈1. Docker Macvlan 네트워크?Macvlan 네트워크는 컨테이너에 독립적인 네트워크 인터페이스를 제공하여 물리적 네트워크와 직접 상호작용 가능이는 각 컨테이너가 고유한 MAC 주소를 가지므로 네트워크 수준에서 완전히 독립된 호스트처럼 동작 가능호스트 머신과 같은 네트워크에 docker 컨테이너를 생성 목적Macvlan 네트워크 설정은 물리적 네트워크 환경에 따라 적절한 서브넷과 게이트웨이를 사용 필요 (e.g. DHCP 환경)Macvlan 구성네트워크 성능 향상: 호스트의 NAT를 거치지 않아 성능이 향상네트워크 격리: 각 컨테이너가 고유한 MAC 주소를 가져 네트워크 레벨에서 완전히 격리기존 네트워크와의 통합: 기존 물리적 네트워크 인프..

devops 2024.11.14

리눅스 Init 시스템

리눅스의 Init 시스템: System V Init와 Systemd 비교 분석 및 docker 활용 개요리눅스 시스템에서 운영체제 부팅 시 초기화를 담당하는 프로그램을 init 시스템이라고 합니다.전통적인 System V Init와 현대적인 Systemd를 비교 분석하여, 시스템 초기화 방식의 발전과 실무적 영향을 살펴보겠습니다.System V Init와 Systemd의 역사적 배경System V Init1983년 Unix System V에서 처음 도입된 init 시스템으로, 당시 컴퓨팅 환경의 단순함에 맞춰 설계되었습니다. 이 시스템은 주로 서버와 메인프레임에서 사용되었으며, 런레벨 기반의 단순한 상태 전환을 제공했습니다.Systemd2010년대 초반, Linux 커뮤니티는 더 복잡한 현대 컴퓨팅 환경..

devops 2024.11.12

Homebrew, Formulae와 Cask의 차이점

Homebrew는 macOS와 Linux에서 소프트웨어를 쉽게 설치하고 관리할 수 있는 패키지 관리자.Homebrewhttps://brew.sh/{:target="_blank"}Homebrew는 macOS와 Linux에서 소프트웨어 패키지를 간편하게 설치하고 관리할 수 있는 패키지 관리자 Homebrew에는 두 가지 주요 설치 방법인 Formulae와 Cask가 있습니다. Formulae와 Cask의 차이점과 동일한 애플리케이션이 두 가지 방법으로 제공되는 예시를 설명Homebrew 설치macOS$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"$ brew --version #..

devops 2024.11.12

tr, sed, sd 명령어 비교

강력한 텍스트 처리 도구인 tr, sed, 그리고 최신 도구인 sd에 대해 알아보고 비교해 보겠습니다.tr 명령어tr은 'translate'의 약자로, 문자열을 변환하거나 삭제하는 데 사용되는 간단하면서도 강력한 도구입니다.주요 기능대소문자 변환특정 문자 삭제문자 치환연속된 문자 압축기본 구문tr [옵션] SET1 [SET2]주요 옵션-d: SET1에 지정된 문자 삭제-s: SET1에 지정된 연속된 문자를 하나로 압축-c: SET1의 보수 집합 사용 (지정되지 않은 모든 문자)사용 예시1. 대문자를 소문자로 변환:echo "HELLO WORLD" | tr 'A-Z' 'a-z'# 출력: hello world2. 특정 문자 삭제:echo "Hello, World!" | tr -d 'o'# 출력: Hell, ..

devops 2024.11.10