SqueakByExample:6.8

From 흡혈양파의 번역工房
Revision as of 07:37, 16 August 2012 by Onionmixer (talk | contribs) (SBE 변경세트와변경분류기 페이지 추가)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

변경세트와 변경 분류기(Change sets and the Change Sorter)

그림 6.33: 변경세트 브라우저(The Change Set Browser)


스퀵에서 여러분이 작업할 때마다, 여러분이 메소드와 클래스에 가한 변경사항들은 변경세트(a change set)에 기록됩니다. 이 기록은 새로운 클래스 만들기, 클래스 이름 다시 만들기, 카테고리 변경하기 현존하는 클래스에 메소드 추가하기를 포함한, 모든 중요한 작업들에 관한 내용입니다. 그럼에도 불구하고, 임시 doits는 포함되지 않으며, 만약 포함시키려면, 예컨데, 여러분은 워크스페이스에 글로벌 변수를 할당함으로써 새로운 글로벌 변수(global variable)를 만들어야 하고, 그 변수 생성은 변경 세트 내부에 만들어지지 않을 것입니다.

언제든지, 많은 변경 세트들이 존재하지만, 그것들 중의 오직 한 개만이 현재의 변경세트(ChageSet current)이며, 그것은 이미지에 가해지고 있는 변경사항들을 수집합니다. 여러분은 World ▷. open...▷ simple change sorter 를 사용하거나 또는 Tools flap 밖으로 Change Set 아이콘을 드레그하여 어떤 변경세트(change set)가 현재(current)상태인지를 확인하실 수 있고 또한 모든 변경 세트를 검사할 수 있습니다.

그림 6.33은 이 브라우저를 보여드립니다. 타이틀 바는 어떤 변경세트가 현재 것이며, 브라우저를 열었을 때, 그 변경세트가 선택되었다는 것을 보여드립니다.

다른 변경 세트들은 상단 왼쪽 패널에서 선택될 수 있으며, 노랑버튼 메뉴는 다른 변경 세트를 현재 상태로 만들 수 있게 해드리거나 새로운 변경세트를 만들 수 있게 해드립니다.상단 우측 패널은 선택된 변경세트(그것들의 카테고리들과 함께)에 의해 영향을 받을 모든 클래스들을 열거합니다. 클래스들 중 하나를 선택하면, 그 작업은 중앙 패널에 있는 변경세트( 클래스의 모든 메소드들이 아닌)에 있는 클래스의 메소드들의 이름을 디스플레이하며, 메소드 이름을 선택하면 하단 패널에 메소드 정의를 디스플레이 합니다.


그림 6.34: 분류기변경


비록, 정보가 변경세트를 나타내는 작업에 사용된 오브젝트 구조(the object structure)에 저장된다 할지라도, 브라우저는 클래스의 생성 자체가 변경 세트의 일부인지 아닌지를 보여드리지 않는 다는 것에 주목합니다. 변경세트 브라우저는 여러분이 대응하는 아이템(the corresponding items)에서 노랑 버튼 메뉴를 사용하여 변경세트로부터 클래스들과 메소드들을 지울 수 있게 해드리지만, 그럼에도 불구하고, 변경세트의 좀더 정교한 편집을 위해, 그림 6.34에 보이는 처럼, 도구 플랩에 있는 이름또는 World ▷. open▷... . dual change sorter를 사용하여 2차도구(second tool)인 변경 분류기(the change sorter)를 사용해야만 합니다.

변경 분류기(the change sorter)는 본질적으로 두 개의 변경 세트 브라우저를 나란히 정렬 하며 각 측면은 다른 변경세트, 클래스 또는 메소드에 집중할 수 있습니다. 이 레이아웃은 그림 6.34에 보이는 것 처럼 변경 분류기(the change sorter)의 주요 기능이며, 이는 한 개의 변경 세트에서 다른 변경 세트로 변경사항들을 이동시키거나 복사하는 기능입니다.

