기본 콘텐츠로 건너뛰기

추천 가젯

리액트 + 비트(Vite)로 모바일 청첩장 만들기 — 2편

모바일 청첩장 시리즈 2편 · R2 갤러리 & Firebase 방명록 Cloudflare R2 · Functions Firebase Firestore 클라우드플레어 R2로 갤러리 저장하고, Firebase로 방명록 달기 안녕하세요, 병민입니다 🙌 1편에서 전체 흐름을 잡았고, 이번엔 사진 업로드/보관 과 방명록 을 연결합니다. 서버는 따로 없고 Cloudflare Pages 를 쓰고 있으니, Pages Functions (= 워커)로 R2에 사전서명 URL을 만들어주고, 프론트에서 그 URL로 바로 업로드하는 구조예요. 방명록은 Firebase DB로 간단·안전하게! 전체 그림 프론트(React) → /api/r2/upload 로 업로드용 URL 요청 → R2에 파일 PUT 프론트(React) → /api/r2/list 로 목록 요청 → 갤러리 렌더 프론트(React) → Firebase SDK로 방명록 작성/조회 1) R2 버킷 & Pages Functions 준비 Cloudflare 대시보드 > R2 > Create bucket (예: wedding-gallery ) 버킷 > Settings > CORS 에서 사이트 도메인 허용(예: https://*.pages.dev , 커스텀 도메인) Pages 프로젝트 > Settings > Functions 에서 R2 바인딩 추가: ...

파이썬 contextlib 모듈 완전 정복 🧰

Context management icon

파이썬 contextlib 모듈 완전 정복 🧰

contextlib 모듈은 컨텍스트 매니저를 보다 간결하고 효율적으로 작성할 수 있도록 도와주는 유용한 도구입니다. 이 모듈을 활용하면 자원 관리를 보다 명확하게 할 수 있습니다.

1. @contextmanager: 간단한 컨텍스트 매니저 작성

from contextlib import contextmanager

@contextmanager
def open_file(name, mode):
    f = open(name, mode)
    try:
        yield f
    finally:
        f.close()

with open_file('test.txt', 'w') as f:
    f.write('Hello, world!')

2. closing: 종료가 필요한 객체를 컨텍스트 매니저로 사용

from contextlib import closing
from urllib.request import urlopen

with closing(urlopen('http://example.com')) as page:
    for line in page:
        print(line)

3. suppress: 특정 예외 무시하기

from contextlib import suppress

with suppress(FileNotFoundError):
    os.remove('somefile.tmp')

4. redirect_stdout: 출력 리디렉션

from contextlib import redirect_stdout

with open('output.txt', 'w') as f:
    with redirect_stdout(f):
        print('This will go into the file')

요약

  • @contextmanager를 사용하여 간단하게 컨텍스트 매니저를 작성할 수 있습니다.
  • closing을 통해 종료가 필요한 객체를 with 문과 함께 사용할 수 있습니다.
  • suppress를 사용하면 특정 예외를 무시할 수 있습니다.
  • redirect_stdout를 활용하여 출력 결과를 파일 등으로 리디렉션할 수 있습니다.

댓글

가장 많이 본 글

Icons by Flaticon