행업을 건너는 큐는 시한폭탄이야
폰이 잠겼거나 터널에 있을 때, 못 나간 키 입력을 붙들고 네트워크가 돌아오면 보내고 싶어져. 그 큐는 시한폭탄이야. 줄이 바뀌었어. 페이저가 열렸을 수도. 맥에서 확인이 답해졌을 수도. 다른 표면이 세션을 홀드하고 있을 수도. 큐를 재생하는 건 묻지 않은 현재에 과거의 나를 제출하는 거야. 입력 큐를 붙드는 끊긴 클라이언트는, 지금은 no 인 프롬프트에 yes 를 싣거나, 지금은 비밀번호 칸인 셸에 명령을 싣는 길이야.
부착이 죽으면 큐를 버려. 앱이 백그라운드로 가면 버려. 다시 붙을 때도, 어떤 종류의 표면으로 돌아오든 버려. 볼 수 없는 호스트 PTY 에 정직한 "오프라인 치기 버퍼"는 없어. 오프라인 치기는, 있다면, PTY 밖의 초안에 속해. 다음 레슨의 Anvil 뷰. 스스로 Enter 를 못 누르는 곳에.
불확실한 만들기는 재시도하지 않아
새 셸을 여는 건 멱등이 아니야. 데몬더러 만들라고 했어. 영수증이 오기 전에 폰이 죽었어. 셸이 시작됐어? 어쩌면. 만들기를 재시도하면 셸이 둘, 자리가 둘, 컴파일러가 둘, 영수증은 두 번째를 가리키는데 첫 번째를 본다고 생각하게 돼. 불확실한 만들기는 둘러볼 때까지 불확실해. 세션 목록이 진실이야. 새 정체성이 있으면 거기 붙어. 없으면 지금, 새 청으로, 청하는 줄 알고 다시 물을 수 있어.
트랙 4 의 영수증이 도구야. 영수증 없으면 만들기가 끝났다고 믿지 마. 재연결에서 재시도하는 스피너는 주머니 속의 공장이야. 만들기는 보이게 실패해도 돼. 두 배가 되면 안 돼. 불확실한 홀드, 불확실한 풀기, 불확실한 Close 에도 같은 규칙이 적용돼. 그 행위들은 at-most-once, 그다음 봐. at-least-once 는 다운로드용이지 셸용도, 홀드용도, 살해용도 아니야.
재생은 출력용이지 입력용이 아니야
트랙 2 의 저널 재생은 이력을 에뮬레이터에 칠하고 부작용을 눌러. 그게 제품의 유일한 재생이야. 입력은 없어. 키 입력도, 만들기도, 홀드도, Anvil 붙여넣기도. 행업 뒤에 생각을 이어가려면 판을 보고, 다시 치거나, 아직 보이는 초안을 붙여넣어. 기계가 손가락을 너보다 잘 기억하지 않아. 출력을 기억해, 한도 있게, 접두가 불완전하면 그것조차 "동기화됨"이라고 안 불러.
재연결 길을, 발사되면 안 되는 것들의 목록으로 리뷰해. 키 입력 큐, 확인 안 된 만들기, 저장해 둔 홀드, 초안의 자동 Enter, 폰의 새 크기로 리사이즈. "사용자가 원했을 테니까" 그중 하나라도 발사되면, 제출하는 사용자 모델을 만든 거야. 사용자는 지금 여기서 화면을 보고 있어. 소리 내 원하게 해.