여러분은 왜 변경세트의 구성에 관해 관심을 가져야만 하는지 의아해 하실 것입니다. 그 답은 변경 세트가 스퀵에서 다른 파일 시스템으로 코드를 내보내고 그 파일 시스템에서부터 다른 스퀵 이미지 내부로 코드를 내보내거나 또 다른 비-스퀵 스몰토크로(non-Squeak Smalltalk) 내보내는 작업에 필요한 단순한 메커니즘을 제공하기 때문입니다. 변경 세트 내보내기(Change set export)는 "filing-out" 으로 알려져 있으며, 모든 변경세트와 브라우저에서 클래스 또는 메소드 중 하나에서 노랑 버튼 메뉴를 사용하여 실행될 수 있습니다. 반복되는 file outs(Repeated file outs)은 파일의 새로운 버전을 만들지만, 변경세트들은 몬티첼로와 같은 versioning 도구가 아닙니다: 이것들은 종속성(dependencies)을 계속 파악하지 않습니다.

몬티첼로의 출현 이전에, 변경세트(change sets)는 스퀵 사용자들 사이에서 코드를 교환하는 주요 수단이었습니다. 그들은 단순성과 [파일나가기(file out)는 비록 우리가 여러분에게 텍스트 에디터(text editor)로 편집을 권해드리지 않아도, 단지 text file입니다.] 이동성을 활용하였습니다. 시스템의 많은 다양하고 관련되지 않은 부분들- 몬티첼로가 그것들을 수행하기에는 아직 준비되지 않은 것들-에 변경사항들을 가하는 변경세트를 만드는 것은 꽤 쉽습니다.

몬티첼로 패키지와 비교할 때, 변경 세트의 주요 결점은, 종속성(dependencies)의 개념(notion)을 지원하지 않는 것입니다. 파일 나가기(Filed-out) 변경 세트는 그 변경세트가 로드 되어 들어갈 모든 이미지를 변경하는 액션들의(actions) 세트(set)입니다. 변경세트를 성공적으로 로드하려면 이미지가 적합한 상태에 있어야 합니다. 예를 들면, 변경 세트는 아마도 클래스에 메소드를 더하기 위한 액션(action)을 포함하고 있을 것입니다. 이 작업은 오직 클래스가 이미지 내부에서 이미 정의되었을 때에만 수행될 수 있습니다. 이와 유사하게, 변경세트는 아마도 클래스 이름을 다시 지었거나 재 범주화( re-categorize)를 시켰을 것이며, 이 작업은 분명히 클래스가 이미지 안에 현존할 때에만 수행될 것이며, 메소드들은 아마도 파일 나가기(filed out)가 되었겠지만, 그 메소드들이 들여오기(imported) 되었던 그 이미지 안에 존재하지 않는, 공표된(declared) 인스턴스 변수들만을 사용할 것입니다. 문제는 변경세트들이 명백하게 그것들이 파일에 들어가기가 된(filed in) 조건들(the conditions)을 묘사하지 않는다는 것입니다: 프로세스 중인 파일이 단지 최상으로 작동될 것을 희망할 뿐이며, 무엇인가 잘못 되었을 때, 보통 난해한 에러 메시지와 스텍 자취(a strack trace)의 결과를 가져옵니다. 심지어 파일 들어가기(file in)가 잘 되어도, 하나의 변경 세트는 아마도 다른 변경 세트에 의해 변경사항을 조용히 입력취소(undo) 할 수도 있습니다.

반대로, 몬티첼로 패키지들은 서술문 방식(declarative fashion)으로 코드를 표현합니다: 그 패키지들은 이미지의 상태를 로드된 후의 상태가 되도록 묘사해야 합니다. 이 작업은 몬티첼로로 하여금 여러분에게 충돌에 대하여 [두 개의 패키지들은 모순되는 최종 진술들을(final states) 요구합니다] 경고를 허락하고, 종속성 명령(dependency order)에 일련의 패키지를 로드할 수 있도록 해드릴 것입니다.

이 결점들에도 불구하고, 변경세트들은 여전히 나름대로의 사용처들을 갖고 있습니다. 특별히, 여러분은 보기를 원하거나 아마도 사용하기를 원하는 인터넷에서 변경세트들을 찾을 수 있습니다. 그러므로 우리는 변경분류기(the change sorther)를 사용하여 변경 세트(change set)를 파일 나가기(file out) 하여, 이제 여러분에게 어떻게 파일 들어가기를(file in) 하는지 말씀드릴 것입니다. 이 작업은 다른 도구인, 파일 목록 브라우저(the file browser)를 필요로 합니다.

Notes