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

레퍼런스 보드, 가리키되 복사하지 않는다

~13 min · reference-boards, eagle, ownership, read-through

Level 0빈 종이
0 XP0/35 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"보드는 레퍼런스가 어디에 얼마나 크게 놓였는지를 기억해. 정작 레퍼런스 자체는 안 갖고 있고. 배치를 가진 게 라이브러리를 가진 건 아니거든."

PureRef 같은 판인데, 오래 남고 엔진이 갖고 있다

레퍼런스 보드는 익숙한 그 판이야. 끝이 없다시피 한 화면에서 레퍼런스 이미지를 밀고 확대하고 늘어놓으면서 관찰하는 곳. PureRef 같은 도구가 하던 그 일이지. 다른 점은 Loomis 가 보드를 자기 것으로 갖고 있다는 거야. 보드는 진짜 미술 스터디 상태거든. 레퍼런스를 어떻게 늘어놨는지가 네 연습의 일부라, 브라우저를 새로고침해도 접속 주소가 바뀌어도 기기를 옮겨도 남아 있어야 해. 그래서 보드가 데스크톱 앱의 로컬 파일에 갇혀 있지 않고, 엔진이 지키는 상태로 살아.

가리키기만 하고 복사는 안 한다

여기가 소유의 핵심이야. 보드는 Eagle 레퍼런스를 번호로 늘어놔. 원본마다 가리키는 표를 저장해두고 실제 이미지는 필요할 때 읽어오는 거지. Eagle 라이브러리를 Loomis 쪽으로 복사해 두 번째 창고를 만들지 않아. 보드가 실제로 저장하는 건 배치야. 레퍼런스가 어디 놓였고 얼마나 크고 얼마나 돌아갔고 위아래 순서가 어떻고 잠겨 있는지, 원본은 안 건드리는 자르기까지. 자리와 픽셀을 딱 갈라놓은 거야. 픽셀은 Eagle 것, 자리는 보드 것. Eagle 에서 원본을 고치면 그걸 가리키던 모든 보드가 바로 바뀐 걸 보여줘. 어긋날 사본이 애초에 없었으니까.

딱 하나의 예외

예외가 정확히 하나 있는데 일부러 아주 좁게 냈어. Eagle 에서 고른 게 아니라 보드에 직접 붙이거나 떨군 이미지는 보드 안에 바이트를 가져. 가리킬 Eagle 번호가 없으니까. 대신 그 바이트는 단단히 묶여 있어. 그 보드를 통해서만 접근되고, Eagle 로 슬쩍 들어가는 일도 없고, 보드가 지워질 때 같이 사라져. 편의를 위한 예외지만 두 번째 라이브러리로 자라기를 거부하는 거야. 예외를 이렇게 좁게 낸 덕에 소유 규칙이 온전히 남아. 떠도는 바이트를 위한 작고 경계 분명한 자리 하나, 그게 전부고 다른 데는 없어.

소유 경계가 시스템을 작게 지킨다

물러나서 보면 이 가족의 한 가지 책임 원칙을 미디어에 적용한 거야. 원본은 Eagle 이, 배치는 Loomis 가, 네이티브 창은 Cinder 가 갖는다. 각 시스템이 딱 하나를 갖고, 경계 너머는 흡수하는 대신 가리켜. 그래서 아무것도 뭐든 다 담는 창고로 부풀지 않아. 보드가 미디어 라이브러리가 되지 않고, Loomis 가 Eagle 이 되지 않고, 데스크톱 창은 Cinder 몫으로 남지. 이 규칙이 가족 전체를 관통해. 바이너리는 그걸 가진 시스템에 머물고, 나머지는 전부 사본이 아니라 표를 쥐고 있는 거야.

Code

보드는 픽셀이 아니라 배치를 저장한다·python
# A board stores ARRANGEMENT, not pixels. Eagle owns the originals.
class BoardItem:
    ref: EagleRef          # (source_id, item_id) -- a POINTER, read-through
    transform: Transform   # position, scale, rotation, z-order, lock, crop
    # NOTE: no image bytes here. The board never copies the original.

# The ONE exception -- images dropped DIRECTLY onto the board -- is scoped hard:
class BoardLocalImage:
    data: bytes            # owned by THIS board only, never enters Eagle
    transform: Transform   # deleted with the board; not a second library

# Eagle owns originals. Loomis owns arrangement. Cinder owns the native shell.
# Reference across the boundary; never absorb the neighbor's job.

External links

Exercise

네가, 또는 네가 쓰는 시스템이 경계를 넘어 데이터를 복사한 사례를 찾아봐. 원본 파일을 다른 앱에 복제했거나, 데이터를 두 번째 저장소로 내보냈거나, 같은 내용을 문서 여러 개에 붙여넣은 것 같은 거. 시간이 지나면서 그 사본들이 어떤 어긋남을 만들었는지, 혹은 만들 수 있는지 적어봐. 그리고 복사 대신 원본을 번호로 가리켰다면 그 문제 자체가 어떻게 사라졌을지 그려봐.
Hint
경계를 넘는 복사는 맞추는 비용을 만들어. 원본이 바뀔 때마다 손으로 퍼뜨려야 하고, 한 번 놓치면 조용히 어긋나거든. 번호로 가리키면 그 비용이 통째로 사라져. 진짜는 하나뿐이고 다들 거기서 읽어가니까 맞출 게 없어. 대신 주인 쪽에 실시간으로 의존하게 되지만, 그 대가로 어긋남이 불가능해져.

Progress

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

댓글 0

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

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