기본 콘텐츠로 건너뛰기

추천 가젯

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

파이썬 데코레이터(Decorator) 완전 정리

파이썬 로고 아이콘

파이썬 데코레이터(Decorator) 완전 정리 🔄

데코레이터는 함수를 감싸 추가 기능을 적용하는 강력한 파이썬 기능으로, 코드 재사용성과 가독성을 높여줍니다.

1. 기본 함수 데코레이터

def my_decorator(func):
    def wrapper(*args, **kwargs):
        print("함수 실행 전 작업")
        result = func(*args, **kwargs)
        print("함수 실행 후 작업")
        return result
    return wrapper

@my_decorator
def say_hello(name):
    print(f"안녕하세요, {name}님")

say_hello("철수")

2. 인자 있는 데코레이터

def repeat(n):
    def decorator(func):
        def wrapper(*args, **kwargs):
            for _ in range(n):
                func(*args, **kwargs)
        return wrapper
    return decorator

@repeat(3)
def greet():
    print("안녕하세요")

greet()  # "안녕하세요"가 3번 출력됩니다.

3. 클래스 데코레이터

def add_repr(cls):
    cls.__repr__ = lambda self: f"<{cls.__name__} {self.__dict__}>"
    return cls

@add_repr
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

p = Person("홍길동", 30)
print(p)  # <Person {'name': '홍길동', 'age': 30}>

요약

  • 함수를 감싸 기능을 확장할 수 있습니다.
  • @ 문법으로 적용하며, 수정 없이 기능 추가가 가능합니다.
  • 함수/클래스 데코레이터로 다양한 활용이 가능합니다.

댓글

가장 많이 본 글

Icons by Flaticon