인라인 문서 추가하기

대부분의 경우 hello() 와 같은 중요한 함수에 어떤 종류의 문서를 추가하는 것은 좋은 생각이다. 한가지 방법은 다음과 같이 C 스타일의 주석을 사용하는 것이다.

1
2
3
4
/* The classic Hello World program */
void hello() {
print("Hello, World!");
}

또는

1
2
3
4
//The classic Hello World program
void hello() {
print("Hello, World!");
}

그러나 정의를 기술하기 위한 주석으로 doc 어노테이션을 사용하는 것이 더 낫다.

1
2
3
4
5
6
7
doc ("The classic Hello World program")
by ("Gavin")
see (goodbye)
throws (IOException)
void hello() {
print("Hello, World!");
}

doc, by, see, throws, tagged 어노테이션은 Ceylon 문서화 컴파일러인 ceylon doc 의 출력에 포함될 내용을 가진다.

doc, by, see, throws 와 같은 어노테이션은 키워드가 아니다. 그냥 평범한 식별자이다. abstract, variable, shared, formal, default, actual 등의 언어 정의의 한 부분인 어노테이션들도 마찬가지다.(반면에, void 는 C 나 Java 처럼 키워드이다.)

doc 어노테이션은 어디에나 존재할 수 있기 때문에, 프로그램 요소의 어노테이션 목록에서 첫번째 어노테이션에 위치하면 이름과 괄호를 생략할 수 있다

1
2
3
4
5
6
7
"The classic Hello World program"
by ("Gavin")
see (goodbye)
throws (IOException)
void hello() {
print("Hello, World!");
}
Share Comments

문자열 리터럴

이미 본 것처럼, 문자열 리터럴은 큰따옴표 사이에 들어있는 텍스트이다.

1
2
3
void hello() {
print("Hello, World!");
}

Ceylon 의 문자열 리터럴은 여러줄로 나눌 수 있다.

