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

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