기본 콘텐츠로 건너뛰기

추천 가젯

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

파이썬 itertools로 반복문을 더 강력하게: cycle, chain, combinations 활용법

파이썬 itertools로 반복문을 더 강력하게: cycle, chain, combinations 활용법 🔁

itertools는 반복을 더 효율적으로 처리할 수 있도록 도와주는 파이썬 표준 라이브러리입니다. 그 중에서도 자주 쓰이는 cycle(), chain(), combinations() 함수에 대해 실전 예제로 알아봅니다.

itertools icon

✅ cycle(): 무한 반복 순환

리스트의 요소를 무한히 순환할 수 있습니다. 예: 로테이션 기능

from itertools import cycle

colors = ['red', 'green', 'blue']
cycler = cycle(colors)

for _ in range(6):
    print(next(cycler))

✅ chain(): 여러 리스트 연결

여러 개의 리스트를 하나로 연결하여 반복할 수 있습니다.

from itertools import chain

a = [1, 2]
b = [3, 4]
c = [5]

combined = list(chain(a, b, c))
print(combined)

✅ combinations(): 조합 생성

리스트에서 가능한 조합을 생성할 수 있습니다. 예: 조합 문제 해결

from itertools import combinations

items = ['A', 'B', 'C']
for combo in combinations(items, 2):
    print(combo)

itertools를 사용하면 복잡한 반복문 로직도 훨씬 간결하고 효율적으로 만들 수 있어요. 데이터 처리나 알고리즘 문제를 다룰 때 큰 도움이 됩니다.

반복을 단순히 반복하지 마세요. itertools로 반복을 설계하세요. 작은 차이가 더 나은 개발자를 만듭니다. 🚀

Icons by Flaticon

댓글

가장 많이 본 글

Icons by Flaticon