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

지도는 아무것도 저장 안 한다

~11 min · projection, truth-layer, geocoding, discipline

Level 0표식 없는 길
0 XP0/35 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"이 지도엔 핀을 못 떨궈. breadcrumb 만 남길 수 있고 — 지도는 breadcrumb 이 이미 아는 걸 그려."

저장 버튼 없는 지도

지리를 정직하게 만드는 invariant 가 여기 있어: 지도는 자기 데이터를 아무것도 저장 안 해. 'marker 추가' 도구도, 손으로 놓은 핀도, 다른 어디에도 안 사는 지도-전용 annotation 레이어도 없어. Journey Map 의 모든 flag 는 여행 truth 가 심어 — breadcrumb 에 붙은 place hint, geocoder 가 좌표로 resolve 한. flag 를 띄우고 싶으면 place 붙은 breadcrumb 을 남겨. flag 를 옮기고 싶으면 breadcrumb 을 고쳐. 지도는 crumb 의 순수 projection 이야. out-of-sync 될 자기 기억이 없어.

crumb 이 flag 가 되는 법

출시된 v0 truth 레이어에서, crumb 의 위치 resolve 는 엄격한 순서를 따라: 아빠가 설정했으면 intended location, 그다음 captured GPS 좌표, 그다음 — 최후 수단으로만 — 텍스트 place hint geocoding. 좌표는 지도로 바로 가고; reverse-geocode 된 이름은 점을 label 할 순 있어도 좌표를 절대 대체 안 해. miss 는 조용히 버려지지 않아 — 'Unplaced' 스트립에 드러나서 resolve 못 한 장소가 없는 척 대신 보여. 위치를 지어내길 거부하는 그게 지도가 아무것도 저장 안 하는 것과 같은 정직함이야: projection 은 truth 가 뒷받침하는 딱 그만큼만 보이고, 못 하는 건 인정해.

왜 이 규율이 이득인가

그릴 수 있는 지도는 두 번째 DB 야. 지도에만 있는 핀을 손으로 놓는 순간, 다른 어떤 view 도 모르는 fact 를 만든 거고 — 이제 지도와 itinerary 가 안 맞을 수 있어. 지도-전용 state 를 금지해서, Waystone 는 지도가 절대 거짓말 못 하게 보장해. 거짓말할 자기 게 없으니까. 이건 편의 하나(지도에 낙서 못 함)를 대가로 보장 하나(지도는 언제나 여행 state 의 충실한 그림)를 사. 기억 엔진한텐, 그 거래는 접전이 아냐.

틀린 핀은 지도에서 절대 안 고쳐. 원천에서 고쳐 — crumb 의 place hint 를 편집하면 projection 이 올바르게 다시 렌더돼. 그게 진짜 projection 의 징표야: view 가 아니라 model 을 고쳐.

Code

crumb -> flag resolve 순서 (v0 truth 레이어)·text
breadcrumb 마다:
    location = intended_location            # 아빠의 명시적 override
           or captured_location            # 폰의 GPS 샘플
           or geocode(place_hint)           # 최후: 텍스트 -> 좌표

    location 있으면:  flag 심음 (좌표가 canonical)
    없으면:           'Unplaced' 스트립에 나열  # 절대 안 버림

# 지도는 이 중 아무것도 안 가져. crumb 을 읽고 렌더해.
# 틀린 flag 는 지도가 아니라 crumb 을 편집해서 고쳐.
# reverse-geocode 이름은 점을 LABEL 할 뿐; 절대 안 옮겨.

External links

Exercise

수동 핀을 떨군 지도 도구를 찾아봐 — Google Maps 저장 장소, 커스텀 지도 레이어. 물어: 그 핀의 기반 장소가 이름이 바뀌거나 문 닫으면, 핀이 알까? 수동 핀은 지도-전용 state 야 — 현실에서 drift 하는 두 번째 DB. 네 도구 어디에 한 view 에만 사는 'fact' 를 만들었어?
Hint
지도-전용 state 테스트: 지도에 다른 어디에도 없는 정보가 있어? 있으면, 그 view 는 DB 가 된 거고, 결국 다른 것들과 안 맞아져. 순수 projection 은 drift 할 자기 게 없어.

Progress

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

댓글 0

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

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