Cleanup docs, Improve grammar

This commit is contained in:
Plusb Preco 2015-11-19 09:32:44 +09:00
parent e4803e6f97
commit 0232b77ce3
7 changed files with 163 additions and 96 deletions

View file

@ -8,19 +8,26 @@
:zap: *프레임워크 이름이 Atom Shell에서 Electron으로 변경되었습니다* :zap:
Electron 프레임워크는 JavaScript, HTML 그리고 CSS를 사용하여 Cross-Platform 데스크톱 어플리케이션을 개발할 수 있도록 해주는 프레임워크입니다.
이 프레임워크는 [Node.js](https://nodejs.org/) 와 [Chromium](http://www.chromium.org)을 기반으로 만들어 졌으며
[Atom Editor](https://github.com/atom/atom)에 사용되고 있습니다.
Electron 프레임워크는 JavaScript, HTML 그리고 CSS를 사용하여 Cross-Platform 데스크톱
어플리케이션을 개발할 수 있도록 해주는 프레임워크입니다. 이 프레임워크는
[Node.js](https://nodejs.org/)와 [Chromium](http://www.chromium.org)을 기반으로
만들어졌으며 [Atom Editor](https://github.com/atom/atom)에 사용되고 있습니다.
Electron에 대한 중요한 알림을 받고 싶다면 Twitter에서 [@ElectronJS](https://twitter.com/electronjs)를 팔로우 하세요.
Electron에 대한 중요한 알림을 받고 싶다면 Twitter에서
[@ElectronJS](https://twitter.com/electronjs)를 팔로우 하세요.
이 프로젝트는 [기여자 규약 1.2](http://contributor-covenant.org/version/1/2/0/)를 준수합니다. 이 프로젝트에 참여할 때 코드를 유지해야 합니다. 받아들일 수 없는 행위를 발견했을 경우 atom@github.com로 보고 하십시오.
이 프로젝트는 [기여자 규약 1.2](http://contributor-covenant.org/version/1/2/0/)을
준수합니다. 따라서 이 프로젝트의 개발에 참여하려면 이 계약을 지켜야 합니다.
받아들일 수 없는 행위를 발견했을 경우 atom@github.com로 보고 하십시오.
## 다운로드
Linux, Windows, OS X 용으로 미리 빌드된 Electron 바이너리와 디버그 심볼이 준비되어 있습니다. [releases](https://github.com/atom/electron/releases) 페이지에서 받아 볼 수 있습니다.
Linux, Windows, OS X 용으로 미리 빌드된 Electron 바이너리와 디버그 심볼이 준비되어
있습니다. [releases](https://github.com/atom/electron/releases) 페이지에서
받아 볼 수 있습니다.
또한 [`npm`](https://docs.npmjs.com/)을 통해 미리 빌드된 Electron 바이너리를 받을 수도 있습니다:
또한 [`npm`](https://docs.npmjs.com/)을 통해 미리 빌드된 Electron 바이너리를
설치할 수도 있습니다:
```sh
# $PATH에 `electron` 커맨드를 등록하고 전역에 설치합니다.
@ -36,8 +43,9 @@ npm install electron-prebuilt --save-dev
## 참조 문서
[Docs](https://github.com/atom/electron/tree/master/docs/README.md)에 개발 가이드와 API 레퍼런스가 있습니다.
Electron을 빌드 하는 방법과 프로젝트에 기여하는 방법도 문서에 포함되어 있으니 참고하시기 바랍니다.
[Docs](https://github.com/atom/electron/tree/master/docs/README.md)에 개발 지침과
API 레퍼런스가 있습니다. Electron을 빌드 하는 방법과 프로젝트에 기여하는법 또한 문서에
포함되어 있으니 참고하시기 바랍니다.
## 참조 문서 (번역)
@ -50,14 +58,17 @@ Electron을 빌드 하는 방법과 프로젝트에 기여하는 방법도 문
## 시작하기
[`atom/electron-quick-start`](https://github.com/atom/electron-quick-start) 저장소를 클론하여 Electron을 간단히 접해볼 수 있습니다.
[`atom/electron-quick-start`](https://github.com/atom/electron-quick-start)
저장소를 클론하여 Electron을 간단히 접해볼 수 있습니다.
## 커뮤니티
다음 링크를 통해 커뮤니티에 질문을 올리거나 토론을 나눌 수 있습니다:
- Atom 포럼의 [`electron`](http://discuss.atom.io/c/electron) 카테고리
- Freenode 채팅의 `#atom-shell` 채널
- Freenode 채팅의 `#atom-shell` 채널
- Slack의 [`Atom`](http://atom-slack.herokuapp.com/) 채널
[awesome-electron](https://github.com/sindresorhus/awesome-electron) 프로젝트엔 커뮤니티가 운영중인 유용한 예제 어플리케이션과 도구, 리소스가 있으니 한번 참고해 보시기 바랍니다.
[awesome-electron](https://github.com/sindresorhus/awesome-electron) 프로젝트에
커뮤니티가 운영중인 유용한 예제 어플리케이션과 도구, 리소스가 있으니
한번 참고해 보시기 바랍니다.

View file

@ -3,35 +3,46 @@
__참고: Electron은 Atom Shell의 새로운 이름입니다.__
NW.js 처럼 Electron은 JavaScript와 HTML 그리고 Node 통합 환경을 제공함으로써
웹 페이지에서 저 수준 시스템에 접근할 수 있도록 하여 웹 기반 데스크탑 어플리케이션을 작성할 수 있도록 하는 프레임워크 입니다.
웹 페이지에서 저 수준 시스템에 접근할 수 있도록 하여 웹 기반 데스크탑 어플리케이션을
작성할 수 있도록 하는 프레임워크 입니다.
하지만 Electron과 NW.js는 근본적인 개발흐름의 차이도 있습니다:
__1. 어플리케이션의 엔트리 포인트__
NW.js에선 어플리케이션의 엔트리 포인트로 웹 페이지를 사용합니다.
`package.json`내의 main 필드에 메인 웹 페이지(index.html) URL을 지정하면 어플리케이션의 메인 윈도우로 열리게 됩니다.
`package.json`내의 main 필드에 메인 웹 페이지(index.html) URL을 지정하면
어플리케이션의 메인 윈도우로 열리게 됩니다.
Electron에선 JavaScript를 엔트리 포인트로 사용합니다. URL을 직접 제공하는 대신 API를 사용하여 직접 브라우저 창과 HTML 파일을 로드할 수 있습니다.
또한 윈도우의 종료시기를 결정하는 이벤트를 리스닝해야합니다.
Electron에선 JavaScript를 엔트리 포인트로 사용합니다. URL을 직접 제공하는 대신 API를
사용하여 직접 브라우저 창과 HTML 파일을 로드할 수 있습니다. 또한 윈도우의 종료시기를
결정하는 이벤트를 리스닝해야합니다.
Electron은 Node.js 런타임과 비슷하게 작동합니다. Electron의 API는 저수준이기에 브라우저 테스팅을 위해 [PhantomJS](http://phantomjs.org/)를 사용할 수도 있습니다.
Electron은 Node.js 런타임과 비슷하게 작동합니다. Electron의 API는 저수준이기에
브라우저 테스팅을 위해 [PhantomJS](http://phantomjs.org/)를 사용할 수도 있습니다.
__2. 빌드 시스템__
Electron은 Chromium의 모든것을 빌드하는 복잡성을 피하기 위해 [libchromiumcontent](https://github.com/brightray/libchromiumcontent)를 사용하여
Chromium의 Content API에 접근합니다. libchromiumcontent은 단일 공유 라이브러리이고 Chromium Content 모듈과 종속성 라이브러리들을 포함합니다.
유저는 Electron을 빌드 하기 위해 높은 사양의 빌드용 컴퓨터를 구비할 필요가 없습니다.
Electron은 Chromium의 모든것을 빌드하는 복잡성을 피하기 위해
[libchromiumcontent](https://github.com/brightray/libchromiumcontent)를 사용하여
Chromium의 Content API에 접근합니다. libchromiumcontent은 단일 공유 라이브러리이고
Chromium Content 모듈과 종속성 라이브러리들을 포함합니다. 유저는 Electron을 빌드 하기
위해 높은 사양의 빌드용 컴퓨터를 구비할 필요가 없습니다.
__3. Node 통합__
NW.js는 웹 페이지에서 require를 사용할 수 있도록 Chromium을 패치했습니다. 한편 Electron은 Chromium의 해킹을 방지하기 위해 libuv loop와 각 플랫폼의 메시지 루프에 통합하는 등의 다른 방법을 채택하였습니다.
[`node_bindings`][node-bindings] 코드를 보면 이 부분이 어떻게 구현됬는지를 알 수 있습니다.
NW.js는 웹 페이지에서 require를 사용할 수 있도록 Chromium을 패치했습니다.
한편 Electron은 Chromium의 해킹을 방지하기 위해 libuv loop와 각 플랫폼의
메시지 루프에 통합하는 다른 방법을 채택하였습니다.
[`node_bindings`][node-bindings]의 코드를 보면 이 부분이 어떻게 구현됬는지를
알 수 있습니다.
__4. 다중 컨텍스트__
만약 NW.js를 사용해본적이 있다면 Node context와 Web context의 개념을 잘 알고 있을겁니다. 이 개념은 NW.js가 구현된 방식에 따라 만들어졌습니다.
만약 NW.js를 사용해본 적이 있다면 Node context와 Web context의 개념을 잘 알고 있을
겁니다. 이러한 개념은 NW.js가 구현되기 위해 만들어졌습니다.
Node의 [다중 컨텍스트](http://strongloop.com/strongblog/whats-new-node-js-v0-12-multiple-context-execution/)를 사용할 경우 Electron은 웹 페이지에서 새로운 JavaScript 컨텍스트를 생성하지 않습니다.
Node의 [다중 컨텍스트](http://strongloop.com/strongblog/whats-new-node-js-v0-12-multiple-context-execution/)를
사용하기 때문에 Electron은 웹 페이지의 새로운 JavaScript 컨텍스트를 생성하지 않습니다.
[node-bindings]: https://github.com/atom/electron/tree/master/atom/common

View file

@ -4,10 +4,14 @@
## 빌드전 요구사양
* Python 2.7.x. 몇몇 CentOS와 같은 배포판들은 아직도 Python 2.6.x 버전을 사용합니다. 그래서 `python -V`를 통해 버전을 확인해 줄 필요가 있습니다.
* Node.js v0.12.x. Node를 설치하는 방법은 여러가지가 있습니다. 그중 하나는 [Node.js](http://nodejs.org) 사이트에서 소스코드를 받아 빌드하는 방법입니다.
이렇게 하면 Node를 일반 유저로 홈 디렉터리에 설치할 수 있습니다. 또는 [NodeSource](https://nodesource.com/blog/nodejs-v012-iojs-and-the-nodesource-linux-repositories)에서 소스 파일을 받아올 수 있습니다.
자세한 내용은 [Node.js 설치 방법](https://github.com/joyent/node/wiki/Installation) 을 참고하세요.
* Python 2.7.x. 몇몇 CentOS와 같은 배포판들은 아직도 Python 2.6.x 버전을 사용합니다.
그래서 먼저 `python -V`를 통해 버전을 확인할 필요가 있습니다.
* Node.js v0.12.x. Node를 설치하는 방법은 여러 가지가 있습니다. 먼저,
[Node.js](http://nodejs.org) 사이트에서 소스코드를 받아 빌드하는 방법입니다.
이렇게 하면 Node를 일반 유저로 홈 디렉터리에 설치할 수 있습니다. 다른 방법으로는
[NodeSource](https://nodesource.com/blog/nodejs-v012-iojs-and-the-nodesource-linux-repositories)에서
소스 파일을 받아와 설치할 수 있습니다. 자세한 내용은 [Node.js 설치 방법](https://github.com/joyent/node/wiki/Installation)을
참고하세요.
* Clang 3.4 또는 최신 버전
* GTK+ 와 libnotify의 개발용 헤더
@ -28,13 +32,14 @@ $ sudo yum install clang dbus-devel gtk2-devel libnotify-devel libgnome-keyring-
alsa-lib-devel libXrandr-devel GConf2-devel nss-devel
```
다른 배포판의 경우 pacman 같은 패키지 매니저를 통해 패키지를 설치 할 수 있습니다. 패키지의 이름은 대부분 위 예시와 비슷할 것입니다.
또는 소스코드를 내려받아 직접 빌드하는 방법도 있습니다.
다른 배포판의 경우 pacman 같은 패키지 매니저를 통해 패키지를 설치 할 수 있습니다.
패키지의 이름은 대부분 위 예시와 비슷할 것입니다. 또는 소스코드를 내려받아
직접 빌드하는 방법도 있습니다.
## 가상머신을 사용하여 빌드 하는 경우
만약 Electron을 가상머신으로 빌드 할 계획이라면 해당 가상머신의 스토리지를 최소 25GB 이상을 확보해 놓아야 합니다.
만약 Electron을 가상머신으로 빌드 할 계획이라면 해당 가상머신의 스토리지를
최소 25GB 이상을 확보해 놓아야 합니다.
## 코드 가져오기
@ -44,10 +49,11 @@ $ git clone https://github.com/atom/electron.git
## 부트 스트랩
부트스트랩 스크립트는 필수적인 빌드 종속성 라이브러리들을 모두 다운로드하고 프로젝트 파일을 생성합니다.
스크립트가 정상적으로 작동하기 위해선 Python 2.7.x 버전이 필요합니다.
아마 다운로드 작업이 상당히 많은 시간을 소요할 것입니다.
참고로 Electron은 빌드 툴체인으로 `ninja`를 사용하므로 `Makefile`은 생성되지 않습니다.
부트스트랩 스크립트는 필수적인 빌드 종속성 라이브러리들을 모두 다운로드하고
프로젝트 파일을 생성합니다. 스크립트가 정상적으로 작동하기 위해선
Python 2.7.x 버전이 필요합니다. 아마 다운로드 작업이 상당히 많은 시간을
소요할 것입니다. 참고로 Electron은 빌드 툴체인으로 `ninja`를 사용하므로
`Makefile`은 생성되지 않습니다.
```bash
$ cd electron
@ -63,7 +69,8 @@ $ sudo apt-get install libc6-dev-armhf-cross linux-libc-dev-armhf-cross \
g++-arm-linux-gnueabihf
```
그리고 `bootstrap.py` 스크립트의 `--target_arch` 파라미터에 `arm` 또는 `ia32` 아키텍쳐를 지정하여 크로스 컴파일 할 수 있습니다:
그리고 `bootstrap.py` 스크립트의 `--target_arch` 파라미터에 `arm` 또는 `ia32`
아키텍쳐를 지정하여 크로스 컴파일 할 수 있습니다:
```bash
$ ./script/bootstrap.py -v --target_arch=arm
@ -77,16 +84,18 @@ $ ./script/bootstrap.py -v --target_arch=arm
$ ./script/build.py
```
이 스크립트는 `out/R` 디렉터리에 크기가 매우 큰 Electron 실행 파일을 배치합니다. 파일 크기는 1.3GB를 초과합니다.
이러한 문제가 발생하는 이유는 Release 타겟 바이너리가 디버그 심볼을 포함하기 때문입니다.
파일 크기를 줄이려면 `create-dist.py` 스크립트를 실행하세요:
이 스크립트는 `out/R` 디렉터리에 크기가 매우 큰 Electron 실행 파일을 배치합니다.
파일 크기는 1.3GB를 초과합니다. 이러한 문제가 발생하는 이유는 Release 타겟 바이너리가
디버그 심볼을 포함하기 때문입니다. 파일 크기를 줄이려면
`create-dist.py` 스크립트를 실행하세요:
```bash
$ ./script/create-dist.py
```
이 스크립트는 매우 작은 배포판을 `dist` 디렉터리에 생성합니다.
create-dist.py 스크립트를 실행한 이후부턴 1.3GB를 초과하는 공간을 차지하는 `out/R` 폴더의 바이너리는 삭제해도 됩니다.
create-dist.py 스크립트를 실행한 이후부턴 1.3GB를 초과하는 공간을 차지하는
`out/R` 폴더의 바이너리는 삭제해도 됩니다.
또는 `Debug` 타겟만 빌드 할 수 있습니다:

View file

@ -20,8 +20,9 @@ $ git clone https://github.com/atom/electron.git
## 부트 스트랩
부트스트랩 스크립트는 필수적인 빌드 종속성 라이브러리들을 모두 다운로드하고 프로젝트 파일을 생성합니다.
참고로 Electron은 빌드 툴체인으로 `ninja`를 사용하므로 Xcode 프로젝트는 생성되지 않습니다.
부트스트랩 스크립트는 필수적인 빌드 종속성 라이브러리들을 모두 다운로드하고
프로젝트 파일을 생성합니다. 참고로 Electron은 빌드 툴체인으로 `ninja`를 사용하므로
Xcode 프로젝트는 생성되지 않습니다.
```bash
$ cd electron
@ -46,7 +47,8 @@ $ ./script/build.py -c D
## 32비트 지원
Electron은 현재 OS X 64비트만 지원하고 있습니다. 그리고 앞으로도 OS X 32비트는 지원할 계획이 없습니다.
Electron은 현재 OS X 64비트만 지원하고 있습니다. 그리고 앞으로도 OS X 32비트는
지원할 계획이 없습니다.
## 테스트

View file

@ -11,14 +11,18 @@
* [Git](http://git-scm.com)
현재 사용하고 있는 PC에 Windows를 설치하지 않았다면 [modern.ie](https://www.modern.ie/en-us/virtualization-tools#downloads)에서
사용 기한이 정해져있는 무료 가상머신 버전의 Windows를 받아 Electron을 빌드하는 방법도 있습니다.
사용 기한이 정해져있는 무료 가상머신 버전의 Windows를 받아 Electron을
빌드하는 방법도 있습니다.
Electron은 모든 빌드를 command-line 스크립트를 통해 빌드합니다. 따라서 빌드에 Visual Studio를 사용할 수 없습니다.
하지만 여전히 Electron을 개발할 땐 아무 에디터나 사용할 수 있습니다. 빠른 시일내에 Visual Studio를 이용한 빌드도 지원할 계획입니다.
Electron은 모든 빌드를 command-line 스크립트를 통해 빌드합니다. 따라서 빌드에
Visual Studio를 사용할 수 없습니다. 하지만 여전히 Electron을 개발할 땐 아무 에디터나
사용할 수 있습니다. 빠른 시일내에 Visual Studio를 이용한 빌드도 지원할 계획입니다.
**참고:** Visual Studio가 직접 빌드에 사용되지 않더라도 IDE와 같이 제공된 빌드 툴체인이 빌드에 **필수적으로** 사용되므로 여전히 필요합니다.
**참고:** Visual Studio가 직접 빌드에 사용되지 않더라도 IDE와 같이 제공된
빌드 툴체인이 빌드에 **반드시** 사용되므로 여전히 필요합니다.
**참고:** Visual Studio 2015는 사용할 수 없습니다. MSVS **2013**을 사용하고 있는지 확인해주세요.
**참고:** Visual Studio 2015는 사용할 수 없습니다.
MSVS **2013** 을 사용하고 있는지 확인해주세요.
## 코드 가져오기
@ -28,8 +32,9 @@ $ git clone https://github.com/atom/electron.git
## 부트 스트랩
부트스트랩 스크립트는 필수적인 빌드 종속성 라이브러리들을 모두 다운로드하고 프로젝트 파일을 생성합니다.
참고로 Electron은 빌드 툴체인으로 `ninja`를 사용하므로 Visual Studio 프로젝트는 생성되지 않습니다.
부트스트랩 스크립트는 필수적인 빌드 종속성 라이브러리들을 모두 다운로드하고
프로젝트 파일을 생성합니다. 참고로 Electron은 빌드 툴체인으로 `ninja`를 사용하므로
Visual Studio 프로젝트는 생성되지 않습니다.
```powershell
$ cd electron
@ -50,11 +55,13 @@ $ python script\build.py
$ python script\build.py -c D
```
빌드가 모두 끝나면 `out/D` (디버그 타겟) 또는 `out/R` (릴리즈 타겟) 디렉터리에서 `electron.exe` 실행 파일을 찾을 수 있습니다.
빌드가 모두 끝나면 `out/D` (디버그 타겟) 또는 `out/R` (릴리즈 타겟) 디렉터리에서
`electron.exe` 실행 파일을 찾을 수 있습니다.
## 64비트 빌드
64비트를 타겟으로 빌드 하려면 부트스트랩 스크립트를 실행할 때 `--target_arch=x64` 인자를 같이 넘겨주면 됩니다:
64비트를 타겟으로 빌드 하려면 부트스트랩 스크립트를 실행할 때
`--target_arch=x64` 인자를 같이 넘겨주면 됩니다:
```powershell
$ python script\bootstrap.py -v --target_arch=x64
@ -76,8 +83,8 @@ $ python script\cpplint.py
$ python script\test.py
```
테스트 실행시 `runas`와 같은 네이티브 모듈을 포함하는데 이 모듈은 디버그 빌드에서 같이 사용할 수 없습니다.
하지만 여전히 릴리즈 빌드에선 사용할 수 있습니다.
테스트 실행시 `runas`와 같은 네이티브 모듈을 포함하는데 이 모듈은 디버그 빌드에서
같이 사용할 수 없습니다. 하지만 여전히 릴리즈 빌드에선 사용할 수 있습니다.
릴리즈 빌드로 테스트를 실행하려면 다음 커맨드를 사용하면 됩니다:
@ -89,7 +96,8 @@ $ python script\test.py -R
### Command xxxx not found
만약 `Command xxxx not found`와 같은 형식의 에러가 발생했다면 `VS2012 Command Prompt` 콘솔로 빌드 스크립트를 실행해볼 필요가 있습니다.
만약 `Command xxxx not found`와 같은 형식의 에러가 발생했다면
`VS2012 Command Prompt` 콘솔로 빌드 스크립트를 실행해볼 필요가 있습니다.
### Fatal internal compiler error: C1001
@ -97,7 +105,8 @@ Visual Studio가 업데이트까지 완벽하게 설치된 최신버전인지
### Assertion failed: ((handle))->activecnt >= 0
Cygwin에서 빌드 할 경우 `bootstrap.py` 스크립트가 다음의 에러와 함께 빌드에 실패할 수 있습니다:
Cygwin에서 빌드 할 경우 `bootstrap.py` 스크립트가 다음의 에러와 함께 빌드에
실패할 수 있습니다:
```
Assertion failed: ((handle))->activecnt >= 0, file src\win\pipe.c, line 1430
@ -136,4 +145,5 @@ $ mkdir ~\AppData\Roaming\npm
### node-gyp is not recognized as an internal or external command
Git Bash로 빌드 했을 때 이러한 에러가 발생할 수 있습니다. 반드시 PowerShell이나 VS2012 Command Prompt에서 빌드를 진행해야 합니다.
Git Bash로 빌드 했을 때 이러한 에러가 발생할 수 있습니다. 반드시 PowerShell이나
VS2012 Command Prompt에서 빌드를 진행해야 합니다.

View file

@ -9,31 +9,39 @@ Electron을 빌드 할 때 `gyp` 파일들은 다음과 같은 규칙을 따릅
* `atom.gyp`는 Electron의 빌드 과정 자체를 정의합니다.
* `common.gypi`는 Node가 Chromium과 함께 빌드될 수 있도록 조정한 빌드 설정입니다.
* `vendor/brightray/brightray.gyp``brightray`의 빌드 과정을 정의하고 Chromium과의 링킹에 대한 기본적인 설정을 포함합니다.
* `vendor/brightray/brightray.gyp``brightray`의 빌드 과정을 정의하고
Chromium 링킹에 대한 기본적인 설정을 포함합니다.
* `vendor/brightray/brightray.gypi`는 빌드에 대한 일반적인 설정이 포함되어 있습니다.
## 구성요소 빌드
Chromium은 꽤나 큰 프로젝트입니다. 이 때문에 최종 링킹 작업은 상당한 시간이 소요될 수 있습니다.
이 문제는 보통 개발을 어렵게 만듭니다. 우리는 이 문제를 해결하기 위해 Chromium의 "component build" 방식을 도입했습니다.
이는 각각의 컴포넌트를 각각 따로 분리하여 공유 라이브러리로 빌드 합니다. 하지만 이 방식을 사용하면 링킹 작업은 매우 빨라지지만 파일 크기와 성능이 느려집니다.
Chromium은 꽤나 큰 프로젝트입니다. 이러한 이유로 인해 최종 링킹 작업은 상당한 시간이
소요될 수 있습니다. 보통 이런 문제는 개발을 어렵게 만듭니다. 우리는 이 문제를 해결하기
위해 Chromium의 "component build" 방식을 도입했습니다. 이는 각각의 컴포넌트를
각각 따로 분리하여 공유 라이브러리로 빌드 합니다. 하지만 이 빌드 방식을 사용하면
링킹 작업은 매우 빨라지지만 실행 파일 크기가 커지고 성능이 저하됩니다.
Electron도 상당히 비슷한 접근을 했습니다:
`Debug`빌드 시 바이너리는 공유 라이브러리 버전의 Chromium 컴포넌트를 사용해서 링크 속도를 높이고
`Release`빌드 시엔 정적 라이브러리 버전의 컴포넌트를 사용합니다.
이렇게 각 빌드의 단점을 상호 보완하여 디버그 시 빌드 속도는 향상되고 배포판 빌드 시 공유 라이브러리의 단점은 제거했습니다.
Electron도 이러한 방식에 상당히 비슷한 접근을 했습니다:
`Debug` 빌드 시 바이너리는 공유 라이브러리 버전의 Chromium 컴포넌트를 사용함으로써
링크 속도를 높이고, `Release` 빌드 시 정적 라이브러리 버전의 컴포넌트를 사용합니다.
이렇게 각 빌드의 단점을 상호 보완하여 디버그 시 빌드 속도는 향상되고 배포판 빌드의
공유 라이브러리의 단점은 개선했습니다.
## 부트스트랩 최소화
Prebuilt된 모든 Chromium 바이너리들은 부트스트랩 스크립트가 실행될 때 다운로드됩니다.
기본적으로 공유 라이브러리와 정적 라이브러리 모두 다운로드되며 최종 전체 파일 크기는 플랫폼에 따라 800MB에서 2GB까지 차지합니다.
기본적으로 공유 라이브러리와 정적 라이브러리 모두 다운로드되며 최종 전체 파일 크기는
플랫폼에 따라 800MB에서 2GB까지 차지합니다.
기본적으로 (`libchromiumcontent`)는 Amazon Web Service를 통해 다운로드 됩니다.
만약 `LIBCHROMIUMCONTENT_MIRROR` 환경 변수가 설정되어 있으면 부트스트랩은 해당 링크를 사용하여 바이너리를 다운로드 합니다.
[libchromiumcontent-qiniu-mirror](https://github.com/hokein/libchromiumcontent-qiniu-mirror)는 libchromiumcontent의 미러입니다.
만약 AWS에 접근할 수 없다면 `export LIBCHROMIUMCONTENT_MIRROR=http://7xk3d2.dl1.z0.glb.clouddn.com/`를 통해 다운로드 할 수 있습니다.
만약 `LIBCHROMIUMCONTENT_MIRROR` 환경 변수가 설정되어 있으면 부트스트랩은 해당 링크를
사용하여 바이너리를 다운로드 합니다. [libchromiumcontent-qiniu-mirror](https://github.com/hokein/libchromiumcontent-qiniu-mirror)는
libchromiumcontent의 미러입니다. 만약 AWS에 접근할 수 없다면
`export LIBCHROMIUMCONTENT_MIRROR=http://7xk3d2.dl1.z0.glb.clouddn.com/` 미러를
통해 다운로드 할 수 있습니다.
만약 빠르게 Electron의 개발 또는 테스트만 하고 싶다면 `--dev` 플래그를 추가하여 공유 라이브러리만 다운로드할 수 있습니다:
만약 빠르게 Electron의 개발 또는 테스트만 하고 싶다면 `--dev` 플래그를 추가하여
공유 라이브러리만 다운로드할 수 있습니다:
```bash
$ ./script/bootstrap.py --dev
@ -43,14 +51,19 @@ $ ./script/build.py -c D
## 프로젝트 생성 (two-phrase)
Electron은 `Release``Debug` 빌드가 서로 다른 라이브러리 링크 방식을 사용합니다.
하지만 `gyp`는 따로 빌드 설정을 분리하여 라이브러리 링크 방식을 정의하는 것을 지원하지 않습니다.
하지만 `gyp`는 따로 빌드 설정을 분리하여 라이브러리 링크 방식을 정의하는 방법을
지원하지 않습니다.
이 문제를 해결하기 위해 Electron은 링크 설정을 제어하는 `gyp` 변수 `libchromiumcontent_component`를 사용하고 `gyp`를 실행할 때 단 하나의 타겟만 생성합니다.
이 문제를 해결하기 위해 Electron은 링크 설정을 제어하는 `gyp` 변수
`libchromiumcontent_component`를 사용하고 `gyp`를 실행할 때
단 하나의 타겟만을 생성합니다.
## 타겟 이름
많은 프로젝트에서 타겟 이름을 `Release``Debug`를 사용하는데 반해 Electron은 `R``D`를 대신 사용합니다.
이유는 가끔 알 수 없는 이유(randomly)로 `Release``Debug` 중 하나만 빌드 설정에 정의되어 있을때 `gyp`가 크래시를 일으키는데
전술한 바와 같이 Electron은 한번에 한개의 타겟만을 생성할 수 있기 때문입니다.
많은 프로젝트에서 타겟 이름을 `Release``Debug`를 사용하는데 반해 Electron은
`R``D`를 대신 사용합니다. 이유는 가끔 알 수 없는 이유(randomly)로
`Release``Debug` 중 하나만 빌드 설정에 정의되어 있을때 `gyp`가 크래시를 일으키는데
이유는 앞서 말한 바와 같이 Electron은 한번에 한개의 타겟만을 생성할 수 있기 때문입니다.
이 문제는 개발자에게만 영향을 미칩니다. 만약 단순히 Electron을 rebranding 하기 위해 빌드 한다면 이 문제에 신경 쓸 필요가 없습니다.
이 문제는 개발자에게만 영향을 미칩니다. 만약 단순히 Electron을 rebranding 하기 위해
빌드 하는 것이라면 이 문제에 신경 쓸 필요가 없습니다.

View file

@ -1,22 +1,28 @@
# Electron 문서 스타일 가이드
[Electron 문서 읽기](#electron-문서-읽기) 와 [Electron 문서 작성하기](#electron-문서-작성하기) 중 이해가 필요한 부분을 찾아 참고하세요:
[Electron 문서 읽기](#electron-문서-읽기) 와
[Electron 문서 작성하기](#electron-문서-작성하기) 중 이해가 필요한 부분을 찾아
참고하세요:
## Electron 문서 작성하기
Electron 문서를 작성하는 규칙은 다음과 같습니다.
- `h1` 제목은 페이지당 한 개만 사용할 수 있습니다.
- 코드 블럭에서 터미널 언어 선택시 `cmd` 대신 `bash`를 사용합니다. (syntax highlighter를 사용하기 위해서)
- 문서의 `h1` 제목은 반드시 현재 객체 이름과 같게 해야 합니다. (예시: `browser-window``BrowserWindow`)
- 하이픈(-)으로 구분되었던 어떻게 되었던 간에 예시와 같이 작성합니다.
- 헤더 밑에 헤더를 바로 사용하지 않습니다. 한 줄이라도 좋으니 헤더와 헤더 사이에 설명 추가합니다.
- 메서드 헤더는 `code` 틱으로 표시합니다.
- 코드 블럭에서 터미널 언어 선택시 `cmd` 대신 `bash`를 사용합니다.
(syntax highlighter를 사용하기 위해서)
- 문서의 `h1` 제목은 반드시 현재 객체 이름과 같게 해야 합니다.
(예시: `browser-window``BrowserWindow`)
- 하이픈(-)으로 구분되었건 다르게 구분되었건 예시와 같이 작성합니다.
- 헤더 밑에 헤더를 바로 사용하지 않습니다. 한 줄이라도 좋으니 헤더와 헤더 사이에
설명을 추가합니다.
- 메서드 헤더는 `code backtick` 으로 표시합니다.
- 이벤트 헤더는 한 '따옴표'로 표시합니다.
- 리스트를 2 단계 이상 중첩하지 않습니다. (안타깝게도 markdown 랜더러가 지원하지 않습니다)
- 섹션에 대한 제목을 추가합니다: Events, Class 메서드 그리고 인스턴스 메서드등.
- 리스트를 2 단계 이상 중첩하지 않습니다. (안타깝게도 markdown 랜더러가 이를
지원하지 않습니다)
- 섹션에 대한 제목을 추가합니다. Events, Class 메서드 그리고 인스턴스 메서드 등
- 어떤 '것'의 사용 결과를 설명할 때 '될 것입니다' 형식을 사용하여 설명합니다.
- 이벤트와 메서드에는 `h3` 헤더를 사용합니다.
- 이벤트와 메서드를 표기할 땐 `h3` 헤더를 사용합니다.
- 선택적 인수는 `function (required[, optional])` 형식으로 작성합니다.
- 선택적 인수는 목록에서 호출되면 표시합니다.
- 문장의 길이는 한 줄당 80 칸을 유지합니다.
@ -30,11 +36,13 @@ Electron 문서를 작성하는 규칙은 다음과 같습니다.
아직 번역되지 않은 언어를 추가하려면 (일부분 포함):
- 언어의 약어(예: en, ja, ko등)로 서브 디렉터리를 만듭니다.
- 서브 디렉터리에 `docs` 디렉터리를 복사합니다. 파일 이름과 디렉터리 구조는 모두 유지합니다.
- 언어의 약어(예: en-US, ja-JP, ko-KR)로 서브 디렉터리를 만듭니다.
- 서브 디렉터리에 `docs` 디렉터리를 복사합니다. 파일 이름과 디렉터리 구조는
모두 유지합니다.
- 문서를 번역합니다.
- `README.md`에 번역한 문서의 링크를 추가하고 업데이트 합니다.
- 메인 Electron의 [README](https://github.com/atom/electron#documentation-translations)에 번역된 디렉터리의 링크를 추가합니다.
- 언어 디렉터리 내의 `README.md`에 번역한 문서의 링크를 추가합니다.
- 메인(upstream) Electron의 [README](https://github.com/atom/electron#documentation-translations)에
번역된 언어 디렉터리의 링크를 추가합니다.
## Electron 문서 읽기
@ -42,7 +50,8 @@ Electron 문서 구조를 이해하는 데 참고할 수 있는 유용한 도움
### Methods
[Method](https://developer.mozilla.org/en-US/docs/Glossary/Method) 문서의 예제입니다:
[Method](https://developer.mozilla.org/en-US/docs/Glossary/Method) 문서의
예제입니다:
---
@ -53,8 +62,8 @@ Electron 문서 구조를 이해하는 데 참고할 수 있는 유용한 도움
---
메서드 이름은 인수가 무엇을 받는지에 따라 결정됩니다. 선택적 인수는 브라켓([, ])으로 묶어
이 인수가 다른 인수뒤에서 선택적으로 사용될 수 있다는 것을 표시합니다.
메서드 이름은 인수가 무엇을 받는지에 따라 결정됩니다. 선택적 인수는 브라켓([, ])으로
묶어 이 인수가 다른 인수뒤에서 선택적으로 사용될 수 있다는 것을 표시합니다.
메서드 이름 하단에선 각 인수에 대해 자세한 설명을 합니다.
인수의 타입은 일반적인 타입 중 하나를 받거나:
@ -62,7 +71,8 @@ Electron 문서 구조를 이해하는 데 참고할 수 있는 유용한 도움
[`Number`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number),
[`Object`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object),
[`Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)
와 같은 일반적으로 쓰이는 타입 중 하나를 받거나 Electron의 [`webContent`](api/web-content.md)같은 커스텀 타입을 받습니다.
와 같은 일반적으로 쓰이는 타입 중 하나를 받거나 Electron의
[`webContent`](api/web-content.md)같은 커스텀 타입을 받습니다.
### Events
@ -78,8 +88,9 @@ Returns:
---
이벤트는 `.on` 리스너 메서드로 사용할 수 있습니다. 만약 이벤트에서 값을 반환한다면 문서에서 표시된 대로
일정한 타입의 값을 반환합니다. 이벤트를 처리하거나 응답하려 한다면 다음과 같이 사용할 수 있습니다:
이벤트는 `.on` 리스너 메서드로 사용할 수 있습니다. 만약 이벤트에서 값을 반환한다면
문서에서 표시된 대로 일정한 타입의 값을 반환합니다. 이벤트를 처리하거나 응답하려 한다면
다음과 같이 사용할 수 있습니다:
```javascript
Alarm.on('wake-up', function(time) {