글

라벨이 데이터 안전인 게시물 표시

삭제 기능을 만들지 않고 휴지통을 만든 이유

코딩은 AI에게 맡겼습니다 · 시즌 1 / 16 2026년 7월 17일 v1.3.0에서는 오래된 메모 자동 정리와 휴지통을 추가했습니다. 다섯 개 파일에서 411줄을 추가하고 10줄을 삭제했습니다. 구현보다 더 오래 고민한 부분은 무엇을 지우지 않을 것인가였습니다. 먼저 보는 핵심 자동화가 사용자 데이터를 다룬다면 되돌릴 수 있어야 합니다. 현재 편집 중인 메모와 고정 메모를 제외하고, 기능을 기본으로 끄며, 바로 삭제하지 않고 휴지통에 보관하는 안전장치를 먼저 설계했습니다. “오래된 메모를 지워줘”에 빠진 질문 AI에게 오래된 메모를 자동 삭제하라고 하면 날짜를 비교하는 코드는 쉽게 나옵니다. 하지만 제품에는 다음 질문이 남습니다. 생성일과 마지막 수정일 중 어느 날짜를 기준으로 할 것인가 사용자가 지금 열어 둔 메모도 대상인가 고정한 메모는 오래돼도 지울 것인가 자동 정리 주기는 언제 실행할 것인가 잘못 정리된 메모를 되살릴 수 있는가 휴지통도 자동으로 비울 것인가 이 질문의 답은 JavaScript 문법이 아니라 사용자가 어떤 실수를 용서할 수 있는지에 달려 있습니다. 선택한 네 가지 안전장치 자동 정리는 기본적으로 꺼 둡니다. 현재 편집 중인 메모는 정리하지 않습니다. 고정한 메모는 보존 의도로 해석해 제외합니다. 삭제 대신 휴지통으로 이동하고 복원 기회를 제공합니다. 기능을 기본으로 끈 이유는 사용자가 예상하지 못한 자동 삭제의 피해가, 오래된 메모가 남아 있는 불편보다 크기 때문입니다. 휴지통도 데이터 모델이다 휴지통은 단순한 두 번째 배열이 아닙니다. 원래 메모 ID, 삭제 시각, 완전 삭제 예정일과 복원 시 충돌 정책이 필요합니다. 상황 필요한 결정 같은 ID의 메모가 이미 있음 새 ID 부여 또는 복원 거부 휴지통 보관 기간 만료 실행 시점과 사용자 안내 앱 업데이트 이전 데이터에 삭제 시각 보완 백업 휴지통 포함 여부 선택 AI에게 구현을 ...

서버 없는 메모장에 백업과 복원이 꼭 필요했던 이유

코딩은 AI에게 맡겼습니다 · 시즌 1 / 14 2026년 7월 10일 v1.2.0에서는 백업·복원, 키보드 단축키와 시스템 글꼴을 추가했습니다. 네 개 파일에서 253줄을 추가하고 18줄을 삭제했습니다. 계정과 서버가 없다는 단순함을 유지하려면 사용자가 직접 데이터를 옮길 방법이 필요했습니다. 먼저 보는 핵심 로컬에 저장하면 외부 전송을 줄일 수 있지만, 데이터 유실까지 막아 주지는 않습니다. 확장 삭제, 저장소 손상, 기기 교체에 대비해 내보내기 형식, 검증, 병합 정책과 실패 시 원상 복구를 설계해야 합니다. 로컬 저장에도 백업이 필요한 이유 서버가 없으면 계정 유출과 운영 비용을 줄일 수 있습니다. 메모가 외부로 전송되지 않는다는 장점도 큽니다. 반대로 브라우저 안의 데이터에 문제가 생기면 운영자가 복구해 줄 사본이 없습니다. 일상적인 사용 중에도 다음과 같은 상황이 생길 수 있습니다. 확장 프로그램을 실수로 삭제한다. 새 컴퓨터로 이동한다. 브라우저 프로필을 초기화한다. 업데이트 중 데이터 형식이 바뀐다. 잘못된 복원 파일로 기존 메모를 덮는다. 사용자가 메모를 직접 보관하고 옮길 수 있도록 백업과 복원을 제품의 기본 기능으로 다뤄야 했습니다. 파일을 읽는 것과 안전하게 복원하는 것은 다르다 AI는 JSON 내보내기와 가져오기 코드를 빠르게 만들 수 있습니다. 복원에는 다음 정책이 더 필요합니다. 질문 가능한 선택 기존 데이터 처리 교체, 병합, 사용자 선택 중복 메모 ID 기준, 내용 기준, 모두 유지 잘못된 파일 전체 거부, 유효 항목만 복원 버전 차이 마이그레이션, 읽기 전용 안내 실패 시 상태 변경 전 스냅샷으로 되돌리기 가장 위험한 구현은 파일을 읽자마자 기존 저장소를 지우는 방식입니다. 먼저 메모리에서 전체 구조를 검증하고, 복원 계획을 보여 준 뒤, 한 번에 적용해야 합니다. 백업 파일에 버전을 넣기 파일에는 메모 배열만 넣기보다 형식과 생...

개인정보처리방침은 복사해서 붙이면 끝일까

코딩은 AI에게 맡겼습니다 · 시즌 1 / 6 README를 만든 날, Chrome Web Store를 위한 첫 개인정보처리방침도 추가했습니다. 첫 문서는 26줄이었습니다. 서버가 없고 메모가 브라우저 안에만 남으니 설명할 내용도 적어 보였습니다. 먼저 보는 핵심 정책 문서는 그럴듯한 법률 문장을 만드는 일이 아니라 제품의 데이터 흐름을 사실대로 설명하는 일입니다. AI에게 초안을 맡길 수는 있지만, Manifest와 저장 코드, 외부 라이브러리, 삭제 방식을 직접 대조해야 합니다. “수집하지 않습니다”만으로 충분하지 않았다 Simple Side Note는 계정을 만들지 않고 별도 서버도 사용하지 않습니다. 하지만 데이터가 전혀 존재하지 않는 것은 아닙니다. 사용자가 작성한 메모와 설정은 브라우저 저장소에 기록됩니다. 정책에는 최소한 다음 질문의 답이 있어야 했습니다. 어떤 데이터를 저장하는가 데이터는 어느 장치와 저장 영역에 남는가 외부 서버로 전송하는가 제3자와 공유하거나 판매하는가 사용자가 데이터를 내보내거나 삭제할 수 있는가 확장 프로그램을 제거하면 무엇이 일어나는가 문의는 어디로 해야 하는가 “개인정보를 수집하지 않는다”는 문장만 쓰면 로컬 메모와 설정이 어디에 저장되는지 설명하지 못합니다. 사용자에게 중요한 것은 법률 용어보다 자신의 데이터가 어디로 가는지입니다. AI에게 문장을 쓰기 전에 흐름을 찾게 했다 정책 초안을 바로 요청하는 대신 코드에서 데이터 흐름을 먼저 정리하는 편이 안전합니다. 데이터 발생 위치 저장 위치 외부 전송 메모 본문 Side Panel 편집기 Chrome 로컬 저장소 없음 테마·설정 설정 화면 Chrome 저장소 구현 방식에 따라 확인 웹페이지에서 가져온 문구 사용자의 명시적 동작 현재 메모 없음 오류 정보 브라우저 개발자 도구 별도 수집 없음 없음 이 표를 만든 다음 AI에게 사용자에게 이해되는 문장으로 바꾸게 하...