CGI

CGI(Common Gateway Interface) Python의 CGI(Common Gateway Interface)는 웹 서버와 외부 프로그램 간의 통신을 위한 표준 인터페이스. Python에서 CGI를 사용하면 동적 웹 콘텐츠를 생성할 수 있다. https://www.geeksforgeeks.org/what-is-cgi-in-python/ 주요 특징 웹 서버와 Python 프로그램 간의 통신 방식을 정의합니다. 클라이언트의 요청을 처리하고 동적으로 HTML 페이지를 생성합니다. 환경 변수와 표준 입출력을 통해 데이터를 주고받습니다. 프로그램의 구조 셔뱅 라인: #!/usr/bin/python3 필요한 모듈 임포트: import cgi CGI 필드 스토리지 객체 생성: form = cgi.FieldStorage() HTTP 헤더 출력: print(‘Content-type: text/html\n’) HTML 콘텐츠 생성 및 출력 장점 간단하고 이해하기 쉬운 구조 다양한 프로그래밍 언어 지원 웹 서버와 독립적으로 동작 단점 요청마다 새로운 프로세스를 생성하여 리소스 사용량이 많음 대규모 애플리케이션에서는 성능 저하 발생 가능 예시 코드 1 2 3 4 5 6 7 8 #!/usr/bin/python3 import cgi form = cgi.FieldStorage() name = form.getvalue('name', 'World') print('Content-type: text/html\n') print(f'<html><body><h1>Hello, {name}!</h1></body></html>') 이 코드는 사용자의 이름을 입력받아 인사말을 출력하는 간단한 CGI 프로그램. ...

November 28, 2024 · 1 min · Me

WSGI

WSGI(Web Server Gateway Interface) 파이썬 웹 애플리케이션과 웹 서버 간의 표준 인터페이스를 정의하는 규약이다. WSGI는 웹 서버와 웹 애플리케이션 사이에서 중개자 역할을 하며, 파이썬 웹 개발에서 중요한 역할을 담당한다. 웹 서버와 파이썬 애플리케이션의 관계를 생각해보면, 웹 서버(예: Apache, Nginx)는 HTTP 요청을 받아서 처리해야 하고, 파이썬 애플리케이션은 비즈니스 로직을 실행해야 한다. 이 둘을 연결하는 중간자 역할로 WSGI가 등장한다. WSGI는 2003년 PEP 333에서 처음 제안되었고, 현재는 PEP 3333에서 파이썬 3를 위해 업데이트되었다. WSGI는 웹 서버와 파이썬 웹 애플리케이션 사이의 표준 인터페이스를 정의한다. 표준화된 인터페이스가 있기 때문에, 어떤 WSGI 서버든 어떤 WSGI 애플리케이션이든 서로 호환되어 동작할 수 있다. ...

November 28, 2024 · 2 min · Me

setup.cfg

setup.cfg setup.cfg는 파이썬 프로젝트의 설정을 관리하는 구성 파일이다. 이 파일은 INI 형식으로 작성되며, setuptools가 프로젝트를 빌드하고 배포할 때 참조하는 중요한 설정들을 포함한다. 주요 특징 선언적 구성: setup.py에서 프로그래밍 방식으로 정의하던 설정을 보다 간단하고 명확한 형식으로 선언할 수 있습니다. 정적 메타데이터: 프로젝트의 이름, 버전, 설명 등 변경이 잦지 않은 정보를 저장하는 데 적합합니다. 도구별 설정: 다양한 개발 도구들의 설정을 한 곳에서 관리할 수 있습니다. 주요 섹션 [metadata]: 프로젝트의 기본 정보를 정의한다. 여기에는 프로젝트 이름, 버전, 작성자 정보, 라이선스 등이 포함된다. 이 정보는 PyPI에 패키지를 등록할 때 사용되며, pip로 패키지를 설치할 때 표시되는 정보의 기반이 된다. ...

November 27, 2024 · 2 min · Me

Poetry Configuration

