Pharo 로컬 설치

자신의 컴퓨터에서 Exercism 연습 문제를 풀 수 있도록 Pharo를 로컬에 설치하는 방법을 배워요


설치

Pharo를 설치하는 가장 간단한 방법은 터미널 명령줄에서 zero conf 다운로드를 사용하는 거예요.
참고: 이미 설치된 것을 업그레이드하려면 업그레이드 안내를 참고해요.

UNIX 스타일 셸이 설치되어 있지 않은 Windows 사용자는 아래의 Windows 설치 안내로 건너뛰어요.
좀 더 고급 Linux 사용자는 Linux 해커 설치를 참고해도 좋아요.

Linux/OSX 설치

Linux/OSX의 경우 (Exercism을 설치하고 Pharo 트랙에 참여했다고 가정하면), /Exercism/pharo-smalltalk 디렉터리로 이동해서 다음을 입력해요:

curl https://get.pharo.org/64/ | bash

그리고 다음 "로드 스크립트"를 붙여넣어 Exercism 도구가 포함된 Pharo를 실행해요:

./pharo-ui Pharo.image eval "
Iceberg remoteTypeSelector: #httpsUrl.
Metacello new
 baseline: 'Exercism';
 repository: 'github://exercism/pharo-smalltalk:main/releases/latest';
 load.
#ExercismManager asClass welcome.
"

도구를 로드할 때 TIMEOUT 문제가 생기면 Pharo를 종료하고 다음을 입력해 git 캐시를 지워요:

rm -rf pharo-local/iceberg/

그런 다음 위의 ./pharo-ui ... 예제를 반복해요.

계속 문제가 있다면 Pharo 커뮤니티 페이지에 설명된 Pharo Discord 채널을 방문해 보세요.

모든 것이 제대로 작동한다면 로딩 진행 표시줄이 화면을 가로질러 깜빡이고, 그다음 System Browser 창이 나타나요.

팁: Pharo를 종료할 때는 변경 사항을 저장해요 (Pharo 메뉴를 열고 "Save and Quit"을 선택해요). 이제 다음을 입력하기만 하면 Exercism이 이미 로드된 Pharo를 시작할 수 있어요:

./pharo-ui Pharo.image

Windows 설치 (OSX/Linux는 건너뛰어요)

아직 Windows에서의 최적의 명령줄 도구 사전 요구 사항을 정리하는 중이지만, Windows Pharo Launcher를 사용해 그래픽으로 Pharo를 설치할 수도 있어요 (여러 Pharo 이미지를 관리할 때 편리한 도구예요). GUI를 선호한다면 이 런처는 OSX와 Linux에서도 사용할 수 있어요.

  1. 다운로드한 .msi 파일을 실행해 Pharo Launcher를 설치해요.

  2. Pharo Launcher를 실행해요.

  3. 왼쪽 위 모서리에서 "New"를 클릭해요.

  4. 창에서 템플릿 범주 중 "Official distributions"를 선택해요.

  5. Exercism 연습 문제의 경우, Pharo 이미지 템플릿 목록에서 최신 안정 릴리스를 선택해요 (현재는 "Pharo 10.0 64-bit (stable)"을 권장해요).

  6. 이미지 템플릿을 클릭해 선택하고 이름을 지정한 다음, 아래쪽의 이미지 생성 버튼(주황색 톱니 모양)을 클릭해요.
    런처에서 이미지 생성

  7. 템플릿 다운로드가 끝나면 오른쪽의 Existing Images 표에 나타나요. 그것을 클릭한 다음 위쪽의 실행 버튼(녹색 재생 화살표)을 클릭해요.
    이미지 실행

  8. Pharo 이미지가 시작되면, Browse 메뉴를 열고 _Playground_를 선택해 Playground를 열거나 ctrl + o + w를 사용해요.
    Playground 열기

  9. 마지막으로, 다음 코드 조각을 Playground에 복사해서 붙여넣어요:

Iceberg remoteTypeSelector: #httpsUrl.
Metacello new
 baseline: 'Exercism';
 repository: 'github://exercism/pharo-smalltalk:main/releases/latest';
 load.
#ExercismManager asClass welcome.

그런 다음 붙여넣은 코드를 전부 선택하고 마우스 오른쪽 버튼을 클릭한 뒤 메뉴에서 _Do it_을 선택해 실행해요 (ctrl + d를 사용해도 돼요).

모든 것이 제대로 작동한다면, 로딩 진행 표시줄이 화면을 가로질러 깜빡이고, 그다음 System Browser 창이 나타나요.

시작하기 (전체)

