Merge pull request #7709 from tinydew4/translate-ko
[ko] Apply the changes till the 'b2559d7' commit.
This commit is contained in:
commit
82e593b44f
17 changed files with 420 additions and 166 deletions
|
@ -194,6 +194,7 @@ Returns:
|
|||
* `validExpiry` Integer - 초 단위의 인증서가 만료되는 날짜
|
||||
* `fingerprint` String - 인증서의 지문
|
||||
* `callback` Function
|
||||
* `isTrusted` Boolean - 인증서를 신뢰할지 여부
|
||||
|
||||
`url`에 대한 `certificate` 인증서의 유효성 검증에 실패했을 때 발생하는 이벤트입니다.
|
||||
인증서를 신뢰한다면 `event.preventDefault()` 와 `callback(true)`를 호출하여
|
||||
|
@ -222,6 +223,7 @@ Returns:
|
|||
* `url` URL
|
||||
* `certificateList` [Certificate[]](structures/certificate.md)
|
||||
* `callback` Function
|
||||
* `certificate` [Certificate](structures/certificate.md)
|
||||
|
||||
클라이언트 인증이 요청되었을 때 발생하는 이벤트입니다.
|
||||
|
||||
|
@ -256,6 +258,8 @@ Returns:
|
|||
* `port` Integer
|
||||
* `realm` String
|
||||
* `callback` Function
|
||||
* `username` String
|
||||
* `password` String
|
||||
|
||||
`webContents`가 기본 인증을 요청할 때 발생하는 이벤트입니다.
|
||||
|
||||
|
@ -682,6 +686,8 @@ app.setJumpList([
|
|||
### `app.makeSingleInstance(callback)`
|
||||
|
||||
* `callback` Function
|
||||
* `argv` String[] - 두번째 인스턴스의 명령줄 인수의 배열
|
||||
* `workingDirectory` String - 두번째 인스턴스의 작업 디렉토리
|
||||
|
||||
현재 애플리케이션을 단일 인스턴스 애플리케이션으로 만들어줍니다. 이 메서드는
|
||||
애플리케이션이 여러 번 실행됐을 때 다중 인스턴스가 생성되는 대신 한 개의 주
|
||||
|
@ -814,8 +820,7 @@ Returns `Object`:
|
|||
열려있었는지 여부. 이는 앱이 마지막으로 종료되었던 때에 열려있었던 윈도우를
|
||||
복원하는 것을 표시합니다. 이 설정은 macOS에서만 지원됩니다.
|
||||
|
||||
**참고:** 이 API 는 [MAS 빌드](docs/tutorial/mac-app-store-submission-guide.md)
|
||||
에 영향을 주지 않습니다.
|
||||
**참고:** 이 API 는 [MAS 빌드][mas-builds]에 영향을 주지 않습니다.
|
||||
|
||||
### `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_
|
||||
|
||||
|
@ -939,5 +943,6 @@ dock 아이콘의 `image`를 설정합니다.
|
|||
[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
|
||||
[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
|
||||
[about-panel-options]: https://developer.apple.com/reference/appkit/nsapplication/1428479-orderfrontstandardaboutpanelwith?language=objc
|
||||
|
|
|
@ -941,6 +941,7 @@ Returns `Boolean` - 윈도우의 문서가 변경되었는지 여부.
|
|||
|
||||
* `rect` [Rectangle](structures/rectangle.md) (optional) - 캡쳐될 페이지의 영역
|
||||
* `callback` Function
|
||||
* `image` [NativeImage](native-image.md)
|
||||
|
||||
`webContents.capturePage([rect, ]callback)`와 같습니다.
|
||||
|
||||
|
|
|
@ -31,7 +31,8 @@ contentTracing.startRecording(options, () => {
|
|||
|
||||
### `contentTracing.getCategories(callback)`
|
||||
|
||||
* `callback` Function
|
||||
* `callback`
|
||||
* `categories` String[]
|
||||
|
||||
카테고리 그룹 세트를 가져옵니다. 카테고리 그룹은 도달된 코드 경로를 변경할 수 있습니다.
|
||||
|
||||
|
@ -85,6 +86,7 @@ EnableRecording 요청을 받게 됩니다. 모든 child 프로세스가 `startR
|
|||
|
||||
* `resultFilePath` String
|
||||
* `callback` Function
|
||||
* `resultFilePath` String
|
||||
|
||||
모든 프로세스에서 레코딩을 중지합니다.
|
||||
|
||||
|
@ -127,6 +129,7 @@ Child 프로세스는 일반적으로 추적 데이터와 희귀한 플러시
|
|||
|
||||
* `resultFilePath` String
|
||||
* `callback` Function
|
||||
* `resultFilePath` String
|
||||
|
||||
현재 모니터링 추적 데이터를 가져옵니다.
|
||||
|
||||
|
@ -142,6 +145,8 @@ Child 프로세스는 일반적으로 추적 데이터와 희귀한 플러시
|
|||
### `contentTracing.getTraceBufferUsage(callback)`
|
||||
|
||||
* `callback` Function
|
||||
* `value` Number
|
||||
* `percentage` Number
|
||||
|
||||
추적 버퍼 % 전체 상태의 프로세스간 최대치를 가져옵니다. TraceBufferUsage 값이
|
||||
결정되면 `callback`이 한 번 호출됩니다.
|
||||
|
|
|
@ -62,21 +62,14 @@ function handleError (e) {
|
|||
* `thumbnailSize` Object (optional) - 미디어 소스 섬네일의 크기가 맞춰져야 할
|
||||
제안된 크기, 기본값은 `{width: 150, height: 150}`입니다.
|
||||
* `callback` Function
|
||||
* `error` Error
|
||||
* `sources` [DesktopCapturerSource[]](structures/desktop-capturer-source.md)
|
||||
|
||||
사용할 수 있는 데스크톱 미디어 소스를 가져오기 시작하고 작업이 완료되면
|
||||
`callback(error, sources)`가 호출됩니다.
|
||||
|
||||
`sources`는 `Source`객체의 배열이며, 각 `Source`는 캡쳐될 수 있는 스크린과 각기
|
||||
윈도우를 표현합니다. 그리고 다음과 같은 속성을 가지고 있습니다:
|
||||
|
||||
* `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` 속성과
|
||||
같이 이 섬네일의 사이즈가 완전히 같을 것이라고 보장하지 않습니다. 실질적인 크기는
|
||||
스크린과 윈도우의 비율에 따라 달라질 수 있습니다.
|
||||
`sources` 는 [`DesktopCapturerSource`](structures/desktop-capturer-source.md)
|
||||
객체의 배열이며, 각 `DesktopCapturerSource` 는 캡쳐 가능한 화면 또는 개별
|
||||
윈도우입니다.
|
||||
|
||||
[`navigator.webkitGetUserMedia`]: https://developer.mozilla.org/en/docs/Web/API/Navigator/getUserMedia
|
||||
|
|
|
@ -34,6 +34,7 @@ console.log(dialog)
|
|||
다음을 포함할 수 있습니다: `openFile`, `openDirectory`, `multiSelections`,
|
||||
`createDirectory`, `showHiddenFiles`.
|
||||
* `callback` Function (optional)
|
||||
* `filePaths` String[] - 사용자가 선택한 파일 경로의 배열
|
||||
|
||||
사용할 대화 상자의 기능이 담긴 배열입니다. 다음을 포함할 수 있습니다: `openFile`,
|
||||
`openDirectory`, `multiSelections`, `createDirectory`
|
||||
|
@ -77,6 +78,7 @@ console.log(dialog)
|
|||
라벨이 사용됩니다.
|
||||
* `filters` String[]
|
||||
* `callback` Function (optional)
|
||||
* `filename` String
|
||||
|
||||
작업에 성공하면 콜백으로 유저가 선택한 파일의 경로를 포함한 배열을 반환합니다. 그 외엔
|
||||
`undefined`를 반환합니다.
|
||||
|
@ -112,6 +114,7 @@ console.log(dialog)
|
|||
만듭니다. 이 기능으로 앱을 좀 더 현대적인 Windows 앱처럼 만들 수 있습니다. 이
|
||||
기능을 원하지 않으면 `noLink`를 true로 지정하면 됩니다.
|
||||
* `callback` Function (optional)
|
||||
* `response` Number - 눌려진 버튼의 인덱스
|
||||
|
||||
대화 상자를 표시합니다. `browserWindow`를 지정하면 대화 상자가 완전히 닫힐 때까지
|
||||
지정한 창을 사용할 수 없습니다. 완료 시 유저가 선택한 버튼의 인덱스를 반환합니다.
|
||||
|
|
|
@ -13,6 +13,9 @@
|
|||
* `options` Object
|
||||
* `click` Function - 메뉴 아이템이 클릭될 때 `click(menuItem, browserWindow,
|
||||
event)` 형태로 호출 되는 콜백 함수.
|
||||
* `menuItem` MenuItem
|
||||
* `browserWindow` BrowserWindow
|
||||
* `event` Event
|
||||
* `role` String - 메뉴 아이템의 액션을 정의합니다. 이 속성을 지정하면 `click`
|
||||
속성이 무시됩니다.
|
||||
* `type` String - `MenuItem`의 타입 `normal`, `separator`, `submenu`,
|
||||
|
|
|
@ -75,29 +75,21 @@ app.on('ready', () => {
|
|||
|
||||
* `scheme` String
|
||||
* `handler` Function
|
||||
* `request` Object
|
||||
* `url` String
|
||||
* `referrer` String
|
||||
* `method` String
|
||||
* `uploadData` [UploadData[]](structures/upload-data.md)
|
||||
* `callback` Function
|
||||
* `filePath` String (optional)
|
||||
* `completion` Function (optional)
|
||||
* `error` Error
|
||||
|
||||
`scheme`에 파일을 응답으로 보내는 프로토콜을 등록합니다. `handler`는 `scheme`와 함께
|
||||
`request`가 생성될 때 `handler(request, callback)` 형식으로 호출됩니다.
|
||||
`completion` 콜백은 `scheme`가 성공적으로 등록되었을 때 `completion(null)` 형식으로
|
||||
호출되고, 등록에 실패했을 땐 `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` 속성을 포함하는 객체를 인수에
|
||||
포함하여 `callback`을 호출해야 합니다. 예: `callback(filePath)` 또는
|
||||
`callback({path: filePath})`.
|
||||
|
@ -114,7 +106,15 @@ app.on('ready', () => {
|
|||
|
||||
* `scheme` String
|
||||
* `handler` Function
|
||||
* `request` Object
|
||||
* `url` String
|
||||
* `referrer` String
|
||||
* `method` String
|
||||
* `uploadData` [UploadData[]](structures/upload-data.md)
|
||||
* `callback` Function
|
||||
* `buffer` Buffer (optional)
|
||||
* `completion` Function (optional)
|
||||
* `error` Error
|
||||
|
||||
`Buffer`를 응답으로 전송하는 `scheme`의 프로토콜을 등록합니다.
|
||||
|
||||
|
@ -138,7 +138,15 @@ protocol.registerBufferProtocol('atom', (request, callback) => {
|
|||
|
||||
* `scheme` String
|
||||
* `handler` Function
|
||||
* `request` Object
|
||||
* `url` String
|
||||
* `referrer` String
|
||||
* `method` String
|
||||
* `uploadData` [UploadData[]](structures/upload-data.md)
|
||||
* `callback` Function
|
||||
* `buffer` Buffer (optional)
|
||||
* `completion` Function (optional)
|
||||
* `error` Error
|
||||
|
||||
`String`을 응답으로 전송할 `scheme`의 프로토콜을 등록합니다.
|
||||
|
||||
|
@ -150,7 +158,21 @@ protocol.registerBufferProtocol('atom', (request, callback) => {
|
|||
|
||||
* `scheme` String
|
||||
* `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)
|
||||
* `error` Error
|
||||
|
||||
HTTP 요청을 응답으로 전송할 `scheme`의 프로토콜을 등록합니다.
|
||||
|
||||
|
@ -158,25 +180,16 @@ HTTP 요청을 응답으로 전송할 `scheme`의 프로토콜을 등록합니
|
|||
`session` 속성을 포함하는 `redirectRequest` 객체와 함께 호출되어야 한다는 점을
|
||||
제외하면 `registerFileProtocol`과 사용법이 같습니다.
|
||||
|
||||
* `redirectRequest` Object
|
||||
* `url` String
|
||||
* `method` String
|
||||
* `session` Object (optional)
|
||||
* `uploadData` Object (optional)
|
||||
|
||||
기본적으로 HTTP 요청은 현재 세션을 재사용합니다. 만약 서로 다른 세션에 요청을 보내고
|
||||
싶으면 `session`을 `null`로 지정해야 합니다.
|
||||
|
||||
POST 요청에는 반드시 `uploadData` 객체가 제공되어야 합니다.
|
||||
|
||||
* `uploadData` object
|
||||
* `contentType` String - 콘텐츠의 MIME 타입.
|
||||
* `data` String - 전송할 콘텐츠.
|
||||
|
||||
### `protocol.unregisterProtocol(scheme[, completion])`
|
||||
|
||||
* `scheme` String
|
||||
* `completion` Function (optional)
|
||||
* `error` Error
|
||||
|
||||
`scheme`의 커스텀 프로토콜 등록을 해제합니다.
|
||||
|
||||
|
@ -184,6 +197,7 @@ POST 요청에는 반드시 `uploadData` 객체가 제공되어야 합니다.
|
|||
|
||||
* `scheme` String
|
||||
* `callback` Function
|
||||
* `error` Error
|
||||
|
||||
`scheme`에 동작(handler)이 등록되어 있는지 여부를 확인합니다. `callback`으로
|
||||
결과(boolean)가 반환됩니다.
|
||||
|
@ -192,7 +206,15 @@ POST 요청에는 반드시 `uploadData` 객체가 제공되어야 합니다.
|
|||
|
||||
* `scheme` String
|
||||
* `handler` Function
|
||||
* `request` Object
|
||||
* `url` String
|
||||
* `referrer` String
|
||||
* `method` String
|
||||
* `uploadData` [UploadData[]](structures/upload-data.md)
|
||||
* `callback` Function
|
||||
* `filePath` String
|
||||
* `completion` Function (optional)
|
||||
* `error` Error
|
||||
|
||||
`scheme` 프로토콜을 가로채고 `handler`를 파일 전송에 대한 새로운 동작으로 사용합니다.
|
||||
|
||||
|
@ -200,7 +222,15 @@ POST 요청에는 반드시 `uploadData` 객체가 제공되어야 합니다.
|
|||
|
||||
* `scheme` String
|
||||
* `handler` Function
|
||||
* `request` Object
|
||||
* `url` String
|
||||
* `referrer` String
|
||||
* `method` String
|
||||
* `uploadData` [UploadData[]](structures/upload-data.md)
|
||||
* `callback` Function
|
||||
* `filePath` String
|
||||
* `completion` Function (optional)
|
||||
* `error` Error
|
||||
|
||||
`scheme` 프로토콜을 가로채고 `handler`를 문자열 전송에 대한 새로운 동작으로 사용합니다.
|
||||
|
||||
|
@ -208,7 +238,15 @@ POST 요청에는 반드시 `uploadData` 객체가 제공되어야 합니다.
|
|||
|
||||
* `scheme` String
|
||||
* `handler` Function
|
||||
* `request` Object
|
||||
* `url` String
|
||||
* `referrer` String
|
||||
* `method` String
|
||||
* `uploadData` [UploadData[]](structures/upload-data.md)
|
||||
* `callback` Function
|
||||
* `filePath` String
|
||||
* `completion` Function (optional)
|
||||
* `error` Error
|
||||
|
||||
`scheme` 프로토콜을 가로채고 `handler`를 `Buffer` 전송에 대한 새로운 동작으로
|
||||
사용합니다.
|
||||
|
@ -217,7 +255,21 @@ POST 요청에는 반드시 `uploadData` 객체가 제공되어야 합니다.
|
|||
|
||||
* `scheme` String
|
||||
* `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)
|
||||
* `error` Error
|
||||
|
||||
`scheme` 프로토콜을 가로채고 `handler`를 HTTP 프로토콜의 요청에 대한 새로운 동작으로
|
||||
사용합니다.
|
||||
|
@ -226,6 +278,7 @@ POST 요청에는 반드시 `uploadData` 객체가 제공되어야 합니다.
|
|||
|
||||
* `scheme` String
|
||||
* `completion` Function (optional)
|
||||
* `error` Error
|
||||
|
||||
가로챈 `scheme`를 삭제하고 기본 핸들러로 복구합니다.
|
||||
|
||||
|
|
|
@ -201,6 +201,7 @@ proxyURL = [<proxyScheme>"://"]<proxyHost>[":"<proxyPort>]
|
|||
|
||||
* `url` URL
|
||||
* `callback` Function
|
||||
* `proxy` Object
|
||||
|
||||
`url`의 프록시 정보를 해석합니다. `callback`은 요청이 수행되었을 때
|
||||
`callback(proxy)` 형태로 호출됩니다.
|
||||
|
@ -244,7 +245,11 @@ window.webContents.session.enableNetworkEmulation({offline: true})
|
|||
|
||||
#### `ses.setCertificateVerifyProc(proc)`
|
||||
|
||||
* `proc` Function
|
||||
* `proc` Function
|
||||
* `hostname` String
|
||||
* `certificate` [Certificate](structures/certificate.md)
|
||||
* `callback` Function
|
||||
* `isTrusted` Boolean - 인증서를 신뢰해야하는지 결정
|
||||
|
||||
`session`에 인증서의 유효성을 확인하는 프로세스(proc)를 등록합니다. `proc`은 서버
|
||||
인증서 유효성 검증 요청이 들어왔을 때 언제나 `proc(hostname, certificate, callback)`
|
||||
|
@ -267,7 +272,8 @@ win.webContents.session.setCertificateVerifyProc((hostname, cert, callback) => {
|
|||
* `webContents` Object - [WebContents](web-contents.md) 권한을 요청.
|
||||
* `permission` String - 'media', 'geolocation', 'notifications',
|
||||
'midiSysex', 'pointerLock', 'fullscreen', 'openExternal'의 나열.
|
||||
* `callback` Function - 권한 허용 및 거부.
|
||||
* `callback` Function
|
||||
* `permissionGranted` Boolean - 권한 허용 및 거부.
|
||||
|
||||
`session`의 권한 요청에 응답을 하는데 사용하는 핸들러를 설정합니다.
|
||||
`callback(true)`를 호출하면 권한 제공을 허용하고 `callback(false)`를
|
||||
|
@ -423,6 +429,8 @@ session.defaultSession.cookies.set(cookie, (error) => {
|
|||
* `secure` Boolean (optional) - 보안 속성에 따라 쿠키를 필터링합니다.
|
||||
* `session` Boolean (optional) - 세션 또는 지속성 쿠키를 필터링합니다.
|
||||
* `callback` Function
|
||||
* `error` Error
|
||||
* `cookies` Cookies[]
|
||||
|
||||
`details` 객체에서 묘사한 모든 쿠키를 요청합니다. 모든 작업이 끝나면 `callback`이
|
||||
`callback(error, cookies)` 형태로 호출됩니다.
|
||||
|
@ -458,6 +466,7 @@ session.defaultSession.cookies.set(cookie, (error) => {
|
|||
대한 초 단위 시간입니다. 생략되면 쿠키가 세션 쿠기가 되며 세션 사이에 유지되지
|
||||
않게 됩니다.
|
||||
* `callback` Function
|
||||
* `error` Error
|
||||
|
||||
`details` 객체에 따라 쿠키를 설정합니다. 작업이 완료되면 `callback`이
|
||||
`callback(error)` 형태로 호출됩니다.
|
||||
|
@ -521,24 +530,16 @@ session.defaultSession.webRequest.onBeforeSendHeaders(filter, (details, callback
|
|||
* `method` String
|
||||
* `resourceType` String
|
||||
* `timestamp` Double
|
||||
* `uploadData` Array (optional)
|
||||
* `uploadData` [UploadData[]](structures/upload-data.md)
|
||||
* `callback` Function
|
||||
* `response` Object
|
||||
* `cancel` Boolean (optional)
|
||||
* `redirectURL` String (optional) - 원래 요청이 전송되거나 완료되는 것을
|
||||
방지하고 지정된 URL 로 리디렉션됩니다.
|
||||
|
||||
`uploadData`는 `data` 객체의 배열입니다:
|
||||
`uploadData`는 `uploadData` 객체의 배열입니다.
|
||||
|
||||
* `data` Object
|
||||
* `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로 리다이렉트됩니다.
|
||||
`callback`은 `response` 객체와 함께 호출되어야 합니다.
|
||||
|
||||
#### `webRequest.onBeforeSendHeaders([filter, ]listener)`
|
||||
|
||||
|
@ -557,31 +558,29 @@ HTTP 요청을 보내기 전 요청 헤더를 사용할 수 있을 때 `listener
|
|||
* `timestamp` Double
|
||||
* `requestHeaders` Object
|
||||
* `callback` Function
|
||||
* `response` Object
|
||||
* `cancel` Boolean (optional)
|
||||
* `requestHeaders` Object (optional) - 이 속성이 제공되면, 요청은 이 헤더로
|
||||
만들어 집니다.
|
||||
|
||||
`callback`은 `response` 객체와 함께 호출되어야 합니다:
|
||||
|
||||
* `response` Object
|
||||
* `cancel` Boolean (optional)
|
||||
* `requestHeaders` Object (optional) - 이 속성이 제공되면, 요청은 이 헤더로
|
||||
만들어 집니다.
|
||||
`callback`은 `response` 객체와 함께 호출되어야 합니다.
|
||||
|
||||
#### `webRequest.onSendHeaders([filter, ]listener)`
|
||||
|
||||
* `filter` Object
|
||||
* `listener` Function
|
||||
* `details` Object
|
||||
* `id` Integer
|
||||
* `url` String
|
||||
* `method` String
|
||||
* `resourceType` String
|
||||
* `timestamp` Double
|
||||
* `requestHeaders` Object
|
||||
|
||||
서버에 요청이 전송되기 바로 전에 `listener`가 `listener(details)` 형태로 호출됩니다.
|
||||
이전 `onBeforeSendHeaders`의 response와 다른점은 리스너가 호출되는 시간으로 볼 수
|
||||
있습니다.
|
||||
|
||||
* `details` Object
|
||||
* `id` Integer
|
||||
* `url` String
|
||||
* `method` String
|
||||
* `resourceType` String
|
||||
* `timestamp` Double
|
||||
* `requestHeaders` Object
|
||||
|
||||
#### `webRequest.onHeadersReceived([filter, ]listener)`
|
||||
|
||||
* `filter` Object
|
||||
|
@ -600,86 +599,81 @@ HTTP 요청을 보내기 전 요청 헤더를 사용할 수 있을 때 `listener
|
|||
* `statusCode` Integer
|
||||
* `responseHeaders` Object
|
||||
* `callback` Function
|
||||
* `response` Object
|
||||
* `cancel` Boolean
|
||||
* `responseHeaders` Object (optional) - 이 속성이 제공되면 서버는 이 헤더와
|
||||
함께 응답합니다.
|
||||
* `statusLine` String (optional) - `responseHeaders`를 덮어쓸 땐, 헤더의
|
||||
상태를 변경하기 위해 반드시 지정되어야 합니다. 그렇지 않은 경우, 기존의
|
||||
응답 헤더의 상태가 사용됩니다.
|
||||
|
||||
`callback`은 `response` 객체와 함께 호출되어야 합니다:
|
||||
|
||||
* `response` Object
|
||||
* `cancel` Boolean
|
||||
* `responseHeaders` Object (optional) - 이 속성이 제공되면 서버는 이 헤더와
|
||||
함께 응답합니다.
|
||||
* `statusLine` String (optional) - `responseHeaders`를 덮어쓸 땐, 헤더의 상태를
|
||||
변경하기 위해 반드시 지정되어야 합니다. 그렇지 않은 경우, 기존의 응답 헤더의 상태가
|
||||
사용됩니다.
|
||||
`callback`은 `response` 객체와 함께 호출되어야 합니다.
|
||||
|
||||
#### `webRequest.onResponseStarted([filter, ]listener)`
|
||||
|
||||
* `filter` Object
|
||||
* `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)` 형태로
|
||||
호출됩니다. 이는 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)`
|
||||
|
||||
* `filter` Object
|
||||
* `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)` 형태로
|
||||
호출됩니다.
|
||||
|
||||
* `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)`
|
||||
|
||||
* `filter` Object
|
||||
* `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)` 형태로 호출됩니다.
|
||||
|
||||
* `details` Object
|
||||
* `id` Integer
|
||||
* `url` String
|
||||
* `method` String
|
||||
* `resourceType` String
|
||||
* `timestamp` Double
|
||||
* `responseHeaders` Object
|
||||
* `fromCache` Boolean
|
||||
* `statusCode` Integer
|
||||
* `statusLine` String
|
||||
|
||||
#### `webRequest.onErrorOccurred([filter, ]listener)`
|
||||
|
||||
* `filter` Object
|
||||
* `listener` Function
|
||||
* `details` Object
|
||||
* `id` Integer
|
||||
* `url` String
|
||||
* `method` String
|
||||
* `resourceType` String
|
||||
* `timestamp` Double
|
||||
* `fromCache` Boolean
|
||||
* `error` String - 에러 설명.
|
||||
|
||||
에러가 발생하면 `listener`가 `listener(details)` 형태로 호출됩니다.
|
||||
|
||||
* `details` Object
|
||||
* `id` Integer
|
||||
* `url` String
|
||||
* `method` String
|
||||
* `resourceType` String
|
||||
* `timestamp` Double
|
||||
* `fromCache` Boolean
|
||||
* `error` String - 에러 설명.
|
||||
|
|
|
@ -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` 와
|
||||
섬네일의 크기가 같음을 보장하지 않습니다. 실제 크기는 화면이나 윈도우의 규모에
|
||||
의해 결정됩니다.
|
7
docs-translations/ko-KR/api/structures/upload-data.md
Normal file
7
docs-translations/ko-KR/api/structures/upload-data.md
Normal file
|
@ -0,0 +1,7 @@
|
|||
# UploadData Object
|
||||
|
||||
* `bytes` Buffer - 전송되는 내용.
|
||||
* `file` String - 업로드되는 파일의 경로.
|
||||
* `blobUUID` String - BLOB 데이터의 UUID. 데이터를 이용하려면
|
||||
[ses.getBlobData](../session.md#sesgetblobdataidentifier-callback) 메소드를
|
||||
사용하세요.
|
|
@ -62,6 +62,8 @@ macOS 의 기본 알림으로 `event` 를 전달합니다. `userInfo` 는 알림
|
|||
|
||||
* `event` String
|
||||
* `callback` Function
|
||||
* `event` String
|
||||
* `userInfo` Object
|
||||
|
||||
macOS의 기본 알림을 구독하며, 해당하는 `event`가 발생하면 `callback`이
|
||||
`callback(event, userInfo)` 형태로 호출됩니다. `userInfo`는 알림과 함께 전송되는
|
||||
|
@ -87,6 +89,8 @@ macOS의 기본 알림을 구독하며, 해당하는 `event`가 발생하면 `ca
|
|||
|
||||
* `event` String
|
||||
* `callback` Function
|
||||
* `event` String
|
||||
* `userInfo` Object
|
||||
|
||||
`subscribeNotification`와 같습니다. 하지만 로컬 기본값에 대해
|
||||
`NSNotificationCenter`를 사용합니다. 이는 `NSUserDefaultsDidChangeNotification`와
|
||||
|
|
|
@ -246,6 +246,8 @@ Returns:
|
|||
* `error` String - 에러 코드
|
||||
* `certificate` [Certificate](structures/certificate.md)
|
||||
* `callback` Function
|
||||
* `isTrusted` Boolean - 인증서가 신뢰할 수 있는 것으로 간주할 수 있는지 여부를
|
||||
나타냅니다
|
||||
|
||||
`url`에 대한 `certificate` 인증서의 유효성 검증에 실패했을 때 발생하는 이벤트입니다.
|
||||
|
||||
|
@ -258,8 +260,10 @@ Returns:
|
|||
|
||||
* `event` Event
|
||||
* `url` URL
|
||||
* `certificateList` Certificate[]
|
||||
* `certificateList` [Certificate[]](structures/certificate.md)
|
||||
* `callback` Function
|
||||
* `certificate` [Certificate](structures/certificate.md) - 인증서는 주어진
|
||||
목록에 있어야합니다.
|
||||
|
||||
클라이언트 인증이 요청되었을 때 발생하는 이벤트입니다.
|
||||
|
||||
|
@ -282,6 +286,8 @@ Returns:
|
|||
* `port` Integer
|
||||
* `realm` String
|
||||
* `callback` Function
|
||||
* `username` String
|
||||
* `password` String
|
||||
|
||||
`webContents`가 기본 인증을 수행하길 원할 때 발생되는 이벤트입니다.
|
||||
|
||||
|
@ -611,7 +617,7 @@ CSS 코드를 현재 웹 페이지에 삽입합니다.
|
|||
* `code` String
|
||||
* `userGesture` Boolean (optional)
|
||||
* `callback` Function (optional) - 스크립트의 실행이 완료되면 호출됩니다.
|
||||
* `result`
|
||||
* `result` Any
|
||||
|
||||
페이지에서 자바스크립트 코드를 실행합니다.
|
||||
|
||||
|
@ -638,6 +644,7 @@ CSS 코드를 현재 웹 페이지에 삽입합니다.
|
|||
#### `contents.getZoomFactor(callback)`
|
||||
|
||||
* `callback` Function
|
||||
* `zoomFactor` Number
|
||||
|
||||
현재 줌 수치 값을 요청합니다. `callback`은 `callback(zoomFactor)` 형태로 호출됩니다.
|
||||
|
||||
|
@ -651,6 +658,7 @@ CSS 코드를 현재 웹 페이지에 삽입합니다.
|
|||
#### `contents.getZoomLevel(callback)`
|
||||
|
||||
* `callback` Function
|
||||
* `zoomLevel` Number
|
||||
|
||||
현재 줌 수준 값을 요청합니다. `callback`은 `callback(zoomLevel)` 형태로 호출됩니다.
|
||||
|
||||
|
@ -779,6 +787,7 @@ console.log(requestId)
|
|||
#### `contents.hasServiceWorker(callback)`
|
||||
|
||||
* `callback` Function
|
||||
* `hasWorker` Boolean
|
||||
|
||||
ServiceWorker가 등록되어있는지 확인하고 `callback`에 대한 응답으로 boolean 값을
|
||||
반환합니다.
|
||||
|
@ -786,6 +795,7 @@ ServiceWorker가 등록되어있는지 확인하고 `callback`에 대한 응답
|
|||
#### `contents.unregisterServiceWorker(callback)`
|
||||
|
||||
* `callback` Function
|
||||
* `success` Boolean
|
||||
|
||||
ServiceWorker가 존재하면 모두 등록을 해제하고 JS Promise가 만족될 때 `callback`에
|
||||
대한 응답으로 boolean을 반환하거나 JS Promise가 만족되지 않을 때 `false`를 반환합니다.
|
||||
|
@ -817,6 +827,8 @@ ServiceWorker가 존재하면 모두 등록을 해제하고 JS Promise가 만족
|
|||
* `landscape` Boolean - landscape을 위해선 `true`를, portrait를 위해선 `false`를
|
||||
사용합니다.
|
||||
* `callback` Function - `(error, data) => {}`
|
||||
* `error` Error
|
||||
* `data` Buffer
|
||||
|
||||
Chromium의 미리보기 프린팅 커스텀 설정을 이용하여 윈도우의 웹 페이지를 PDF로
|
||||
프린트합니다.
|
||||
|
@ -1034,6 +1046,8 @@ Input `event`를 웹 페이지로 전송합니다.
|
|||
|
||||
* `onlyDirty` Boolean (optional) - 기본값은 `false`입니다.
|
||||
* `callback` Function
|
||||
* `frameBuffer` Buffer
|
||||
* `dirtyRect` [Rectangle](structures/rectangle.md)
|
||||
|
||||
캡처된 프레임과 프레젠테이션 이벤트를 구독하기 시작합니다. `callback`은
|
||||
프레젠테이션 이벤트가 발생했을 때 `callback(frameBuffer, dirtyRect)` 형태로
|
||||
|
|
|
@ -338,7 +338,7 @@ Webview에 웹 페이지 `url`을 로드합니다. `url`은 `http://`, `file://`
|
|||
* `code` String
|
||||
* `userGesture` Boolean
|
||||
* `callback` Function (optional) - 스크립트의 실행이 완료되면 호출됩니다.
|
||||
* `result`
|
||||
* `result` Any
|
||||
|
||||
페이지에서 자바스크립트 코드를 실행합니다.
|
||||
|
||||
|
|
110
docs-translations/ko-KR/development/releasing.md
Normal file
110
docs-translations/ko-KR/development/releasing.md
Normal 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
|
|
@ -299,6 +299,29 @@ let win = new BrowserWindow()
|
|||
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는 창에서 대표 파일을 설정할 수 있습니다. 타이틀바에서 파일 아이콘이 있고, 사용자가
|
||||
|
@ -364,3 +387,4 @@ ipcMain.on('ondragstart', (event, filePath) => {
|
|||
[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
|
||||
[notification-spec]: https://developer.gnome.org/notification-spec/
|
||||
[flashframe]: ../api/browser-window.md#winflashframeflag
|
||||
|
|
|
@ -1,53 +1,54 @@
|
|||
# 보안, 네이티브 호환성, 그리고 신뢰성
|
||||
|
||||
웹 개발자로써, 우리는 일반적으로 브라우저의 강력한 웹 보안을 잘 이용해왔습니다 - 작성한
|
||||
코드에 관련된 보안 문제는 아주 적었습니다. 우리는 웹 사이트의 샌드박스안에서 허용된
|
||||
상당히 제한된 권한과 기능에 의존해왔으며, 우리는 새로운 보안 위협에 대해 발 빠르게
|
||||
대응할 수 있는 엔지니어들로 이루어진 커다란 팀으로부터 만들어진 브라우저를 사용자들이
|
||||
마음 놓고 즐길 것이라고 믿어왔습니다.
|
||||
웹 개발자로써, 우리는 일반적으로 브라우저의 강력한 웹 보안을 잘 이용해왔습니다
|
||||
- 작성한 코드에 관련된 보안 문제는 아주 적었습니다. 우리는 웹 사이트의
|
||||
샌드박스안에서 허용된 상당히 제한된 권한과 기능에 의존해왔으며, 우리는 새로운
|
||||
보안 위협에 대해 발 빠르게 대응할 수 있는 엔지니어들로 이루어진 커다란
|
||||
팀으로부터 만들어진 브라우저를 사용자들이 마음 놓고 즐길 것이라고 믿어왔습니다.
|
||||
|
||||
하지만 Electron을 사용하여 작업한다면, Electron은 웹 브라우저가 아니라는 것을 기억해
|
||||
두어야 합니다. Electron은 친근한 웹 기술을 사용하여 풍부한 기능의 데스크톱
|
||||
하지만 Electron을 사용하여 작업한다면, Electron은 웹 브라우저가 아니라는 것을
|
||||
기억해야 합니다. Electron은 친근한 웹 기술을 사용하여 풍부한 기능의 데스크톱
|
||||
애플리케이션을 만들 수 있도록 해주지만 그만큼 코드가 더 큰 힘을 사용합니다.
|
||||
JavaScript가 파일 시스템, 유저 쉘, 그외 여러가지 기능에 접근할 수 있습니다. 이러한
|
||||
능력은 높은 퀄리티를 가진 네이티브 애플리케이션을 개발할 수 있도록 해주지만 코드에
|
||||
부여된 추가적인 기능만큼 고유한 보안 문제가 발생할 가능성이 있습니다.
|
||||
자바스크립트가 파일 시스템, 유저 쉘, 그외 여러가지 기능에 접근할 수 있습니다.
|
||||
이러한 능력은 높은 퀄리티를 가진 네이티브 애플리케이션을 개발할 수 있도록
|
||||
해주지만 코드에 부여된 추가적인 기능만큼 고유한 보안 문제가 발생할 가능성이
|
||||
있습니다.
|
||||
|
||||
이를 염두해두고, 신뢰할 수 없는 출처의 임의의 콘텐츠를 표시할 때 Electron에서
|
||||
자체적으로 처리하지 않는 심각한 보안 문제를 야기할 수 있다는 점을 주의해야 합니다.
|
||||
실제로도, 가장 유명한 Electron 애플리케이션들은 (Atom, Slack, Visual Studio Code,
|
||||
등) 주로 로컬 콘텐츠를 (또는 Node 통합이 제외된 신뢰된, 보안된 원격 콘텐츠) 사용합니다
|
||||
- 만약 애플리케이션이 온라인 출처에서 가져온 코드를 실행한다면, 그 코드가 악성 코드가
|
||||
아닌지 판별하는 것은 본인의 책임입니다.
|
||||
자체적으로 처리하지 않는 심각한 보안 문제를 야기할 수 있다는 점을 주의해야
|
||||
합니다. 실제로도, 가장 유명한 Electron 애플리케이션들은 (Atom, Slack, Visual
|
||||
Studio Code, 등) 주로 로컬 콘텐츠를 (또는 Node 통합이 제외된 신뢰된, 보안된 원격
|
||||
콘텐츠) 사용합니다 - 만약 애플리케이션이 온라인 출처에서 가져온 코드를
|
||||
실행한다면, 그 코드가 악성 코드가 아닌지 판별하는 것은 본인의 책임입니다.
|
||||
|
||||
## Chromium 보안 문제와 업그레이드
|
||||
|
||||
Electron이 새로운 버전의 Chromium을 가능한 한 빠르게 지원하려고 노력하지만,
|
||||
개발자는 이러한 업그레이딩 작업은 매우 힘든 작업이라는 것을 알아야 합니다 - 각 관련된
|
||||
수십에서 심지어 백자리 개수의 파일들을 손수 수정해야 합니다. 주어진 자원과 현재
|
||||
기여도를 생각한다면, Electron은 항상 최신 버전의 Chromium을 유지하지 못할 수 있으며,
|
||||
며칠부터 몇 주까지 더 걸릴 수 있습니다.
|
||||
개발자는 이러한 업그레이딩 작업은 매우 힘든 작업이라는 것을 알아야 합니다 - 각
|
||||
관련된 수십에서 심지어 백자리 개수의 파일들을 손수 수정해야 합니다. 주어진
|
||||
자원과 현재 기여도를 생각한다면, Electron은 항상 최신 버전의 Chromium을 유지하지
|
||||
못할 수 있으며, 며칠부터 몇 주까지 더 걸릴 수 있습니다.
|
||||
|
||||
현재 Chromium 구성 요소를 업데이트하는 시스템은 우리가 사용할 수 있는 자원과 이
|
||||
프레임워크를 기반으로 구축된 대부분의 애플리케이션이 요구하는 것 사이에서 적절한 균형을
|
||||
유지하고 있다고 느끼고 있습니다. 우리는 확실히 Electron 위에 무언가를 만드는 사람들의
|
||||
사용 사례에 대한 자세한 내용을 듣는 것에 관심이 있습니다. 이러한 노력을 지원하는 Pull
|
||||
request와 기여는 언제나 환영합니다.
|
||||
프레임워크를 기반으로 구축된 대부분의 애플리케이션이 요구하는 것 사이에서 적절한
|
||||
균형을 유지하고 있다고 느끼고 있습니다. 우리는 확실히 Electron 위에 무언가를
|
||||
만드는 사람들의 사용 사례에 대한 자세한 내용을 듣는 것에 관심이 있습니다. 이러한
|
||||
노력을 지원하는 Pull 요청과 기여는 언제나 환영합니다.
|
||||
|
||||
## 위 조언 무시하기
|
||||
|
||||
원격 위치에서 받아온 코드를 로컬에서 실행하는 경우 언제나 보안 문제가 존재합니다.
|
||||
예를 들어, 원격 웹 사이트가 브라우저 윈도우에서 표시될 때를 생각해볼 때, 만약 공격자가
|
||||
어떠한 방법으로 웹 페이지의 콘텐츠를 변경하는 경우 (소스를 직접적으로 공격하거나
|
||||
애플리케이션과 실질적인 위치 사이에서 공격하는 등), 공갹자는 사용자의 기기에서 네이티브
|
||||
코드를 실행할 수 있습니다.
|
||||
원격 위치에서 받아온 코드를 로컬에서 실행하는 경우 언제나 보안 문제가
|
||||
존재합니다. 예를 들어, 원격 웹 사이트가 브라우저 윈도우에서 표시될 때를 생각해볼
|
||||
때, 만약 공격자가 어떠한 방법으로 웹 페이지의 콘텐츠를 변경하는 경우 (소스를
|
||||
직접적으로 공격하거나 애플리케이션과 실질적인 위치 사이에서 공격하는 등),
|
||||
공격자는 사용자의 기기에서 네이티브 코드를 실행할 수 있습니다.
|
||||
|
||||
> :warning: 어떠한 상황에서도 원격 코드를 로드하고 실행할 땐 Node 통합 기능을
|
||||
비활성화하고, 로컬 파일만 (애플리케이션 패키지 내부에 포함된) Node 코드를 실행시킬 수
|
||||
있도록 하는 것이 좋습니다. 원격 콘텐츠를 표시할 땐, 항상 `webview`를 사용하고
|
||||
`nodeIntegration`이 비활성화되어있는지 확인하세요.
|
||||
> :경고: 어떠한 상황에서도 원격 코드를 로드하고 실행할 땐 Node 통합 기능을
|
||||
비활성화하고, 로컬 파일만 (애플리케이션 패키지 내부에 포함된) Node 코드를
|
||||
실행시킬 수 있도록 하는 것이 좋습니다. 원격 콘텐츠를 표시할 땐, 항상 `webview`를
|
||||
사용하고 `nodeIntegration`이 비활성화되어있는지 확인하세요.
|
||||
|
||||
#### 체크 리스트
|
||||
#### 확인 사항
|
||||
|
||||
이 리스트는 완벽하지 않습니다, 하지만 최소한 다음 사항은 확인하는 것이 좋습니다:
|
||||
|
||||
|
@ -64,12 +65,33 @@ request와 기여는 언제나 환영합니다.
|
|||
* `allowRunningInsecureContent`를 `true`로 설정하지 마세요.
|
||||
* 무엇을 하고 있는지 확실히 알고 있지않는 이상 `experimentalFeatures` 또는
|
||||
`experimentalCanvasFeatures`를 활성화하지 마세요.
|
||||
* 무엇을 하고 있는지 확실히 알고 있지않는 이상 `blinkFeatures`를 활성화하지 마세요.
|
||||
* WebViews: `nodeintegration`를 `false`로 설정하세요.
|
||||
* 무엇을 하고 있는지 확실히 알고 있지않는 이상 `blinkFeatures`를 활성화하지
|
||||
마세요.
|
||||
* WebViews: `nodeintegration` 속성을 추가하지마세요.
|
||||
* WebViews: `disablewebsecurity`를 사용하지 마세요.
|
||||
* WebViews: `allowpopups`를 사용하지 마세요.
|
||||
* 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 주 버전에서 제거될 것 입니다.
|
||||
|
|
|
@ -75,3 +75,7 @@ Pepper 플래시 플러그인의 구조는 Electron과 일치해야 합니다. W
|
|||
|
||||
Windows에선 `--ppapi-flash-path`로 전달되는 경로의 분리자로 `\`를 사용해야 합니다.
|
||||
POSIX-스타일 경로는 작동하지 않을 것입니다.
|
||||
|
||||
RTMP 를 사용한 미디어 스트리밍같은 일부 작업의 경우 플레이어의 `.swf` 파일에
|
||||
폭넓은 권한을 부여할 필요가 있습니다. 그러기 위한 한가지 방법은,
|
||||
[nw-flash-trust](https://github.com/szwacz/nw-flash-trust)를 사용하는 것입니다.
|
||||
|
|
Loading…
Reference in a new issue