SqueakByExample:6.10
스몰토크에서, 여러분은 코드를 잃어버릴 수 있습니다
스퀵에서 충돌이 일어날 확률은 꽤 많습니다: 스퀵은 실험 시스템으로서,스퀵이 작동되게 하는데 있어 핵심적인 것들을 포함한 모든 것들에 대해 여러분의 변경을 허용합니다.
짖굿게 스퀵을 충돌시키려면, 오브젝트를 nll이 되도록 시도하십시오.
좋은 소식은 심지어 여러분이 충돌을 시키고 여러분의 이미지의 마지막 저장된 버전으로 돌아가도 여러분은 결코 어떤 작업도 잃어버리지 않으실 것이라는 점이며, 그 작업은 아마도 몇 시간 정도의 나이를 가질 것입니다. 그 이유는 여러분이 실행한 모든 코드들이 .chages file에 저장되었기 때문입니다. 그것이 모든 것입니다! 이것은 프로그래밍을 할 때에 클래스에 여러분이 더한 코드뿐만이 아니라 워크스페이스에서 여러분이 평가한 라이너(liners)를 포함합니다
여기에 우리가 다시 여러분의 코드를 얻는 지침이 있습니다. 여러분이 코드를 얻기 까지 이 지침을 읽을 필요가 없습니다. 그럼에도 불구하고, 여러분이 그 지침이 필요할 때, 여기서 여러분을 기다리는 것을 찾으실 수 있을 것입니다.
최악의 경우에, 여러분은 .changes file에서 텍스트 에디터(text editor)를 사용할 수 있지만, 많은 메가바이트 크기가 있으므로, 속도가 늦어질 수 있으므로 권장하지 않습니다. 스퀵은 여러분에게 더 나은 방법들을 제공합니다.
여러분의 스퀵코드를 다시 얻는 방법
스퀵을 가장 최근의 스넷샷(snapshot)으로부터 다시 시작하시고, World ▷ help ▷useful expressions 을 선택합니다. 이 선택은 유용한 표현식들의 워크스페이스를 완전히 열 것입니다. 첫 번째 3개는, 복구를 위해 가장 유용합니다.
Smalltalk recover: 10000.
ChangeList browseRecentLog.
ChangeList browseRecent: 2000.
만약 여러분이 ChangeListbrowseRecentLog를 실행하시면, 여러분이 검색하기를 원하시는 히스토리의 범위를 결정할 수 있는 기회를 갖으실 수 있습니다. 보통, 마지막 스넵샷 만큼 멀리 돌아갈 수 있는 범위로 검색을 하면 충분할 것입니다. (여러분은 ChangeListbrowseRecent:2000를 편집하여 훨씬 더 근접한 효과를 얻으실 수 있으므로, trial 또는 error를 사용한 숫자 2000는 어떤 다른 것이 됩니다)
일단 여러분이 여러분의 마지막 스넵샷(snapshot)만큼, 브라우저와 보이기(showing)와 말하기(say)와 변경을 되돌리면, 그 시간 동안 스퀵에게 수행한 모든 것들의 목록을 가질 수 있습니다. 여러분은 노랑 버튼을 사용하여 이 목록에서 아이템들을 지울 수 있습니다. 만족하실 때, 남아 있는 그것에 파일 들어가기(file in)를 할 수 있으므로, 여러분의 새로운 이미지에 변경사항들을 결합시킬 수 있습니다. 파일 들어가기를 하기 전에, 보통 변경 세트(the ordinary change set browser)를 사용하여 새로운 변경세트를 시작하는 것은 좋은 실행법이며, 그렇게 함으로써 여러분의 모든 복구된 코드는 새로운 변경세트에 있게 될 것입니다. 그 다음 이 변경세트를 파일 나가기(file out)할 수 있습니다.
최근의 변경 브라우저에서 수행할 수 있는 한 가지 유용한 것은 dolts 제거하기(remove) 입니다. 보통, 여러분은 dolts에 파일 들어가기(또한 재실행)를 하실 수 없을 것입니다. 그럼에도 불구하고 예외가 있습니다. 클래스를 만드는 작업은 dolt로서 나타납니다. 여러분이 클래스를 위해 메소드에서 새로운 클래스들을 만드셨다면 첫 번째 클래스 생성 dolts(the class creation dolts)에 파일 들어가기(file in)를 하고, 그 다음 dolts를 제거(remove)한 다음 메소드에 파일 들어가기를 해야 합니다.
저는 복구를 끝냈을 때, 저의 새로운 변경 세트를 파일 나가기(file out)하고, 이미지를 저장하지 않고 스퀵에서 나가고, 재시작 하여 새로운 변경 세트 파일이 명확하게 다시 복구되도록 만들기를 좋아합니다.