dev 44

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

정규식 탐색 기법: 전방탐색과 후방탐색정규식 탐색 기법 요약정규식(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

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

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

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

Python uv 101

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

dev 2025.05.20

MCP 101

Model Context Protocol 이해와 활용 MCP 101: Model Context Protocol 이해와 활용Model Context Protocol(MCP)은 AI 에이전트와 외부 도구를 연결하는 JSON-RPC 기반 프로토콜입니다. 이 글에서는 MCP의 개념, 사용 시기, 다른 API와의 차이점, 동적 디스크립션 확인 및 디버깅 방법(SSE, stdout, Inspector 포함), 그리고 mcp-filesystem을 활용한 파일 핸들링 예제를 다룹니다. 또한 Claude와 VSCode Cline을 사용한 테스트 방법과 프롬프트 예제를 제공합니다.1. MCP란 무엇인가?MCP(Model Context Protocol)는 AI 모델(예: LLM)이 파일 시스템, SaaS 앱, 데이터베이스..

dev 2025.05.20

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

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

dev 2025.05.19

GCC 설치 (`macOS`, `Windows`)

macOS 및 Windows 에 GCC 설치하기 MAC OSbrew : macOS 용 패키지 관리자 https://brew.sh/index_kobrew 사용 gcc 설치 Command line tools 설치xcode 없이 개발툴 설치 $ xcode-select --installclang 이 설치되고 gcc로 심볼링 링크 걸려 있음 $ gcc -vConfigured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/4.2.1Apple clang version 12.0.5 (clang-1205.0..

dev 2025.05.19