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

day bundle 이 단위야

~9 min · day-bundle, assembly-unit, date-shaped, scope

Level 0식은 화로
0 XP0/35 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"draft 는 한 저널의 한 날짜를 조립한 글이야. day bundle, 그러니까 crumb·미디어·draft 가 그 canonical 단위지."

조립엔 알갱이가 필요하고, 그 알갱이는 하루야

'전부' 를 조립할 순 없어. 뽑아내려면 범위가 필요해. Vesta 의 확정된 답은 그 범위가 하루라는 거야. draft 는 한 저널의 한 날짜를 조립한 글이고, day bundle, 그러니까 그 날짜의 crumb·미디어·draft 가 조립이 다루는 canonical 단위야. Waystone 의 Assemble Today 를 그대로 물려받은 거지. draft 는 날짜 모양이지 쿼리 모양이 아냐. '3년에 걸친 정원에 대한 내 crumb 전부' 를 조립하는 게 아니라, 이 저널의 3월 14일을 한 페이지로 조립해.

하루를 알갱이로 고른 건 진짜 설계 결정이고 저널엔 맞는 결정이야. 하루가 사람이 실제로 오가는 경계니까. 넌 날 단위로 생각해. '그 토요일 어땠지?' 무한 쿼리가 아니라. 쿼리 모양 draft('M. 에 대한 전부')는 자연스러운 가장자리가 없어. 어디서든 끌어올 수 있고, 끝없이 자라고, 앉아서 읽을 페이지에 안 맞아. 하루는 자연스러운 가장자리와 크기, 타임라인 위 자리를 가져. 제품 전체가 이미 그 알갱이 둘레로 짜여 있어.

사용자가 이미 생각하는 단위를 골라. 뽑아내는 범위는 쿼리하기 쉬운 경계가 아니라 사람이 오가는 경계에 맞아야 해. 저널엔 하루, 여행엔 여행 날, 다른 것엔 프로젝트나 릴리스일 수 있어. 알갱이를 머릿속 모델에 맞추면, 모든 결과물이 읽는 사람이 기대하는 자리에 떨어져.

주와 달은 view 지, 더 큰 단위가 아냐

당연히 한 주나 한 달을 보고 싶을 거야. 그건 있어. view 로, 날들의 범위 위 projection 으로. 하루와 겨루는 더 큰 조립 단위가 아니라. day bundle 이 원본으로 남아. 더 큰 조립 규모(한 달 정리, 연간 회고)는 진짜 미래 ring 이고, 오면 근거 있는 하루치 제안을 입력으로 쓰면서 검토 status 를 대놓고 남겨. day bundle 의 원본 자리를 밀어내는 게 아니라 그 위에 지어. 먼저 알갱이, 그다음 그걸 존중하는 묶음.

왜 사용자가 아무 범위나 못 고르게 해?

조립을 완전 자유형으로, '고른 아무 crumb 이나 조립해' 로 만들고 싶어져. 근데 무한하고 제멋대로인 범위는 day bundle 의 깔끔한 모양을 조용히 깨. 특정 날짜를 안 걸치는 draft 는 하루에 못 속하니까 타임라인에 못 앉고, 그날의 열리는 draft 가 못 되고, 자리채움 날짜 문제를 다른 각도에서 다시 열어. canonical 단위를 날짜 모양으로 지키는 게 모든 draft 가 축 위에 집을 갖게 해. 자유형 쿼리 조립은 나중에 의도적 기능으로 올 수 있어. 근데 day bundle 위에 이름 붙은 것으로 지어지지, 그걸 녹여서가 아냐.

Code

day bundle — canonical 조립 단위·typescript
interface DayBundle {
  journal_id: string;
  target_date: string;   // the one date this bundle is about
  crumbs: Crumb[];       // every crumb filed to this journal + date
  media: MediaReference[];
  draft: Draft | null;   // the assembled page for this day, if any
}

// assembly reads ONE day bundle and proposes ONE date-shaped draft:
function assembleDay(bundle: DayBundle): Draft { /* ... */ }

// week / month are VIEWS over many bundles, not a bigger unit:
function weekView(bundles: DayBundle[]): DayBundle[] { return bundles; }

External links

Exercise

데이터를 요약하거나 묶어 올리는 네가 아는 시스템에서, 조립 알갱이를 짚어 봐. 요약 하나가 '대상으로 삼는' 단위 말이야. 그게 사용자가 실제로 오가는 단위야, 아니면 쿼리 편하려고 고른 거야? 그다음 어느 더 큰 묶음이 그 알갱이 위 view 여야 하고 어느 게 진짜 새 단위여야 할지 정해 봐. 자연스러운 경계에서 떠다니는 쿼리 모양 결과물을 조심해.
Hint
좋은 알갱이는 보통 사용자가 이미 입에 올리는 명사야. 하루, 스프린트, 릴리스, 주문. 요약이 이름 붙일 수 있는 단위 대신 제멋대로인 필터를 '대상으로 삼으면', 자리 잡기 어렵고 찾기 어렵고, 자리채움 날짜랑 같은 떠다니는 범위 문제에 걸려.

Progress

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

댓글 0

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

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