Git 시맨틱 커밋 메시지

Git 시맨틱 커밋 메시지 가이드 시맨틱 커밋 메시지란? 시맨틱 커밋 메시지는 커밋의 목적과 의도를 명확하게 전달하기 위한 규칙입니다. 이 규칙을 따르면 프로젝트의 히스토리를 쉽게 이해하고 자동화된 도구를 활용할 수 있습니다. 기본 구조 시맨틱 커밋 메시지의 기본 구조는 다음과 같습니다: <type>[optional scope]: <description> [optional body] [optional footer(s)] 주요 타입 커밋 메시지는 다음 타입 중 하나로 시작해야 합니다: feat: 새로운 기능 추가 fix: 버그 수정 docs: 문서 변경 style: 코드 포맷팅, 세미콜론 누락 등 (코드 변경 없음) refactor: 코드 리팩토링 test: 테스트 코드 추가 또는 수정 chore: 빌드 프로세스 또는 보조 도구 변경 모범 사례 제목은 50자 이내로 제한합니다. 제목의 첫 글자만 대문자로 씁니다. 제목 끝에 마침표를 넣지 않습니다. 제목과 본문 사이에 빈 줄을 넣습니다. 본문은 72자마다 줄바꿈합니다. 명령형 현재 시제를 사용합니다 (예: “변경”, “수정함” 대신 “변경하다”). 예시 좋은 커밋 메시지 예시: ...

March 16, 2025 · Byung Kyu KIM

Python uv 101

Python uv 가이드: 빠르고 강력한 패키지 관리 도구 1. Python uv란? uv는 Astral에서 개발한 Python 패키지 및 프로젝트 관리 도구로, 기존 pip와 venv를 대체하거나 보완할 수 있도록 설계되었습니다. Rust로 작성되어 초고속 성능을 자랑하며, 통합적인 환경 관리와 의존성 해결 기능을 제공합니다. 주요 용도는 다음과 같습니다: Python 패키지 설치 및 관리 가상 환경 생성 및 동기화 의존성 잠금 및 프로젝트 관리 기존 워크플로우 개선 주요 기능 초고속 성능: pip보다 10~100배 빠른 설치 속도 통합 도구: 패키지 설치, 가상 환경 생성, 의존성 잠금을 단일 명령어로 처리 글로벌 캐시: 동일한 의존성을 재사용해 디스크 공간 절약 호환성: 기존 pip 및 venv와의 높은 호환성 uv는 기존 Python 도구의 복잡성을 줄이고, 현대적인 개발 환경에 최적화된 대안을 제공합니다. ...

March 15, 2025 · Byung Kyu KIM

Playwright 101

Playwright 가이드: 웹 자동화 1. Playwright란? Playwright는 웹 브라우저 자동화를 위한 도구로, Selenium의 대안으로 설계되었습니다. 주요 용도는 다음과 같습니다: 웹 애플리케이션 테스트 자동화 웹 스크래핑 및 데이터 추출 반복적인 웹 작업 자동화 크로스 브라우저 테스팅 주요 기능 브라우저 제어: Chromium, Firefox, Webkit(Safari 엔진) 지원 DOM 조작: querySelector와 locator로 요소 검색 및 조작 폼 자동화: 입력 및 제출 자동화 스크린샷 캡처: 페이지 또는 요소 캡처 헤드리스 모드: GUI 없는 실행 Playwright는 Selenium보다 최신 기술을 활용하며, 자동 대기와 간결한 API를 제공합니다. ...

March 1, 2025 · Byung Kyu KIM

macOS Homebrew Cask, 추가 애플리케이션

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

November 17, 2024 · Byung Kyu KIM

모던 CMake 기본 가이드

