전체 글 276

파이썬에서 언더스코어 두 개(__)와 Name Mangling(맹글링)의 차이

파이썬 코드를 보다 보면어떤 파일이나 변수 이름에 언더스코어(_)가 두 개 붙은 것을 볼 수 있습니다.이 글에서는파일명/변수명에 언더스코어를 두 개 붙이는 이유Name Mangling(맹글링)이란 무엇인가맹글링은 왜 필요한가를 차근차근 정리해봅니다. 언더스코어 두 개(__) 사용 – 내부 전용 표시파이썬에서는 파일이나 변수 이름 앞에 **언더스코어 두 개(__)**를 붙이면,"이건 내부 전용이니까 외부에서 직접 쓰지 마세요" 라는 의미를 전달합니다.❗ 하지만 주의할 점:Python은 이걸 강제하지 않습니다.단순히 **"개발자끼리의 약속(convention)"**일 뿐입니다. 예시:project/├── __internal_module.py├── public_module.py __internal_module..

파이썬 pathlib에서 디렉토리 생성할 때 알아야 할 두 가지 옵션

파이썬 프로젝트를 구성할 때, 필요한 폴더(디렉토리)를 자동으로 생성해주는 코드를 자주 작성합니다.특히 pathlib 모듈을 사용할 때는 mkdir() 메서드의 두 가지 옵션을 제대로 이해하는 것이 중요합니다.이번 글에서는 그 옵션들을 간단하게 정리해볼게요. 기본 코드 예시for dir_path in [DATA_DIR, RAW_DATA_DIR, PROCESSED_DATA_DIR, MODEL_OUTPUT_DIR]: dir_path.mkdir(parents=True, exist_ok=True) 두 가지 중요한 옵션 왜 이 옵션이 필요할까?parents=True가 없으면 상위 폴더가 없을 때 오류가 발생할 수 있어요.exist_ok=True가 없으면 이미 폴더가 존재할 경우 오류가 나버립니다.→ 이 ..

파이썬에서 변수명을 대문자로 쓰는 이유는?

파이썬 코드에서 가끔 PROJECT_ROOT, **DATA_DIR**처럼모두 대문자로 작성된 변수명을 볼 때가 있습니다."왜 소문자가 아니라 대문자로 썼을까?" 궁금해본 적이 있다면,이 글을 통해 간단히 정리해볼게요! 대문자 변수는 "상수"를 의미한다파이썬에서는 변하지 않는 값(상수, Constant) 을대문자+언더스코어 형식으로 작성하는 것이 관례입니다. 예를 들어:PROJECT_ROOT = Path(__file__).resolve().parentDATA_DIR = PROJECT_ROOT / "data" 여기서 PROJECT_ROOT, DATA_DIR는코드 실행 중에 변하지 않을 값을 저장하는 용도입니다. 왜 대문자로 작성할까? 공식 권장사항 (PEP8)파이썬 스타일 가이드(PEP8)에서도 이렇게 ..

os.path vs pathlib.Path – 파이썬 경로 처리 방식 차이 이해하기

파이썬에서 파일이나 디렉토리 경로를 다룰 때 os.path와 pathlib.Path를 모두 볼 수 있습니다.둘은 비슷해 보이지만, 실제로는 스타일과 철학이 다릅니다.이번 글에서는 이 둘의 차이를 간단하고 직관적으로 정리해보겠습니다. os.path란?os.path는 경로 관련 기능을 제공하는 함수 기반 모듈입니다.경로 연결, 절대 경로 변환, 디렉토리 추출 등을 함수로 처리합니다.전통적인 방식으로, 파이썬 초창기부터 존재해왔습니다.import osPROJECT_ROOT = os.path.dirname(os.path.abspath(__file__)) pathlib.Path란?pathlib.Path는 객체지향 방식으로 경로를 다루는 모듈입니다.파이썬 3.4부터 도입된 비교적 현대적인 스타일입니다.경로를 문자열..

GitLab Docker 설정에서 $GITLAB_HOME은 호스트일까? 컨테이너일까?

Docker로 GitLab을 설치할 때 docker-compose.yml 파일 안에서 가장 헷갈리는 부분 중 하나는 바로 volumes 설정입니다.volumes: - '$GITLAB_HOME/config:/etc/gitlab' 이 구문을 보면 "GitLab을 호스트로 보는 건가?", "GitLab이 컨테이너인데 왜 이렇게 연결하지?" 같은 의문이 생길 수 있어요. 이 글에서는 그 구조를 직관적으로 이해할 수 있도록 정리해볼게요. 볼륨(volume)이란?Docker에서 볼륨은 호스트와 컨테이너 사이의 파일 공유 공간입니다.컨테이너가 생성되고 삭제돼도, 데이터는 **호스트의 볼륨에 남기 때문에 영속성(persistence)**을 유지할 수 있어요. $GITLAB_HOME/config:/etc/gitlab ..

