dev 39

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

모던 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와의 주요 차이점타겟 중심 접근: ..

dev 2024.11.18

GNU C++로 정적 라이브러리 링크

GNU C++ 프로그램에서 정적 라이브러리를 링크하는 방법정적 라이브러리 링크 사용사용 시 고려 사항프로그램 크기 증가: 정적 라이브러리를 사용하면 실행 파일 크기가 크게 증가할 수 있슴라이브러리 업데이트: 정적 라이브러리를 사용하면 라이브러리 업데이트 시 프로그램을 다시 컴파일해야 필요사용 장점운영 체제 의존성 감소: 정적 라이브러리를 사용하면 프로그램 실행에 필요한 모든 라이브러리가 실행 파일에 포함되어 있어 운영 체제에 동일한 라이브러리가 설치되어 있지 않아도 프로그램을 실행보안 강화: 정적 라이브러리를 사용하면 공유 라이브러리 공격과 같은 보안 취약점에 대한 위험을 줄일 수 있음성능 향상: 정적 라이브러리를 사용하면 프로그램 실행 속도를 향상시킬 수 있음정적 라이브러리 링크링크 옵션-staticC..

dev 2024.11.17

Python Selenium 101

Python Selenium 이용한 웹 스크래핑 방법, 웹 자동화Selenium 가이드: 웹 자동화1. Selenium 이란?Selenium은 웹 브라우저 자동화를 위한 아래와 같은 용도웹 애플리케이션 테스트 자동화웹 스크래핑 및 데이터 추출반복적인 웹 작업 자동화크로스 브라우저 테스팅주요 기능브라우저 제어: 다양한 브라우저에서 웹 페이지를 자동으로 로드하고 조작할 수 있습니다.DOM 조작: 웹 페이지의 DOM 요소를 검색하고 조작할 수 있습니다.폼 자동화: 폼을 자동으로 작성하고 제출할 수 있습니다.스크린샷 캡처: 웹 페이지의 스크린샷을 캡처할 수 있습니다.헤드리스 모드: 브라우저 창을 띄우지 않고 백그라운드에서 작업을 수행할 수 있습니다.Selenium은 다양한 프로그래밍 언어를 지원하며, 웹 개발자..

dev 2024.11.13

Python PEP 8 스타일 가이드

1. PEP 8이란?PEP 8(Python Enhancement Proposal 8)은 Python 코드의 가독성과 일관성을 향상시키기 위한 스타일 가이드입니다. Python의 창시자인 Guido van Rossum이 작성했으며, Python 커뮤니티에서 널리 채택된 코딩 표준입니다.1.1 PEP 8의 목적코드의 가독성 향상일관된 코딩 스타일 유지협업 효율성 증대코드 유지보수 용이성 향상2. PEP 8 주요 규약2.1 코드 레이아웃들여쓰기4칸 공백 사용# 올바른 들여쓰기 (4칸 공백 사용)def long_function_name( var_one, var_two, var_three, var_four): print(var_one)# 잘못된 들여쓰기def long_function..

dev 2024.11.11