모던 CMake 기본 가이드: 타겟 중심의 현대적인 빌드 시스템 1. Makefile 대비 CMake의 장점 크로스 플랫폼 지원 Makefile은 Unix 계열 시스템에 특화되어 있지만, CMake는 Windows, Linux, macOS 등 다양한 플랫폼 지원 Visual Studio, Ninja, Unix Makefiles 등 다양한 빌드 시스템 생성 가능 타겟 중심의 의존성 관리 명확한 의존성 전파 (PUBLIC, PRIVATE, INTERFACE) 자동 헤더 의존성 추적 현대적인 패키지 관리 (find_package) 향상된 IDE 지원 Visual Studio, CLion 등과 완벽한 통합 자동 완성 및 인텔리센스 지원 CMake 프리셋 지원 2. 모던 CMake의 특징 기존 CMake와의 주요 차이점 타겟 중심 접근: 전역 변수 대신 특정 타겟에 한정하여 빌드 옵션을 지정합니다. 개선된 의존성 관리: 빌드 의존성 문제를 해결하고 불필요한 참조를 줄입니다. 새로운 명령어 도입: target_link_libraries, target_include_directories 등의 새로운 명령어를 사용합니다. PUBLIC, PRIVATE 키워드를 통한 세밀한 의존 관계 설정 CMake 3.0.0부터 모던 CMake의 기본 기능 지원 CMake 3.12+ 버전부터 “More Modern CMake” 기능 제공 CMake 3.15+ 버전 사용 권장 타겟 중심 접근 # 안티패턴 (사용하지 말 것) include_directories(include) add_definitions(-DSOME_DEFINE) link_directories(lib) # 모던 패턴 (권장) add_executable(myapp src/main.cpp) target_include_directories(myapp PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include ) target_compile_definitions(myapp PRIVATE SOME_DEFINE ) target_link_directories(myapp PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/lib ) 범위와 전파 # 라이브러리 설정 add_library(mylib SHARED src/lib.cpp include/lib.h ) target_include_directories(mylib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include # 헤더는 공개 PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src # 구현은 비공개 ) # 실행 파일에서 라이브러리 사용 add_executable(myapp src/main.cpp) target_link_libraries(myapp PRIVATE mylib) # 자동으로 include 경로 전파 범위(Scope)와 전파(Propagation)의 개념 CMake에서 범위는 특정 설정(컴파일 옵션, include 디렉토리 등)이 어디에 적용될지를 나타냅니다. 전파는 이러한 설정이 다른 타겟(target)으로 전달되는 방식을 정의합니다. ...

November 15, 2024 · Byung Kyu KIM

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 world 2. 특정 문자 삭제: echo "Hello, World!" | tr -d 'o' # 출력: Hell, Wrld! 3. 공백을 탭으로 변환: echo "Hello World" | tr ' ' '\t' 4. 연속된 공백 압축: echo "Hello World" | tr -s ' ' # 출력: Hello World tr 명령어의 단점 복잡한 패턴 매칭 불가: 정규 표현식을 지원하지 않아 복잡한 패턴 매칭이 어렵습니다. 파일 직접 수정 불가: 입력 스트림만 처리할 수 있어 파일을 직접 수정할 수 없습니다. 대용량 파일 처리 어려움: 매우 큰 파일을 처리할 때 성능 저하나 실패가 발생할 수 있습니다. 문자 단위 처리: 문자열 단위가 아닌 문자 단위로 처리하기 때문에 특정 상황에서 제한적일 수 있습니다. sed 명령어 sed(Stream Editor)는 tr보다 더 복잡한 텍스트 처리 작업을 수행할 수 있는 도구입니다. ...

November 7, 2024 · Byung Kyu KIM

리눅스의 Init 시스템

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

November 3, 2024 · Byung Kyu KIM

프롬프트 엔지니어링 기본 가이드

프롬프트 엔지니어링 가이드: 기초 개념부터 고급 테크닉까지 요약 프롬프트 엔지니어링은 AI 모델에게 원하는 답변을 얻기 위해 입력을 최적화하는 기술입니다. 이 기술은 특히 대화형 AI나 데이터 생성, 모델 학습에서 중요한 역할을 하며, AI 활용의 효율성과 정확성을 크게 높일 수 있습니다. 1. 프롬프트 엔지니어링의 개념과 중요성 정의: AI 모델의 성능을 극대화하기 위해 명확하고 체계적으로 구성된 질문이나 지시문(프롬프트)을 설계하는 기술입니다. 중요성 정확성 향상: 원하는 정보를 정확하게 얻을 수 있습니다. 효율성: 반복 작업을 줄이고, 응답 속도와 질을 높입니다. 일관성: 일정한 포맷과 내용의 응답을 보장할 수 있습니다. 비용 절감: 불필요한 재작업을 줄이고, AI API 호출 효율을 최적화합니다. 창의성 촉진: AI의 창의적 잠재력을 활용해 혁신적인 해결책을 이끌어냅니다. 2. 핵심 원칙과 테크닉 명확한 지시사항 작성 원하는 출력 형식과 구조를 구체적으로 명시합니다. ...

October 29, 2024 · Byung Kyu KIM

Python PEP 8 스타일 가이드

