기본 콘텐츠로 건너뛰기

추천 가젯

리액트 + 비트(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 바인딩 추가: ...

파이썬 with 문과 context manager 완전 이해하기

파이썬 with 문과 context manager 완전 이해하기 🛠️

with 문은 파일, 네트워크 연결, 락(lock) 같은 리소스를 다룰 때 자동으로 정리(Cleanup)를 해주는 아주 중요한 기능입니다. 내부적으로는 __enter__()__exit__() 메서드를 이용해 동작합니다.

Python with context manager icon

✅ 파일 열기 예제: 기본 with문 사용

파일 작업 시 자주 사용하는 with문의 기본 구조입니다.

# with문 기본 사용법
with open('example.txt', 'w') as file:
    file.write('Hello, World!')
# 파일이 자동으로 닫힘

✅ 직접 context manager 만들기

__enter____exit__를 구현하면, 자신만의 리소스 관리 클래스를 만들 수 있습니다.

# 사용자 정의 context manager
class MyContext:
    def __enter__(self):
        print('자원 열기')
        return self

    def __exit__(self, exc_type, exc_value, traceback):
        print('자원 닫기')

with MyContext() as mc:
    print('작업 수행 중...')

✅ 왜 with문이 필요한가?

try-finally를 직접 작성하는 것보다 훨씬 간결하고 안전합니다.

# try-finally 패턴과 비교
file = open('example.txt', 'w')
try:
    file.write('Hello, again!')
finally:
    file.close()
# with문을 쓰면 훨씬 깔끔하게 가능

with 문과 context manager를 이해하면 리소스 관리가 편해지고, 오류를 줄이며 더욱 안정적인 코드를 작성할 수 있어요!

프로는 자원을 낭비하지 않는다. with문을 쓰는 순간, 당신의 코드는 한층 더 안전해진다. 🚀

Icons by Flaticon

댓글

가장 많이 본 글

Icons by Flaticon