dev 44

Python asyncio

asyncio는 async/await 구문을 사용하여 동시성 코드를 작성하는 라이브러리입니다. 특히 I/O 작업이 많은 애플리케이션에서 높은 성능을 발휘합니다.asyncio : asynchronous io 처리https://docs.python.org/ko/3/library/asyncio.htmlThreading 동시성 제어는 GIL (Global interpreter lock) 제약에 의해 느리고, 복잡도는 그대로 가지고 있음GIL은 Python 인터프리터가 한 번에 하나의 스레드만 실행할 수 있도록 제한하는 메커니즘멀티스레드를 사용해도 CPU 연산의 실제 병렬 처리가 어려움IO 병목에 의한 동시성을 관리하기 위한 도구로서 Coroutine을 통한 관리네트워크 요청, 파일 읽기/쓰기 등 I/O 작업에서..

dev 2025.05.18

Httplib (cpp-httplib) Sample

Introductionhttps://github.com/yhirose/cpp-httplibA C++11 single-file header-only cross platform HTTP/HTTPS library. This is a multi-threaded 'blocking' HTTP libraryheader-only 라이브러리로 Server와 Client Http 지원 SSL을 위한 OpenSSL 필요cpprestsdk비해 가볍고, 쉽게 사용 가능 Httplib package install (w/ vcpkg)https://github.com/microsoft/vcpkgvcpkg 통해서 패키지 설치 header-only로 바로 사용가능하나 OpenSSL 필요시 패키지 설치가 용이# --triplet=x64..

dev 2025.05.18

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) 등이 이에 해당합니다. ge..

dev 2025.05.18

Playwright 101

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

dev 2025.03.02

Git Repository 복제, Branch 동기화 관리

Git Repository 복제 및 Branch 관리 가이드Git Repository 복제Remote → Local 복제Git 저장소를 복제하는 방법에는 여러 가지가 있으며, 각각의 방식에 따라 다른 특징이 있습니다.--mirror 복제의 특징git clone --mirror: Remote repository의 모든 참조(refs)를 포함하여 Local에 저장기본 clone과 달리 작업 디렉토리 없이 저장소의 메타데이터 전체를 복제주로 저장소 백업이나 완전한 미러링에 사용# mirror 복제$ git clone --mirror https://github.com/cdecl/test$ tree -d.└── test.git ├── branches ├── hooks ├── info ├── ..

dev 2024.11.28

Golang GC 주요 내용

Golang GC (가비지 컬렉터) 주요 내용Golang GC : GOGC유효하지 않는 메모리(Dangling Object)를 주기적으로 해제하는 기법Java의 Parallel GC, G1GC 와 유사하나 구현 방식에서 차이가 있음Stop-the-World 시간을 최소화하도록 설계됨Tri-Color Algorithm 사용동시성을 고려한 효율적인 메모리 관리 알고리즘CMS (Concurrent Mark and Sweep) 방식 운영Java 와 같은 Generation GC 기법이나 Compaction은 지원하지 않음대신 더 효율적인 메모리 할당 전략을 사용Compaction (압축, 재배치) 가 없음재배치를 하지 않는 대신 TCMalloc를 통한 메모리 할당 관리메모리 단편화를 최소화하고 빠른 할당을 지원..

dev 2024.11.25

C++20 Modules - gnu c++ test

C++ Modules Test Example (g++)C++20 ModulesC++20에 추가된 모듈 Modules 기능은 기존의 헤더 파일 #include로 인한 컴파일 시간 증가 문제를 해결하고, 필요한 로직(함수, 심볼)만을 내보내는(export) 방식을 통해 타 언어의 모듈 단위처럼 효율적인 라이브러리 관리를 지원합니다.Modules의 주요 장점컴파일 시간 단축: 각 모듈은 한 번만 컴파일되며, 그 결과가 캐시됨심볼 격리: 모듈 내부의 심볼은 명시적으로 export하지 않는 한 외부에서 접근 불가순환 의존성 방지: 헤더 파일과 달리 명확한 의존성 그래프 형성매크로 독립성: 모듈은 매크로의 영향을 받지 않아 더 안정적인 코드 작성 가능일종의 PCH(Precompiled Header)의 기능을 포함한..

dev 2024.11.24

Python asyncio - 비동기, 동기성

asyncio는 async/await 구문을 사용하여 동시성 코드를 작성하는 라이브러리입니다. 특히 I/O 작업이 많은 애플리케이션에서 높은 성능을 발휘합니다.asyncio : asynchronous io 처리https://docs.python.org/ko/3/library/asyncio.htmlThreading 동시성 제어는 GIL (Global interpreter lock) 제약에 의해 느리고, 복잡도는 그대로 가지고 있음GIL은 Python 인터프리터가 한 번에 하나의 스레드만 실행할 수 있도록 제한하는 메커니즘멀티스레드를 사용해도 CPU 연산의 실제 병렬 처리가 어려움IO 병목에 의한 동시성을 관리하기 위한 도구로서 Coroutine을 통한 관리네트워크 요청, 파일 읽기/쓰기 등 I/O 작업에서..

dev 2024.11.23

암호화 지식 (개발자를 위한 가이드)

현대 소프트웨어 개발에서 암호화는 필수적인 보안 요소입니다. 이 글에서는 개발자가 알아야 할 핵심 암호화 개념과 실제 구현 시 고려사항을 다룹니다.암호화 알고리즘 선택 시 고려사항암호화 구현 시 다음 요소들을 신중히 고려해야 합니다:대칭형 vs 비대칭형 암호화알고리즘 종류와 보안 강도운영 모드의 특성과 용도패딩 방식키 관리 전략성능과 보안의 균형대칭형 vs 비대칭형 암호화대칭형 암호화정의: 동일한 키로 암호화와 복호화를 수행장점: 빠른 처리 속도적은 컴퓨팅 리소스 요구대용량 데이터 처리에 적합단점:키 공유의 어려움많은 통신 상대와의 키 관리 복잡성비대칭형 암호화정의: 공개키와 개인키를 사용하는 방식장점:안전한 키 교환디지털 서명 가능부인 방지 기능단점:느린 처리 속도높은 컴퓨팅 리소스 요구주요 대칭형 블..

dev 2024.11.19