GitLab Docker에서 포트 설정이 중요한 이유 – 포트 매핑 완벽 이해하기

GitLab을 Docker Compose로 실행할 때 docker-compose.yml 안에서 반드시 설정해야 하는 부분 중 하나가 바로 ports:입니다. 단순히 컨테이너를 실행한다고 끝나는 것이 아니라, 컨테이너 내부의 서비스를 외부에서 접근 가능하도록 "열어줘야" 하거든요. 포트 매핑(port mapping)이란?컨테이너는 기본적으로 호스트(서버 또는 내 PC)와 분리된 가상 네트워크 안에서 실행됩니다.이 말은 곧, 컨테이너 안에서 GitLab이 80, 443, 22 포트를 사용하고 있어도외부에서는 그 포트에 접근할 수 없다는 뜻이에요.그래서 필요한 게 바로 **포트 매핑(port mapping)**입니다. 포트 매핑 예시ports: - "80:80" - "443:443" - "22:22" ..

환경변수는 파라미터처럼 동작한다 — GITLAB_OMNIBUS_CONFIG 이해하기

Docker로 GitLab을 실행할 때 자주 보게 되는 설정 중 하나가 바로 GITLAB_OMNIBUS_CONFIG입니다.이 환경변수는 마치 함수에 파라미터를 전달하듯,컨테이너 내부 GitLab 인스턴스에 설정 값을 외부에서 넘겨주는 역할을 합니다. 환경변수는 파라미터처럼 동작한다Docker에서 컨테이너를 실행할 때 environment: 항목을 통해 환경변수를 지정할 수 있습니다.이 값들은 컨테이너 내부의 앱이나 서비스가 실행될 때 설정 값 또는 조건처럼 사용됩니다.environment: GITLAB_OMNIBUS_CONFIG: | external_url 'https://gitlab.example.com' → 이 구조는 마치 아래와 같이 함수에 인자를 전달하는 것과 유사합니다:def start_..

Docker Compose에서 container_name과 hostname의 차이점은?

Docker Compose를 사용하다 보면 container_name과 hostname이라는 두 가지 설정을 자주 마주치게 됩니다.이 둘은 얼핏 비슷해 보이지만, 용도와 적용 범위가 완전히 다른 설정입니다. 이 글에서는 두 설정의 차이를 간단히 정리해보겠습니다. container_name이란?container_name은 Docker 자체가 해당 컨테이너를 식별하기 위한 이름입니다.CLI 명령어나 Docker 시스템 내부에서 사용됩니다.container_name: gitlab 예시:docker exec -it gitlab bash # 컨테이너 쉘 접속docker logs gitlab # 로그 보기 👉 이 이름은 Docker 명령어에서 컨테이너를 다룰 때 사용하는 식별자입니다..

동적 배열에서 삭제 연산, 어떻게 동작할까?

리스트(동적 배열)에서 어떤 데이터를 삭제하고 싶을 때, 단순히 "지워!"만 하면 될 것 같지만,실제로는 그 뒤에 생각보다 많은 작업이 일어나고 있습니다.이번 글에서는 삭제 연산이 어떻게 동작하는지,그리고 삭제 위치에 따라 성능이 얼마나 달라지는지를 간단하게 살펴볼게요. 삭제 연산은 어떻게 작동할까?예를 들어 리스트에 [2, 3, 5, 7, 11]이 있다고 해보죠.여기서 인덱스 1에 있는 3을 삭제하고 싶다면?# 1단계: 3을 지우는 게 아니라, 그 뒤에 있는 값을 앞으로 당긴다!list[1] ← list[2] # 5list[2] ← list[3] # 7list[3] ← list[4] # 11# 2단계: 리스트의 길이를 1 줄인다! 결과적으로 리스트는 이렇게 바뀝니다 → [2, 5, 7, 11] 삭..

Data Structure 2025.04.22

도메인과 로컬 IP 주소의 관계

도메인(Domain)이란?도메인은 인터넷에서 어떤 컴퓨터(서버)를 사람이 읽기 쉬운 주소로 표현한 거야. 예를 들어:https://www.google.com ← 도메인사실은 → 142.250.206.78 같은 IP 주소로 연결돼📌 왜 도메인을 쓰는가?사람은 숫자(IP)보다 **단어(도메인)**를 기억하기 쉬움jupyter.mlops.io, gitlab.example.com 같은 주소를 통해 쉽게 접속 IP 주소란?IP 주소는 컴퓨터나 서버가 서로 통신할 때 사용하는 고유 주소야.인터넷 상의 “주소지” 같은 개념이야.예: 127.0.0.1 = loopback 주소 (자기 자신)192.168.0.1, 10.0.0.1 = 사설 IP142.250.206.78 = 공인 IP (예: 구글 서버) 로컬 IP 주소란..