라이브는 구독자지 저장소가 아니야
두고 나가는 터미널은, 없는 동안 무슨 일이 있었는지를 기억해야 해. 순진한 설계는 바이트를 화면에 쓰고 화면이 그대로이길 바라. 그건 저장소인 척하는 투영이야. Smolder 는 출력을 먼저 한도 있는 저널에 순서 붙이고, 붙어 있는 쪽에 발행해. 저널이 순서 있는 기록이야. 화면은 구독자야. 그걸 뒤집으면 창의 충돌이 이력의 구멍이 되고, 다시 붙는 폰은 따라잡을 정직한 게 없어.
한도는 성능 주석이 아니야. 한도 없는 저널은, 데몬이 안전하게 지킬 수 있는 크기를 넘을 때까지 자라는 디스크야. 한도(남는 출력의 고리, 오래된 덩어리는 버려짐)가 주인을 다시 켤 수 있게 하는 방법이야. 소유했다고 무한 스크롤백이 따라오지 않아. 프로세스가 최근에 내보낸 것의 진실한 접두를 얻고, 그게 접두라는 걸 아는 거야.
저장이 실패해도 라이브는 죽이면 안 돼
저널이 못 쓸 수 있어. 디스크가 차고, 권한이 없고, 볼륨이 사라질 때. 그래도 붙어 있는 투영에는 라이브 출력이 가야 해. 보존이 떨어져. 불은 안 떨어져. 파일에 못 적는다고 인쇄를 거부하는 데몬은, 장부와 일을 혼동한 데몬이야. 보존이 떨어졌다는 건 보여야 해. 로그 파일이 싸운다고 판이 멈추면 안 돼.
그 갈라짐은 첫 레슨의 소유 갈라짐을 바이트에 적용한 거야. 프로세스는 살아 있어. 그리는 면은 없을 수 있어. 저장소는 절뚝일 수 있어. 스트림을 끝내도 되는 건 프로세스의 죽음뿐이야. 나머지는 구독자의 나쁜 날이고, 구독자의 나쁜 날은 살해가 아니야.
재생은 다시 돌리는 게 아니야
투영이 붙으면 주인은 먼저 경계를 정해. 이 순서 번호까지는 이력이고, 그 뒤는 라이브야. 그다음 경계까지 남아 있는 출력을 에뮬레이터에 재생해서 화면이 빈칸이 아니라 머물 곳처럼 보이게 하고, 그 뒤에야 경계 다음의 라이브 바이트를 순서대로 이어 붙여. 두 번 발행되는 것도, 틈에 빠지는 것도 없어. 재생은 부작용을 눌러. 자식에게 바이트를 다시 보내지 않아. 방금 일어난 것처럼 벨을 다시 울리지 않아. 명령을 다시 돌리지 않아. 이력을 칠해. 프로세스에 말을 거는 재생은 프롬프트를 복제하거나, 더 나쁘면 제출을 복제하는 길이야.
불완전한 접두는 절대 화면으로 칠하지 않아. 남은 게 충분히 거슬러 올라가지 못하면, 그러니까 화면이 줄 중간에서, TUI 프레임 중간에서, 이제는 없는 clear 뒤에서 시작하게 되면, Smolder 는 그 바이트를 에뮬레이터에 넣고 따라잡았다고 하지 않아. 화면 재생을 건너뛰고, 살아 있는 프로세스는 그대로 두고, 남은 출력을 읽을 수 있는 평범한 텍스트로 내줘. 맥에서는 판이 한 줄로 그렇다고 말하고, Shell → Show Recovered Output… 에 그 텍스트를 두고, Control-L 같은 프로그램의 다시 그리기 키를 권해. 잘린 고리 위에 "따라잡음"이라고 도는 스피너는, 한 번도 온전하지 않았던 화면을 믿게 만드는 길이야. 따라잡음은 "아직 가진 게 이거야"를 있는 그대로 보여 주는 거야.