>  기사  >  개발 도구  >  VSCode의 과거 스토리지 전략에 대해 이야기해 보겠습니다.

VSCode의 과거 스토리지 전략에 대해 이야기해 보겠습니다.

青灯夜游
青灯夜游앞으로
2022-04-07 20:58:324585검색

VSCode에는 파일의 로컬 기록을 유지하는 기능이 추가되었습니다. 이 기사에서는 VSCode의 기록 저장 전략에 대해 설명하겠습니다.

VSCode의 과거 스토리지 전략에 대해 이야기해 보겠습니다.

어제 VSCode를 업데이트했는데 VSCode에 파일의 로컬 기록을 유지하는 기능도 추가된 것을 발견했습니다. 얼마 전 양크노트에 이력 기록 기능을 추가하기 위해 머리를 긁적이며 오랫동안 이력 저장 전략을 구상했던 기억이 난다. VSCode가 몇 달 전에 출시되었다면 참고할 수 있었을 텐데 아쉽습니다. [추천 학습: "vscode 입문 튜토리얼"]

그런데 VSCode의 역사적 스토리지 전략을 살펴보니 너무 투박한가요?

VSCode의 전략

VSCode 버전 1.66의 타임라인에 파일의 로컬 기록을 표시할 수 있습니다. 효과는 다음과 같습니다.

VSCode의 과거 스토리지 전략에 대해 이야기해 보겠습니다.

이 기능을 위해 VSCode에는 몇 가지 구성도 추가되었습니다.

