반응형 전체 글153 PostgreSQL 중복 저장 오류 해결 — ON CONFLICT로 건너뛰거나 갱신하기 상품 가격을 다시 올리려는데 같은 상품코드가 있다는 오류가 나왔다.처음 등록은 됐지만, 같은 상품을 한 번 더 넣으면서 중복 키에 걸린 것이다. 이미 등록한 상품이라면 기존 값을 유지할지, 새로 받은 값으로 바꿀지부터 정하면 된다.두 경우를 ON CONFLICT로 나눠 처리해 보았다. 예제 상품은 코드가 P001인 머그컵으로, 처음 가격은 5,500원이고 새 가격은 6,000원이다.가격을 다시 저장하고 같은 요청도 반복해서 보내 보았다.상품과 가격은 설명을 위한 예제 데이터다.접속하고 임시 테이블부터 만들기아래 SQL은 다른 SQL 편집기에서도 실행할 수 있지만, 임시 테이블이므로 처음부터 끝까지 같은 연결을 유지해야 한다. 이 실습에서 사용하는 값은 다음과 같다.NAMESPACE: defaultNAME.. 2026. 11. 6. 엑셀 두 파일 비교하기 — 바뀐 값과 추가·삭제된 행만 뽑기 엑셀 파일을 새로 받았는데 행 순서까지 달라져 있으면 비교하기가 귀찮아진다. 어제 파일의 2행과 오늘 파일의 2행이 같은 상품이라는 보장이 없기 때문이다.그렇다고 전부 정렬해 놓고 하나씩 볼 수도 없고… 이번에는 상품코드를 기준으로 두 파일을 맞춰 보았다. 바뀐 값은 변경, 새로 들어온 상품은 추가, 빠진 상품은 삭제 시트에 따로 담는다. 원본 두 개는 읽기만 하고 결과 파일을 새로 만든다.행 번호 대신 상품코드로 맞추기첨부한 before.xlsx와 after.xlsx는 각각 네 행짜리 예제다. 시트 이름은 둘 다 재고이고, 첫 행에는 상품코드·상품명·단가·재고·비고가 있다. 실제 거래 자료가 아니라 비교하기 쉽게 만든 문구류 목록이다.상품코드달라진 내용00123볼펜 단가 1,000 → 1,200 / 재.. 2026. 11. 6. PDF 필요한 페이지만 추출하기 — 파이썬으로 2~4쪽과 7쪽만 저장 PDF가 길어도 필요한 건 몇 쪽뿐일 때가 있다. 앞부분에서 세 쪽, 뒤에서 한 쪽. 이 정도를 보내려고 문서 전체를 전달할 필요는 없다.이번에는 8쪽짜리 PDF에서 2~4쪽과 7쪽을 골라 한 파일로 저장했다. 결과는 2, 3, 4, 7 순서의 4쪽짜리 PDF다. 원본은 건드리지 않고 새 파일을 만든다. 필요한 쪽이 바뀌면 코드 대신 실행 명령의 번호만 바꾸면 된다.아래 예제는 macOS의 Python 3.12.14와 pypdf 6.21.4에서 실행했다. 예제 PDF는 페이지 순서를 구분할 수 있게 만든 자료다. 문서가 외부 사이트로 전송되는 코드는 없다. 패키지를 설치한 뒤 PDF를 읽고 저장하는 작업은 내 컴퓨터 안에서 이뤄진다.쪽 번호부터 맞춰 두기여기서 2쪽은 PDF 파일 안의 두 번째 페이지다... 2026. 11. 5. 카톡·문자 속 약속을 일정으로 — 오늘챙김 앱을 출시했다 카톡으로 약속을 잡으면 대화는 남는다. 그런데 달력에 적는 건 또 다른 일이다. 날짜를 보고, 시간을 옮기고, 알림도 따로 맞춰야 한다.이 과정을 조금 줄여보려고 만든 앱이 오늘챙김이다. 냉장고 앱에 이어 직접 개발한 앱을 하나 더 소개해본다.오늘챙김은 사용자가 선택한 앱의 새 알림에서 날짜와 시간을 찾아 일정 후보로 모아준다. 모인 후보를 내 일정에 추가하면 오늘 할 일과 앞으로의 약속을 한곳에서 볼 수 있다.현재 Google Play에서 설치할 수 있다. 첫 출시는 2026년 9월 3일, 현재 버전은 1.1.0이다. 10월 29일 업데이트에서는 다가오는 7일의 날짜를 눌러 일정을 바로 보는 기능과 할 일 완료 처리를 다듬었다.Google Play에서 오늘챙김 설치하기Android 7.0 이상에서 사용.. 2026. 11. 4. ChatGPT Codex 최적화 중단 오류 — 반복 개발 작업을 이어가는 방법 ChatGPT의 Codex에서 주기적으로 실행하도록 한 작업이 멈췄다. 화면에는 ‘최적화가 중단되었습니다’, 그 아래에는 ‘다시 연결 중 2/2’가 보였다. 조금 기다린다고 다음 단계로 넘어가는 상태는 아니었다.Error running remote compact task: stream disconnected before completion:Transport error: network error: error decoding response body화면에 나온 문구는 위와 같다. 소스 코드의 컴파일 오류나 테스트 실패 메시지가 아니라, Codex가 대화를 정리하는 과정에서 응답을 끝까지 받지 못한 오류다. 코드 수정과 테스트를 반복해서 맡길 때는 작업 자체의 오류와 이 연결 오류를 나눠 봐야 한다.이번에는 .. 2026. 11. 4. 중복 파일 찾기 — 파이썬으로 이름이 다른 복사본까지 확인하기 다운로드한 파일 뒤에 (1), (2)가 붙어 있으면 복사본처럼 보인다. 그런데 이름이 같아도 내용이 바뀐 파일이 있고, 이름을 아예 바꿔 놓은 복사본도 있다. 이름만 보고 정리하면 여기서 헷갈린다.이번에는 폴더 안의 파일을 읽어서 내용이 같은 것끼리 묶어 봤다. 결과는 duplicates.txt에 남긴다. 원본 파일은 그대로 두고, 어느 폴더의 어떤 파일이 겹치는지 목록부터 얻는 방식이다.아래 코드는 Python 표준 라이브러리만 쓴다. 별도로 pip 패키지를 설치할 필요는 없다. 실행 화면은 2026년 11월 4일 macOS의 Python 3.9.6에서 만든 예제 파일을 돌린 결과다. 새로 설치한다면 지원 중인 Python 버전을 사용하면 된다.이름과 크기만으로는 부족하다순서는 파일 크기 → SHA-2.. 2026. 11. 4. 이전 1 2 3 4 ··· 26 다음 반응형