분류 전체보기 131

모던 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

Git 커밋 메시지 수정

Git 커밋 메시지 수정Git 커밋 메시지 수정 가이드Git을 사용하다 보면 커밋 메시지를 수정해야 할 경우가 자주 발생합니다.이 글에서는 가장 기본적인 방법부터 고급 기술까지 모든 커밋 메시지 수정 방법을 다루겠습니다.기본적인 커밋 메시지 수정 방법1. 가장 최근 커밋 메시지 수정가장 최근의 커밋 메시지를 수정하는 것은 매우 간단합니다.git commit --amend또는 에디터를 열지 않고 직접 메시지를 입력할 수우도 있습니다:git commit --amend -m "새로운 커밋 메시지"2. 커밋 내용과 메시지 함께 수정파일 변경사항을 포함하여 최근 커밋을 수정할 수 있습니다:# 파일 수정 후git add 수정된_파일git commit --amend3. 커밋 날짜 업데이트커밋의 날짜를 현재 시간으로 ..

devops 2024.11.16

네트워크 스캐닝 도구 비교: Nmap vs. Netcat

Nmap vs. nc (Network Mapper vs. Netcat) 네트워크 스캐닝 도구로서 비교Nmap vs. nc (Netcat): 네트워크 스캐닝 도구 비교Nmap (Network Mapper)네트워크 스캐닝 및 보안 평가 도구로, 대규모 네트워크에서 호스트, 서비스, 오픈 포트를 탐지하는 데 사용네트워크 호스트, 서비스, 오픈 포트 스캐닝, 운영 체제 감지, 버전 감지, 서비스 식별 등 다양한 네트워크 탐지 및 보안 평가 기능옵션설명예제-p특정 포트를 스캔합니다nmap -p 80,443 192.168.1.100-p-모든 포트를 스캔합니다nmap -p- 192.168.1.100-sV서비스 버전을 탐지합니다nmap -sV 192.168.1.100-O운영 체제를 탐지합니다nmap -O 192.168..

devops 2024.11.15

Docker 독립적인 네트워크 인터페이스 - Macvlan

Docker Macvlan 네트워크 소개, 활용 및 이슈1. Docker Macvlan 네트워크?Macvlan 네트워크는 컨테이너에 독립적인 네트워크 인터페이스를 제공하여 물리적 네트워크와 직접 상호작용 가능이는 각 컨테이너가 고유한 MAC 주소를 가지므로 네트워크 수준에서 완전히 독립된 호스트처럼 동작 가능호스트 머신과 같은 네트워크에 docker 컨테이너를 생성 목적Macvlan 네트워크 설정은 물리적 네트워크 환경에 따라 적절한 서브넷과 게이트웨이를 사용 필요 (e.g. DHCP 환경)Macvlan 구성네트워크 성능 향상: 호스트의 NAT를 거치지 않아 성능이 향상네트워크 격리: 각 컨테이너가 고유한 MAC 주소를 가져 네트워크 레벨에서 완전히 격리기존 네트워크와의 통합: 기존 물리적 네트워크 인프..

devops 2024.11.14

Python Selenium 101

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

dev 2024.11.13

리눅스 Init 시스템

리눅스의 Init 시스템: System V Init와 Systemd 비교 분석 및 docker 활용 개요리눅스 시스템에서 운영체제 부팅 시 초기화를 담당하는 프로그램을 init 시스템이라고 합니다.전통적인 System V Init와 현대적인 Systemd를 비교 분석하여, 시스템 초기화 방식의 발전과 실무적 영향을 살펴보겠습니다.System V Init와 Systemd의 역사적 배경System V Init1983년 Unix System V에서 처음 도입된 init 시스템으로, 당시 컴퓨팅 환경의 단순함에 맞춰 설계되었습니다. 이 시스템은 주로 서버와 메인프레임에서 사용되었으며, 런레벨 기반의 단순한 상태 전환을 제공했습니다.Systemd2010년대 초반, Linux 커뮤니티는 더 복잡한 현대 컴퓨팅 환경..

devops 2024.11.12

Homebrew, Formulae와 Cask의 차이점

Homebrew는 macOS와 Linux에서 소프트웨어를 쉽게 설치하고 관리할 수 있는 패키지 관리자.Homebrewhttps://brew.sh/{:target="_blank"}Homebrew는 macOS와 Linux에서 소프트웨어 패키지를 간편하게 설치하고 관리할 수 있는 패키지 관리자 Homebrew에는 두 가지 주요 설치 방법인 Formulae와 Cask가 있습니다. Formulae와 Cask의 차이점과 동일한 애플리케이션이 두 가지 방법으로 제공되는 예시를 설명Homebrew 설치macOS$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"$ brew --version #..

devops 2024.11.12

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

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 world2. 특정 문자 삭제:echo "Hello, World!" | tr -d 'o'# 출력: Hell, ..

devops 2024.11.10