Squeak By Example xetex v1.0 을 release 합니다.

좀 오랜 시간이 걸렸습니다.

smalltalk-kr 메일링리스트에서는 이미 한번 공개한적이 있습니다만…그것과는 좀 많이 다른 버전이라 보시면 되겠습니다.

 

 

일단 검수는 대략적으로 다 이루어졌습니다만.. 이전에 공개한 버전이 mediawiki 에서 바로 만든 pdf 파일이라면 이 파일은 기존의 SBE 의 LaTeX 파일을 xetex 로 수정해서 필요한 부분들을 적용한 파일입니다.

SBE_xetex_alchever_1

 

원래 마음먹은게 제작년.

번역을 받는게 작년 연초.

이러저러한일로 wiki 에 정리를 마치는데만 3달이 걸렸고

그로부터 검수를 마음먹은게 올해 2월달부터였던거같습니다.

 

검수를 마치는데만 반년이 걸렸고(애초에 번역이 좀 거지같았습니다… 2/3 정도는 다시 손본거같네요) 아는 지인의 도움을 받아 linux 에서도 한글이 무리없이 compile 이 가능한 xetex 로 변환해서 이렇게 내놓게 됩니다. 이제야 남들이 읽어도 될만한 수준의 Squeak By Example 이 나온거같습니다.

 

사실 좀 문제가 많은 버전이기도 합니다. 원문의 LaTeX 을 xetex 으로 변환하는 과정에서 TeX source 가 변경된 부분도 꽤나 있습니다. 그리고 번역을 검수하는 과정에서 필요이상의 주석을 추가했기때문에 이미 원문과는 조금 달라진 상태라고 봐도 과언이 아니겠죠. 다행히 근래의 트렌드는 이런부분에 대해 큰 변경점이 없는고로, 현재 작업된 SBE korean 버전은 다른곳과는 연계하지 않은채로 별도의 책으로 만들어 나가볼 요량입니다. (아마도 나중에는 저작권문제가 있으니 이름도 바꿔야 겠습니다만)

 

xetex 로 작업된 소스의 주소는 아래와 같습니다.

(현재는 삭제한 상태입니다. 필요한분은 메일로 별도 연락 부탁드립니다 :D)

 

texlive 2013 에서 원활한 compile 을 보장하며 저처럼 texlive 2012 기반이신 분들은 파일안쪽의 caption_new.tar.bz2 파일을 texlive 2013 안쪽에 넣어서 파일을 최신버전으로 갱신해주셔야 올바르게 compile 이 가능합니다.

 

pdf compile 과정에서 네이버의 나눔바른고딕과 MS 사의 코딩용 글꼴인 Consolas 폰트를 사용하였습니다. 물론 xetex source 에는 이런 폰트들이 포함되어있지 않으니 참고해주시기 바랍니다.

 

시원하네요….. 번역을 받아놓고도 실제로 사람들이 볼 수 있는 수준으로 정리하는데는 훨씬 오랜 시간이 걸린거같습니다. 중간에 도와주신 지인분들께는 다시한번 감사의 말씀을 드립니다….(꾸벅)

SBE 6.5장 디버그 예제에 대한 Pharo 2.0에서의 해결법

이전글에 이어서 이제는 해결방법을 찾아보도록 하겠습니다.
(그런데 사실 스샷까지 찍고나니 그냥 ‘.’ 넣어도 될건데 괜히 삽질했다는 생각이 이제 드네요..-.-)

1. 일단 처음 이상한 부분을 확인한건 디버그에서부터였습니다. SBE의 예제 에서 나오는 메세지를 보면 다른곳에서 에러가 나온거거든요.

detect가 아닌 dot 에서 에러발생
detect가 아닌 dot 에서 에러발생

이야.. 웃기더라구요 이거….
저 스샷의 붉은 부분을 보시면 아시겠지만 FileDirectory의 dot 이라는 method를 불러야하는데…
FileDirectory 라는 class가 없다는겁니다.
이에 대한 자세한 내용은 이글 을 참고해주시면 되겠습니다.

여튼 그럼 대안이 없나 찾아봐야겠죠. 잘 보니 일단 저 dot 이라는게 뭐인지부터 좀 찾아봐야할거같았습니다.

2. Pharo 1.4를 따로 설치해서 해당되는 Class와 method가 있는지 찾아봤습니다.

pharo 1.4  에서의 FileDirectory>>dot method
pharo 1.4 에서의 FileDirectory>>dot method

뭘 하는지 자세히 보니까 extensionDelimiter를 asString으로 반환하는군요.
그럼 extensionDelimiter를 Pharo 2.0에서 찾으면 뭔가 방법이 보일거같았습니다.

3. Pharo 2.0의 Finder에서 extensionDelimiter를 쓰는걸 찾으면 아래와같은 결과를 볼 수 있습니다.

Pharo 2.0에서 extensionDelimiter를 사용하는곳의 검색결과
Pharo 2.0에서 extensionDelimiter를 사용하는곳의 검색결과

오호라.. 잘걸렸어요? 3개 클래스정도 되네요.
이중에서 Path라는 클래스의 extensionDelimiter를 사용하는걸로 하겠습니다.
하지만 정작 제가 원하는 동작이 되는지는 모르는거죠. 그래서 간단한 테스트를 진행하기로 했습니다.

4. workspace상에서 간단한 코드를 만들어 Path>>extensionDelimiter가 원하는 동작을 하는지 확인해보도록 하죠.

Path>>extensionDelimiter method의 테스트
Path>>extensionDelimiter method의 테스트

오호… Print it을 해보니까 ‘.’ 라는 결과가 나오는걸 workspace에서 확인할 수 있었습니다.
보자보자.. smalltalk에서 ‘(single quote)로 묶인건 String이라는 의미죠. 그럼 원하는 dot(쩜)이 제대로 얻어졌다는 얘기가 됩니다.

5. 이제 테스트된 결과를 실제 suffix method에 적용을 시켜볼까요.

변경된 코드를 suffix method에 적용한 결과
변경된 코드를 suffix method에 적용한 결과

이야.. 이제 원하는 결과가 나왔군요.
이전에 FileDirectory 클래스를 찾지못해 발생된 에러가 더이상 발생하지 않으며
원래 SBE문서에서 의도했던대로 detect:ifNone: 에 의해 발생되게 됩니다.

이제 원래 문서대로 학습을 진행해도 될거같습니다 😀