기본 콘텐츠로 건너뛰기

추천 가젯

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

파이썬 functools 모듈 완전 정복 🧰

Function tools icon

파이썬 functools 모듈 완전 정복 🧰

functools 모듈은 함수형 프로그래밍을 지원하는 유용한 도구들을 제공합니다. 이 모듈을 활용하면 코드의 재사용성과 효율성을 높일 수 있습니다.

1. lru_cache: 결과 캐싱으로 성능 향상

from functools import lru_cache

@lru_cache(maxsize=None)
def fibonacci(n):
    if n < 2:
        return n
    return fibonacci(n-1) + fibonacci(n-2)

print(fibonacci(30))  # 빠른 결과 출력

2. partial: 함수의 일부 인자 고정

from functools import partial

def multiply(x, y):
    return x * y

double = partial(multiply, 2)
print(double(5))  # 10

3. cmp_to_key: 사용자 정의 비교 함수로 정렬

from functools import cmp_to_key

def compare(a, b):
    return b - a  # 내림차순

numbers = [5, 2, 9, 1]
sorted_numbers = sorted(numbers, key=cmp_to_key(compare))
print(sorted_numbers)  # [9, 5, 2, 1]

4. wraps: 데코레이터 작성 시 메타데이터 유지

from functools import wraps

def my_decorator(func):
    @wraps(func)
    def wrapper(*args, **kwargs):
        print("Before function call")
        return func(*args, **kwargs)
    return wrapper

@my_decorator
def greet(name):
    """Greets a person by name."""
    print(f"Hello, {name}")

print(greet.__name__)  # greet
print(greet.__doc__)   # Greets a person by name.

요약

  • lru_cache를 사용하여 재귀 함수의 성능을 향상시킬 수 있습니다.
  • partial을 통해 함수의 일부 인자를 고정하여 새로운 함수를 생성할 수 있습니다.
  • cmp_to_key를 활용하여 사용자 정의 비교 함수로 정렬이 가능합니다.
  • wraps를 사용하면 데코레이터 적용 시 원래 함수의 메타데이터를 유지할 수 있습니다.

댓글

가장 많이 본 글

Icons by Flaticon