You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+5-5Lines changed: 5 additions & 5 deletions
Original file line number
Diff line number
Diff line change
@@ -19,7 +19,7 @@
19
19
20
20
## 소개
21
21
22
-
이 레포지토리의 문서는 Rust를 wasm에 사용하는 방법이나 주로 사용되는 작업환경뿐 아니라 기초적인 부분부터 심화 내용까지 깊이 들어가게 되면서 더 심층적인 내용을 다루게 됩니다. Rust로 놀라운 작업을 할수 있도록 도와주는 가이드 정도로 생각해주세요!
22
+
이 레포지토리의 문서는 Rust를 wasm에 사용하는 방법이나 주로 사용되는 작업환경뿐 아니라 기초적인 부분부터 심화 내용까지 깊이 들어가게 되면서 더 심층적인 내용을 다루게 됩니다. Rust로 놀라운 작업을 할 수 있도록 도와주는 가이드 정도로 생각해 주세요!
23
23
24
24
Rust와 WebAssembly를 함께 사용하는 방법을 배우고 싶다면, 책을 [여기서 온라인으로](https://rustwasm.github.io/book/game-of-life/introduction.html) 읽어보세요.
25
25
@@ -37,23 +37,23 @@ Rust와 WebAssembly를 함께 사용하는 방법을 배우고 싶다면, 책을
37
37
$ cargo install mdbook
38
38
```
39
39
40
-
바이너리 코드를 실행하기 위해 `cargo install` 경로가 `$PATH` 에 있는지 확인해주세요.
40
+
바이너리 코드를 실행하기 위해 `cargo install` 경로가 `$PATH` 에 있는지 확인해 주세요.
41
41
42
42
이제 이 경로에서 다음 명령어를 실행해주세요:
43
43
44
44
```bash
45
45
$ mdbook build
46
46
```
47
47
48
-
이 명렁어를 실행해서 책을 빌드하고 `book` 경로에 빌드된 파일들을 출력할수 있는데, 이 경로에 위치한 `index.html` 파일을 찾아 브라우저에서 확인해볼수 있습니다. 변경중인 내용을 실시간으로 확인하고 싶다면 다음 명령어를 실행하여 파일을 수정하면서 저장한 내용을 자동으로 반영할수도 있습니다:
48
+
이 명렁어를 실행해서 책을 빌드하고 `book` 경로에 빌드된 파일들을 출력할 수 있는데, 이 경로에 위치한 `index.html` 파일을 찾아 브라우저에서 확인해볼수 있습니다. 변경 중인 내용을 실시간으로 확인하고 싶다면 다음 명령어를 실행하여 파일을 수정하면서 저장한 내용을 자동으로 반영할 수도 있습니다:
49
49
50
50
```bash
51
51
$ mdbook serve
52
52
```
53
53
54
-
이 방법을 통해 자동으로 파일을 생성하고 로컬 환경에서 호스트할수 있습니다. 이렇게 `build`를 매번 실행할 필요 없이 변경된 내용을 쉽고 빠르게 확인할 수 있게 됩니다.
54
+
이 방법을 통해 자동으로 파일을 생성하고 로컬 환경에서 호스트할 수 있습니다. 이렇게 `build`를 매번 실행할 필요 없이 변경된 내용을 쉽고 빠르게 확인할 수 있게 됩니다.
55
55
56
-
이러한 파일들은 모두 마크다운 문법으로 작성됐기 때문에, 직접 파일 생성 작업을 할 필요 없이 레포지토리의 `src` 경로에서 바로 읽어볼수도 있습니다.
56
+
이러한 파일들은 모두 마크다운 문법으로 작성됐기 때문에, 직접 파일 생성 작업을 할 필요 없이 레포지토리의 `src` 경로에서 바로 읽어볼 수도 있습니다.
그 다음에는 출력된 바이너리를 (거의 모든 HTTP 서버가 하는 대로) `gzip`를 사용하여 압축해보는데, 정말 귀엽게도 바이너리 파일의 사이즈를 9,045 bytes 까지 줄일수 있게 됩니다!
24
+
그다음에는 출력된 바이너리를 (거의 모든 HTTP 서버가 하는 대로) `gzip`를 사용하여 압축해 보는데, 정말 귀엽게도 바이너리 파일의 사이즈를 9,045 bytes까지 줄일 수 있게 됩니다!
25
25
26
26
```
27
27
$ gzip -9 < pkg/wasm_game_of_life_bg.wasm | wc -c
28
28
9045
29
29
```
30
30
31
-
## 연습해보기
31
+
## 연습해 보기
32
32
33
33
*[`wasm-snip` 툴](../reference/code-size.html#use-the-wasm-snip-tool)을 사용해서 구현했던 Game of Life의 `.wasm` 바이너리에서 패닉 디버깅 함수를 제외시켜보세요. 파일의 사이즈가 얼마나 줄어드나요?
34
34
35
-
*[`wee_alloc` 를 전역 할당자 (global allocator)](https://github.com/rustwasm/wee_alloc)를 사용해보고 파일의 사이즈를 이전과 비교해보세요. 프로젝트를 시작할때 클론 했던 `rustwasm/wasm-pack-template` 템플릿은 "wee_alloc" 이라는 cargo 기능(feature)을 포함하고 있는데, 이 기능은 `wasm-game-of-life/Cargo.toml` 파일에 있는 `[features]` 섹션의 `default` 필드에 추가해서 활성화할수 있습니다.
35
+
*[`wee_alloc` 를 전역 할당자 (global allocator)](https://github.com/rustwasm/wee_alloc)를 사용해 보고 파일의 사이즈를 이전과 비교해 보세요. 프로젝트를 시작할 때 클론 했던 `rustwasm/wasm-pack-template` 템플릿은 "wee_alloc" 이라는 cargo 기능을 포함하고 있는데, 이 기능은 `wasm-game-of-life/Cargo.toml` 파일에 있는 `[features]` 섹션의 `default` 필드에 추가해서 활성화할 수 있습니다.
* 튜토리얼을 진행하는 내내 한 `Universe`만 페이지에 포함시켰는데, 생성자를 사용하는 대신 단 한개의 `static mut` 전역 인스턴스 (global instance) 만 수정하는 코드를 익스포트 해볼수도 있습니다. 이전 챕터에서 다룬 이중 버퍼링 기법 (double buffering technique) 을 사용하고 싶다면, 이러한 버퍼도 `static mut` 키워드를 사용하여 전역적으로 만들어볼수 있습니다. 이런 방식으로, 구현한 게임에서 모든 동적 할당 (dynamic allocation) 을 없앨수 있고, `#![no_std]` 속성을 추가하여 할당기(allocator)가 없는 크레이트를 만들어볼수도 있습니다. 동적 할당에 필요한 종속성을 다 없애면 `.wasm` 파일의 사이즈가 얼마나 줄어드나요?
44
+
* 튜토리얼을 진행하는 내내 한 `Universe`만 페이지에 포함시켰는데, 생성자를 사용하는 대신 단 한 개의 `static mut` 전역 인스턴스 (global instance) 만 수정하는 코드를 익스포트 해볼 수도 있습니다. 이전 챕터에서 다룬 이중 버퍼링 기법 (double buffering technique) 을 사용하고 싶다면, 이러한 버퍼도 `static mut` 키워드를 사용하여 전역적으로 만들어볼 수 있습니다. 이런 방식으로, 구현한 게임에서 모든 동적 할당 (dynamic allocation) 을 없앨 수 있고, `#![no_std]` 속성을 추가하여 할당기(allocator)가 없는 크레이트를 만들어볼 수도 있습니다. 동적 할당에 필요한 종속성을 다 없애면 `.wasm` 파일의 사이즈가 얼마나 줄어드나요?
[코드가 패닉할 때 개발자 콘솔에 도움이 되는 에러 메세지를 표시하면 디버깅이 더 쉬워집니다.](../reference/debugging.html#logging-panics)
9
+
[코드가 패닉 할 때 개발자 콘솔에 도움이 되는 에러 메세지를 표시하면 디버깅이 더 쉬워집니다.](../reference/debugging.html#logging-panics)
10
10
11
-
필수로 사용할 필요는 없지만 `wasm-pack-template`은 `wasm-game-of-life/src/utils.rs` 파일에 기본으로 활성화 돼 있는 종속성인 [the `console_error_panic_hook` 크레이트][panic-hook]를 포함합니다. 이 훅(hook)을 생성자에 포함시켜주면 이 기능을 사용할 수 있게 됩니다. `wasm-game-of-life/src/lib.rs` 파일 내의 `Universe::new` 생성자에서 불러보도록 하겠습니다.
11
+
필수로 사용할 필요는 없지만 `wasm-pack-template`은 `wasm-game-of-life/src/utils.rs` 파일에 기본으로 활성화돼 있는 종속성인 [the `console_error_panic_hook` 크레이트][panic-hook]를 포함합니다. 이 훅(hook)을 생성자에 포함시켜주면 이 기능을 사용할 수 있게 됩니다. `wasm-game-of-life/src/lib.rs` 파일 내의 `Universe::new` 생성자에서 불러보도록 하겠습니다.
12
12
13
13
```rust
14
14
pubfnnew() ->Universe {
@@ -22,9 +22,9 @@ pub fn new() -> Universe {
22
22
23
23
## 구현한 Game of Life에 로그 기능 추가하기
24
24
25
-
[`web-sys` 크레이트를 통해 `console.log` 함수를 사용해보고, 매 세포들의 정보를 로그][logging]할수 있도록 기능을 추가해보겠습니다.
25
+
[`web-sys` 크레이트를 통해 `console.log` 함수를 사용해 보고, 매 세포들의 정보를 로그][logging] 할 수 있도록 기능을 추가해 보겠습니다.
26
26
27
-
우선, `wasm-game-of-life/Cargo.toml` 파일을 열고 `web-sys`를 종속성으로 추가한 다음 `"console"` 기능을 활성해주세요:
27
+
우선, `wasm-game-of-life/Cargo.toml` 파일을 열고 `web-sys`를 종속성으로 추가한 다음 `"console"` 기능을 활성화해 주세요:
28
28
29
29
```toml
30
30
[dependencies]
@@ -45,15 +45,15 @@ features = [
45
45
```rust
46
46
externcrate web_sys;
47
47
48
-
// `println!(...)` 스타일의 문법을 `console.log`에 사용할수 있게 해주는 매크로.
48
+
// `println!(...)` 스타일의 문법을 `console.log`에 사용할 수 있게 해주는 매크로.
[](../images/game-of-life/debugging.png)
111
111
112
-
## 연습해보기
112
+
## 연습해 보기
113
113
114
-
* 죽게 되거나 살아나게 되는 식으로 상태가 전환되는 각각 세포의 행과 열을 기록할수 있도록 `tick` 함수를 로그하는 코드를 추가해보세요.
114
+
* 죽게 되거나 살아나게 되는 식으로 상태가 전환되는 각각 세포의 행과 열을 기록할 수 있도록 `tick` 함수를 로그 하는 코드를 추가해 보세요.
115
115
116
-
*`Universe::new` 메소드에 `panic!()` 매크로를 추가해서 웹 브라우저의 JavaScript 디버깅 툴에서 패닉한 코드를 [퇴각검색(backtrace)](https://ko.wikipedia.org/wiki/퇴각검색)할수 있도록 수정해보세요. 추가로 debug 심볼을 비활성화해본 다음 `console_error_panic_hook` 선택적 종속성을 다시 빌드했을 때 스택 추적도 다시 확인해보세요. 그렇게 유용하진 않은것 같은데, 안그런가요?
116
+
*`Universe::new` 메소드에 `panic!()` 매크로를 추가해서 웹 브라우저의 JavaScript 디버깅 툴에서 패닉한 코드를 [퇴각검색(backtrace)](https://ko.wikipedia.org/wiki/퇴각검색)할 수 있도록 수정해 보세요. 추가로 debug 심볼을 비활성화한 다음 `console_error_panic_hook` 선택적 종속성을 다시 빌드했을 때 스택 추적도 다시 확인해 보세요. 그렇게 유용하진 않은 것 같은데, 안 그런가요?
0 commit comments