본문 바로가기
C.W.K.
Stream
Lesson 01 of 04 · published

겉모습은 쉬운 쪽이야

~12 min · thesis, mutation, trust

Level 0Finder 에서 헤매는 중
0 XP0/36 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"페인 두 개는 하루면 만들어. 믿고 지울 수 있는 파일 관리자는 1년 걸려."

데모는 널 속여

아무 UI 툴킷이나 열면 점심 전에 듀얼 페인 브라우저를 띄울 수 있어. NSTableView 두 개, 폴더 읽기, 아이콘 몇 개, 가운데 분할선. 파일 관리자처럼 보이고 데모도 잘 돌아가. 근데 여기까지가 쉬운 절반이야. 다 왔다고 착각하게 만드는 쪽이지.

안 왔어. 사용자가 폴더를 한쪽 페인에서 다른 쪽으로 끌어다 놓는 순간, 넌 사각형 그리던 세계를 떠나 남의 데이터를 되돌릴 수 없게 바꾸는 세계로 들어선 거야. 완전히 다른 일이고, Waygate 가 존재하는 이유가 딱 그거야.

파일 관리자는 결국 뭘 하는 물건인가

파일 관리자는 뷰어가 아냐. 뷰어는 안전해. 망가져 봐야 아무것도 안 보여주는 게 최악이지. 파일 관리자는 바꿔. 복사하고, 옮기고, 이름 바꾸고, 덮어쓰고, 휴지통에 넣어. 하나하나가 판단을 틀리면 데이터를 잃어. 그러니까 진짜 제품은 브라우저가 아니라, 일이 틀어진 순간 네 가지 질문에 내놓는 답이야.

앱이 뭘 하려고 했나. 디스크에서 실제로 뭐가 바뀌었나. 뭘 확인했나. 그리고 다른 걸 건드리기 전에 사람이 봐야 할 게 뭐가 남았나. Path Finder 의 매끈함은 여기 답을 못 줘. Finder 도 대체로 못 주고. Waygate 는 이 답이 언제든 다시 나오도록 지어졌어.

다 된 것처럼 보이는 복사

함정은 Swift 한 줄에 있어. 컴파일되고, 돌아가고, 안전하지 않아.

겉모습보다 안전하게 바꾸는 게 먼저야. 듀얼 페인은 몇 시간이면 만들어. 하지만 복사·이동·이름 바꾸기·휴지통이 충돌과 재시작, 느린 SMB, 사라진 볼륨을 짐작 없이 버텨야 비로소 '대체품' 이 돼. 보이는 브라우저는 포장이고, 파일을 바꾸는 엔진이 제품이야.
아빠가 Waygate 를 처음 그렸을 때 난 페인부터 시작하고 싶었어. 재밌고 눈에 보이는 쪽이니까. 아빠가 딱 잘랐어. "페인은 앱이 아냐. 복사 도중에 SMB 공유가 끊겼을 때 반대편 파일이 진짜인지 알아내는 게 앱이야." 그 한마디에 퀘스트 전체가 뒤집혔어. 실패하는 순간부터 거꾸로 설계하기 시작하니까 저널이든 스테이징이든 needsReview 든 존재할 이유가 저절로 생기더라.

Code

널 속이는 한 줄·swift
// The "easy half": this compiles, runs, and looks finished.
try FileManager.default.copyItem(at: source, to: destination)

// But ask the four questions and the illusion breaks:
//   1. If the volume vanished mid-copy, is `destination`
//      a complete file or a half-written stub?
//   2. Did anything VERIFY the bytes before the UI said "Done"?
//   3. If this was a MOVE, is it safe to delete `source` now?
//   4. After a crash, how would the app even know it was running?
//
// FileManager answers none of these. That silence is the gap
// Waygate's operation engine exists to close.
파일 관리자의 두 절반·text
  THE EASY HALF (hours)            THE EARNED HALF (the product)
  --------------------             -----------------------------
  two NSTableViews                 write-before-mutate journal
  directory enumeration            copy -> verify -> delete
  icons, splitter, breadcrumb      explicit collision decisions
  a pretty sidebar                 recovery that stops, not guesses

  demos great, proves nothing      never loses a file

External links

Exercise

오늘 한 파일 작업을 하나 떠올려봐. Finder 에서 드래그했든, USB 로 복사했든, 네트워크 공유로 옮겼든. 거기에 네 가지 질문을 소리 내서 던져봐. 도구가 뭘 하려고 했지? 실제로 뭐가 바뀌었지? 뭘 확인했지? 중간에 앱이 죽었다면 뭘 다시 봐야 하지? 화면만 보고 답할 수 없는 질문은 어느 거였어?
Hint
대부분의 파일 관리자에서 솔직한 답은 이거야. "뭘 확인했는지 알 길이 없고, 복사 도중에 죽었으면 뭐가 남았을지도 모르겠다." 바로 그 사각지대가 Waygate 가 진짜 제품으로 삼은 절반이야.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.