1
2
3
4
void hello() {
print("Hello,
World!");
}

출력은 다음과 같다.

1
2
Hello,
World!

문자열 리터럴의 두번째 줄이 가지고 있는 문자열 리터럴의 첫번째 줄의 첫번째 문자까지의 공백은 자동적으로 제거된다. 이는 코드가 멋지게 포맷되도록 한다.

여러줄 문자열 리터럴에서 공백을 제거하는 것은 자주 유용하다. String 클래스는 normalized 라는 속성을 가진다. 다음과 같이 사용할 수 있다.

1
2
3
4
5
void hello() {
value message = "Hello,
World!";
print(message.normalized);
}

출력 결과는 다음과 같다.

1
Hello, World!

여러줄 문자열은 프로그램에 문서를 추가할 때 특히 유용하다.

Share Comments

서툰 사람들

서툰 사람들 포스터

회사에서 단체로 연극을 관람했다. 제목은 <서툰 사람들> 이다.

대학 신입생때 부산에서 본 연극이었다. 보면서 조금씩 기억이 떠올랐다.

배우의 표정 연기나 대사가 아니라 연극의 상황 자체에 웃을 수 있는 그런 작품이었다.

Share Comments

커맨드 라인에서 프로그램 실행하기

한번 해보자. 위 코드를 ./source/hello.ceylon 으로 저장하고 아래의 명령을 수행하라.

1
2
ceylon-0.5/bin/ceylon compile source/hello.ceylon
ceylon-0.5/bin/ceylon run --run hello default

ceylon-0.5 는 Ceylon 이 설치된 디렉토리의 경로이다. Hello, World! 라는 메시지를 볼 수 있을 것이다. ./modules/default 디렉토리에 default.car 라는 컴파일된 모듈 아카이브가 있을 것이다.

다음은 아주 유용한 트릭이다.

1
2
ceylon-0.5/bin/ceylon help compile
ceylon-0.5/bin/ceylon help run

ceylon help 명령은 ceylon 서브명령에 대한 사용 정보를 출력한다.

만약 커맨드 라인 툴을 시작하는데 문제가 있다면 예제 컴파일과 실행을 해보자.

JDK 선택하기

Ceylon 은 Java 7 이 필요하기 때문에 사용하고 있는 Java 버전이 맞는지 확인할 필요가 있다.

1
2
3
4
5
6
bash$ java -version
java version "1.7.0_05"
Java(TM) SE Runtime Environment (build 1.7.0_05-b06)
Java HotSpot(TM) 64-Bit Server VM (build 23.1-b03, mixed mode)
bash$ javac -version
javac 1.7.0_05

만약 다른 버전의 Java 를 사용하고 있다면, Java 7 로 변경해야 한다.

  • Linux 에서는 update-java-alternatives 를 사용한다.
  • Mac 에서는 System Preferences applet 를 이용한다.
  • Windows 에서는 JAVA-HOME 환경 변수를 설정한다.

문자 인코딩 설정하기

만약 Ceylon 프로그램을 컴파일 하는 중에 다음의 에러나 비슷한 것을 본다면

1
unmappable character for encoding ASCII

소스 파일의 인코딩과 OS 의 기본 문자 인코딩이 일치하지 않는 것이다. 아래와 같은 명령줄로 문자 인코딩을 명시적으로 정해야 한다.

1
ceylon compile --encoding UTF-8 source/hello.ceylon
Share Comments

A really simple program

여기 고전적인 예제 프로그램이 있다.

1
2
3
void hello() {
print("Hello, World!");
}

이 함수는 Hello, World! 를 콘솔에 찍는다. 어떤 타입의 멤버도 아니기 때문에 이 함수를 최상위 레벨 함수라고 부른다. 최상위 레벨 함수를 호출하기 위해 객체를 받을 필요가 없다. 대신에 다음처럼 호출만 하면 된다.

1
hello();

Ceylon 은 Java, C++, C# 에서 볼 수 있는 static 메소드를 가지지 않지만 최상위 레벨 함수가 같은 역할을 하고 있다고 보면 된다. 이렇게 차이가 나는 이유는 Ceylon 은 아주 엄격한 블록 구조를 가지고 있기 때문이다. 중첩된 블록은 포함하는 블록의 선언에 항상 접근할 수 있다. Java 의 static 메소드의 경우와는 다르다.

Ceylon 은 아직 스크립팅을 지원하지 않는다. 함수나 클래스 밖에서 print(“Hello World!”); 라고만 적는것은 안된다. 다음은 잘못된 프로그램이다.

1
print("Hello, World!"); //error: must occur inside a function or class
Share Comments

Another Earth

한순간의 실수로 교통사고를 내고 살인자가 된 주인공이 스스로를 용서해가는 과정을 그린 영화이다.

영화내내 스릴러같은 분위기를 낸다.

재미있지는 않다.

Share Comments

Ubuntu에 Enlightenment e17 설치하기

1
2
3
sudo apt-add-repository ppa:hannes-janetzek/enlightenment-svn
sudo apt-get update
sudo apt-get install e17
Share Comments

Ubuntu에 Sublime Text 설치하기

1
2
3
$ sudo add-apt-repository ppa:webupd8team/sublime-text-2
$ sudo apt-get update
$ sudo apt-get install sublime-text
Share Comments

ubuntu 11.04에서 마우스 휠 속도가 너무 빨라요

마우스를 연결 해제하고 다시 연결하면 된다.

Share Comments

The Quick Change Show Movie Theme From Korea

나의 리즈 시절… 같이 마술하던 동생이 엄청난 마술사가 되어 돌아왔다.

처음부터 그 싹이 보이긴 했지만 그동안 얼마나 힘든 과정을 겪었을까?

자랑스럽고 대견하다. 현민아! 화이팅!! 세계 최고의 마술사가 되거라!!

Share Comments