Pharo를 실행하면 System Browser에 Welcome 프로젝트가 보여요 (팁: 이 창을 잃어버렸다면 Tools|System Browser 메뉴에서 새로 열 수 있어요).

Pharo 시작 화면

System Browser의 왼쪽 위 패널에는 환경의 패키지들이 보이고, 설치 스크립트가 이미 Exercism이라는 패키지를 구성해 두었다는 것을 알 수 있어요. 이 패키지에는 Welcome이라는 하위 프로젝트 태그가 들어 있어요. 두 번째 패널에는 클래스들이 나오는데, 여기에도 Welcome이라는 클래스가 있어요. 클래스 패널 아래에는 라디오 버튼 네 개가 있는데, "Flat"(패키지의 클래스를 보여줘요), "Hier."(클래스 계층 구조를 보여줘요), "Inst. side"(인스턴스 메서드를 보여줘요), "Class side"(클래스 메서드/생성자를 보여줘요)예요.

Comment 탭을 클릭하면 Pharo Exercism 사용에 관한 최신 안내를 볼 수 있어요. 설명을 읽고 첫 번째 테스트를 실행해 봐요.

다른 파일 기반 언어라면 이 시점에서 보통 터미널로 이동해 Exercism CLI로 다음 연습 문제를 가져올 거예요. Pharo도 비슷한 방식으로 파일을 다룰 수 있지만, 이 환경은 사실 살아 있는 객체와 함께 작동하도록 맞춰져 있어요. 흥미롭게도 클래스, 메서드, 소스 코드는 Pharo의 다른 모든 것과 마찬가지로 모두 객체예요. 이 트랙을 진행하면서 이에 대해 더 많이 배우게 될 거예요.

연습 문제 불러오기

Exercism을 위해 IDE 안에서 Pharo 연습 문제를 가져오고 제출할 수 있는 플러그인을 포함해 두었어요. 연습 문제 패키지(여기서는 왼쪽 위 패널의 Welcome 패키지)를 마우스 오른쪽 버튼으로 클릭하고 Exercism | Fetch Exercise 메뉴 항목을 선택하기만 하면 돼요. 그러면 연습 문제 이름(예: hello-world)을 입력하라는 메시지가 나오고, 입력하면 자동으로 가져와 줘요.

연습 문제 이름은 Pharo 트랙 페이지의 각 연습 문제 설명에서 (맨 오른쪽에서) 찾을 수 있어요. 각 연습 문제 키가 들어 있는 CLI 문자열과 함께 Download 안내가 있어요. CLI 안내 옆의 복사 버튼을 사용해 전체 문자열을 가져오기 프롬프트에 붙여넣어도 돼요 (그러면 키를 자동으로 추출해 줘요).

유효한 연습 문제를 입력하면 플러그인이 관련 코드를 가져와 System Browser에 표시하고, 테스트와 함께 코딩을 시작할 준비가 돼요.

모든 테스트가 통과하면 연습 문제 패키지의 동일한 상황에 맞는 메뉴를 사용해 풀이를 제출할 수 있어요 (패키지 태그를 마우스 오른쪽 버튼으로 클릭하고 Exercism | Submit Exercise...를 선택해요).

Exercism 제출 메뉴

마지막으로 Exercism | View Track Progress 메뉴를 사용해 Exercism 웹사이트를 방문하면 어떤 다른 연습 문제가 잠금 해제되었는지 확인할 수 있고, 멘토가 읽을 수 있도록 제출한 풀이에 관한 질문을 올릴 수도 있어요.


알고 계셨나요: Pharo를 실행할 때는 실제로 실행 이미지 스냅숏을 복원하는 거예요. VMWare 운영 체제 이미지와 비슷하죠. 이것은 작업 도중에, 어쩌면 디버깅 중에도 작업을 일시 중단할 수 있게 해 주는 강력한 개념이에요. 다음에 Pharo를 다시 실행하면 복원된 디버거에서 코드를 계속 단계별로 실행하거나 리팩터링 단계를 계속할 수 있어요.

CLI 토큰 재설정 방법

보안 문제로 CLI 토큰을 재설정해야 하는 경우, Exercism 설정 페이지를 방문해 토큰 재설정 버튼을 사용해요. 그렇게 한 뒤에는 Playground에서 다음 코드를 실행해 Pharo Exercism의 이전 토큰을 지워야 해요:

ExercismHttpClient
    reset;
    promptForToken.

Pharo Exercism 업그레이드 방법

때때로 Pharo Exercism 이미지의 라이브러리를 업데이트해야 할 수 있어요. 이 안내를 따라 주세요.