Poetry Configuration config 명령어나 config.toml 파일을 통해 설정할 수 있다. 설정 파일은 운영 체제에 따라 다른 위치에 저장된다. 설정 관리 전역 설정: 기본적으로 Poetry는 전역 설정을 사용. 전역 설정 파일은 일반적으로 ~/.config/pypoetry/config.toml 경로에 위치. 로컬 설정: 특정 프로젝트에만 적용되는 설정을 위해 --local 옵션을 사용할 수 있다. 이 경우 설정은 프로젝트 디렉토리의 poetry.toml 파일에 저장. 설정 확인 및 수정 현재 설정 목록 보기: poetry config --list 특정 설정 값 보기: poetry config <설정명> 설정 추가/수정: poetry config <설정명> <값> 설정 제거: poetry config <설정명> --unset 환경 변수 사용 환경 변수를 통해 설정을 관리할 수 있다. 환경 변수는 POETRY_ 접두사를 사용하며, 설정 이름은 대문자로 작성하고 점(.)이나 대시(-)는 밑줄(_)로 대체한다. 가상 환경 경로를 지정하려면, ...

November 27, 2024 · 2 min · Me

Poetry Libraries

Poetry Libraries Poetry는 파이썬 라이브러리를 효율적으로 관리하고 배포할 수 있도록 지원하는 도구로 라이브러리를 설치 가능하게 만들기 위해 다음과 같은 절차를 따를 수 있다. 버전 관리 모든 프로젝트에 PEP 440을 준수하는 버전 번호를 요구한다. 버전 번호의 일관성을 유지하고, 패키지 관리 시스템과의 호환성을 보장한다. 1.0.0-hotfix과 같은 형식은 PEP 440과 호환되지 않는다. 1.0.0-post1 또는 1.0.0.post1과 같은 형식을 사용할 수 있다. PEP 440 파이썬 패키지의 버전 식별과 의존성 명시를 의한 표준을 정의한 문서. 파이썬 패키지의 버전 번호를 일관되게 관리하고, 패키지 간의 의존성을 명확하게 지정하여 호환성을 보장하는 데 목적이 있다. 버전 식별자 형식 1 [N!]N(.N)*[{a|b|rc}N][.postN][.devN] 각 요소의 설명 - N!: 에포크(epoch) 번호로, 버전 체계의 중대한 변경을 나타냄. - N(.N)*: 릴리스 번호로, 주 버전, 부 버전, 패치 버전 등을 포함. - {a|b|rc}N: 사전 릴리스(pre-release)로, 알파(a), 베타(b), 릴리스 후보(rc) 등을 나타낸다. - .postN: 포스트 릴리스(post-release)로, 버전 이후의 수정 사항을 나타낸다. - .devN: 개발 릴리스(development release)로, 개발 중인 버전을 나타낸다. ...

November 27, 2024 · 2 min · Me

Poetry Managing dependencies

Poetry Managing Dependencies Poetry는 의존성을 효율적으로 관리하기 위해 다양한 기능을 제공한다. 의존성 그룹을 활용하기 위해 개발, 테스트, 문서화 등 목적에 따라 의존성을 체계적으로 분류할 수 있다. 의존성 그룹 설정 의존성 그룹을 정의하려면 pyproject.toml 파일에 다음과 같이 섹션을 추가한다. <group_name>은 그룹의 이름을 의미하며, 예를 들어 테스트 관련 의존성은 test 그룹으로 정의할 수 있다. 1 2 3 4 5 6 7 [tool.poetry.group.<group_name>.dependencies] 패키지명 = "버전" # example [tool.poetry.group.test.dependencies] pytest = "^6.0.0" pytest-mock = "*" 의존성 그룹 설치 poetry install 명령어를 실행하면 모든 비선택적 그룹의 의존성이 설치된다. ...

November 27, 2024 · 1 min · Me

Poetry Usage

