| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 크롤링
- 메일자동화
- next.js
- 마이그레이션
- 보안
- 아키텍처
- 배포
- github actions
- React
- 백엔드
- Kotlin
- javascript
- 인증
- playwright
- 도메인설계
- contextBridge
- sqlite
- python
- 소셜로그인
- Android
- 온디바이스AI
- 상태관리
- 프론트엔드
- typescript
- FastAPI
- php
- electron
- JWT
- REST API
- Vite
- Today
- Total
목록python (15)
HM소프트
cross-PC 재현 불가 버그를 잡은 기록. cp949 콘솔 인코딩으로 죽던 크롤러를 utf-8 reconfigure로, 파일은 항상 encoding 명시, 시각은 UTC 저장과 시계 오차 가드, 전각/반각 NFKC 정규화와 식별 번호 표기 통일, APPDATA 폴백 경로, SQLite WAL·busy_timeout·재시도·직렬화까지 암묵적 기본값을 코드로 못박은 방법.3편: cross-PC 강건성2편까지 수집과 파싱을 다뤘다. 이번 편은 가장 재현하기 까다로웠던 부류의 버그다. 같은 코드가 내 PC에서는 멀쩡한데 다른 PC에서는 데이터가 비뚤어지는 문제. 원인을 하나씩 추적해 잡은 기록이다.이런 버그가 무서운 건, 개발 PC에서는 안 보이고 배포된 현장에서만 터진다는 점이다. 그래서 "환경이 달라도 ..
pdfplumber extract_tables로 외국어 표 PDF에서 구조화 데이터를 뽑아낸 기록. 텍스트 흐름 대신 격자로 읽고, 라벨 사전으로 표기 변형 흡수, 헤더 행 오매핑 차단, 여러 페이지 표의 열 인덱스 이월, 부분합 중 최대값 선택, 외국어 연호 날짜 변환, 표→정규식→원본 페이지 3단 폴백, 합본 PDF 전용 파서, 스캔 PDF OCR 폴백까지. 2편: PDF 파싱1편에서 BaseCrawler 파이프라인을 다뤘다. 이번 편은 그중 가장 손이 많이 간 부분, 외국어로 된 PDF 문서 파싱이다. 일부 국가는 데이터를 웹페이지가 아니라 PDF로만 공개했다.첫 시도와 실패: 텍스트를 그냥 긁기처음엔 PDF에서 텍스트를 순서대로 추출했다. 결과는 엉망이었다.品名 改善対策 届出 2024年..
BaseCrawler 추상 클래스로 5개 공개 데이터 출처(벌크 API·주간 XML·웹페이지 PDF)를 하나의 수집-파싱-저장 파이프라인에 통합한 설계. fetch/parse 두 메서드만 출처별로 구현하고, Pydantic 공통 모델의 원문/번역 분리, COALESCE UPSERT 중복 제거, 2단계 보강, 건별·출처별 격리, 수집과 번역 분리까지 다룬다.시리즈를 시작하며 — "출처가 5개인데 화면은 하나여야 한다"여러 나라가 각자 공개하는 제품 리콜 데이터를 한곳에 모아, 자동으로 번역하고, 검색·내보내기까지 되는 데스크톱 앱을 만들었다. 한 줄로 줄이면 "공개 데이터 크롤러"지만, 실제로 시간을 잡아먹은 건 크롤링 그 자체가 아니었다. 나라마다 데이터를 주는 방식이 전부 다르다는 점이 모든 설계 결정..