| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
- 백엔드
- typescript
- contextBridge
- 상태관리
- 마이그레이션
- Vite
- next.js
- 도메인설계
- 배포
- playwright
- 인증
- Kotlin
- php
- REST API
- python
- 온디바이스AI
- javascript
- 소셜로그인
- FastAPI
- Android
- github actions
- JWT
- electron
- 프론트엔드
- React
- 메일자동화
- 크롤링
- sqlite
- 아키텍처
- 보안
- Today
- Total
목록python (15)
HM소프트
passlib 1.7.4와 최신 bcrypt 버전 비호환으로 가입은 되는데 로그인이 안 되는 함정을 추상화를 걷어 내 해결하고, 네이버·카카오 OAuth 인가 코드 흐름을 구현한다. 비밀번호 nullable 전환, 외부 ID·이메일 3단계 회원 매핑, JWT 발급과 리다이렉트 토큰 전달까지 단일 회원으로 수렴시킨다.네이버·카카오 소셜 로그인 구현과 bcrypt 적용 중 만난 함정을 정리한다. 2편: 인증1편에서 상품·카테고리·복합 필터를 다뤘다. 커머스에서 구매로 이어지려면 회원가입·로그인이 매끄러워야 한다. 이번 편은 기본 인증과 소셜 로그인(네이버·카카오), 그리고 거기서 만난 bcrypt 호환성 함정이다.가입 장벽을 낮추기 — 소셜 로그인이메일 회원가입만 있으면 이탈이 크다. 특히 커머스는 "결제 ..
다축 복합 필터를 한 쿼리로 푸는 설계. 고정값 축은 컬럼, 운영 중 바뀌는 축은 타입 판별자를 둔 카테고리 테이블과 다대다로 가르고, 걸린 조건만 AND 누적·입력 화이트리스트·두 단계 조회와 윈도 함수로 N+1을 막는다. 요청 일련번호로 경합을, id 정렬로 비결정성을 잡는다.이커머스(교육 자료 판매) 백엔드의 상품·카테고리 도메인 설계와 복합 필터 구현을 정리한다. 시리즈를 시작하며교육 자료(강의·학습 자료)를 사고파는 플랫폼을 만들었다. 상품을 카테고리로 분류하고, 여러 조건으로 필터링하고, 결제·회원·관리자 기능까지 갖춘 커머스다. 백엔드는 Python, 프론트엔드는 TypeScript로 짰다.세 편으로 나눠 기록한다.(이 글) 상품·카테고리 도메인과 복합 필터인증과 소셜 로그인(네이버·카카오)..
FastAPI와 React 사이 경계를 다잡는다. TypeScript 인터페이스와 Pydantic 스키마를 snake_case로 글자까지 일치시켜 직렬화 버그를 없애고, axios /api 상대 경로와 Vite 프록시로 주소를 통일한다. 블로킹 SMTP를 asyncio.to_thread로 격리, 한글 폰트·OpenCV를 멀티스테이지 Docker 이미지에 봉인하고 Nginx 웹소켓 프록시까지 정리한다. 3편: 경계와 배포1편 템플릿 치환, 2편 PDF 첨부에 이어, 시리즈 마지막은 코드 위생, 프론트/백 경계, 그리고 Docker 배포다. 기능을 다 만든 뒤 "어떻게 안정적으로 굴릴 것인가"의 영역이다.프론트/백 경계 — 가장 흔한 버그의 원천2편에서도 짚었지만, 이 프로젝트에서 반복된 버그의 큰 줄기는 ..
수신자마다 다른 PDF를 붙이는 첨부 기능을 스키마·업로드·값 스캔·상태 관리·발송 다섯 단계로 쪼개 구현한다. 엑셀 한 컬럼을 매칭 키로 삼는 컬럼→값→파일 3단 구조, UUID 저장과 원본 파일명 복원, 업로드 디렉토리 누락 버그, 프론트 camelCase와 백엔드 snake_case 직렬화 불일치로 첨부가 조용히 빠지던 사고와 해결을 다룬다. 2편: 수신자별 PDF 첨부1편에서 템플릿 치환을 다뤘다. 이번 편은 이 도구에서 가장 공들인 기능이다. 단순히 같은 PDF를 모두에게 붙이는 게 아니라, 수신자마다 다른 PDF를 매칭해서 첨부한다. 예를 들어 각 거래처에 그 거래처용 견적서 PDF를 자동으로 붙이는 식이다.기능 하나지만, 프론트와 백엔드에 걸쳐 여러 조각이 맞물려야 했다. 한 번에 만들지 않..
대량 메일 자동화 도구의 템플릿 변수 치환 엔진 구현. 리치 텍스트 에디터가 변수 글자 사이에 HTML 태그를 끼워 넣어도 잡아내는 유연 정규식을 동적 생성하고, 흔한 경우는 replace로 거르는 2단 치환으로 비용을 줄인다. 엑셀 파싱 단계의 빈 셀·타입 정규화, 발송 전 컬럼 값 분포를 보여주는 값 미리보기로 틀린 메일 사고를 막는다. 시리즈를 시작하며수신자마다 내용이 다른 메일을 한 번에 보내는 도구를 만들었다. 표(스프레드시트)로 받은 수신자 데이터를 올리면, 템플릿의 변수가 각 행의 값으로 치환되어 개인화된 메일이 나가고, 행마다 다른 PDF를 첨부할 수도 있다.세 편으로 나눠 기록한다.(이 글) 템플릿 변수 치환과 값 미리보기 엔진수신자별 PDF 첨부 — 업로드부터 매칭·발송까지프론트/백 경..
오번역을 막는 번역 필요 여부 가드와 스레드 로컬 번역기 격리, 429 분기 백오프, 원문·번역 칸을 모두 훑는 다필드 LIKE 검색과 이스케이프, 화면과 일치하는 내보내기, 국가별 시각 분산과 직렬화 락 스케줄러, APScheduler 잠자기 방어, UNIQUE 마이그레이션, Electron 포트 폴백·트레이 상주까지 데스크톱 앱화 기록. 4편: 검색·번역·스케줄러·데스크톱시리즈 마지막이다. 1편 파이프라인, 2편 PDF 파싱, 3편 강건성에 이어, 이번엔 사용자가 실제로 만지는 부분과 운영 자동화를 한 번에 다룬다.번역 — "되게"보다 "틀리지 않게"수집한 외국어 원문은 googletrans로 번역했다. 네트워크 작업이라 실패가 잦아, 재시도와 백오프를 넣었다.def translate_with_ret..