**참고:** 패키징된 앱을 배포할 때, `locales` 폴더도 같이 배포해야 합니다.
-**참고:** Windows에선 `ready` 이벤트가 발생한 이후에 이 메서드를 사용해야 합니다.
+**참고:** Windows에선 `ready` 이벤트가 발생한 이후에 이 메서드를 호출해야 합니다.
### `app.addRecentDocument(path)` _OS X_ _Windows_
아이콘을 가지고 있을 경우, 사용할 아이콘의 인덱스를 이 옵션으로 지정해 주어야 합니다.
단, 아이콘을 하나만 포함하고 있는 경우 0을 지정하면 됩니다.
-### `app.allowNTLMCredentialsForAllDomains(allow)`
-
-* `allow` Boolean
+### `app.allowNTLMCredentialsForAllDomains()`
항상 동적으로 HTTP NTLM 또는 Negotiate 인증에 자격 증명을 보낼 것인지 설정합니다.
보냅니다. (같은 도메인 내에서) 그러나 기업 네트워크가 잘못 구성된 경우 종종 작업에
실패할 수 있습니다. 이때 이 메서드를 통해 모든 URL을 허용할 수 있습니다.
+**참고:** 이 메서드는 `ready` 이벤트가 발생하기 전에 호출해야 합니다.
+
### `app.makeSingleInstance(callback)`
* `callback` Function
});
```
+### `app.releaseSingleInstance()`
+
+모든 `makeSingleInstance`에 의해 생성된 제한을 해제합니다. 이 메서드는 다시 여러
+인스턴스의 어플리케이션이 나란히 실행될 수 있도록 합니다.
+
### `app.setUserActivity(type, userInfo[, webpageURL])` _OS X_
* `type` String - 고유하게 activity를 식별합니다.
* `fullscreen` Boolean - 윈도우의 전체화면 활성화 여부. 이 속성을 명시적으로
`false`로 지정했을 경우, OS X에선 전체화면 버튼이 숨겨지거나 비활성됩니다. 기본값은
`false` 입니다.
-* `fullscreenable` Boolean - OS X의 최대화/줌 버튼이 전체화면 모드 또는 윈도우
- 최대화를 토글할 수 있게 할지 여부입니다. 기본값은 `true` 입니다.
+* `fullscreenable` Boolean - 윈도우가 전체화면 모드로 전환될 수 있는지 여부입니다.
+ 또한 OS X에선, 최대화/줌 버튼이 전체화면 모드 또는 윈도우 최대화를 실행할지 여부도
+ 포함됩니다. 기본값은 `true`입니다.
* `skipTaskbar` Boolean - 작업표시줄 어플리케이션 아이콘 표시 스킵 여부. 기본값은
`false`입니다.
* `kiosk` Boolean - Kiosk(키오스크) 모드. 기본값은 `false`입니다.
-# process
+# process
-> 현재 작동중인 어플리케이션의 정보를 가져옵니다.
+> process 객체에 대한 확장 기능.
-Electron의 `process` 객체는 기존의 node와는 달리 약간의 차이점이 있습니다:
-
-* `process.type` String - 프로세스의 타입, `browser` (메인 프로세스) 또는
- `renderer`가 됩니다.
-* `process.versions.electron` String - Electron의 버전.
-* `process.versions.chrome` String - Chromium의 버전.
-* `process.resourcesPath` String - JavaScript 소스 코드의 경로.
-* `process.mas` Boolean - Mac 앱 스토어용 빌드일 때 `true`로 지정됩니다. 다른
- 빌드일 땐 `undefined`로 지정됩니다.
-* `process.windowsStore` Boolean - 만약 앱이 Windows Store 앱 (appx)으로 작동하고
- 있다면, 이 값이 `true`로 지정되며 다른 빌드인 경우엔 `undefined`로 지정됩니다.
-* `process.defaultApp` Boolean - 어플리케이션이 기본 어플리케이션 형식으로 전달되는
- 인수와 함께 실행됐을 때, 메인 프로세스에서 이 값이 `true`가 되며 다른 경우엔
- `undefined`가 됩니다.
+`process` 객체는 Electron에서 약간 추가적인 기능이 있으며 API는 다음과 같습니다:
## Events
### `process.noAsar`
+Setting this to `true` can disable the support for `asar` archives in Node's
+built-in modules.
+
+### `process.type`
+
+Current process's type, can be `"browser"` (i.e. main process) or `"renderer"`.
+
+### `process.versions.electron`
+
+Electron's version string.
+
+### `process.versions.chrome`
+
+Chrome's version string.
+
+### `process.resourcesPath`
+
+Path to the resources directory.
+
+### `process.mas`
+
+For Mac App Store build, this property is `true`, for other builds it is
+`undefined`.
+
+### `process.windowsStore`
+
+If the app is running as a Windows Store app (appx), this property is `true`,
+for otherwise it is `undefined`.
+
+### `process.defaultApp`
+
+When app is started by being passed as parameter to the default app, this
+property is `true` in the main process, otherwise it is `undefined`.
+
+## Methods
+
+The `process` object has the following method:
+
+### `process.crash()`
+
+Causes the main thread of the current process crash.
+
+### `process.hang()`
+
+Causes the main thread of the current process hang.
+
+### `process.setFdLimit(maxDescriptors)` _OS X_ _Linux_
+
+* `maxDescriptors` Integer
+
+Sets the file descriptor soft limit to `maxDescriptors` or the OS hard
+limit, whichever is lower for the current process.
+
+### `process.getProcessMemoryInfo()`
+
+Returns an object giving memory usage statistics about the current process. Note
+that all statistics are reported in Kilobytes.
+
+* `workingSetSize` - The amount of memory currently pinned to actual physical
+ RAM.
+* `peakWorkingSetSize` - The maximum amount of memory that has ever been pinned
+ to actual physical RAM.
+* `privateBytes` - The amount of memory not shared by other processes, such as
+ JS heap or HTML content.
+* `sharedBytes` - The amount of memory shared between processes, typically
+ memory consumed by the Electron code itself
+
+### `process.getSystemMemoryInfo()`
+
+Returns an object giving memory usage statistics about the entire system. Note
+that all statistics are reported in Kilobytes.
+
+* `total` - The total amount of physical memory in Kilobytes available to the
+ system.
+* `free` - The total amount of memory not being used by applications or disk
+ cache.
+
+On Windows / Linux:
+
+* `swapTotal` - The total amount of swap memory in Kilobytes available to the
+ system.
+* `swapFree` - The free amount of swap memory in Kilobytes available to the
+ system.
+
+----------------------------------------
+
+## Properties
+
+### `process.noAsar`
+
이 속성을 `true`로 지정하면 Node 빌트인 모듈의 `asar` 아카이브 지원을 비활성화 시킬
수 있습니다.
* `action` String - [`<webview>.findInPage`](web-view-tag.md#webviewtagfindinpage)
요청이 종료되었을 때 일어날 수 있는 작업을 지정합니다.
- * `clearSelection` - ì\84 í\83\9dì\9d\84 ì\9d¼ë°\98 ì\84 í\83\9dì\9c¼ë¡\9c ë³\80ê²½합니다.
- * `keepSelection` - ì\84 í\83\9dì\9d\84 ì·¨ì\86\8c합니다.
+ * `clearSelection` - ì\84 í\83\9dì\9d\84 ì·¨ì\86\8c합니다.
+ * `keepSelection` - ì\84 í\83\9dì\9d\84 ì\9d¼ë°\98 ì\84 í\83\9dì\9c¼ë¡\9c ë³\80ê²½합니다.
* `activateSelection` - 포커스한 후 선택된 노드를 클릭합니다.
제공된 `action`에 대한 `webContents`의 모든 `findInPage` 요청을 중지합니다.
### `<webview>.print([options])`
-Webview 페이지를 인쇄합니다. `webContents.print([options])` 메서드와 같습니다.
+`webview` 페이지를 인쇄합니다. `webContents.print([options])` 메서드와 같습니다.
### `<webview>.printToPDF(options, callback)`
-Webview 페이지를 PDF 형식으로 인쇄합니다.
+`webview` 페이지를 PDF 형식으로 인쇄합니다.
`webContents.printToPDF(options, callback)` 메서드와 같습니다.
### `<webview>.send(channel[, arg1][, arg2][, ...])`
* `event` Object
-페이지에 input `event`를 보냅니다.
+페이지에 입력 `event`를 보냅니다.
`event` 객체에 대해 자세히 알아보려면 [webContents.sendInputEvent](web-contents.md##webcontentssendinputeventevent)를
참고하세요.
webview.stopFindInPage('keepSelection');
});
-const rquestId = webview.findInPage('test');
+const requestId = webview.findInPage('test');
```
### Event: 'new-window'
* Python 2.7.x. 몇몇 CentOS와 같은 배포판들은 아직도 Python 2.6.x 버전을 사용합니다.
그래서 먼저 `python -V`를 통해 버전을 확인할 필요가 있습니다.
* Node.js v0.12.x. Node를 설치하는 방법은 여러 가지가 있습니다. 먼저,
- [Node.js](http://nodejs.org) 사이트에서 소스코드를 받아 빌드하는 방법입니다.
+ [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)을
```
다른 배포판의 경우 pacman 같은 패키지 매니저를 통해 패키지를 설치 할 수 있습니다.
-패키지의 이름은 대부분 위 예시와 비슷할 것입니다. 또는 소스코드를 내려받아
+패키지의 이름은 대부분 위 예시와 비슷할 것입니다. 또는 소스 코드를 내려받아
직접 빌드하는 방법도 있습니다.
## 코드 가져오기
| └── common - 메인과 렌더러 프로세스에서 모두 사용하는 코드, 몇가지 유틸리티
| 함수들이 포함되어 있고 node의 메시지 루프와 Chromium의 메시지 루프를 통합.
| └── api - 공통 API 구현들, 기초 Electron 빌트-인 모듈들.
-├── chromium_src - Chromium에서 복사하여 가져온 소스코드.
+├── chromium_src - Chromium에서 복사하여 가져온 소스 코드.
├── default_app - Electron에 앱이 제공되지 않았을 때 보여지는 기본 페이지.
├── docs - 참조 문서.
├── lib - JavaScript 소스 코드.
* **script** - 개발목적으로 사용되는 빌드, 패키징, 테스트, 기타등을 실행하는 스크립트.
* **tools** - gyp 파일에서 사용되는 헬퍼 스크립트 `script`와는 다르게 유저로부터 직접
실행되지 않는 스크립트들을 이곳에 넣습니다.
-* **vendor** - 소스코드의 서드파티 종속성 코드 소스 코드 디렉터리가 겹쳐 혼란을 일으킬
+* **vendor** - 소스 코드의 서드파티 종속성 코드 소스 코드 디렉터리가 겹쳐 혼란을 일으킬
수 있기 때문에 `third_party`와 같은 Chromium 소스 코드 디렉터리에서 사용된 폴더
이름은 사용하지 않았습니다.
* **node_modules** - 빌드에 사용되는 node 서드파티 모듈.
## asar로 앱 패키징 하기
소스파일 전체를 복사해서 배포하는 것과는 별개로 [asar](https://github.com/electron/asar)
-아카이브를 통해 어플리케이션의 소스코드가 사용자에게 노출되는 것을 방지할 수 있습니다.
+아카이브를 통해 어플리케이션의 소스 코드가 사용자에게 노출되는 것을 방지할 수 있습니다.
`asar` 아카이브를 사용할 땐 단순히 `app` 폴더 대신에 어플리케이션을 패키징한
`app.asar` 파일로 대체하면됩니다. Electron은 자동으로 `app`폴더 대신 asar 아카이브를
아이콘은 [.desktop](https://developer.gnome.org/integration-guide/stable/desktop-files.html.en)
파일을 사용하여 지정할 수 있습니다.
-## Electron 소스코드를 다시 빌드하여 리소스 수정하기
+## 패키징 툴
+
+어플리케이션을 일일이 수동으로 패키지로 만드는 대신, 서드 파티 패키징 툴을 사용하며
+이러한 작업을 자동화 시킬 수 있습니다:
+
+* [electron-packager](https://github.com/maxogden/electron-packager)
+* [electron-builder](https://github.com/loopline-systems/electron-builder)
+
+## Electron 소스 코드를 다시 빌드하여 리소스 수정하기
-또한 Electron 소스코드를 다시 빌드할 때 어플리케이션 이름을 변경할 수 있습니다.
+또한 Electron 소스 코드를 다시 빌드할 때 어플리케이션 이름을 변경할 수 있습니다.
`GYP_DEFINES` 환경변수를 사용하여 다음과 같이 다시 빌드할 수 있습니다:
### grunt-build-atom-shell
-Electron의 소스코드를 수정하고 다시 빌드하는 작업은 상당히 복잡합니다. 일일이
-소스코드를 수정하는 대신 [grunt-build-atom-shell](https://github.com/paulcbetts/grunt-build-atom-shell)을
+Electron의 소스 코드를 수정하고 다시 빌드하는 작업은 상당히 복잡합니다. 일일이
+소스 코드를 수정하는 대신 [grunt-build-atom-shell](https://github.com/paulcbetts/grunt-build-atom-shell)을
사용하여 빌드를 자동화 시킬 수 있습니다.
이 툴을 사용하면 자동으로 `.gyp`파일을 수정하고 다시 빌드합니다. 그리고 어플리케이션의
네이티브 Node 모듈 또한 새로운 실행파일 이름으로 일치시킵니다.
-
-## 패키징 툴
-
-어플리케이션을 일일이 수동으로 패키지로 만드는 대신, 서드 파티 패키징 툴을 사용하며
-이러한 작업을 자동화 시킬 수 있습니다:
-
-* [electron-packager](https://github.com/maxogden/electron-packager)
-* [electron-builder](https://github.com/loopline-systems/electron-builder)
# 어플리케이션 패키징
Windows에서 일어나는 긴 경로 이름에 대한 [issues](https://github.com/joyent/node/issues/6960)를
-완화하고 `require` 속도를 약간 빠르게 하며 어플리케이션의 리소스와 소스코드를 좋지 않은
+완화하고 `require` 속도를 약간 빠르게 하며 어플리케이션의 리소스와 소스 코드를 좋지 않은
사용자로부터 보호하기 위해 어플리케이션을 [asar][asar] 아카이브로 패키징 할 수 있습니다.
## `asar` 아카이브 생성
다음 예시는 [React DevTools Extension](https://github.com/facebook/react-devtools)을
사용합니다.
-먼저 소스코드를 다운로드 받습니다:
+먼저 소스 코드를 다운로드 받습니다:
```bash
$ cd /some-directory