분류 전체보기 131

Git Repository 복제, Branch 동기화 관리

Git Repository 복제 및 Branch 관리 가이드Git Repository 복제Remote → Local 복제Git 저장소를 복제하는 방법에는 여러 가지가 있으며, 각각의 방식에 따라 다른 특징이 있습니다.--mirror 복제의 특징git clone --mirror: Remote repository의 모든 참조(refs)를 포함하여 Local에 저장기본 clone과 달리 작업 디렉토리 없이 저장소의 메타데이터 전체를 복제주로 저장소 백업이나 완전한 미러링에 사용# mirror 복제$ git clone --mirror https://github.com/cdecl/test$ tree -d.└── test.git ├── branches ├── hooks ├── info ├── ..

dev 2024.11.28

유니코드 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

Golang GC 주요 내용

Golang GC (가비지 컬렉터) 주요 내용Golang GC : GOGC유효하지 않는 메모리(Dangling Object)를 주기적으로 해제하는 기법Java의 Parallel GC, G1GC 와 유사하나 구현 방식에서 차이가 있음Stop-the-World 시간을 최소화하도록 설계됨Tri-Color Algorithm 사용동시성을 고려한 효율적인 메모리 관리 알고리즘CMS (Concurrent Mark and Sweep) 방식 운영Java 와 같은 Generation GC 기법이나 Compaction은 지원하지 않음대신 더 효율적인 메모리 할당 전략을 사용Compaction (압축, 재배치) 가 없음재배치를 하지 않는 대신 TCMalloc를 통한 메모리 할당 관리메모리 단편화를 최소화하고 빠른 할당을 지원..

dev 2024.11.25

C++20 Modules - gnu c++ test

C++ Modules Test Example (g++)C++20 ModulesC++20에 추가된 모듈 Modules 기능은 기존의 헤더 파일 #include로 인한 컴파일 시간 증가 문제를 해결하고, 필요한 로직(함수, 심볼)만을 내보내는(export) 방식을 통해 타 언어의 모듈 단위처럼 효율적인 라이브러리 관리를 지원합니다.Modules의 주요 장점컴파일 시간 단축: 각 모듈은 한 번만 컴파일되며, 그 결과가 캐시됨심볼 격리: 모듈 내부의 심볼은 명시적으로 export하지 않는 한 외부에서 접근 불가순환 의존성 방지: 헤더 파일과 달리 명확한 의존성 그래프 형성매크로 독립성: 모듈은 매크로의 영향을 받지 않아 더 안정적인 코드 작성 가능일종의 PCH(Precompiled Header)의 기능을 포함한..

dev 2024.11.24

Python asyncio - 비동기, 동기성

asyncio는 async/await 구문을 사용하여 동시성 코드를 작성하는 라이브러리입니다. 특히 I/O 작업이 많은 애플리케이션에서 높은 성능을 발휘합니다.asyncio : asynchronous io 처리https://docs.python.org/ko/3/library/asyncio.htmlThreading 동시성 제어는 GIL (Global interpreter lock) 제약에 의해 느리고, 복잡도는 그대로 가지고 있음GIL은 Python 인터프리터가 한 번에 하나의 스레드만 실행할 수 있도록 제한하는 메커니즘멀티스레드를 사용해도 CPU 연산의 실제 병렬 처리가 어려움IO 병목에 의한 동시성을 관리하기 위한 도구로서 Coroutine을 통한 관리네트워크 요청, 파일 읽기/쓰기 등 I/O 작업에서..

dev 2024.11.23

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

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

devops 2024.11.22

macOS Homebrew Cask, 애플리케이션 (personal)

macOS 애플리케이션 - personal installation시스템 유틸리티alt-tab (AltTab.app)윈도우 스타일의 앱 전환기로, 모든 열린 창을 한눈에 보고 빠르게 전환할 수 있습니다.macOS의 기본 앱 전환 기능을 개선하여 생산성을 높이는 데 도움을 줍니다. linearmouse (LinearMouse.app)macOS용 마우스 커스터마이징 도구로, 스크롤 방향, 속도, 버튼 기능 등을 세밀하게 조정할 수 있습니다.특히 서드파티 마우스 사용 시 macOS의 제한적인 마우스 설정을 보완해줍니다. rectangle (Rectangle.app)키보드 단축키로 창 크기와 위치를 쉽게 조절할 수 있는 창 관리 도구입니다.다중 모니터 환경에서 창 관리를 효율적으로 할 수 있어 작업 생산성을 ..

util 2024.11.21

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

암호화 지식 (개발자를 위한 가이드)

현대 소프트웨어 개발에서 암호화는 필수적인 보안 요소입니다. 이 글에서는 개발자가 알아야 할 핵심 암호화 개념과 실제 구현 시 고려사항을 다룹니다.암호화 알고리즘 선택 시 고려사항암호화 구현 시 다음 요소들을 신중히 고려해야 합니다:대칭형 vs 비대칭형 암호화알고리즘 종류와 보안 강도운영 모드의 특성과 용도패딩 방식키 관리 전략성능과 보안의 균형대칭형 vs 비대칭형 암호화대칭형 암호화정의: 동일한 키로 암호화와 복호화를 수행장점: 빠른 처리 속도적은 컴퓨팅 리소스 요구대용량 데이터 처리에 적합단점:키 공유의 어려움많은 통신 상대와의 키 관리 복잡성비대칭형 암호화정의: 공개키와 개인키를 사용하는 방식장점:안전한 키 교환디지털 서명 가능부인 방지 기능단점:느린 처리 속도높은 컴퓨팅 리소스 요구주요 대칭형 블..

dev 2024.11.19