This commit is contained in:
大和屋 貴仁 2016-01-11 14:12:43 +09:00
commit 630819e1d6
18 changed files with 325 additions and 132 deletions

View file

@ -4,7 +4,7 @@
'product_name%': 'Electron',
'company_name%': 'GitHub, Inc',
'company_abbr%': 'github',
'version%': '0.36.2',
'version%': '0.36.3',
},
'includes': [
'filenames.gypi',

View file

@ -17,9 +17,9 @@
<key>CFBundleIconFile</key>
<string>atom.icns</string>
<key>CFBundleVersion</key>
<string>0.36.2</string>
<string>0.36.3</string>
<key>CFBundleShortVersionString</key>
<string>0.36.2</string>
<string>0.36.3</string>
<key>LSApplicationCategoryType</key>
<string>public.app-category.developer-tools</string>
<key>LSMinimumSystemVersion</key>

View file

@ -56,8 +56,8 @@ END
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 0,36,2,0
PRODUCTVERSION 0,36,2,0
FILEVERSION 0,36,3,0
PRODUCTVERSION 0,36,3,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@ -74,12 +74,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "GitHub, Inc."
VALUE "FileDescription", "Electron"
VALUE "FileVersion", "0.36.2"
VALUE "FileVersion", "0.36.3"
VALUE "InternalName", "electron.exe"
VALUE "LegalCopyright", "Copyright (C) 2015 GitHub, Inc. All rights reserved."
VALUE "OriginalFilename", "electron.exe"
VALUE "ProductName", "Electron"
VALUE "ProductVersion", "0.36.2"
VALUE "ProductVersion", "0.36.3"
VALUE "SquirrelAwareVersion", "1"
END
END

View file

@ -7,7 +7,7 @@
#define ATOM_MAJOR_VERSION 0
#define ATOM_MINOR_VERSION 36
#define ATOM_PATCH_VERSION 2
#define ATOM_PATCH_VERSION 3
#define ATOM_VERSION_IS_RELEASE 1

View file

@ -17,7 +17,7 @@ class FilePath;
namespace chrome {
enum {
PATH_START = 2000,
PATH_START = 1000,
DIR_APP = PATH_START, // Directory where dlls and data reside.
DIR_LOGS, // Directory where logs should be written.

View file

@ -1,34 +1,32 @@
# クイックスタート
## 導入
Electron ではリッチなネイティブ API を持ったランタイムを提供することによってピュアな JavaScript でデスクトップアプリケーションをつくることができます。ウェブサーバーの代わりにデスクトップアプリケーションに焦点をあてた Node.js ランタイムであるといえばわかりやすいかもしれません。
ElectronではリッチなネイティブAPIを持ったランタイムを提供することによってピュアなJavaScriptでデスクトップアプリケーションをつくることができます。ウェブサーバーの代わりにデスクトップアプリケーションに焦点をあてたio.jsランタイムであるといえばわかりやすいかもしれません。
ElectronはJavaScriptをGUIライブラリにバインディングしません。その代わりに、ElectronはウェブページをGUIとして使用します。なのでElectronはJavaScriptによってコントロールされる最小のChromiumブラウザでもあるともいえます。
Electron は JavaScript を GUI ライブラリにバインディングしません。その代わりに、Electron はウェブページを GUI として使用します。なので Electron は JavaScript によってコントロールされる最小のChromium ブラウザでもあるともいえます。
### メインプロセス
Electronでは、`package.json` の `main`で実行されるプロセスを __メインプロセス__ と呼びます。メインスクリプトではGUIにウェブページを表示することができるプロセスを実行します。
Electron では、`package.json` の `main` スクリプトで実行されるプロセスを __メインプロセス__ と呼びます。メインプロセスで実行されるスクリプトがウェブページを作ることによって GUI を表示することができます。
### レンダラープロセス
Electronはウェブページを表示させるためにChromiumを使用しているので、Chromiumのマルチプロセスアーキテクチャが使用されることになります。Electronで実行されるウェブページはそれぞれ自身のプロセスで実行されます。それを __レンダラープロセス__ と呼びます。
Electron はウェブページを表示させるために Chromium を使用しているので、Chromium のマルチプロセスアーキテクチャも使用されることになります。Electron で実行されるウェブページはそれぞれ自身のプロセスで実行されます。それを __レンダラープロセス__ と呼びます。
通常、ブラウザのウェブページはサンドボックス環境で実行されネイティブなリソースへのアクセスができません。Electronではウェブページからio.jsのAPIを使って、ネイティブリソースへの権限が与えられます。そのおかげでウェブページの中からJavaScriptを使って低レベルなオペレーティングシステムとのインタラクションが可能になります。
通常のブラウザでは、ウェブページはサンドボックス環境で実行されネイティブなリソースへのアクセスができません。Electron ではウェブページから Node.js の API を使えるためオペレーティングシステムと低レベルなやりとりが可能です。
### メインプロセスとレンダラープロセスの違い
メインプロセスは `BrowserWindow` インスタンスを作ることによってウェブページをつくります。それぞれの `BrowserWindow` インスタンスはそれ自身の レンダラープロセス上でウェブページを実行します。`BrowserWindow` インスタンスが破棄されると、対応するレンダラープロセスも終了されます。
メインプロセスは `BrowserWindow` インスタンスを作ることによってウェブページをつくります。それぞれの `BrowserWindow` インスタンスはそれ自身のレンダラープロセス上でウェブページを実行します。`BrowserWindow` インスタンスが破棄されると、対応するレンダラープロセスも終了されます。
メインプロセスはすべてのウェブページとそれに対応するレンダラープロセスを管理しています。それぞれのレンダラープロセスは分離しているのでウェブページで実行されていることだけを気に留めておいてください
メインプロセスはすべてのウェブページとそれに対応するレンダラープロセスを管理しています。それぞれのレンダラープロセスは隔離されているので、自身の中で実行されているウェブページの面倒だけをみます
ウェブページでは、GUI関連のAPIを呼ぶことはできません。なぜならば、ウェブページで管理しているネイティブのGUIリソースは非常に危険で簡単にリークしてしまうからです。もしウェブページ内でGUIを操作したい場合には、メインプロセスと通信をする必要があります。
ウェブページでは、GUI 関連の API を呼ぶことはできません。なぜならば、ウェブページからネイティブ GUI リソースを扱うことは非常に危険であり、簡単にリソースをリークしてしまうからです。もしウェブページ内でGUI を操作したい場合には、ウェブページのレンダラープロセスはメインプロセスにそれらの操作をするように伝える必要があります。
Electronでは、メインプロセスとレンダラープロセスとのコミュニケーションをするために[ipc](../api/ipc-renderer.md)モジュールを提供しています。またそれと、RPC形式の通信を行う[remote](../api/remote.md)モジュールもあります。
Electron では、メインプロセスとレンダラープロセスとのコミュニケーションをするために [ipc](../api/ipc-renderer.md) モジュールを提供しています。またそれと、RPC 形式の通信を行う [remote](../api/remote.md) モジュールもあります。
## Electronアプリを作成する
一般的に Electronアプリの構成は次のようになります
一般的に Electron アプリの構成は次のようになります:
```text
your-app/
@ -37,7 +35,7 @@ your-app/
└── index.html
```
`package.json`の形式はNodeモジュールとまったく同じです。 `main` フィールドでアプリを起動するためのスクリプトを特定し、メインプロセスで実行します。 `package.json`の例は次のようになります:
`package.json` の形式は Node モジュールとまったく同じです。 `main` フィールドで指定するスクリプトはアプリの起動スクリプトであり、メインプロセスを実行します。 `package.json` の例は次のようになります:
```json
{
@ -47,25 +45,32 @@ your-app/
}
```
__注記__ `package.json``main` が存在しない場合、Electron は `index.js` のロードを試みます。
`main.js` ではウィンドウを作成してシステムイベントを管理します。典型的な例は次のようになります:
```javascript
var app = require('app'); // Module to control application life.
var BrowserWindow = require('browser-window'); // Module to create native browser window.
'use strict';
const electron = require('electron');
const app = electron.app; // Module to control application life.
const BrowserWindow = electron.BrowserWindow; // Module to create native browser window.
// Keep a global reference of the window object, if you don't, the window will
// be closed automatically when the javascript object is GCed.
// be closed automatically when the JavaScript object is garbage collected.
var mainWindow = null;
// Quit when all windows are closed.
app.on('window-all-closed', function() {
// On OS X it is common for applications and their menu bar
// to stay active until the user quits explicitly with Cmd + Q
if (process.platform != 'darwin') {
app.quit();
}
});
// This method will be called when Electron has done everything
// initialization and ready for creating browser windows.
// This method will be called when Electron has finished
// initialization and is ready to create browser windows.
app.on('ready', function() {
// Create the browser window.
mainWindow = new BrowserWindow({width: 800, height: 600});
@ -73,8 +78,8 @@ app.on('ready', function() {
// and load the index.html of the app.
mainWindow.loadURL('file://' + __dirname + '/index.html');
// Open the devtools.
mainWindow.openDevTools();
// Open the DevTools.
mainWindow.webContents.openDevTools();
// Emitted when the window is closed.
mainWindow.on('closed', function() {
@ -86,43 +91,81 @@ app.on('ready', function() {
});
```
最後に表示するウェブページ`index.html`は次のようになります:
最後に表示するウェブページ `index.html` は次のようになります:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Hello World!</title>
</head>
<body>
<h1>Hello World!</h1>
We are using io.js <script>document.write(process.version)</script>
and Electron <script>document.write(process.versions['electron'])</script>.
We are using node <script>document.write(process.versions.node)</script>,
Chrome <script>document.write(process.versions.chrome)</script>,
and Electron <script>document.write(process.versions.electron)</script>.
</body>
</html>
```
## アプリを実行する
アプリケーションを作り終えたら、[Application distribution](./application-distribution.md)ガイドにしたがってディストリビューションを作成します、そしてパッケージされたアプリケーションとして配布することが可能です。またダウンロードしたElectronのバイナリをアプリケーション・ディレクトリを実行するために利用することもできます
最初の `main.js`、`index.html`、`package.json` を作ったら、手元でアプリを実行し、思った通りに動くのを確認したいでしょう
Windowsの場合
### electron-prebuilt
`electron-prebuilt``npm` でグローバルインストールしているなら、アプリのソースディレクトリ内で以下を実行するだけで済みます:
```bash
electron .
```
ローカルにインストールしているなら以下を実行してください:
```bash
./node_modules/.bin/electron .
```
### 手動ダウンロードした Electron バイナリを使う場合
もしも Electron を手動ダウンロードしているなら、同梱されているバイナリであなたのアプリを直接実行できます。
#### Windows
```bash
$ .\electron\electron.exe your-app\
```
Linuxの場合
#### Linux
```bash
$ ./electron/electron your-app/
```
OS Xの場合
#### OS X
```bash
$ ./Electron.app/Contents/MacOS/Electron your-app/
```
`Electron.app` はElectronのリリースパッケージに含まれており、[ここ](https://github.com/atom/electron/releases) からダウンロードできます。
`Electron.app` は Electron のリリースパッケージの一部で、[ここ](https://github.com/atom/electron/releases) からダウンロードできます。
### Run as a distribution
アプリケーションを作り終えたら、[Application distribution](./application-distribution.md) ガイドにしたがってディストリビューションを作成し、そしてパッケージされたアプリケーションとして実行することが可能です。
### 試してみよう
このチュートリアルのコードは [`atom/electron-quick-start`](https://github.com/atom/electron-quick-start) リポジトリから clone して実行できます。
**注記**:例を試すには、[Git](https://git-scm.com) と [Node.js](https://nodejs.org/en/download/) ([npm](https://npmjs.org) もこれに含まれています) が必要です。
```bash
# Clone the repository
$ git clone https://github.com/atom/electron-quick-start
# Go into the repository
$ cd electron-quick-start
# Install dependencies and run the app
$ npm install && npm start
```

View file

@ -6,11 +6,18 @@ URL에 포함되어 있습니다. 만약 그렇지 않다면, 아마 현재 보
수 있습니다. 또한 GitHub 인터페이스의 "Switch branches/tags" 드롭다운 메뉴에서도
사용 중인 Electron 버전으로 변경할 수 있습니다.
**역주:** 한국어 번역 문서는 atom.io에 반영되어있지 않습니다. 따라서 번역 문서는
GitHub 프로젝트내에서만 볼 수 있 `master` 브랜치의 문서는 현재 개발중인 프로젝트의
**역주:** 한국어 번역 문서는 `atom.io`에 반영되어 있지 않습니다. 따라서 번역 문서는
GitHub 프로젝트내에서만 볼 수 있으며 `master` 브랜치의 문서는 현재 개발중인 프로젝트의
문서입니다. 한국어 번역 문서는 현재 `upstream` 원본 문서의 변경에 따라 최대한 문서의
버전을 맞추려고 노력하고 있지만 가끔 누락된 번역이 존재할 수 있습니다.
## FAQ
Electron에 대해 자주 묻는 질문이 있습니다. 이슈를 생성하기 전에 다음 문서를 먼저
확인해 보세요:
* [Electron FAQ](faq/electron-faq.md)
## 개발 가이드
* [지원하는 플랫폼](tutorial/supported-platforms.md)

View file

@ -77,73 +77,78 @@ win.show();
몇몇 GTK+3 데스크톱 환경에서만 작동합니다. 기본값은 `false`입니다.
* `transparent` Boolean - 윈도우 창을 [투명화](frameless-window.md)합니다. 기본값은
`false`입니다.
* `type` String - 특정 플랫폼에만 적용되는 윈도우 창의 종류를 지정합니다. 기본적으로
이 속성이 `undefined`일 경우 표준 윈도우가 사용됩니다. 사용할 수 있는 창의 종류는
다음과 같습니다:
* Linux의 경우: `desktop`, `dock`, `toolbar`, `splash`, `notification` 종류를
사용할 수 있습니다.
* OS X의 경우: `desktop`, `textured` 종류를 사용할 수 있습니다. `textured` 종류는
창을 그라디언트 형태로 표현합니다 (`NSTexturedBackgroundWindowMask`) `desktop`
종류는 데스크탑 배경 레벨에 윈도우를 배치합니다 (`kCGDesktopWindowLevel - 1`).
참고로 이렇게 만들어진 윈도우는 포커스, 키보드, 마우스 이벤트를 받을 수 없습니다.
하지만 편법으로 `globalShortcut`을 통해 키 입력을 받을 수 있습니다.
* `type` String - 특정 플랫폼에만 적용되는 윈도우 창의 종류를 지정합니다. 기본값은
일반 윈도우 입니다. 사용할 수 있는 창의 종류는 아래를 참고하세요.
* `standardWindow` Boolean - OS X의 표준 윈도우를 텍스쳐 윈도우 대신 사용합니다.
기본 값은 `true`입니다.
* `titleBarStyle` String, OS X - 윈도우 타이틀 바 스타일을 지정합니다. 이 속성은
OS X 10.10 Yosemite 이후 버전만 지원합니다. 다음 3가지 종류의 값을 사용할 수
있습니다:
* `default` 또는 미지정: 표준 Mac 회색 불투명 스타일을 사용합니다.
* `hidden`: 타이틀 바를 숨기고 컨텐츠 전체를 윈도우 크기에 맞춥니다.
타이틀 바는 없어지지만 표준 창 컨트롤 ("신호등 버튼")은 왼쪽 상단에 유지됩니다.
* `hidden-inset`: `hidden` 타이틀 바 속성과 함께 신호등 버튼이 윈도우 모서리로부터
약간 더 안쪽으로 들어가도록합니다.
* `titleBarStyle` String, OS X - 윈도우 타이틀 바 스타일을 지정합니다. 자세한 사항은
아래를 참고하세요.
* `webPreferences` Object - 웹 페이지 기능을 설정합니다. 사용할 수 있는 속성은
다음과 같습니다:
* `nodeIntegration` Boolean - node(node.js) 통합 여부. 기본값은 `true`입니다.
* `preload` String - 스크립트를 지정하면 페이지 내의 다른 스크립트가 작동하기 전에
아래를 참고하세요.
`type` 속성에서 사용할 수 있는 값과 동작은 다음과 같으며, 플랫폼에 따라 다릅니다:
* Linux의 경우, `desktop`, `dock`, `toolbar`, `splash`, `notification` 종류를
사용할 수 있습니다.
* OS X의 경우, `desktop`, `textured` 종류를 사용할 수 있습니다.
* `textured`는 창에 메탈 그라디언트 외관(`NSTexturedBackgroundWindowMask`)을
설정합니다.
* `desktop`은 데스크탑 배경 레벨(`kCGDesktopWindowLevel - 1`)에 윈도우를
배치합니다. 참고로 이렇게 만들어진 윈도우는 포커스, 키보드, 마우스 이벤트를 받을
수 없습니다. 하지만 편법으로 `globalShortcut`을 통해 키 입력을 받을 수 있습니다.
`titleBarStyle` 속성은 OS X 10.10 Yosemite 이후 버전만 지원하며, 다음 3가지 종류의
값을 사용할 수 있습니다:
* `default` 또는 미지정: 표준 Mac 회색 불투명 스타일을 사용합니다.
* `hidden`: 타이틀 바를 숨기고 컨텐츠 전체를 윈도우 크기에 맞춥니다.
타이틀 바는 없어지지만 표준 창 컨트롤 ("신호등 버튼")은 왼쪽 상단에 유지됩니다.
* `hidden-inset`: `hidden` 타이틀 바 속성과 함께 신호등 버튼이 윈도우 모서리로부터
약간 더 안쪽으로 들어가도록합니다.
`webPreferences` 속성은 다음과 같은 속성을 가질 수 있습니다:
* `nodeIntegration` Boolean - node(node.js) 통합 여부. 기본값은 `true`입니다.
* `preload` String - 스크립트를 지정하면 페이지 내의 다른 스크립트가 작동하기 전에
로드됩니다. 여기서 지정한 스크립트는 node 통합 활성화 여부에 상관없이 언제나 모든
node API에 접근할 수 있습니다. 이 속성의 스크립트 경로는 절대 경로로 지정해야
합니다. node 통합이 비활성화되어있을 경우, preload 스크립트는 node의 global
심볼들을 다시 global 스코프로 다시 포함 시킬 수 있습니다.
[여기](process.md#event-loaded)의 예제를 참고하세요.
* `partition` String - 페이지에서 사용할 세션을 지정합니다. 만약 `partition`
* `partition` String - 페이지에서 사용할 세션을 지정합니다. 만약 `partition`
`persist:`로 시작하면 페이지는 지속성 세션을 사용하며 다른 모든 앱 내의
페이지에서 같은 `partition`을 사용할 수 있습니다. 만약 `persist:` 접두어로
시작하지 않으면 페이지는 인-메모리 세션을 사용합니다. 여러 페이지에서 같은
`partition`을 지정하면 같은 세션을 공유할 수 있습니다. `partition`을 지정하지
않으면 어플리케이션의 기본 세션이 사용됩니다.
* `zoomFactor` Number - 페이지의 기본 줌 값을 지정합니다. 예를 들어 `300%`
* `zoomFactor` Number - 페이지의 기본 줌 값을 지정합니다. 예를 들어 `300%`
표현하려면 `3.0`으로 지정합니다. 기본값은 `1.0`입니다.
* `javascript` Boolean - 자바스크립트를 활성화합니다. 기본값은 `false`입니다.
* `webSecurity` Boolean - `false`로 지정하면 same-origin 정책을 비활성화합니다.
* `javascript` Boolean - 자바스크립트를 활성화합니다. 기본값은 `false`입니다.
* `webSecurity` Boolean - `false`로 지정하면 same-origin 정책을 비활성화합니다.
(이 속성은 보통 사람들에 의해 웹 사이트를 테스트할 때 사용합니다) 그리고
`allowDisplayingInsecureContent``allowRunningInsecureContent` 두 속성을
사용자가 `true`로 지정되지 않은 경우 `true`로 지정합니다. 기본값은
`true`입니다.
* `allowDisplayingInsecureContent` Boolean - https 페이지에서 http URL에서
* `allowDisplayingInsecureContent` Boolean - https 페이지에서 http URL에서
로드한 이미지 같은 리소스를 표시할 수 있도록 허용합니다. 기본값은 `false`입니다.
* `allowRunningInsecureContent` Boolean - https 페이지에서 http URL에서 로드한
* `allowRunningInsecureContent` Boolean - https 페이지에서 http URL에서 로드한
JavaScript와 CSS 또는 플러그인을 실행시킬 수 있도록 허용합니다. 기본값은
`false`입니다.
* `images` Boolean - 이미지 지원을 활성화합니다. 기본값은 `true`입니다.
* `textAreasAreResizable` Boolean - HTML TextArea 요소의 크기를 재조정을
* `images` Boolean - 이미지 지원을 활성화합니다. 기본값은 `true`입니다.
* `textAreasAreResizable` Boolean - HTML TextArea 요소의 크기를 재조정을
허용합니다. 기본값은 `true`입니다.
* `webgl` Boolean - WebGL 지원을 활성화합니다. 기본값은 `true`입니다.
* `webaudio` Boolean - WebAudio 지원을 활성화합니다. 기본값은 `true`입니다.
* `plugins` Boolean - 플러그인 활성화 여부를 지정합니다. 기본값은 `false`입니다.
* `experimentalFeatures` Boolean - Chrome의 실험적인 기능을 활성화합니다.
* `webgl` Boolean - WebGL 지원을 활성화합니다. 기본값은 `true`입니다.
* `webaudio` Boolean - WebAudio 지원을 활성화합니다. 기본값은 `true`입니다.
* `plugins` Boolean - 플러그인 활성화 여부를 지정합니다. 기본값은 `false`입니다.
* `experimentalFeatures` Boolean - Chrome의 실험적인 기능을 활성화합니다.
기본값은 `false`입니다.
* `experimentalCanvasFeatures` Boolean - Chrome의 실험적인 캔버스(canvas) 기능을
* `experimentalCanvasFeatures` Boolean - Chrome의 실험적인 캔버스(canvas) 기능을
활성화합니다. 기본값은 `false`입니다.
* `overlayScrollbars` Boolean - 오버레이 스크롤바를 활성화합니다. 기본값은
`false`입니다.
* `sharedWorker` Boolean - SharedWorker 기능을 활성화합니다. 기본값은
`false`입니다.
* `directWrite` Boolean - Windows에서 폰트 랜더링을 위해 DirectWrite를
* `directWrite` Boolean - Windows에서 폰트 랜더링을 위해 DirectWrite를
사용하는지를 지정합니다. 기본값은 `true`입니다.
* `pageVisibility` Boolean - 현재 윈도우의 가시성을 반영하는 대신 페이지가
visible 또는 hidden 중 지정된 상태를 계속 유지하도록 합니다. 이 속성을 `true`
지정하면 DOM 타이머의 스로틀링을 방지할 수 있습니다. 기본값은 `false`니다.
* `blinkFeatures` String - `CSSVariables,KeyboardEventKey`같은 `,`로 구분된
기능 문자열들의 리스트입니다. 지원하는 전체 기능 문자열들은
[setFeatureEnabledFromString][blink-feature-string] 함수에서 찾을 수 있습니다.
## Events
@ -747,3 +752,5 @@ Linux 플랫폼에선 Unity 데스크톱 환경만 지원합니다. 그리고
* `ignore` Boolean
윈도우에서 일어나는 모든 마우스 이벤트를 무시합니다.
[blink-feature-string]: https://code.google.com/p/chromium/codesearch#chromium/src/out/Debug/gen/blink/platform/RuntimeEnabledFeatures.cpp&sq=package:chromium&type=cs&l=527

View file

@ -119,6 +119,14 @@ TLS fallback에서 사용할 SSL/TLS 최소 버전을 지정합니다. ("tls1",
SSL 암호화를 비활성화할 대상 목록을 지정합니다. (`,`로 구분)
## --disable-renderer-backgrounding
Chromium이 랜더러 프로세스의 보이지 않는 페이지의 우선순위를 낮추는 것을 방지합니다.
이 플래그는 전역적이며 모든 랜더러 프로세스에 적용됩니다. 만약 하나의 윈도우창에만
스로틀링을 비활성화하고 싶다면 [조용한 오디오를 재생하는][play-silent-audio] 핵을 사용할
수 있습니다.
## --enable-logging
Chromium의 로그를 콘솔에 출력합니다.
@ -149,3 +157,4 @@ Chromium의 로그를 콘솔에 출력합니다.
[app]: app.md
[append-switch]: app.md#appcommandlineappendswitchswitch-value
[ready]: app.md#event-ready
[play-silent-audio]: https://github.com/atom/atom/pull/9485/files

View file

@ -1,6 +1,6 @@
# global-shortcut
# globalSortcut
`global-shortcut` 모듈은 운영체제의 전역 키보드 단축키를 등록/해제 하는 방법을
`globalShortcut` 모듈은 운영체제의 전역 키보드 단축키를 등록/해제 하는 방법을
제공합니다. 이 모듈을 사용하여 사용자가 다양한 작업을 편하게 할 수 있도록 단축키를
정의 할 수 있습니다.
@ -38,26 +38,29 @@ app.on('will-quit', function() {
## Methods
`global-shortcut` 모듈은 다음과 같은 메서드를 가지고 있습니다:
`globalShortcut` 모듈은 다음과 같은 메서드를 가지고 있습니다:
### `globalShortcut.register(accelerator, callback)`
* `accelerator` [Accelerator](accelerator.md)
* `callback` Function
`accelerator`로 표현된 전역 단축키를 등록합니다. 유저로부터 등록된 단축키가 눌렸을
경우 `callback` 함수가 호출됩니다. `accelerator` 단축키가 등록되었을 경우
`true`를 반환합니다. 그 외엔 `false`를 반환합니다. 예를 들어 지정한
`accelerator`가 이미 다른 호출자 또는 네이티브 어플리케이션에서 등록된 상태를
생각할 수 있습니다.
`accelerator`의 전역 단축키를 등록합니다. 유저로부터 등록된 단축키가 눌렸을 경우
`callback` 함수가 호출됩니다.
accelerator가 이미 다른 어플리케이션에서 사용 중일 경우, 이 작업은 조용히 실패합니다.
이러한 동작은 어플리케이션이 전역 키보드 단축키를 가지고 충돌이 일어나지 않도록 하기
위해 운영체제에 의해 예정된 동작입니다.
### `globalShortcut.isRegistered(accelerator)`
* `accelerator` [Accelerator](accelerator.md)
지정된 `accelerator` 단축키가 등록되었는지 여부를 확인합니다. 반환값은 boolean값
입니다.
지정된 `accelerator` 단축키가 등록되었는지 여부를 확인합니다.
Accelerator가 이미 다른 어플리케이션에서 사용 중일 경우, 여전히 `false`를 반환합니다.
이러한 동작은 어플리케이션이 전역 키보드 단축키를 가지고 충돌이 일어나지 않도록 하기
위해 운영체제에 의해 예정된 동작입니다.
### `globalShortcut.unregister(accelerator)`

View file

@ -54,6 +54,24 @@ app.on('ready', function() {
});
```
## `Display` 객체
`Display` 객체는 시스템에 연결된 물리적인 디스플레이를 표현합니다. 헤드레스(headless)
시스템에선 가짜 `Display` 객체가 보여지거나 리모트(remote), 가상 디스플레이에
해당하게 됩니다.
* `display` object
* `id` Integer - 디스플레이에 관련된 유일 식별자.
* `rotation` Integer - 값은 0, 1, 2, 3이 될 수 있고, 각 값은 시계 방향을 기준으로
0, 90, 180, 270도의 화면 회전 상태로 표현됩니다.
* `scaleFactor` Number - 기기의 픽셀 스케일 크기.
* `touchSupport` String - 터치 스크린의 여부, `available`, `unavailable`,
`unknown` 값으로 반환됩니다.
* `bounds` Object
* `size` Object
* `workArea` Object
* `workAreaSize` Object
## Events
`screen` 모듈은 다음과 같은 이벤트를 가지고 있습니다:

View file

@ -0,0 +1,81 @@
# Electron FAQ
## 언제 Electron이 최신 버전의 Chrome으로 업그레이드 되나요?
Electron의 Chrome 버전은 보통 새로운 Chrome 안정 버전이 릴리즈 된 이후 1주 내지 2주
내로 업데이트됩니다.
또한 우리는 크롬의 안정된 채널만을 이용합니다, 만약 중요한 수정이 베타 또는 개발 채널인
경우, 우리는 해당 버전 대신 이전 버전을 다시 사용합니다.
## Electron은 언제 최신 버전의 Node.js로 업그레이드 하나요?
새로운 버전의 Node.js가 릴리즈 되면, 우리는 보통 Electron을 업그레이드 하기 전에 한
달 정도 대기합니다. 이렇게 하면 새로운 Node.js 버전을 업데이트 함으로써 발생하는
버그들을 피할 수 있습니다. 이러한 상황은 자주 발생합니다.
Node.js의 새로운 기능은 보통 V8 업그레이드에서 가져옵니다. Electron은 Chrome
브라우저에 탑재된 V8을 사용하고 있습니다. 눈부신 새로운 Node.js 버전의 자바스크립트
기능은 보통 이미 Electron에 있습니다.
## 제작한 어플리케이션의 윈도우/트레이가 몇 분 후에나 나타납니다.
이러한 문제가 발생하는 이유는 보통 윈도우/트레이를 담은 변수에 가비지 컬렉션이 작동해서
그럴 가능성이 높습니다.
이러한 문제를 맞닥뜨린 경우 다음 문서를 읽어보는 것이 좋습니다:
* [메모리 관리][memory-management]
* [변수 스코프][variable-scope]
만약 빠르게 고치고 싶다면, 다음과 같이 변수를 전역 변수로 만드는 방법이 있습니다:
```javascript
app.on('ready', function() {
var tray = new Tray('/path/to/icon.png');
})
```
를 이렇게:
```javascript
var tray = null;
app.on('ready', function() {
tray = new Tray('/path/to/icon.png');
})
```
## Electron에서 jQuery/RequireJS/Meteor/AngularJS를 사용할 수 없습니다.
Node.js가 Electron에 합쳐졌기 때문에, DOM에 `module`, `exports`, `require` 같은
몇 가지 심볼들이 추가됬습니다. 따라서 같은 이름의 심볼을 사용하는 몇몇 라이브러리들과
충돌이 발생할 수 있습니다.
이러한 문제를 해결하려면, Electron에서 node 포함을 비활성화시켜야 합니다:
```javascript
// 메인 프로세스에서.
var mainWindow = new BrowserWindow({
webPreferences: {
nodeIntegration: false
}
});
```
하지만 Node.js의 기능과 Electron API를 유지하고 싶다면 페이지에 다른 라이브러리를
추가하기 전에 심볼들의 이름을 변경해야 합니다:
```html
<head>
<script>
window.nodeRequire = require;
delete window.require;
delete window.exports;
delete window.module;
</script>
<script type="text/javascript" src="jquery.js"></script>
</head>
```
[memory-management]: https://developer.mozilla.org/ko/docs/Web/JavaScript/Memory_Management
[variable-scope]: https://msdn.microsoft.com/library/bzt2dkta(v=vs.94).aspx

View file

@ -106,14 +106,6 @@ MyApp.app/Contents
아이콘은 [.desktop](https://developer.gnome.org/integration-guide/stable/desktop-files.html.en)
파일을 사용하여 지정할 수 있습니다.
### 역주-자동화
어플리케이션 배포시 Electron의 리소스를 일일이 수정하는 것은 매우 반복적이고 복잡합니다.
하지만 이 작업을 자동화 시킬 수 있는 몇가지 방법이 있습니다:
* [electron-builder](https://github.com/loopline-systems/electron-builder)
* [electron-packager](https://github.com/maxogden/electron-packager)
## Electron 소스코드를 다시 빌드하여 리소스 수정하기
또한 Electron 소스코드를 다시 빌드할 때 어플리케이션 이름을 변경할 수 있습니다.
@ -146,3 +138,11 @@ Electron의 소스코드를 수정하고 다시 빌드하는 작업은 상당히
이 툴을 사용하면 자동으로 `.gyp`파일을 수정하고 다시 빌드합니다. 그리고 어플리케이션의
네이티브 Node 모듈 또한 새로운 실행파일 이름으로 일치시킵니다.
## 패키징 툴
어플리케이션을 일일이 수동으로 패키지로 만드는 대신, 서드 파티 패키징 툴을 사용하며
이러한 작업을 자동화 시킬 수 있습니다:
* [electron-packager](https://github.com/maxogden/electron-packager)
* [electron-builder](https://github.com/loopline-systems/electron-builder)

View file

@ -23,13 +23,30 @@ __참고:__ Electron은 현재 node-inspector 유틸리티와 호환성 문제
node-inspector 콘솔 내에서 메인 프로세스의 `process` 객체를 탐색할 경우 크래시가
발생할 수 있습니다.
### 1. [node-inspector][node-inspector] 서버 시작
### 1. [node-gyp 필수 도구][node-gyp-required-tools]를 설치했는지 확인
### 2. [node-inspector][node-inspector] 설치
```bash
$ node-inspector
$ npm install node-inspector
```
### 2. Electron용 디버그 모드 활성화
### 3. 패치된 버전의 `node-pre-gyp` 설치
```bash
$ npm install git+https://git@github.com/enlight/node-pre-gyp.git#detect-electron-runtime-in-find
```
### 4. Electron용 `node-inspector` `v8` 모듈을 재 컴파일 (target을 사용하는 Electron의 버전에 맞춰 변경)
```bash
$ node_modules/.bin/node-pre-gyp --target=0.36.2 --runtime=electron --fallback-to-build --directory node_modules/v8-debug/ --dist-url=https://atom.io/download/atom-shell reinstall
$ node_modules/.bin/node-pre-gyp --target=0.36.2 --runtime=electron --fallback-to-build --directory node_modules/v8-profiler/ --dist-url=https://atom.io/download/atom-shell reinstall
```
또한 [네이티브 모듈을 사용하는 방법](how-to-install-native-modules) 문서도 참고해보세요.
### 5. Electron 디버그 모드 활성화
다음과 같이 debung 플래그로 Electron을 실행할 수 있습니다:
@ -43,9 +60,18 @@ $ electron --debug=5858 your/app
$ electron --debug-brk=5858 your/app
```
### 3. 디버그 UI 로드
### 5. Electron을 사용하는 [node-inspector][node-inspector] 시작
```bash
$ ELECTRON_RUN_AS_NODE=true path/to/electron.exe node_modules/node-inspector/bin/inspector.js
```
### 6. 디버거 UI 로드
Chrome 브라우저에서 http://127.0.0.1:8080/debug?ws=127.0.0.1:8080&port=5858 주소에
접속합니다. (기본포트 또는 지정한 포트로 접속)
접속합니다. (기본 포트 또는 지정한 포트로 접속) 엔트리의 라인이 debug-brk로 시작하는
경우 일시정지 버튼을 클릭해야 할 수도 있습니다.
[node-inspector]: https://github.com/node-inspector/node-inspector
[node-gyp-required-tools]: https://github.com/nodejs/node-gyp#installation
[how-to-install-native-modules]: using-native-node-modules.md#네이티브-모듈을-설치하는-방법

View file

@ -20,7 +20,7 @@ Ubuntu 12.04 下编译的,`arm` 版的二进制文件是在 ARM v7硬浮点
Debian Wheezy 版本的 NEON下完成的。
预编译二进制文件是否能够运行,取决于其中是否包括了编译平台链接的库,所以只有 Ubuntu 12.04
可以保证正常工作,但是以下的平台也被正事可以运行 Electron的预编译版本
可以保证正常工作,但是以下的平台也被证实可以运行 Electron的预编译版本
* Ubuntu 12.04 及更新
* Fedora 21

View file

@ -38,8 +38,7 @@ var win = new BrowserWindow({ transparent: true, frame: false });
### Limitations
* You can not click through the transparent area. We are going to introduce an
API to set window shape to solve this, but currently blocked at an
[upstream bug](https://code.google.com/p/chromium/issues/detail?id=387234).
API to set window shape to solve this, see [our issue](https://github.com/atom/electron/issues/1335) for details.
* Transparent windows are not resizable. Setting `resizable` to `true` may make
a transparent window stop working on some platforms.
* The `blur` filter only applies to the web page, so there is no way to apply

View file

@ -1,6 +1,6 @@
{
"name": "electron",
"version": "0.36.2",
"version": "0.36.3",
"devDependencies": {
"asar": "^0.9.0",
"coffee-script": "^1.9.2",

2
vendor/brightray vendored

@ -1 +1 @@
Subproject commit 8550f2a032b332d86bd8a7ec235685e22d028906
Subproject commit 8b6c24dce25e743ceecd06d1c175c1cf8b91627b