C.W.K.
Stream
Lesson 04 of 04 · published

장소도 두 진실이야

~9 min · location, two-truths, foreground-only, privacy

Level 0식은 화로
0 XP0/34 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"override 는 captured 표본을 절대 안 지워. 지도 우선순위는 intended, 그다음 captured."

같은 두-진실 형태, 이번엔 장소

시간의 두-진실 규칙을 만났지 — crumb 를 언제 썼나 대 어느 날에 속하나. 위치도 정확히 같은 형태야. captured 위치 는 crumb 를 쓸 때 물리적으로 있던 곳 — 허용했을 때 자동 foreground 표본으로, 좌표·정확도·표본 시간·소스를 실어. intended 위치 는 기억이 관한 곳 — 선택적이고, 흔히 달라. 부엌 식탁(captured)에서 지난달 간 해변(intended)에 대한 crumb 를 쓸 수 있어. 둘 다 참이고, 하나의 '위치' 필드로 뭉개면 두 날짜를 뭉개는 것과 정확히 같은 방식으로 하나를 파괴해.

우선순위 규칙이 그걸 정리해 — intended 위치는 설정됐을 때 지도 표시에서 이겨. captured 위치는 intended 가 없을 때 채워. 그리고 결정적으로, intended 를 설정해도 captured 표본을 절대 안 지워 — 실제로 있던 곳의 기록이 살아남아, backdate 를 견디는 captured_at 처럼. 같은 규율, 다른 축 — 두 진실을 따로 두고, 하나가 표시 우선권을 갖게 하고, override 가 정직한 자동 표본을 절대 덮어쓰지 않게.

한 번 성립한 패턴은 모든 새 축에 시도할 가치가 있어. 두-진실 규칙은 날짜에서 스스로를 증명했고, 장소도 '일어난 곳 대 관한 곳' 의 같은 분리를 가지니까 같은 해법이 통째로 이전돼. 한 축에서 invariant 를 벌었으면, 다른 축들에서 그 형태를 찾아 — 검증된 패턴 재사용이 새 걸 발명하는 걸 이기고, 모델 전체를 일관되게 유지해.

Foreground 전용, 보안 origin, 절대 저장 경로에 없음

위치 캡처는 Waystone 에서 빡센 제약 셋을 상속하고, 각각 의도적이야. foreground 전용 이야 — Vesta 는 네가 능동적으로 쓰는 동안 위치를 표본 뽑지, 절대 백그라운드에서가 아니라. 백그라운드 추적은 절대 없어 — 저널이 널 따라다닐 이유가 없고, 상시 위치 history 의 프라이버시 비용은 이 제품이 부과할 뜻이 없는 거야. 보안 origin gated 야 — 브라우저 geolocation 은 HTTPS 위에서만 작동하고, 그게 정확히 엔진이 모바일용으로 보안 origin 위에서 도달 가능한 이유야. 그리고 절대 저장 경로에 없어 — 느리거나 거부된 위치 fix 가 crumb 저장을 절대 막거나 늦출 수 없어. 위치는 enrichment 고, 생각은 그게 있든 없든 안전해.

지도는 아무것도 저장 안 해

경계 하나가 더 루프를 닫고, 다음 트랙으로의 다리야. Map 은 위치 진실의 projection 이지 자기 store 가 아냐 — crumb 의 captured 와 intended 위치를 읽어 그려, 그리고 이미 crumb store 에 없는 건 아무것도 안 쥐어. 그래서 위치는 다른 모든 view 랑 같은 하나의-canonical-state 규칙을 따라 — crumb 가 두 위치 진실을 소유하고, Map 은 그걸 렌더하는 렌즈일 뿐이야. 장소를 정직하게 포착하고, 두 진실을 유지하고, 모든 지리적 view 를 같은 canonical 사실 위 projection 으로 둬.

Code

두 위치 진실, 표시 우선순위와 함께·typescript
interface Crumb {
  // where you physically were — auto foreground sample, immutable record
  captured_location?: {
    lat: number; lon: number; accuracy_m: number;
    sampled_at: string; source: "gps" | "network";
  };
  // where the memory is ABOUT — optional, author-set
  intended_location?: { lat: number; lon: number };
}

// map precedence: intended first, then captured
function mapPoint(c: Crumb) {
  return c.intended_location ?? c.captured_location ?? null;
}
// setting intended_location NEVER erases captured_location
// no background sampling — foreground only; HTTPS-gated; never on the save path

External links

Exercise

네가 아는 시스템에서 '기록된 곳/때' 와 '관한 곳/때' 를 섞는 필드를 골라 — 사진의 GPS 대 피사체, 로그의 서버 시간 대 event 시간. 표시용 우선순위 규칙과 함께 두 진실로 쪼개고, 저자-intended 를 설정해도 자동 captured 를 절대 덮어쓰지 않게 해. 그다음 프라이버시 자세를 정해 — 자동 표본이 foreground 전용이야, 아니면 뭔가 백그라운드에서 조용히 추적해?
Hint
이건 날짜 두-진실 규칙이 다른 모자를 쓴 거야. captured 값은 정직한 자동 기록, intended 값은 저자의 의미야. 둘 다 유지하고, intended 가 표시에서 이기게 하고, captured 를 절대 안 지우게 해. 그리고 자동 표본이 백그라운드에서 돌면, 기능이 진짜 그게 필요한지 아니면 아무도 안 청한 위치 history 를 모으는 건지 물어봐.

Progress

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

댓글 0

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

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