본문 바로가기

전체 글

(73)
파일 이름이 같아도 내용은 다를 수 있습니다 · 바이트 비교와 SHA-256 사진을 복사한 뒤 파일 이름과 용량이 같으면 같은 파일처럼 보입니다. 하지만 이름은 내용의 증거가 아니고, 같은 길이의 서로 다른 데이터도 만들 수 있습니다. 원본을 지우기 전에 무엇을 비교했는지 구분해야 합니다.같은 크기만으로는 부족한 이유짧은 설명용 예시로 b"cat"과 b"dog"를 생각해봅니다. 둘 다 세 바이트지만 내용은 다릅니다. 파일 이름을 같게 지어도 이 차이는 없어지지 않습니다. 이 예시는 실제 사진이나 복사 작업의 결과를 측정한 기록이 아닙니다.Python의 Path.read_bytes()는 파일의 바이너리 내용을 bytes로 읽습니다. 작은 파일 두 개라면 내용 자체를 비교하는 예시를 만들 수 있습니다.from pathlib import Pathoriginal = Path("origi..
미래를 준비하는 AI 활용 수업 09 · 초급 — 웹 검색과 생성 답변의 역할 나누기 “이번 주말 체험 행사 준비물을 정리해줘”라는 요청에는 서로 다른 일이 들어 있습니다. 이번 주말에 행사가 열리는지 찾는 일, 해당 회차의 조건을 읽는 일, 준비물을 보기 좋게 정리하는 일입니다. 검색 기능이 붙은 AI를 사용해도 이 역할을 하나의 확정 답변으로 묶지 않는 편이 좋습니다.08회에서 사용할 기능과 계정 조건을 골랐다면, 이번에는 최신 사실을 확인할 경로 한 장을 만듭니다. 가격이나 특정 서비스의 사용 가능 여부를 외워 적는 실습은 아닙니다.공식 원문에서 확인할 사실과 AI에 맡길 정리를 나눕니다.먼저 확인할 질문을 잘라냅니다설명용 가상 과제는 ‘주말 체험 행사에 갈 준비를 정리하기’입니다. 실제 행사나 예약을 실행하는 예시는 아닙니다. 먼저 생성 답변에 맡기지 않고 원문에서 확인할 항목을 ..
제출 버튼 뒤 화면이 멈췄다면, 다시 누르기 전에 결과를 찾습니다 신청서를 제출했는데 화면이 멈췄다고 가정합니다. 같은 버튼을 다시 누르면 처음 요청을 복구하는 것처럼 보이지만, 첫 요청이 이미 처리되었다면 두 번 보내는 셈이 될 수 있습니다. 아래는 특정 서비스의 동작을 단정하는 설명이 아니라, 자동화 절차를 설계할 때 구분할 상태입니다.오류 문구만 보고 제출 실패를 확정하기는 어렵습니다. 입력 중에 문제가 생겼는지, 제출 후 결과 화면을 받지 못했는지부터 나눕니다. 요청을 보냈다는 관찰과 원하는 결과가 생겼다는 확인은 서로 다른 기록입니다.응답이 없을 때는 결과 대조부터 하고, 확인할 수 없으면 재전송을 보류합니다.재시도 전에 남겨둘 최소 기록예를 들어 가상의 행사 신청에서 행사명, 신청 날짜와 회차, 제출 시각을 남겼다고 해봅니다. 제출 뒤 화면이 멈추면 처리 상..
JSON에 같은 이름이 두 번 나오면, 읽힌 값만 봐서는 놓칩니다 JSON 설정을 읽은 뒤 필드의 자료형과 범위를 검사해도 놓치는 문제가 있습니다. 원본에 같은 이름이 두 번 적혀 있다면, 딕셔너리로 바뀐 결과만 보고 중복 여부를 알기 어려울 수 있습니다. 파싱과 설정 검증을 구분한 데서 한 단계 더 들어가는 문제입니다.Python 표준 json 디코더는 기본적으로 중복된 이름을 받아들이고 마지막 값을 사용합니다. 가령 {"mode":"preview","mode":"live"}라는 입력은 마지막 값으로 해석됩니다. 원본을 작성한 사람이 앞의 값을 의도했는지는 읽힌 결과만으로 알 수 없습니다.입력의 중복: 같은 이름이 두 번; 일반 읽기: 마지막 값만 남을 수 있음; 검사 위치: 딕셔너리 완성 전 쌍 목록입니다.중복을 오류로 처리하려면 이름과 값의 쌍이 전달되는 obje..
설정 파일을 저장하다 멈춘다면, 원본과 임시 파일을 나눕니다 설정 파일을 쓰는 도중 프로그램이 멈추면 원본이 일부 내용만 가진 상태로 남을 수 있습니다. 중요한 파일에 바로 쓰기 전에 새 내용을 임시 파일로 완성하고 마지막에 교체하는 방식을 생각할 수 있습니다. 단, 이 방식이 백업이나 동시 편집 충돌까지 해결해주는 것은 아닙니다.아래는 작은 UTF-8 설정 텍스트를 같은 폴더의 임시 파일에 쓴 뒤 교체하는 설명용 예시입니다. 실제 운영 환경에서 실행하거나 장애 복구를 검증한 코드는 아닙니다.from pathlib import Pathimport osimport tempfiletarget = Path("settings.txt")temp_path = Nonetry: with tempfile.NamedTemporaryFile( mode="w", en..
미래를 준비하는 AI 활용 수업 08 · 초급 — 사용할 AI와 기능을 현재 조건으로 고르기 AI를 고르기 전에 맡길 작업을 한 줄로 적어봅니다. 짧은 글을 다듬는 일과 그림이 들어 있는 문서를 읽는 일은 필요한 입력 기능이 다릅니다. 이름이 익숙한 서비스를 고르는 데서 멈추면, 정작 자신의 계정에서 쓸 수 있는 기능은 확인하지 못할 수 있습니다.앞 수업: 07회 · 입문 입력문과 검토 기록 묶기오늘의 목표입문에서 모은 입력문과 검토 기록을 바탕으로 작업 하나에 필요한 조건을 정리합니다. 초급은 이 연재의 학습 단계입니다. 이번에는 성능 순위를 매기거나 새 유료 요금제를 신청하지 않습니다. 산출물은 서비스·모델·계정 조건표 한 장입니다.서비스 이름과 실제 사용 조건을 나눕니다서비스 이름, 화면에 표시된 모델 이름, 로그인한 계정의 종류를 서로 다른 칸에 적습니다. 모델 이름이 보이지 않는다면 추..

반응형