거기 로컬 기록을 사용하기 위한 새로운 설정도 있습니다:

  • workbench.localHistory.enabled - 로컬 기록을 활성화 또는 비활성화합니다(기본값: true).workbench.localHistory.enabled - Enable or disable local history (default: true).
  • workbench.localHistory.maxFileSize - File size limit when creating a local history entry (default: 256 KB).
  • workbench.localHistory.maxFileEntries - Local history entries limit per file (default: 50).
  • workbench.localHistory.exclude - Glob patterns for excluding certain files from local history.
  • workbench.localHistory.mergeWindow - Interval in seconds during which further changes are added to the last entry in local file history (default 10s
  • workbench .localHistory.maxFileSize - 로컬 기록 항목 생성 시 파일 크기 제한(기본값: 256KB).
workbench.localHistory.maxFileEntries - 로컬 기록 항목 파일당 제한(기본값: 50).

workbench.localHistory.exclude - 로컬 기록에서 특정 파일을 제외하는 Glob 패턴.

workbench.localHistory. mergeWindow - 로컬 파일 기록의 마지막 항목에 추가 변경 사항이 추가되는 간격(초)(기본값 10초)

기록 항목을 마우스 오른쪽 버튼으로 클릭하면 시스템 관리자에서 직접 확인할 수 있는 메뉴 파일 기록의 복사본입니다.

따라서 VSCode는 각 저장/실행 취소 작업에 대해 특정 시간 창(기본값 10초) 내에 파일을 폴더에 저장한다고 추론할 수 있습니다. 이력 기록은 특별한 파일 이름 지정(시간 정보 유지)을 통해 위치를 찾습니다.

이건 너무 무례합니다. 하나의 파일은 하나의 버전일 뿐입니다.

VSCode의 과거 스토리지 전략에 대해 이야기해 보겠습니다.

타이포라의 전략

그럼 당시 조사된 타이포라의 전략에 대해 이야기해보겠습니다. Typora는 macOS

에서 매우 아름다운 파일 기록 역추적 인터페이스를 가지고 있습니다. 버전 역추적을 구현하려면 시스템의 "타임머신"을 사용해야 할 것 같습니다. 따라서 이 기능은 Windows에서는 더 이상 사용할 수 없습니다.
  • Yank Note의 전략

  • 제가 구상하는 과거 버전에는 여러 가지 목표가 있습니다.

  • 가장 중요한 목표는 데이터 손실을 최대한 방지하는 것입니다.

  • 역사 기록은 너무 많은 공간을 차지해서는 안 되며, 점진적으로 기록하는 것이 가장 좋습니다.

심한 경우에는 사용자가 데이터를 쉽게 복원할 수 있도록 해야 합니다.

기록 기록은 표시하고 메모할 수 있어야 합니다

첫 번째 목표는 사용자가 가장 최근에 편집한 버전을 유지하고 폐기하지 않기를 바랍니다. 그리고 Yank Note에는 자동 저장 기능이 있어서 공간을 너무 많이 차지하지 않고, 파일을 너무 많이 생성하지 않는 것이 두 번째 목표입니다. 그래서 원래 VSCode처럼 생각했던 시간 창 + 파일 저장 전략이 먹히지 않네요.

세 번째 목표로는 Git이나 데이터베이스와 같은 사용자 정의 형식을 도입하고 싶지 않습니다. 사용자가 데이터를 잃어 소프트웨어에서 기록 기록을 찾는 것이 불편한 경우(소프트웨어 손상, 파일이 실수로 삭제된 경우 등) 사용자는 기록 디렉터리에 들어가 파일을 검색할 수 있어야 합니다.

    후속 조치: 사용자가 실수로 문서를 삭제했는데 휴지통에서 찾을 수 없어 이 방법을 통해 복원했습니다.
  • 네 번째 목표를 고려하여 마침내 zip 파일을 사용하여 파일의 기록 버전을 저장하기로 결정했습니다. 쓰기 및 읽기 기록에 약간의 컴퓨팅 성능이 소모되지만(10MB 이상의 대용량 파일 기록은 기본적으로 쓸모가 없습니다). 그러나 최종 결과는 꽤 좋습니다.
  • 최종 해결 방법:

  • 각 문서는 파일 이름과 경로로 구성됩니다. zip 패키지 파일 이름을 나타내는 해시

  • 파일이 작성될 때마다 파일의 새 버전이 이 zip에 작성됩니다.

  • 파일 이동 및 이름 변경 시 zip 파일 이름도 동시에 변경될 수 있습니다

    🎜🎜최대 기록 버전 수는 제한될 수 있습니다. 🎜🎜🎜🎜버전 메모와 태그 정보는 압축된 메모 필드에 저장할 수 있습니다. 🎜

보통 파일을 편집할 때 자동 저장 메커니즘으로 인해 현재 버전과 이전 버전의 차이는 매우 작습니다. 따라서 이론적으로는 압축 파일에 새 버전 파일을 추가하면 압축 파일의 전체 크기가 줄어듭니다. 크게 증가해야 합니다. 그러나 나중에 이것이 사실이 아니라는 것을 알게 되었습니다. 그제서야 Zip 파일 압축의 특징을 깨달았습니다. 각 파일은 별도로 압축된 다음 함께 패키지됩니다. 즉, 압축된 패키지에 파일을 추가할 때 다른 파일과 함께 압축되지는 않습니다.

이 상황에 대응하여 저는 2중 압축 전략을 채택했습니다. 처음에는 압축률을 0으로 설정하고 압축만 해서 zip 패키지에 파일의 원본 정보가 담기도록 했습니다. 전체 패키지 파일이 두 번째로 한 번 압축됩니다. 이제 압축 프로그램은 "증분 업데이트" 목적을 달성하기 위해 압축을 위한 전체 정보를 고려할 수 있습니다.

나중에 테스트하기 위해 스크립트를 작성하면 보통 길이의 파일을 1000개 버전으로 저장하면 50KB만 차지합니다.

몇 달 동안 사용해 본 결과, 내 기록 파일 디렉터리는 700KB가 넘는 공간만 차지하고 그 안에 있는 대부분의 기록 파일 크기는 몇 KB에 불과합니다. VSCode를 되돌아보면 지난 이틀 동안 히스토리 디렉터리가 2M을 차지했습니다.

VSCode의 과거 스토리지 전략에 대해 이야기해 보겠습니다.

Further

기록 저장을 위해 몇 가지 보존 전략에 대해 추가로 생각했습니다.

마지막 저장 시간을 기준으로 유지:

  • 지난 10분 동안의 모든 버전
  • 지난 1시간 지난 24시간 동안 1분마다 1개의 버전
  • 지난 24시간 동안 1시간마다 1개의 버전
  • 매일 1개의 버전 유지
  • 태그 백업

하지만 지금은 더 이상 필요하지 않은 것 같습니다. 전략은 간단하며 예상되는 모든 측면에서 내 요구 사항을 충족합니다.

VSCode에 대한 자세한 내용을 보려면 vscode 튜토리얼을 방문하세요! !

위 내용은 VSCode의 과거 스토리지 전략에 대해 이야기해 보겠습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 juejin.cn에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제