dev 28

Python uv 프로젝트 구조

uv를 활용한 현대적인 Python 프로젝트 구조, src 레이아웃과 Flat 레이아웃의 차이점, 그리고 uvx를 통한 원격 도구 실행 방법을 알아봅니다.Python 프로젝트 구조의 중요성잘 구성된 프로젝트 디렉토리 구조는 코드의 유지보수성, 확장성, 그리고 협업 효율성을 크게 향상시킵니다. Python에서는 전통적으로 두 가지 주요 레이아웃이 사용됩니다: Flat 레이아웃과 src 레이아웃. 현대적인 Python 프로젝트에서는 src 레이아웃이 많은 이점을 제공하여 표준으로 자리 잡고 있습니다.일반적인 Python 프로젝트 디렉토리 구조현대적인 Python 프로젝트는 일반적으로 다음과 같은 구조를 가집니다.my-project/├── .venv/├── src/│ └── my_package/│ ..

dev 2025.07.21

정규식의 멀티라인 expressions 활용

멀티라인 표현식의 활용법, Dotall (Single Line) 모드, Multi Line 모드, Non-Dotall 모드의 차이점, 여러 줄을 처리하는 방법정규식의 멀티라인 표현식이란?정규식(Regular Expression, Regex)은 텍스트 패턴을 검색하거나 조작할 때 강력한 도구로 사용됩니다. 특히 멀티라인 표현식은 여러 줄에 걸친 텍스트를 처리할 때 유용하며, 줄바꿈(\n)을 포함한 패턴 매칭을 가능하게 합니다. 이번 포스트에서는 멀티라인 표현식의 활용법, Dotall (Single Line) 모드, Multi Line 모드, Non-Dotall 모드의 차이점, 여러 줄을 처리하는 방법, 그리고 특정 패턴(예: start로 시작하고 end로 끝나는 패턴) 매칭 방법 등을 다룹니다. 또한, /..

dev 2025.07.02

MCP-SuperAssistant 사용법

Model Context Protocol(MCP)이란?Model Context Protocol(MCP)은 AI 모델과 외부 데이터 소스 및 도구 간의 안전하고 표준화된 상호작용을 가능하게 하는 오픈 표준 프로토콜입니다. MCP는 AI가 로컬 파일, 데이터베이스, API, 또는 사용자 정의 스크립트와 동적으로 연결되도록 하여 복잡한 작업을 수행하거나 워크플로우를 자동화할 수 있도록 지원합니다. 이를 통해 AI는 단순한 텍스트 생성을 넘어 실제 작업 환경과 통합된 강력한 기능을 제공합니다.MCP-SuperAssistant란?MCP-SuperAssistant는 MCP를 활용해 AI 플랫폼(ChatGPT, Perplexity, Google Gemini, Grok 등)과 외부 데이터 및 도구를 연결하는 크롬 확장..

dev 2025.06.27

Gemini CLI의 MCP(Model Context Protocol) 지원 현황과 활용법

Gemini CLI의 MCP(Model Context Protocol) 지원 현황Model Context Protocol(MCP)이란?Model Context Protocol(MCP)은 AI 모델과 외부 데이터 소스 및 도구 간의 안전하고 표준화된 상호작용을 가능하게 하는 오픈 표준 프로토콜입니다. MCP는 AI가 로컬 파일, 데이터베이스, API, 또는 사용자 정의 스크립트와 같은 외부 시스템과 동적으로 연결되도록 하여, 복잡한 작업을 수행하거나 워크플로우를 자동화할 수 있도록 지원합니다. 이를 통해 AI는 단순한 텍스트 생성을 넘어 실제 작업 환경과 통합된 강력한 기능을 제공합니다.Gemini CLI와 MCP 지원 개요Gemini CLI는 Google의 생성형 AI 모델인 Gemini를 터미널에서 활..

dev 2025.06.27

Gemini CLI 툴 소개

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

dev 2025.06.26

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

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

dev 2025.06.25

GitHub Actions YAML 사용법

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

dev 2025.05.25

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은 장황하고 성능 오버헤드 ..

dev 2025.05.23

Git 시맨틱 커밋 메시지

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

dev 2025.05.20

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

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

dev 2025.05.20