기본 콘텐츠로 건너뛰기

추천 가젯

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

파이썬 zip 함수 완전 정복

Zip icon

파이썬 zip(), 병렬 데이터 처리의 강력한 도구 💡

zip()은 여러 개의 iterable(리스트 등)을 동시에 묶어서 처리할 수 있는 내장 함수입니다.

✅ 예제 1: 이름과 점수 매칭

두 리스트를 zip()으로 묶어 동시에 루프를 돌리는 예제입니다.

names = ["Alice", "Bob", "Charlie"]
scores = [90, 85, 92]

for name, score in zip(names, scores):
    print(f"{name} got {score} points")

✅ 예제 2: 길이가 다른 리스트 처리

리스트의 길이가 다르면 가장 짧은 리스트 기준으로 동작합니다.

# zip은 여러 리스트를 동시에 순회할 수 있게 해줍니다.
# 리스트 길이가 다르면 가장 짧은 리스트 기준으로 작동합니다.

a = [1, 2, 3]
b = ['a', 'b']

print(list(zip(a, b)))  # [(1, 'a'), (2, 'b')]

팁: zip()은 unpacking이나 dict 변환에도 자주 활용돼요! 실무에서도 리스트 데이터 병렬 처리에 매우 유용합니다.

함수 하나가 시간을 절약해줄 수 있어요. TechVerse Home에서 오늘도 한 줄 성장하세요! 🌱

댓글

가장 많이 본 글

Icons by Flaticon