Poetry Usage 프로젝트 설정 poetry new 프로젝트명으로 새 프로젝트 생성 pyproject.toml 파일이 프로젝트와 의존성 관리의 중심 Python 버전 지정은 지원하려는 버전을 명시하는 것 의존성 지정 pyproject.toml의 [tool.poetry.dependencies] 섹션에 의존성 명시 poetry add 패키지명으로 의존성 추가 가능 가상 환경 사용 Poetry는 기본적으로 가상 환경을 생성하고 관리 poetry run으로 가상 환경 내에서 명령 실행 poetry shell로 가상 환경 활성화 버전 제약 조건 예: ^2.1은 2.1.0 이상 3.0.0 미만 버전 허용 의존성 설치 poetry install로 의존성 설치 poetry.lock 파일이 없으면 생성, 있으면 해당 버전으로 설치 poetry.lock 파일은 버전 관리에 포함하는 것이 좋음 의존성 업데이트 poetry update로 최신 버전으로 업데이트 운영 모드 기본 패키지 모드와 비패키지 모드 존재 비패키지 모드는 의존성 관리만을 위한 모드 기존 프로젝트 초기화 poetry init으로 기존 프로젝트에 Poetry 설정 추가 가능 참고 및 출처 Poetry Basic usage | Documentation | Poetry - Python dependency management and packaging made easy ...

November 27, 2024 · 1 min · Me

The pyproject.toml file

The pyproject.toml File Python 프로젝트의 구성 정보와 빌드 시스템 요구 사항을 정의하는 표준화된 구성 파일. TOML 형식을 사용하며 프로젝트의 메타데이터와 의존성을 중앙 집중적으로 관리한다. 주요 장점: 특정 빌드 시스템에 종속되지 않는 표준화된 설정 파일. TOML 형식을 사용하여 가독성이 높고 관리가 용이하다. 프로젝트의 모든 설정을 한 곳에서 관리할 수 있어 편리하다. pyproject.toml은 PEP 518, PEP 621 등의 파이썬 표준 제안에 의해 정의되었으며, 현대적인 파이썬 프로젝트 관리에 필수적인 요소로 자리잡고 있다. 역할 프로젝트 메타데이터 관리: - 프로젝트 이름, 버전, 설명, 저자 등의 기본 정보를 포함한다. - 라이선스, 키워드, 프로젝트 URL 등의 추가 정보도 저장할 수 있다. ...

November 27, 2024 · 3 min · Me

Rye

Rye Rye는 파이썬 프로젝트와 패키지 관리를 위한 통합 솔루션으로, 2022년 11월에 Pynecone이라는 이름으로 처음 공개되었으나, 2023년 6월에 Rye로 이름이 변경되었다. Rye는 파이썬 개발자들이 겪는 다양한 환경 설정 및 관리 문제를 해결하기 위해 설계되었다. 주요 특징 통합 환경 관리: Rye는 파이썬 설치, 프로젝트 초기화, 의존성 관리, 가상 환경 설정 등을 단일 도구로 통합한다. pyproject.toml 기반: 프로젝트 구성을 위해 현대적인 pyproject.toml 파일을 사용한다. 빠른 성능: Rust로 작성되어 기존 도구들보다 훨씬 빠른 성능을 제공한다. 다목적성: 복잡한 프로젝트, 모노레포, 글로벌 도구 설치 등 다양한 시나리오를 지원한다. 자동화된 가상 환경: 프로젝트별로 독립적인 가상 환경을 자동으로 생성하고 관리한다. 설치 및 사용 Rye는 다양한 운영 체제에서 쉽게 설치할 수 있다: ...

November 27, 2024 · 2 min · Me

PEP 20–The Zen of Python

PEP 20–The Zen of Python 파이썬의 철학과 디자인 원칙을 담고 있다. 파이썬 인터프리터에서 import this를 실행하면 볼 수 있다. 1. Beautiful is Better than Ugly. (아름다움이 추한 것보다 낫다) 코드는 보기 좋고 이해하기 쉽게 작성해야 한다. 1 2 3 4 5 6 7 8 # 아름다운 코드 names = ['Alice', 'Bob', 'Charlie'] for name in names: print(f"Hello, {name}!") # 추한 코드 x=['Alice','Bob','Charlie'] for i in range(len(x)):print("Hello, "+x[i]+"!") 2. Explicit is Better than Implicit. (명시적이 암시적인 것보다 낫다) 코드의 의도를 명확히 표현해야 한다. ...

November 26, 2024 · 6 min · Me