Merge pull request #7709 from tinydew4/translate-ko

[ko] 	Apply the changes till the 'b2559d7' commit.
This commit is contained in:
Kevin Sawicki 2016-10-24 16:36:58 +09:00 committed by GitHub
commit 82e593b44f
17 changed files with 420 additions and 166 deletions

View file

@ -194,6 +194,7 @@ Returns:
* `validExpiry` Integer - 초 단위의 인증서가 만료되는 날짜 * `validExpiry` Integer - 초 단위의 인증서가 만료되는 날짜
* `fingerprint` String - 인증서의 지문 * `fingerprint` String - 인증서의 지문
* `callback` Function * `callback` Function
* `isTrusted` Boolean - 인증서를 신뢰할지 여부
`url`에 대한 `certificate` 인증서의 유효성 검증에 실패했을 때 발생하는 이벤트입니다. `url`에 대한 `certificate` 인증서의 유효성 검증에 실패했을 때 발생하는 이벤트입니다.
인증서를 신뢰한다면 `event.preventDefault()``callback(true)`를 호출하여 인증서를 신뢰한다면 `event.preventDefault()``callback(true)`를 호출하여
@ -222,6 +223,7 @@ Returns:
* `url` URL * `url` URL
* `certificateList` [Certificate[]](structures/certificate.md) * `certificateList` [Certificate[]](structures/certificate.md)
* `callback` Function * `callback` Function
* `certificate` [Certificate](structures/certificate.md)
클라이언트 인증이 요청되었을 때 발생하는 이벤트입니다. 클라이언트 인증이 요청되었을 때 발생하는 이벤트입니다.
@ -256,6 +258,8 @@ Returns:
* `port` Integer * `port` Integer
* `realm` String * `realm` String
* `callback` Function * `callback` Function
* `username` String
* `password` String
`webContents`가 기본 인증을 요청할 때 발생하는 이벤트입니다. `webContents`가 기본 인증을 요청할 때 발생하는 이벤트입니다.
@ -682,6 +686,8 @@ app.setJumpList([
### `app.makeSingleInstance(callback)` ### `app.makeSingleInstance(callback)`
* `callback` Function * `callback` Function
* `argv` String[] - 두번째 인스턴스의 명령줄 인수의 배열
* `workingDirectory` String - 두번째 인스턴스의 작업 디렉토리
현재 애플리케이션을 단일 인스턴스 애플리케이션으로 만들어줍니다. 이 메서드는 현재 애플리케이션을 단일 인스턴스 애플리케이션으로 만들어줍니다. 이 메서드는
애플리케이션이 여러 번 실행됐을 때 다중 인스턴스가 생성되는 대신 한 개의 주 애플리케이션이 여러 번 실행됐을 때 다중 인스턴스가 생성되는 대신 한 개의 주
@ -814,8 +820,7 @@ Returns `Object`:
열려있었는지 여부. 이는 앱이 마지막으로 종료되었던 때에 열려있었던 윈도우를 열려있었는지 여부. 이는 앱이 마지막으로 종료되었던 때에 열려있었던 윈도우를
복원하는 것을 표시합니다. 이 설정은 macOS에서만 지원됩니다. 복원하는 것을 표시합니다. 이 설정은 macOS에서만 지원됩니다.
**참고:** 이 API 는 [MAS 빌드](docs/tutorial/mac-app-store-submission-guide.md) **참고:** 이 API 는 [MAS 빌드][mas-builds]에 영향을 주지 않습니다.
에 영향을 주지 않습니다.
### `app.setLoginItemSettings(settings)` _macOS_ _Windows_ ### `app.setLoginItemSettings(settings)` _macOS_ _Windows_
@ -830,8 +835,7 @@ Returns `Object`:
앱의 로그인 항목 설정을 지정합니다. 앱의 로그인 항목 설정을 지정합니다.
**참고:** 이 API 는 [MAS 빌드](docs/tutorial/mac-app-store-submission-guide.md) **참고:** 이 API 는 [MAS 빌드][mas-builds]에 영향을 주지 않습니다.
에 영향을 주지 않습니다.
### `app.isAccessibilitySupportEnabled()` _macOS_ _Windows_ ### `app.isAccessibilitySupportEnabled()` _macOS_ _Windows_
@ -939,5 +943,6 @@ dock 아이콘의 `image`를 설정합니다.
[handoff]: https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/Handoff/HandoffFundamentals/HandoffFundamentals.html [handoff]: https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/Handoff/HandoffFundamentals/HandoffFundamentals.html
[activity-type]: https://developer.apple.com/library/ios/documentation/Foundation/Reference/NSUserActivity_Class/index.html#//apple_ref/occ/instp/NSUserActivity/activityType [activity-type]: https://developer.apple.com/library/ios/documentation/Foundation/Reference/NSUserActivity_Class/index.html#//apple_ref/occ/instp/NSUserActivity/activityType
[unity-requiremnt]: ../tutorial/desktop-environment-integration.md#unity-launcher-shortcuts-linux [unity-requiremnt]: ../tutorial/desktop-environment-integration.md#unity-launcher-shortcuts-linux
[mas-builds]: docs/tutorial/mac-app-store-submission-guide.md
[JumpListBeginListMSDN]: https://msdn.microsoft.com/en-us/library/windows/desktop/dd378398(v=vs.85).aspx [JumpListBeginListMSDN]: https://msdn.microsoft.com/en-us/library/windows/desktop/dd378398(v=vs.85).aspx
[about-panel-options]: https://developer.apple.com/reference/appkit/nsapplication/1428479-orderfrontstandardaboutpanelwith?language=objc [about-panel-options]: https://developer.apple.com/reference/appkit/nsapplication/1428479-orderfrontstandardaboutpanelwith?language=objc

View file

@ -941,6 +941,7 @@ Returns `Boolean` - 윈도우의 문서가 변경되었는지 여부.
* `rect` [Rectangle](structures/rectangle.md) (optional) - 캡쳐될 페이지의 영역 * `rect` [Rectangle](structures/rectangle.md) (optional) - 캡쳐될 페이지의 영역
* `callback` Function * `callback` Function
* `image` [NativeImage](native-image.md)
`webContents.capturePage([rect, ]callback)`와 같습니다. `webContents.capturePage([rect, ]callback)`와 같습니다.

View file

@ -31,7 +31,8 @@ contentTracing.startRecording(options, () => {
### `contentTracing.getCategories(callback)` ### `contentTracing.getCategories(callback)`
* `callback` Function * `callback`
* `categories` String[]
카테고리 그룹 세트를 가져옵니다. 카테고리 그룹은 도달된 코드 경로를 변경할 수 있습니다. 카테고리 그룹 세트를 가져옵니다. 카테고리 그룹은 도달된 코드 경로를 변경할 수 있습니다.
@ -85,6 +86,7 @@ EnableRecording 요청을 받게 됩니다. 모든 child 프로세스가 `startR
* `resultFilePath` String * `resultFilePath` String
* `callback` Function * `callback` Function
* `resultFilePath` String
모든 프로세스에서 레코딩을 중지합니다. 모든 프로세스에서 레코딩을 중지합니다.
@ -127,6 +129,7 @@ Child 프로세스는 일반적으로 추적 데이터와 희귀한 플러시
* `resultFilePath` String * `resultFilePath` String
* `callback` Function * `callback` Function
* `resultFilePath` String
현재 모니터링 추적 데이터를 가져옵니다. 현재 모니터링 추적 데이터를 가져옵니다.
@ -142,6 +145,8 @@ Child 프로세스는 일반적으로 추적 데이터와 희귀한 플러시
### `contentTracing.getTraceBufferUsage(callback)` ### `contentTracing.getTraceBufferUsage(callback)`
* `callback` Function * `callback` Function
* `value` Number
* `percentage` Number
추적 버퍼 % 전체 상태의 프로세스간 최대치를 가져옵니다. TraceBufferUsage 값이 추적 버퍼 % 전체 상태의 프로세스간 최대치를 가져옵니다. TraceBufferUsage 값이
결정되면 `callback`이 한 번 호출됩니다. 결정되면 `callback`이 한 번 호출됩니다.

View file

@ -62,21 +62,14 @@ function handleError (e) {
* `thumbnailSize` Object (optional) - 미디어 소스 섬네일의 크기가 맞춰져야 할 * `thumbnailSize` Object (optional) - 미디어 소스 섬네일의 크기가 맞춰져야 할
제안된 크기, 기본값은 `{width: 150, height: 150}`입니다. 제안된 크기, 기본값은 `{width: 150, height: 150}`입니다.
* `callback` Function * `callback` Function
* `error` Error
* `sources` [DesktopCapturerSource[]](structures/desktop-capturer-source.md)
사용할 수 있는 데스크톱 미디어 소스를 가져오기 시작하고 작업이 완료되면 사용할 수 있는 데스크톱 미디어 소스를 가져오기 시작하고 작업이 완료되면
`callback(error, sources)`가 호출됩니다. `callback(error, sources)`가 호출됩니다.
`sources``Source`객체의 배열이며, 각 `Source`는 캡쳐될 수 있는 스크린과 각기 `sources` 는 [`DesktopCapturerSource`](structures/desktop-capturer-source.md)
윈도우를 표현합니다. 그리고 다음과 같은 속성을 가지고 있습니다: 객체의 배열이며, 각 `DesktopCapturerSource` 는 캡쳐 가능한 화면 또는 개별
윈도우입니다.
* `id` String - 윈도우 또는 스크린의 식별자로써 [`navigator.webkitGetUserMedia`]를
호출할 때 `chromeMediaSourceId` 속성에 사용될 수 있습니다. 식별자의 형식은
`window:XX` 또는 `screen:XX` 이며 `XX` 부분은 무작위로 생성된 숫자입니다.
* `name` String - `Entire Screen` 또는 `Screen <index>`로 이름지어질 스크린
소스이며, 이는 윈도우 제목에 일치하는 윈도우 소스의 이름이 됩니다.
* `thumbnail` [NativeImage](native-image.md) - 섬네일 이미지입니다. **참고:**
`desktopCapturer.getSources`로 전달된 `options` 객체의 `thumnbailSize` 속성과
같이 이 섬네일의 사이즈가 완전히 같을 것이라고 보장하지 않습니다. 실질적인 크기는
스크린과 윈도우의 비율에 따라 달라질 수 있습니다.
[`navigator.webkitGetUserMedia`]: https://developer.mozilla.org/en/docs/Web/API/Navigator/getUserMedia [`navigator.webkitGetUserMedia`]: https://developer.mozilla.org/en/docs/Web/API/Navigator/getUserMedia

View file

@ -34,6 +34,7 @@ console.log(dialog)
다음을 포함할 수 있습니다: `openFile`, `openDirectory`, `multiSelections`, 다음을 포함할 수 있습니다: `openFile`, `openDirectory`, `multiSelections`,
`createDirectory`, `showHiddenFiles`. `createDirectory`, `showHiddenFiles`.
* `callback` Function (optional) * `callback` Function (optional)
* `filePaths` String[] - 사용자가 선택한 파일 경로의 배열
사용할 대화 상자의 기능이 담긴 배열입니다. 다음을 포함할 수 있습니다: `openFile`, 사용할 대화 상자의 기능이 담긴 배열입니다. 다음을 포함할 수 있습니다: `openFile`,
`openDirectory`, `multiSelections`, `createDirectory` `openDirectory`, `multiSelections`, `createDirectory`
@ -77,6 +78,7 @@ console.log(dialog)
라벨이 사용됩니다. 라벨이 사용됩니다.
* `filters` String[] * `filters` String[]
* `callback` Function (optional) * `callback` Function (optional)
* `filename` String
작업에 성공하면 콜백으로 유저가 선택한 파일의 경로를 포함한 배열을 반환합니다. 그 외엔 작업에 성공하면 콜백으로 유저가 선택한 파일의 경로를 포함한 배열을 반환합니다. 그 외엔
`undefined`를 반환합니다. `undefined`를 반환합니다.
@ -112,6 +114,7 @@ console.log(dialog)
만듭니다. 이 기능으로 앱을 좀 더 현대적인 Windows 앱처럼 만들 수 있습니다. 이 만듭니다. 이 기능으로 앱을 좀 더 현대적인 Windows 앱처럼 만들 수 있습니다. 이
기능을 원하지 않으면 `noLink`를 true로 지정하면 됩니다. 기능을 원하지 않으면 `noLink`를 true로 지정하면 됩니다.
* `callback` Function (optional) * `callback` Function (optional)
* `response` Number - 눌려진 버튼의 인덱스
대화 상자를 표시합니다. `browserWindow`를 지정하면 대화 상자가 완전히 닫힐 때까지 대화 상자를 표시합니다. `browserWindow`를 지정하면 대화 상자가 완전히 닫힐 때까지
지정한 창을 사용할 수 없습니다. 완료 시 유저가 선택한 버튼의 인덱스를 반환합니다. 지정한 창을 사용할 수 없습니다. 완료 시 유저가 선택한 버튼의 인덱스를 반환합니다.

View file

@ -13,6 +13,9 @@
* `options` Object * `options` Object
* `click` Function - 메뉴 아이템이 클릭될 때 `click(menuItem, browserWindow, * `click` Function - 메뉴 아이템이 클릭될 때 `click(menuItem, browserWindow,
event)` 형태로 호출 되는 콜백 함수. event)` 형태로 호출 되는 콜백 함수.
* `menuItem` MenuItem
* `browserWindow` BrowserWindow
* `event` Event
* `role` String - 메뉴 아이템의 액션을 정의합니다. 이 속성을 지정하면 `click` * `role` String - 메뉴 아이템의 액션을 정의합니다. 이 속성을 지정하면 `click`
속성이 무시됩니다. 속성이 무시됩니다.
* `type` String - `MenuItem`의 타입 `normal`, `separator`, `submenu`, * `type` String - `MenuItem`의 타입 `normal`, `separator`, `submenu`,

View file

@ -75,29 +75,21 @@ app.on('ready', () => {
* `scheme` String * `scheme` String
* `handler` Function * `handler` Function
* `request` Object
* `url` String
* `referrer` String
* `method` String
* `uploadData` [UploadData[]](structures/upload-data.md)
* `callback` Function
* `filePath` String (optional)
* `completion` Function (optional) * `completion` Function (optional)
* `error` Error
`scheme`에 파일을 응답으로 보내는 프로토콜을 등록합니다. `handler``scheme`와 함께 `scheme`에 파일을 응답으로 보내는 프로토콜을 등록합니다. `handler``scheme`와 함께
`request`가 생성될 때 `handler(request, callback)` 형식으로 호출됩니다. `request`가 생성될 때 `handler(request, callback)` 형식으로 호출됩니다.
`completion` 콜백은 `scheme`가 성공적으로 등록되었을 때 `completion(null)` 형식으로 `completion` 콜백은 `scheme`가 성공적으로 등록되었을 때 `completion(null)` 형식으로
호출되고, 등록에 실패했을 땐 `completion(error)` 형식으로 에러 내용을 담아 호출됩니다. 호출되고, 등록에 실패했을 땐 `completion(error)` 형식으로 에러 내용을 담아 호출됩니다.
* `request` Object
* `url` String
* `referrer` String
* `method` String
* `uploadData` Array (optional)
* `callback` Function
`uploadData``data` 객체의 배열입니다:
* `data` Object
* `bytes` Buffer - 전송될 콘텐츠.
* `file` String - 업로드될 파일의 경로.
* `blobUUID` String - blob 데이터의 UUID. 데이터를 이용하기 위해
[ses.getBlobData](session.md#sesgetblobdataidentifier-callback) 메소드를
사용하세요.
`request`를 처리할 때 반드시 파일 경로 또는 `path` 속성을 포함하는 객체를 인수에 `request`를 처리할 때 반드시 파일 경로 또는 `path` 속성을 포함하는 객체를 인수에
포함하여 `callback`을 호출해야 합니다. 예: `callback(filePath)` 또는 포함하여 `callback`을 호출해야 합니다. 예: `callback(filePath)` 또는
`callback({path: filePath})`. `callback({path: filePath})`.
@ -114,7 +106,15 @@ app.on('ready', () => {
* `scheme` String * `scheme` String
* `handler` Function * `handler` Function
* `request` Object
* `url` String
* `referrer` String
* `method` String
* `uploadData` [UploadData[]](structures/upload-data.md)
* `callback` Function
* `buffer` Buffer (optional)
* `completion` Function (optional) * `completion` Function (optional)
* `error` Error
`Buffer`를 응답으로 전송하는 `scheme`의 프로토콜을 등록합니다. `Buffer`를 응답으로 전송하는 `scheme`의 프로토콜을 등록합니다.
@ -138,7 +138,15 @@ protocol.registerBufferProtocol('atom', (request, callback) => {
* `scheme` String * `scheme` String
* `handler` Function * `handler` Function
* `request` Object
* `url` String
* `referrer` String
* `method` String
* `uploadData` [UploadData[]](structures/upload-data.md)
* `callback` Function
* `buffer` Buffer (optional)
* `completion` Function (optional) * `completion` Function (optional)
* `error` Error
`String`을 응답으로 전송할 `scheme`의 프로토콜을 등록합니다. `String`을 응답으로 전송할 `scheme`의 프로토콜을 등록합니다.
@ -150,7 +158,21 @@ protocol.registerBufferProtocol('atom', (request, callback) => {
* `scheme` String * `scheme` String
* `handler` Function * `handler` Function
* `request` Object
* `url` String
* `referrer` String
* `method` String
* `uploadData` [UploadData[]](structures/upload-data.md)
* `callback` Function
* `redirectRequest` Object
* `url` String
* `method` String
* `session` Object (optional)
* `uploadData` Object (optional)
* `contentType` String - 콘텐츠의 MIME 타입.
* `data` String - 전송할 콘텐츠.
* `completion` Function (optional) * `completion` Function (optional)
* `error` Error
HTTP 요청을 응답으로 전송할 `scheme`의 프로토콜을 등록합니다. HTTP 요청을 응답으로 전송할 `scheme`의 프로토콜을 등록합니다.
@ -158,25 +180,16 @@ HTTP 요청을 응답으로 전송할 `scheme`의 프로토콜을 등록합니
`session` 속성을 포함하는 `redirectRequest` 객체와 함께 호출되어야 한다는 점을 `session` 속성을 포함하는 `redirectRequest` 객체와 함께 호출되어야 한다는 점을
제외하면 `registerFileProtocol`과 사용법이 같습니다. 제외하면 `registerFileProtocol`과 사용법이 같습니다.
* `redirectRequest` Object
* `url` String
* `method` String
* `session` Object (optional)
* `uploadData` Object (optional)
기본적으로 HTTP 요청은 현재 세션을 재사용합니다. 만약 서로 다른 세션에 요청을 보내고 기본적으로 HTTP 요청은 현재 세션을 재사용합니다. 만약 서로 다른 세션에 요청을 보내고
싶으면 `session``null`로 지정해야 합니다. 싶으면 `session``null`로 지정해야 합니다.
POST 요청에는 반드시 `uploadData` 객체가 제공되어야 합니다. POST 요청에는 반드시 `uploadData` 객체가 제공되어야 합니다.
* `uploadData` object
* `contentType` String - 콘텐츠의 MIME 타입.
* `data` String - 전송할 콘텐츠.
### `protocol.unregisterProtocol(scheme[, completion])` ### `protocol.unregisterProtocol(scheme[, completion])`
* `scheme` String * `scheme` String
* `completion` Function (optional) * `completion` Function (optional)
* `error` Error
`scheme`의 커스텀 프로토콜 등록을 해제합니다. `scheme`의 커스텀 프로토콜 등록을 해제합니다.
@ -184,6 +197,7 @@ POST 요청에는 반드시 `uploadData` 객체가 제공되어야 합니다.
* `scheme` String * `scheme` String
* `callback` Function * `callback` Function
* `error` Error
`scheme`에 동작(handler)이 등록되어 있는지 여부를 확인합니다. `callback`으로 `scheme`에 동작(handler)이 등록되어 있는지 여부를 확인합니다. `callback`으로
결과(boolean)가 반환됩니다. 결과(boolean)가 반환됩니다.
@ -192,7 +206,15 @@ POST 요청에는 반드시 `uploadData` 객체가 제공되어야 합니다.
* `scheme` String * `scheme` String
* `handler` Function * `handler` Function
* `request` Object
* `url` String
* `referrer` String
* `method` String
* `uploadData` [UploadData[]](structures/upload-data.md)
* `callback` Function
* `filePath` String
* `completion` Function (optional) * `completion` Function (optional)
* `error` Error
`scheme` 프로토콜을 가로채고 `handler`를 파일 전송에 대한 새로운 동작으로 사용합니다. `scheme` 프로토콜을 가로채고 `handler`를 파일 전송에 대한 새로운 동작으로 사용합니다.
@ -200,7 +222,15 @@ POST 요청에는 반드시 `uploadData` 객체가 제공되어야 합니다.
* `scheme` String * `scheme` String
* `handler` Function * `handler` Function
* `request` Object
* `url` String
* `referrer` String
* `method` String
* `uploadData` [UploadData[]](structures/upload-data.md)
* `callback` Function
* `filePath` String
* `completion` Function (optional) * `completion` Function (optional)
* `error` Error
`scheme` 프로토콜을 가로채고 `handler`를 문자열 전송에 대한 새로운 동작으로 사용합니다. `scheme` 프로토콜을 가로채고 `handler`를 문자열 전송에 대한 새로운 동작으로 사용합니다.
@ -208,7 +238,15 @@ POST 요청에는 반드시 `uploadData` 객체가 제공되어야 합니다.
* `scheme` String * `scheme` String
* `handler` Function * `handler` Function
* `request` Object
* `url` String
* `referrer` String
* `method` String
* `uploadData` [UploadData[]](structures/upload-data.md)
* `callback` Function
* `filePath` String
* `completion` Function (optional) * `completion` Function (optional)
* `error` Error
`scheme` 프로토콜을 가로채고 `handler``Buffer` 전송에 대한 새로운 동작으로 `scheme` 프로토콜을 가로채고 `handler``Buffer` 전송에 대한 새로운 동작으로
사용합니다. 사용합니다.
@ -217,7 +255,21 @@ POST 요청에는 반드시 `uploadData` 객체가 제공되어야 합니다.
* `scheme` String * `scheme` String
* `handler` Function * `handler` Function
* `request` Object
* `url` String
* `referrer` String
* `method` String
* `uploadData` [UploadData[]](structures/upload-data.md)
* `callback` Function
* `redirectRequest` Object
* `url` String
* `method` String
* `session` Object (optional)
* `uploadData` Object (optional)
* `contentType` String - 콘텐츠의 MIME 타입.
* `data` String - 전송할 콘텐츠.
* `completion` Function (optional) * `completion` Function (optional)
* `error` Error
`scheme` 프로토콜을 가로채고 `handler`를 HTTP 프로토콜의 요청에 대한 새로운 동작으로 `scheme` 프로토콜을 가로채고 `handler`를 HTTP 프로토콜의 요청에 대한 새로운 동작으로
사용합니다. 사용합니다.
@ -226,6 +278,7 @@ POST 요청에는 반드시 `uploadData` 객체가 제공되어야 합니다.
* `scheme` String * `scheme` String
* `completion` Function (optional) * `completion` Function (optional)
* `error` Error
가로챈 `scheme`를 삭제하고 기본 핸들러로 복구합니다. 가로챈 `scheme`를 삭제하고 기본 핸들러로 복구합니다.

View file

@ -201,6 +201,7 @@ proxyURL = [<proxyScheme>"://"]<proxyHost>[":"<proxyPort>]
* `url` URL * `url` URL
* `callback` Function * `callback` Function
* `proxy` Object
`url`의 프록시 정보를 해석합니다. `callback`은 요청이 수행되었을 때 `url`의 프록시 정보를 해석합니다. `callback`은 요청이 수행되었을 때
`callback(proxy)` 형태로 호출됩니다. `callback(proxy)` 형태로 호출됩니다.
@ -244,7 +245,11 @@ window.webContents.session.enableNetworkEmulation({offline: true})
#### `ses.setCertificateVerifyProc(proc)` #### `ses.setCertificateVerifyProc(proc)`
* `proc` Function * `proc` Function
* `hostname` String
* `certificate` [Certificate](structures/certificate.md)
* `callback` Function
* `isTrusted` Boolean - 인증서를 신뢰해야하는지 결정
`session`에 인증서의 유효성을 확인하는 프로세스(proc)를 등록합니다. `proc`은 서버 `session`에 인증서의 유효성을 확인하는 프로세스(proc)를 등록합니다. `proc`은 서버
인증서 유효성 검증 요청이 들어왔을 때 언제나 `proc(hostname, certificate, callback)` 인증서 유효성 검증 요청이 들어왔을 때 언제나 `proc(hostname, certificate, callback)`
@ -267,7 +272,8 @@ win.webContents.session.setCertificateVerifyProc((hostname, cert, callback) => {
* `webContents` Object - [WebContents](web-contents.md) 권한을 요청. * `webContents` Object - [WebContents](web-contents.md) 권한을 요청.
* `permission` String - 'media', 'geolocation', 'notifications', * `permission` String - 'media', 'geolocation', 'notifications',
'midiSysex', 'pointerLock', 'fullscreen', 'openExternal'의 나열. 'midiSysex', 'pointerLock', 'fullscreen', 'openExternal'의 나열.
* `callback` Function - 권한 허용 및 거부. * `callback` Function
* `permissionGranted` Boolean - 권한 허용 및 거부.
`session`의 권한 요청에 응답을 하는데 사용하는 핸들러를 설정합니다. `session`의 권한 요청에 응답을 하는데 사용하는 핸들러를 설정합니다.
`callback(true)`를 호출하면 권한 제공을 허용하고 `callback(false)` `callback(true)`를 호출하면 권한 제공을 허용하고 `callback(false)`
@ -423,6 +429,8 @@ session.defaultSession.cookies.set(cookie, (error) => {
* `secure` Boolean (optional) - 보안 속성에 따라 쿠키를 필터링합니다. * `secure` Boolean (optional) - 보안 속성에 따라 쿠키를 필터링합니다.
* `session` Boolean (optional) - 세션 또는 지속성 쿠키를 필터링합니다. * `session` Boolean (optional) - 세션 또는 지속성 쿠키를 필터링합니다.
* `callback` Function * `callback` Function
* `error` Error
* `cookies` Cookies[]
`details` 객체에서 묘사한 모든 쿠키를 요청합니다. 모든 작업이 끝나면 `callback` `details` 객체에서 묘사한 모든 쿠키를 요청합니다. 모든 작업이 끝나면 `callback`
`callback(error, cookies)` 형태로 호출됩니다. `callback(error, cookies)` 형태로 호출됩니다.
@ -458,6 +466,7 @@ session.defaultSession.cookies.set(cookie, (error) => {
대한 초 단위 시간입니다. 생략되면 쿠키가 세션 쿠기가 되며 세션 사이에 유지되지 대한 초 단위 시간입니다. 생략되면 쿠키가 세션 쿠기가 되며 세션 사이에 유지되지
않게 됩니다. 않게 됩니다.
* `callback` Function * `callback` Function
* `error` Error
`details` 객체에 따라 쿠키를 설정합니다. 작업이 완료되면 `callback` `details` 객체에 따라 쿠키를 설정합니다. 작업이 완료되면 `callback`
`callback(error)` 형태로 호출됩니다. `callback(error)` 형태로 호출됩니다.
@ -521,24 +530,16 @@ session.defaultSession.webRequest.onBeforeSendHeaders(filter, (details, callback
* `method` String * `method` String
* `resourceType` String * `resourceType` String
* `timestamp` Double * `timestamp` Double
* `uploadData` Array (optional) * `uploadData` [UploadData[]](structures/upload-data.md)
* `callback` Function * `callback` Function
* `response` Object
* `cancel` Boolean (optional)
* `redirectURL` String (optional) - 원래 요청이 전송되거나 완료되는 것을
방지하고 지정된 URL 로 리디렉션됩니다.
`uploadData``data` 객체의 배열입니다: `uploadData``uploadData` 객체의 배열입니다.
* `data` Object `callback``response` 객체와 함께 호출되어야 합니다.
* `bytes` Buffer - 전송될 콘텐츠.
* `file` String - 업로드될 파일의 경로.
* `blobUUID` String - blob 데이터의 UUID. 데이터를 이용하기 위해
[ses.getBlobData](session.md#sesgetblobdataidentifier-callback) 메소드를
사용하세요.
`callback``response` 객체와 함께 호출되어야 합니다:
* `response` Object
* `cancel` Boolean (optional)
* `redirectURL` String (optional) - 원래 요청은 전송과 완료가 방지되지만 이
속성을 지정하면 해당 URL로 리다이렉트됩니다.
#### `webRequest.onBeforeSendHeaders([filter, ]listener)` #### `webRequest.onBeforeSendHeaders([filter, ]listener)`
@ -557,31 +558,29 @@ HTTP 요청을 보내기 전 요청 헤더를 사용할 수 있을 때 `listener
* `timestamp` Double * `timestamp` Double
* `requestHeaders` Object * `requestHeaders` Object
* `callback` Function * `callback` Function
* `response` Object
* `cancel` Boolean (optional)
* `requestHeaders` Object (optional) - 이 속성이 제공되면, 요청은 이 헤더로
만들어 집니다.
`callback``response` 객체와 함께 호출되어야 합니다: `callback``response` 객체와 함께 호출되어야 합니다.
* `response` Object
* `cancel` Boolean (optional)
* `requestHeaders` Object (optional) - 이 속성이 제공되면, 요청은 이 헤더로
만들어 집니다.
#### `webRequest.onSendHeaders([filter, ]listener)` #### `webRequest.onSendHeaders([filter, ]listener)`
* `filter` Object * `filter` Object
* `listener` Function * `listener` Function
* `details` Object
* `id` Integer
* `url` String
* `method` String
* `resourceType` String
* `timestamp` Double
* `requestHeaders` Object
서버에 요청이 전송되기 바로 전에 `listener``listener(details)` 형태로 호출됩니다. 서버에 요청이 전송되기 바로 전에 `listener``listener(details)` 형태로 호출됩니다.
이전 `onBeforeSendHeaders`의 response와 다른점은 리스너가 호출되는 시간으로 볼 수 이전 `onBeforeSendHeaders`의 response와 다른점은 리스너가 호출되는 시간으로 볼 수
있습니다. 있습니다.
* `details` Object
* `id` Integer
* `url` String
* `method` String
* `resourceType` String
* `timestamp` Double
* `requestHeaders` Object
#### `webRequest.onHeadersReceived([filter, ]listener)` #### `webRequest.onHeadersReceived([filter, ]listener)`
* `filter` Object * `filter` Object
@ -600,86 +599,81 @@ HTTP 요청을 보내기 전 요청 헤더를 사용할 수 있을 때 `listener
* `statusCode` Integer * `statusCode` Integer
* `responseHeaders` Object * `responseHeaders` Object
* `callback` Function * `callback` Function
* `response` Object
* `cancel` Boolean
* `responseHeaders` Object (optional) - 이 속성이 제공되면 서버는 이 헤더와
함께 응답합니다.
* `statusLine` String (optional) - `responseHeaders`를 덮어쓸 땐, 헤더의
상태를 변경하기 위해 반드시 지정되어야 합니다. 그렇지 않은 경우, 기존의
응답 헤더의 상태가 사용됩니다.
`callback``response` 객체와 함께 호출되어야 합니다: `callback``response` 객체와 함께 호출되어야 합니다.
* `response` Object
* `cancel` Boolean
* `responseHeaders` Object (optional) - 이 속성이 제공되면 서버는 이 헤더와
함께 응답합니다.
* `statusLine` String (optional) - `responseHeaders`를 덮어쓸 땐, 헤더의 상태를
변경하기 위해 반드시 지정되어야 합니다. 그렇지 않은 경우, 기존의 응답 헤더의 상태가
사용됩니다.
#### `webRequest.onResponseStarted([filter, ]listener)` #### `webRequest.onResponseStarted([filter, ]listener)`
* `filter` Object * `filter` Object
* `listener` Function * `listener` Function
* `details` Object
* `id` Integer
* `url` String
* `method` String
* `resourceType` String
* `timestamp` Double
* `responseHeaders` Object
* `fromCache` Boolean - 응답을 디스크 캐시에서 가져올지에 대한 여부.
* `statusCode` Integer
* `statusLine` String
요청 본문의 첫 번째 바이트를 받았을 때 `listener``listener(details)` 형태로 요청 본문의 첫 번째 바이트를 받았을 때 `listener``listener(details)` 형태로
호출됩니다. 이는 HTTP 요청에서 상태 줄과 요청 헤더가 사용 가능한 상태를 의미합니다. 호출됩니다. 이는 HTTP 요청에서 상태 줄과 요청 헤더가 사용 가능한 상태를 의미합니다.
* `details` Object
* `id` Integer
* `url` String
* `method` String
* `resourceType` String
* `timestamp` Double
* `responseHeaders` Object
* `fromCache` Boolean - 응답을 디스크 캐시에서 가져올지에 대한 여부.
* `statusCode` Integer
* `statusLine` String
#### `webRequest.onBeforeRedirect([filter, ]listener)` #### `webRequest.onBeforeRedirect([filter, ]listener)`
* `filter` Object * `filter` Object
* `listener` Function * `listener` Function
* `details` Object
* `id` String
* `url` String
* `method` String
* `resourceType` String
* `timestamp` Double
* `redirectURL` String
* `statusCode` Integer
* `ip` String (optional) - 요청이 실질적으로 전송될 서버 아이피 주소.
* `fromCache` Boolean
* `responseHeaders` Object
서버에서 시작된 리다이렉트가 발생했을 때 `listener``listener(details)` 형태로 서버에서 시작된 리다이렉트가 발생했을 때 `listener``listener(details)` 형태로
호출됩니다. 호출됩니다.
* `details` Object
* `id` String
* `url` String
* `method` String
* `resourceType` String
* `timestamp` Double
* `redirectURL` String
* `statusCode` Integer
* `ip` String (optional) - 요청이 실질적으로 전송될 서버 아이피 주소.
* `fromCache` Boolean
* `responseHeaders` Object
#### `webRequest.onCompleted([filter, ]listener)` #### `webRequest.onCompleted([filter, ]listener)`
* `filter` Object * `filter` Object
* `listener` Function * `listener` Function
* `details` Object
* `id` Integer
* `url` String
* `method` String
* `resourceType` String
* `timestamp` Double
* `responseHeaders` Object
* `fromCache` Boolean
* `statusCode` Integer
* `statusLine` String
요청이 완료되면 `listener``listener(details)` 형태로 호출됩니다. 요청이 완료되면 `listener``listener(details)` 형태로 호출됩니다.
* `details` Object
* `id` Integer
* `url` String
* `method` String
* `resourceType` String
* `timestamp` Double
* `responseHeaders` Object
* `fromCache` Boolean
* `statusCode` Integer
* `statusLine` String
#### `webRequest.onErrorOccurred([filter, ]listener)` #### `webRequest.onErrorOccurred([filter, ]listener)`
* `filter` Object * `filter` Object
* `listener` Function * `listener` Function
* `details` Object
* `id` Integer
* `url` String
* `method` String
* `resourceType` String
* `timestamp` Double
* `fromCache` Boolean
* `error` String - 에러 설명.
에러가 발생하면 `listener``listener(details)` 형태로 호출됩니다. 에러가 발생하면 `listener``listener(details)` 형태로 호출됩니다.
* `details` Object
* `id` Integer
* `url` String
* `method` String
* `resourceType` String
* `timestamp` Double
* `fromCache` Boolean
* `error` String - 에러 설명.

View file

@ -0,0 +1,12 @@
# DesktopCapturerSource Object
* `id` String - [`navigator.webkitGetUserMedia`] 를 호출할 때
`chromeMediaSourceId` 제한으로 사용될 수 있는 윈도우 또는 화면의 식별자.
식별자의 형식은 `window:XX` 또는 `screen:XX` 이 될 것 이며, `XX` 는 무작위로
생성된 숫자입니다.
* `name` String - 윈도우 소스의 이름이 윈도우 제목과 일치하면, 화면 소스는
`Entire Screen` 또는 `Screen <index>` 으로 명명될 것 입니다.
* `thumbnail` [NativeImage](../native-image.md) - 섬네일 이미지. **참고:**
`desktopCapturer.getSources` 에 넘겨진 `options` 에 명시된 `thumbnailSize`
섬네일의 크기가 같음을 보장하지 않습니다. 실제 크기는 화면이나 윈도우의 규모에
의해 결정됩니다.

View file

@ -0,0 +1,7 @@
# UploadData Object
* `bytes` Buffer - 전송되는 내용.
* `file` String - 업로드되는 파일의 경로.
* `blobUUID` String - BLOB 데이터의 UUID. 데이터를 이용하려면
[ses.getBlobData](../session.md#sesgetblobdataidentifier-callback) 메소드를
사용하세요.

View file

@ -62,6 +62,8 @@ macOS 의 기본 알림으로 `event` 를 전달합니다. `userInfo` 는 알림
* `event` String * `event` String
* `callback` Function * `callback` Function
* `event` String
* `userInfo` Object
macOS의 기본 알림을 구독하며, 해당하는 `event`가 발생하면 `callback` macOS의 기본 알림을 구독하며, 해당하는 `event`가 발생하면 `callback`
`callback(event, userInfo)` 형태로 호출됩니다. `userInfo`는 알림과 함께 전송되는 `callback(event, userInfo)` 형태로 호출됩니다. `userInfo`는 알림과 함께 전송되는
@ -87,6 +89,8 @@ macOS의 기본 알림을 구독하며, 해당하는 `event`가 발생하면 `ca
* `event` String * `event` String
* `callback` Function * `callback` Function
* `event` String
* `userInfo` Object
`subscribeNotification`와 같습니다. 하지만 로컬 기본값에 대해 `subscribeNotification`와 같습니다. 하지만 로컬 기본값에 대해
`NSNotificationCenter`를 사용합니다. 이는 `NSUserDefaultsDidChangeNotification` `NSNotificationCenter`를 사용합니다. 이는 `NSUserDefaultsDidChangeNotification`

View file

@ -246,6 +246,8 @@ Returns:
* `error` String - 에러 코드 * `error` String - 에러 코드
* `certificate` [Certificate](structures/certificate.md) * `certificate` [Certificate](structures/certificate.md)
* `callback` Function * `callback` Function
* `isTrusted` Boolean - 인증서가 신뢰할 수 있는 것으로 간주할 수 있는지 여부를
나타냅니다
`url`에 대한 `certificate` 인증서의 유효성 검증에 실패했을 때 발생하는 이벤트입니다. `url`에 대한 `certificate` 인증서의 유효성 검증에 실패했을 때 발생하는 이벤트입니다.
@ -258,8 +260,10 @@ Returns:
* `event` Event * `event` Event
* `url` URL * `url` URL
* `certificateList` Certificate[] * `certificateList` [Certificate[]](structures/certificate.md)
* `callback` Function * `callback` Function
* `certificate` [Certificate](structures/certificate.md) - 인증서는 주어진
목록에 있어야합니다.
클라이언트 인증이 요청되었을 때 발생하는 이벤트입니다. 클라이언트 인증이 요청되었을 때 발생하는 이벤트입니다.
@ -282,6 +286,8 @@ Returns:
* `port` Integer * `port` Integer
* `realm` String * `realm` String
* `callback` Function * `callback` Function
* `username` String
* `password` String
`webContents`가 기본 인증을 수행하길 원할 때 발생되는 이벤트입니다. `webContents`가 기본 인증을 수행하길 원할 때 발생되는 이벤트입니다.
@ -611,7 +617,7 @@ CSS 코드를 현재 웹 페이지에 삽입합니다.
* `code` String * `code` String
* `userGesture` Boolean (optional) * `userGesture` Boolean (optional)
* `callback` Function (optional) - 스크립트의 실행이 완료되면 호출됩니다. * `callback` Function (optional) - 스크립트의 실행이 완료되면 호출됩니다.
* `result` * `result` Any
페이지에서 자바스크립트 코드를 실행합니다. 페이지에서 자바스크립트 코드를 실행합니다.
@ -638,6 +644,7 @@ CSS 코드를 현재 웹 페이지에 삽입합니다.
#### `contents.getZoomFactor(callback)` #### `contents.getZoomFactor(callback)`
* `callback` Function * `callback` Function
* `zoomFactor` Number
현재 줌 수치 값을 요청합니다. `callback``callback(zoomFactor)` 형태로 호출됩니다. 현재 줌 수치 값을 요청합니다. `callback``callback(zoomFactor)` 형태로 호출됩니다.
@ -651,6 +658,7 @@ CSS 코드를 현재 웹 페이지에 삽입합니다.
#### `contents.getZoomLevel(callback)` #### `contents.getZoomLevel(callback)`
* `callback` Function * `callback` Function
* `zoomLevel` Number
현재 줌 수준 값을 요청합니다. `callback``callback(zoomLevel)` 형태로 호출됩니다. 현재 줌 수준 값을 요청합니다. `callback``callback(zoomLevel)` 형태로 호출됩니다.
@ -779,6 +787,7 @@ console.log(requestId)
#### `contents.hasServiceWorker(callback)` #### `contents.hasServiceWorker(callback)`
* `callback` Function * `callback` Function
* `hasWorker` Boolean
ServiceWorker가 등록되어있는지 확인하고 `callback`에 대한 응답으로 boolean 값을 ServiceWorker가 등록되어있는지 확인하고 `callback`에 대한 응답으로 boolean 값을
반환합니다. 반환합니다.
@ -786,6 +795,7 @@ ServiceWorker가 등록되어있는지 확인하고 `callback`에 대한 응답
#### `contents.unregisterServiceWorker(callback)` #### `contents.unregisterServiceWorker(callback)`
* `callback` Function * `callback` Function
* `success` Boolean
ServiceWorker가 존재하면 모두 등록을 해제하고 JS Promise가 만족될 때 `callback` ServiceWorker가 존재하면 모두 등록을 해제하고 JS Promise가 만족될 때 `callback`
대한 응답으로 boolean을 반환하거나 JS Promise가 만족되지 않을 때 `false`를 반환합니다. 대한 응답으로 boolean을 반환하거나 JS Promise가 만족되지 않을 때 `false`를 반환합니다.
@ -817,6 +827,8 @@ ServiceWorker가 존재하면 모두 등록을 해제하고 JS Promise가 만족
* `landscape` Boolean - landscape을 위해선 `true`를, portrait를 위해선 `false` * `landscape` Boolean - landscape을 위해선 `true`를, portrait를 위해선 `false`
사용합니다. 사용합니다.
* `callback` Function - `(error, data) => {}` * `callback` Function - `(error, data) => {}`
* `error` Error
* `data` Buffer
Chromium의 미리보기 프린팅 커스텀 설정을 이용하여 윈도우의 웹 페이지를 PDF로 Chromium의 미리보기 프린팅 커스텀 설정을 이용하여 윈도우의 웹 페이지를 PDF로
프린트합니다. 프린트합니다.
@ -1034,6 +1046,8 @@ Input `event`를 웹 페이지로 전송합니다.
* `onlyDirty` Boolean (optional) - 기본값은 `false`입니다. * `onlyDirty` Boolean (optional) - 기본값은 `false`입니다.
* `callback` Function * `callback` Function
* `frameBuffer` Buffer
* `dirtyRect` [Rectangle](structures/rectangle.md)
캡처된 프레임과 프레젠테이션 이벤트를 구독하기 시작합니다. `callback` 캡처된 프레임과 프레젠테이션 이벤트를 구독하기 시작합니다. `callback`
프레젠테이션 이벤트가 발생했을 때 `callback(frameBuffer, dirtyRect)` 형태로 프레젠테이션 이벤트가 발생했을 때 `callback(frameBuffer, dirtyRect)` 형태로

View file

@ -338,7 +338,7 @@ Webview에 웹 페이지 `url`을 로드합니다. `url`은 `http://`, `file://`
* `code` String * `code` String
* `userGesture` Boolean * `userGesture` Boolean
* `callback` Function (optional) - 스크립트의 실행이 완료되면 호출됩니다. * `callback` Function (optional) - 스크립트의 실행이 완료되면 호출됩니다.
* `result` * `result` Any
페이지에서 자바스크립트 코드를 실행합니다. 페이지에서 자바스크립트 코드를 실행합니다.

View file

@ -0,0 +1,110 @@
# 릴리즈
이 문서는 Electron 의 새버전 출시 절차를 설명합니다.
## 릴리즈 노트 편집
현재 절차는 로컬 파일을 유지하고 병합된 풀 요청과 같은 중요한 변화의 추척을
보존하는 것 입니다. 노트 형식에 대한 예제는, [릴리즈 페이지]에서 이전 릴리즈를
보세요.
## 임시 브랜치 생성
`release` 이름의 새 브랜치를 `master` 로부터 생성합니다.
```sh
git checkout master
git pull
git checkout -b release
```
이 브랜치는 임시 릴리즈 브랜치가 생성되고 CI 빌드가 완료되는 동안 아무도 모르는
PR 병합을 방지하기위한 예방조치로써 생성됩니다.
## 버전 올리기
`major`, `minor`, `patch` 를 인수로 전달하여, `bump-version` 스크립트를
실행하세요:
```sh
npm run bump-version -- patch
git push origin HEAD
```
이것은 여러 파일의 버전 번호를 올릴 것 입니다. 예시로 [이 범프 커밋]을 보세요.
대부분의 릴리즈는 `patch` 수준이 될 것입니다. Chrome 또는 다른 주요 변화는
`minor` 를 사용해야합니다. 자세한 정보는, [Electron 버전 관리]를 보세요.
## 릴리즈 초안 편집
1. [릴리즈 페이지]에 가면 릴리즈 노트 초안과 자리 표시자로써 릴리즈 노트를 볼 수
있습니다.
1. 릴리즈를 편집하고 릴리즈 노트를 추가하세요.
1. 'Save draft' 를 클릭하세요. **'Publish release' 를 누르면 안됩니다!**
1. 모든 빌드가 통과할 때 까지 기다리세요. :hourglass_flowing_sand:
## 임시 브랜치 병합
임시를 마스터로 머지 커밋 생성없이 병합합니다.
```sh
git merge release master --no-commit
git push origin master
```
실패하면, 마스터로 리베이스하고 다시 빌드합니다:
```sh
git pull
git checkout release
git rebase master
git push origin HEAD
```
## 로컬 디버그 빌드 실행
당신이 실제로 원하는 버전을 구축하고 있는지 확인하기 위해 로컬 디버그 빌드를
실행합니다. 때때로 새 버전을 릴리즈하고 있다고 생각하지만, 아닌 경우가 있습니다.
```sh
npm run build
npm start
```
창이 현재 업데이트된 버전을 표시하는지 확인하세요.
## 환경 변수 설정
릴리즈를 게시하려면 다음 환경 변수를 설정해야합니다. 이 자격증명에 대해 다른 팀
구성원에게 문의하세요.
- `ELECTRON_S3_BUCKET`
- `ELECTRON_S3_ACCESS_KEY`
- `ELECTRON_S3_SECRET_KEY`
- `ELECTRON_GITHUB_TOKEN` - "저장소" 영역에 대한 개인 접근 토큰.
이것은 한번만 수행해야합니다.
## 릴리즈 게시
이 스크립트는 바이너리를 내려받고 네이티브 모듈 구축을 위해 node-gyp 으로
윈도우에서 사용되는 노드 헤더와 .lib 링커를 생성합니다.
```sh
npm run release
```
참고: 많은 파이썬의 배포판들은 여전히 오래된 HTTPS 인증서와 함께 제공됩니다.
`InsecureRequestWarning` 를 볼 수 있지만, 무시해도 됩니다.
## 임시 브랜치 삭제
```sh
git checkout master
git branch -D release # 로컬 브랜치 삭제
git push origin :release # 원격 브랜치 삭제
```
[릴리즈 페이지]: https://github.com/electron/electron/releases
[이 범프 커밋]: https://github.com/electron/electron/commit/78ec1b8f89b3886b856377a1756a51617bc33f5a
[Electron 버전 관리]: ../tutorial/electron-versioning.md

View file

@ -299,6 +299,29 @@ let win = new BrowserWindow()
win.setOverlayIcon('path/to/overlay.png', 'Description for overlay') win.setOverlayIcon('path/to/overlay.png', 'Description for overlay')
``` ```
## 프레임 깜빡이기 (윈도우즈)
윈도우즈에서 사용자의 관심을 끌기 위해ㅣ 작업표시줄 버튼을 강조할 수 있습니다.
이것은 macOS 의 독 아이콘을 튕기는 것과 유사합니다.
MSDN에서 인용하자면 (영문):
> Typically, a window is flashed to inform the user that the window requires
> attention but that it does not currently have the keyboard focus.
BrowserWindow 작업표시줄 버튼을 깜빡이려면,
[BrowserWindow.flashFrame][flashframe] API 를 사용하면됩니다:
```javascript
const {BrowserWindow} = require('electron')
let win = new BrowserWindow()
win.once('focus', () => win.flashFrame(false))
win.flashFrame(true)
```
`flashFrame` 메소드를 `false` 인자로 호출하여 깜빡임을 중단시키는 것을
잊지마세요. 위의 예제에서, 윈도우가 포커스되었을 때 호출합니다. 그러나 타임아웃
또는 다른 이벤트에서 비활성화할 수 있습니다.
## 대표 파일 제시 (macOS) ## 대표 파일 제시 (macOS)
macOS는 창에서 대표 파일을 설정할 수 있습니다. 타이틀바에서 파일 아이콘이 있고, 사용자가 macOS는 창에서 대표 파일을 설정할 수 있습니다. 타이틀바에서 파일 아이콘이 있고, 사용자가
@ -364,3 +387,4 @@ ipcMain.on('ondragstart', (event, filePath) => {
[tray-balloon]: ../api/tray.md#traydisplayballoonoptions-windows [tray-balloon]: ../api/tray.md#traydisplayballoonoptions-windows
[app-user-model-id]: https://msdn.microsoft.com/en-us/library/windows/desktop/dd378459(v=vs.85).aspx [app-user-model-id]: https://msdn.microsoft.com/en-us/library/windows/desktop/dd378459(v=vs.85).aspx
[notification-spec]: https://developer.gnome.org/notification-spec/ [notification-spec]: https://developer.gnome.org/notification-spec/
[flashframe]: ../api/browser-window.md#winflashframeflag

View file

@ -1,53 +1,54 @@
# 보안, 네이티브 호환성, 그리고 신뢰성 # 보안, 네이티브 호환성, 그리고 신뢰성
웹 개발자로써, 우리는 일반적으로 브라우저의 강력한 웹 보안을 잘 이용해왔습니다 - 작성한 웹 개발자로써, 우리는 일반적으로 브라우저의 강력한 웹 보안을 잘 이용해왔습니다
코드에 관련된 보안 문제는 아주 적었습니다. 우리는 웹 사이트의 샌드박스안에서 허용된 - 작성한 코드에 관련된 보안 문제는 아주 적었습니다. 우리는 웹 사이트의
상당히 제한된 권한과 기능에 의존해왔으며, 우리는 새로운 보안 위협에 대해 발 빠르게 샌드박스안에서 허용된 상당히 제한된 권한과 기능에 의존해왔으며, 우리는 새로운
대응할 수 있는 엔지니어들로 이루어진 커다란 팀으로부터 만들어진 브라우저를 사용자들이 보안 위협에 대해 발 빠르게 대응할 수 있는 엔지니어들로 이루어진 커다란
마음 놓고 즐길 것이라고 믿어왔습니다. 팀으로부터 만들어진 브라우저를 사용자들이 마음 놓고 즐길 것이라고 믿어왔습니다.
하지만 Electron을 사용하여 작업한다면, Electron은 웹 브라우저가 아니라는 것을 기억해 하지만 Electron을 사용하여 작업한다면, Electron은 웹 브라우저가 아니라는 것을
두어야 합니다. Electron은 친근한 웹 기술을 사용하여 풍부한 기능의 데스크톱 기억해야 합니다. Electron은 친근한 웹 기술을 사용하여 풍부한 기능의 데스크톱
애플리케이션을 만들 수 있도록 해주지만 그만큼 코드가 더 큰 힘을 사용합니다. 애플리케이션을 만들 수 있도록 해주지만 그만큼 코드가 더 큰 힘을 사용합니다.
JavaScript가 파일 시스템, 유저 쉘, 그외 여러가지 기능에 접근할 수 있습니다. 이러한 자바스크립트가 파일 시스템, 유저 쉘, 그외 여러가지 기능에 접근할 수 있습니다.
능력은 높은 퀄리티를 가진 네이티브 애플리케이션을 개발할 수 있도록 해주지만 코드에 이러한 능력은 높은 퀄리티를 가진 네이티브 애플리케이션을 개발할 수 있도록
부여된 추가적인 기능만큼 고유한 보안 문제가 발생할 가능성이 있습니다. 해주지만 코드에 부여된 추가적인 기능만큼 고유한 보안 문제가 발생할 가능성이
있습니다.
이를 염두해두고, 신뢰할 수 없는 출처의 임의의 콘텐츠를 표시할 때 Electron에서 이를 염두해두고, 신뢰할 수 없는 출처의 임의의 콘텐츠를 표시할 때 Electron에서
자체적으로 처리하지 않는 심각한 보안 문제를 야기할 수 있다는 점을 주의해야 합니다. 자체적으로 처리하지 않는 심각한 보안 문제를 야기할 수 있다는 점을 주의해야
실제로도, 가장 유명한 Electron 애플리케이션들은 (Atom, Slack, Visual Studio Code, 합니다. 실제로도, 가장 유명한 Electron 애플리케이션들은 (Atom, Slack, Visual
등) 주로 로컬 콘텐츠를 (또는 Node 통합이 제외된 신뢰된, 보안된 원격 콘텐츠) 사용합니다 Studio Code, 등) 주로 로컬 콘텐츠를 (또는 Node 통합이 제외된 신뢰된, 보안된 원격
- 만약 애플리케이션이 온라인 출처에서 가져온 코드를 실행한다면, 그 코드가 악성 코드가 콘텐츠) 사용합니다 - 만약 애플리케이션이 온라인 출처에서 가져온 코드를
아닌지 판별하는 것은 본인의 책임입니다. 실행한다면, 그 코드가 악성 코드가 아닌지 판별하는 것은 본인의 책임입니다.
## Chromium 보안 문제와 업그레이드 ## Chromium 보안 문제와 업그레이드
Electron이 새로운 버전의 Chromium을 가능한 한 빠르게 지원하려고 노력하지만, Electron이 새로운 버전의 Chromium을 가능한 한 빠르게 지원하려고 노력하지만,
개발자는 이러한 업그레이딩 작업은 매우 힘든 작업이라는 것을 알아야 합니다 - 각 관련된 개발자는 이러한 업그레이딩 작업은 매우 힘든 작업이라는 것을 알아야 합니다 - 각
수십에서 심지어 백자리 개수의 파일들을 손수 수정해야 합니다. 주어진 자원과 현재 관련된 수십에서 심지어 백자리 개수의 파일들을 손수 수정해야 합니다. 주어진
기여도를 생각한다면, Electron은 항상 최신 버전의 Chromium을 유지하지 못할 수 있으며, 자원과 현재 기여도를 생각한다면, Electron은 항상 최신 버전의 Chromium을 유지하지
며칠부터 몇 주까지 더 걸릴 수 있습니다. 못할 수 있으며, 며칠부터 몇 주까지 더 걸릴 수 있습니다.
현재 Chromium 구성 요소를 업데이트하는 시스템은 우리가 사용할 수 있는 자원과 이 현재 Chromium 구성 요소를 업데이트하는 시스템은 우리가 사용할 수 있는 자원과 이
프레임워크를 기반으로 구축된 대부분의 애플리케이션이 요구하는 것 사이에서 적절한 균형을 프레임워크를 기반으로 구축된 대부분의 애플리케이션이 요구하는 것 사이에서 적절한
유지하고 있다고 느끼고 있습니다. 우리는 확실히 Electron 위에 무언가를 만드는 사람들의 균형을 유지하고 있다고 느끼고 있습니다. 우리는 확실히 Electron 위에 무언가를
사용 사례에 대한 자세한 내용을 듣는 것에 관심이 있습니다. 이러한 노력을 지원하는 Pull 만드는 사람들의 사용 사례에 대한 자세한 내용을 듣는 것에 관심이 있습니다. 이러한
request와 기여는 언제나 환영합니다. 노력을 지원하는 Pull 요청과 기여는 언제나 환영합니다.
## 위 조언 무시하기 ## 위 조언 무시하기
원격 위치에서 받아온 코드를 로컬에서 실행하는 경우 언제나 보안 문제가 존재합니다. 원격 위치에서 받아온 코드를 로컬에서 실행하는 경우 언제나 보안 문제가
예를 들어, 원격 웹 사이트가 브라우저 윈도우에서 표시될 때를 생각해볼 때, 만약 공격자가 존재합니다. 예를 들어, 원격 웹 사이트가 브라우저 윈도우에서 표시될 때를 생각해볼
어떠한 방법으로 웹 페이지의 콘텐츠를 변경하는 경우 (소스를 직접적으로 공격하거나 때, 만약 공격자가 어떠한 방법으로 웹 페이지의 콘텐츠를 변경하는 경우 (소스를
애플리케이션과 실질적인 위치 사이에서 공격하는 등), 공갹자는 사용자의 기기에서 네이티브 직접적으로 공격하거나 애플리케이션과 실질적인 위치 사이에서 공격하는 등),
코드를 실행할 수 있습니다. 공격자는 사용자의 기기에서 네이티브 코드를 실행할 수 있습니다.
> :warning: 어떠한 상황에서도 원격 코드를 로드하고 실행할 땐 Node 통합 기능을 > :경고: 어떠한 상황에서도 원격 코드를 로드하고 실행할 땐 Node 통합 기능을
비활성화하고, 로컬 파일만 (애플리케이션 패키지 내부에 포함된) Node 코드를 실행시킬 수 비활성화하고, 로컬 파일만 (애플리케이션 패키지 내부에 포함된) Node 코드를
있도록 하는 것이 좋습니다. 원격 콘텐츠를 표시할 땐, 항상 `webview` 사용하고 실행시킬 수 있도록 하는 것이 좋습니다. 원격 콘텐츠를 표시할 땐, 항상 `webview`
`nodeIntegration`이 비활성화되어있는지 확인하세요. 사용하고 `nodeIntegration`이 비활성화되어있는지 확인하세요.
#### 체크 리스트 #### 확인 사항
이 리스트는 완벽하지 않습니다, 하지만 최소한 다음 사항은 확인하는 것이 좋습니다: 이 리스트는 완벽하지 않습니다, 하지만 최소한 다음 사항은 확인하는 것이 좋습니다:
@ -64,12 +65,33 @@ request와 기여는 언제나 환영합니다.
* `allowRunningInsecureContent``true`로 설정하지 마세요. * `allowRunningInsecureContent``true`로 설정하지 마세요.
* 무엇을 하고 있는지 확실히 알고 있지않는 이상 `experimentalFeatures` 또는 * 무엇을 하고 있는지 확실히 알고 있지않는 이상 `experimentalFeatures` 또는
`experimentalCanvasFeatures`를 활성화하지 마세요. `experimentalCanvasFeatures`를 활성화하지 마세요.
* 무엇을 하고 있는지 확실히 알고 있지않는 이상 `blinkFeatures`를 활성화하지 마세요. * 무엇을 하고 있는지 확실히 알고 있지않는 이상 `blinkFeatures`를 활성화하지
* WebViews: `nodeintegration``false`로 설정하세요. 마세요.
* WebViews: `nodeintegration` 속성을 추가하지마세요.
* WebViews: `disablewebsecurity`를 사용하지 마세요. * WebViews: `disablewebsecurity`를 사용하지 마세요.
* WebViews: `allowpopups`를 사용하지 마세요. * WebViews: `allowpopups`를 사용하지 마세요.
* WebViews: 원격 CSS/JS와 `insertCSS` 또는 `executeJavaScript`를 함께 사용하지 * WebViews: 원격 CSS/JS와 `insertCSS` 또는 `executeJavaScript`를 함께 사용하지
마세요. 마세요.
다시 말하지만, 이 리스트는 그저 위험을 최소화할 뿐이며 완전히 제거하지 않습니다. 만약 다시 말하지만, 이 리스트는 그저 위험을 최소화할 뿐이며 완전히 제거하지 않습니다.
목적이 그저 웹 사이트를 보여주는 것이라면 일반 웹 브라우저가 더 안전한 방법입니다. 만약 목적이 그저 웹 사이트를 보여주는 것이라면 일반 웹 브라우저가 더 안전한
방법입니다.
## Buffer Global
노드의 [Buffer](https://nodejs.org/api/buffer.html) 클래스는 현재
`nodeintegration` 속성이 추가되지 않은 경우에도 전역으로 사용가능합니다.
`preload` 스크립트에서 다음을 수행하여 앱에서 이것을 삭제할 수 있습니다:
```js
delete global.Buffer
```
많은 라이브러리들이 다음을 통해 직접 요구하는 대신 전역을 기대하기 때문에 이것을
삭제하면 사전에 설치된 스크립트와 앱에서 사용되는 Node 모듈이 깨질 수 있습니다.
```js
const {Buffer} = require('buffer')
```
전역 `Buffer` 는 향후 Electron 주 버전에서 제거될 것 입니다.

View file

@ -75,3 +75,7 @@ Pepper 플래시 플러그인의 구조는 Electron과 일치해야 합니다. W
Windows에선 `--ppapi-flash-path`로 전달되는 경로의 분리자로 `\`를 사용해야 합니다. Windows에선 `--ppapi-flash-path`로 전달되는 경로의 분리자로 `\`를 사용해야 합니다.
POSIX-스타일 경로는 작동하지 않을 것입니다. POSIX-스타일 경로는 작동하지 않을 것입니다.
RTMP 를 사용한 미디어 스트리밍같은 일부 작업의 경우 플레이어의 `.swf` 파일에
폭넓은 권한을 부여할 필요가 있습니다. 그러기 위한 한가지 방법은,
[nw-flash-trust](https://github.com/szwacz/nw-flash-trust)를 사용하는 것입니다.