Gemini CLI 툴 소개

Gemini CLI 툴: VSCode 플러그인과의 차이, 활용법, 실전 시나리오 Gemini CLI 이란? Gemini CLI는 Google의 생성형 AI 모델인 Gemini를 터미널 환경에서 직접 사용할 수 있도록 지원하는 커맨드라인 도구입니다. 이 도구를 활용하여 코드 생성, 요약, 번역, 문서화 등 다양한 AI 기능을 명령어 한 줄로 빠르게 수행할 수 있습니다. 특히, 별도의 통합 개발 환경(IDE) 없이도 쉘 스크립트, 자동화, 지속적 통합(CI)과 같은 다양한 환경에서 AI 기능을 활용할 수 있다는 점이 큰 특징입니다. Gemini CLI는 또한 **mcp(Model Context Pro ...

June 22, 2025 · Byung Kyu KIM

정규식 탐색 기법 - 전방탐색, 부정형 전방탐색, 후방탐색, 부정형 후방탐색

정규식 탐색 기법: 전방탐색과 후방탐색 정규식 탐색 기법 요약 정규식(Regular Expression)은 텍스트 패턴 매칭에 강력한 도구. **전방탐색(Lookahead)**과 **후방탐색(Lookbehind)**은 특정 조건을 만족하는 패턴을 찾되, 그 조건 자체는 결과에 포함시키지 않는 고급 기법 기법 문법 설명 전방탐색 (?=패턴) 패턴이 앞에 있을 때 매칭 부정형 전방탐색 (?!패턴) 패턴이 앞에 없을 때 매칭 후방탐색 (?<=패턴) 패턴이 뒤에 있을 때 매칭 부정형 후방탐색 (?<!패턴) 패턴이 뒤에 없을 때 매칭 왜 전방탐색과 후방탐색이 필요한가? 전방탐색과 후방탐색은 매칭 조건을 설정하지만, 해당 조건은 최종 결과에 포함되지 않습니다. 이는 URL, 로그, 텍스트 파싱에서 특정 패턴의 주변 정보만 필요할 때 유용합니다. 주요 장점: ...

June 20, 2025 · Byung Kyu KIM

GitHub Actions YAML 사용법

GitHub Actions YAML: CI/CD 워크플로우의 핵심 GitHub Actions는 CI/CD 및 자동화 워크플로우를 정의하는 강력한 도구로, YAML 파일을 통해 설정됩니다. 이 포스트에서는 GitHub Actions YAML의 주요 사용법, 실행 환경, 쉘 스크립트 활용 방법, 그리고 실무에서 유용한 팁을 정리합니다. 왜 GitHub Actions YAML이 중요한가? GitHub Actions는 코드 푸시, 풀 리퀘스트, 스케줄링 등 다양한 이벤트를 기반으로 자동화된 워크플로우를 실행할 수 있습니다. YAML 파일은 이를 직관적이고 선언적으로 정의하며, 다음과 같은 장점을 제공합니다: 가독성: 명확한 구조로 워크플로우 정의. 유연성: 다양한 환경과 도구 지원. 재사용성: 액션과 워크플로우를 모듈화해 생산성 향상. 2025년 기준: GitHub Actions는 대부분의 주요 언어와 배포 환경을 지원하며, 커뮤니티 액션으로 확장 가능. 1. GitHub Actions YAML 기본 구조 GitHub Actions 워크플로우는 .github/workflows/ 디렉토리에 .yml 파일로 저장됩니다. 기본 구조는 다음과 같습니다: ...

May 23, 2025 · Byung Kyu KIM

C++ std::format, std::print 사용법과 컴파일러 호환성

C++20 std::format과 C++23 std::print: 현대적인 문자열 포매팅 C++20과 C++23은 문자열 포매팅을 현대화한 std::format과 std::print를 도입하며, 기존의 printf나 std::cout에 비해 안전하고 직관적인 API를 제공합니다. 이 글에서는 두 기능의 사용법, 컴파일러 호환성, 그리고 지원되지 않는 환경에서 fmt 라이브러리 사용 방법을 다룹니다. 왜 새로운 포매팅 API가 중요한가? 기존 C++ 문자열 포매팅 방법(printf, std::stringstream, std::cout)은 다음과 같은 단점이 있습니다: 안전성 부족: printf는 타입 안정성을 보장하지 않아 런타임 오류 발생 가능. 복잡성: std::stringstream은 장황하고 성능 오버헤드 존재. 가독성: std::cout은 연속적인 << 연산으로 코드가 길어짐. std::format(C++20)과 std::print(C++23)는 Python의 str.format에서 영감을 받아 타입 안전성, 가독성, 성능을 개선했습니다. fmt 라이브러리는 이를 보완하며, 최신 표준을 지원하지 않는 환경에서도 동일한 경험을 제공합니다. ...

May 22, 2025 · Byung Kyu KIM

C++ 메모리 할당기 - tcmalloc, jemalloc

멀티스레드 최적화 힙 메모리 할당기: tcmalloc, jemalloc 이글 UPDATE : https://cdecl.tistory.com/304 왜 멀티스레드 메모리 할당기가 중요한가? 기본 메모리 할당기(glibc의 malloc, Windows의 HeapAlloc)는 범용성을 목표로 설계되었지만, 멀티스레드 환경에서는 다음과 같은 문제로 성능이 저하됩니다: 락 경합(Lock Contention): 다중 스레드가 동시에 메모리를 할당/해제할 때 락으로 인한 대기 시간 증가. 메모리 단편화(Memory Fragmentation): 빈번한 할당/해제로 메모리 사용 효율 저하. ABI 호환성 문제: 서로 다른 컴파일러나 표준 라이브러리 간 메모리 관리 방식 차이로 인한 런타임 오류. tcmalloc, jemalloc, mimalloc은 스레드별 캐싱, 효율적인 메모리 관리, ABI 안정성을 고려한 설계로 이러한 문제를 해결합니다. 이들은 웹 브라우저(Chrome, Firefox), 데이터베이스(MySQL, RocksDB), 고성능 서버에서 널리 사용됩니다. ...

May 15, 2025 · Byung Kyu KIM

C++ 언어의 ABI 이슈 및 호환성 가이드

C++ 언어의 ABI 이슈 및 호환성 가이드 1. ABI란 무엇인가? ABI(Application Binary Interface)는 컴파일된 바이너리 코드(오브젝트 파일, 라이브러리, 실행 파일 등)가 서로 상호작용할 수 있도록 정의된 규칙입니다. C++에서는 이름 맹글링, 호출 규약, 객체 레이아웃, 예외 처리 등이 포함됩니다. C++의 복잡한 기능(클래스, 템플릿, 예외 처리 등)으로 인해 ABI 이슈는 특히 중요하며, 서로 다른 컴파일러나 환경 간 호환성 문제를 자주 일으킵니다. 2. C++ ABI의 주요 이슈 C++는 언어의 복잡성으로 인해 다양한 ABI 이슈가 발생합니다. 아래는 주요 이슈와 구체적인 예입니다. ...

May 1, 2025 · Byung Kyu KIM

MCP 101

Model Context Pro MCP 101: Model Context Pro Model Context Pro 1. MCP란 무엇인가? MCP(Model Context Pro 주요 기능 동적 도구 탐색: 도구가 JSON 메타데이터로 자신의 기능을 제공하여 AI가 자동으로 이해하고 활용. 양방향 통신: WebSocket 또는 SSE(Server-Sent Events)를 통해 실시간 상호작용 지원. AI 중심 설계: AI의 의도(intent)를 기반으로 적합한 도구를 동적으로 호출. 사용 시기 MCP는 다음과 같은 경우에 적합합니다: AI가 외부 리소스(예: GitHub, Google Drive)에 접근하거나 작업을 수행할 때. 새로운 도구를 동적으로 추가하거나 복잡한 워크플로우를 자동화할 때. 예: AI가 “파일을 읽고 Slack에 공유"하거나 “GitHub에서 코드 검색"하는 작업. 2. MCP와 다른 API의 차이점 MCP는 REST API, SOAP와 비교해 AI 중심의 유연성을 제공합니다. 아래는 셀프 디스크립션(self-description)을 중심으로 주요 차이점입니다. ...

April 10, 2025 · Byung Kyu KIM

Playwright `page.get_by_role`

Playwright page.get_by_role 역할 기반 요소 탐색 Playwright page.get_by_role 가이드 1. page.get_by_role이란? Playwright의 page.get_by_role 메서드는 웹 페이지에서 요소를 역할(role)에 기반하여 탐색하는 강력한 도구입니다. 이는 접근성(Accessibility) 표준인 ARIA(Accessible Rich Internet Applications)를 활용하여 요소를 식별하며, HTML 태그 대신 사용자가 인식하는 기능적 역할을 기준으로 동작합니다. **역할(role)**이란 요소가 웹 페이지에서 수행하는 목적을 정의하는 속성으로, 예를 들어 버튼(button), 링크(link), 입력 필드(textbox) 등이 이에 해당합니다. get_by_role는 이러한 역할과 선택적으로 name 속성을 결합하여 요소를 정확히 찾아냅니다. 주요 기능 접근성 기반 탐색: ARIA 표준을 준수하여 요소를 식별. 직관적 사용: 개발자가 요소의 시각적 표현이나 태그 구조 대신 기능적 역할을 지정. 유연성: name, checked, disabled 등의 추가 옵션으로 세부 조정 가능. 이 메서드는 Playwright의 테스트 자동화 및 웹 스크래핑 작업에서 신뢰성과 유지보수성을 높이는 데 적합합니다. ...

March 20, 2025 · Byung Kyu KIM

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