Python PEP 8 스타일 가이드 1. PEP 8이란? PEP 8(Python Enhancement Proposal 8)은 Python 코드의 가독성과 일관성을 향상시키기 위한 스타일 가이드입니다. Python의 창시자인 Guido van Rossum이 작성했으며, Python 커뮤니티에서 널리 채택된 코딩 표준입니다. 1.1 PEP 8의 목적 코드의 가독성 향상 일관된 코딩 스타일 유지 협업 효율성 증대 코드 유지보수 용이성 향상 2. PEP 8 주요 규약 2.1 코드 레이아웃 들여쓰기 4칸 공백 사용 # 올바른 들여쓰기 (4칸 공백 사용) def long_function_name( var_one, var_two, var_three, var_four): print(var_one) # 잘못된 들여쓰기 def long_function_name( var_one, var_two, # 들여쓰기가 부족함 var_three, var_four): print(var_one) 최대 줄 길이 한 줄은 최대 79자 긴 줄은 여러 줄로 나누기 백슬래시() 사용하여 줄 나누기 # 올바른 예시 from mypkg.mymodule import ( function1, function2, function3, function4) long_string = ('This is a very long string that ' 'cannot fit within 79 characters ' 'so we split it into multiple lines.') 2.2 공백 규칙 연산자 주변 공백 # 올바른 예시 x = 1 y = 2 long_variable = 3 # 잘못된 예시 x=1 y = 2 long_variable = 3 쉼표 후 공백 # 올바른 예시 def complex_function(x, y, z): pass # 잘못된 예시 def complex_function(x,y,z): pass 2.3 명명 규칙 변수명 : snake case 소문자 사용 단어 사이는 언더스코어(_)로 구분 my_variable = 1 count_of_users = 10 first_name = "John" 함수명 : snake case 소문자 사용 단어 사이는 언더스코어로 구분 def calculate_average(): pass def get_user_info(): pass 클래스명 : Pascal Case) CapWords(Pascal Case) 컨벤션 사용 class UserAccount: pass class DatabaseConnection: pass 상수 대문자와 언더스코어 사용 MAX_CONNECTIONS = 100 DEFAULT_TIMEOUT = 30 2.4 제어문 스타일 if 문 # 올바른 예시 if x is not None: pass if x == 4: print('x is 4') elif x == 5: print('x is 5') else: print('x is not 4 or 5') # 잘못된 예시 if x!=None: pass for 문 # 올바른 예시 for i in range(5): print(i) # 리스트 컴프리헨션 (한 줄인 경우) squares = [x**2 for x in range(10)] # 리스트 컴프리헨션 (복잡한 경우) squares = [ x**2 for x in range(10) if x % 2 == 0 ] 2.5 주석 작성 규칙 인라인 주석 x = 5 # 이것은 인라인 주석입니다 # 잘못된 예시 x = 5# 공백이 없음 문서화 문자열 (Docstrings) def complex_function(param1, param2): """이 함수는 복잡한 연산을 수행합니다. Args: param1 (int): 첫 번째 매개변수 param2 (str): 두 번째 매개변수 Returns: bool: 연산 성공 여부 """ pass 3. VS Code에서 PEP 8 설정하기 3.1 필수 플러그인 Python Extension Pack Python 언어 지원 기본적인 PEP 8 검사 기능 포함 Pylint 코드 분석 도구 PEP 8 규칙 검사 { "python.linting.pylintEnabled": true, "python.linting.enabled": true } Flake8 PEP 8 스타일 가이드 검사 ...

October 28, 2024 · Byung Kyu KIM

xargs - 효율적인 명령어 인수 처리와 병렬 실행

xargs - 효율적인 명령어 인수 처리와 병렬 실행 xargs 명령어: 효율적인 명령어 확장과 파라미터 전달 xargs 명령어는 한 명령어의 출력을 다른 명령어의 인수로 전달할 때 유용하게 사용됩니다. 특히 명령어의 파라미터가 길어지거나 여러 파일, 디렉토리를 대상으로 명령어를 실행해야 할 때 xargs를 사용하면 성능과 효율성을 높일 수 있습니다. 주요 옵션과 활용 예시 1. 기본 사용법 xargs는 기본적으로 표준 입력에서 받은 데이터를 공백 또는 개행으로 구분하여 후속 명령어의 인수로 전달합니다. 예시: echo "file1 file2 file3" | xargs ls -l file1, file2, file3을 ls -l의 인수로 전달하여 파일의 상세 정보를 출력합니다. ...

October 27, 2024 · Byung Kyu KIM