diff --git a/.github/TRANSLATING.md b/.github/TRANSLATING.md index 1fb11de32..d6dc297c7 100644 --- a/.github/TRANSLATING.md +++ b/.github/TRANSLATING.md @@ -86,3 +86,22 @@ Here are some guidelines to help with the translation. Remember, the main goal of the translation is to make the content as accessible and clear to the new audience as it was to the original audience. Always prioritize clarity and accuracy. Thank you for your interest in contributing; we're excited to have you! Reach out on the [`#docs` channel on Discord](https://discord.com/invite/tauri) if you have any questions along the way. + +## Language-specific Guidelines + +This section was written by the translators themselves, feel free to add your own tips here. + +### Basic Procedure of JP Translation(邦訳基本手順) + +1. Use On-line Translation for the inital translation.
オンライン翻訳にて初期翻訳。 +1. Checks on the auto-translation result. Inappropriate translations shall be corrected (such as "Tauri" - which is often translated as the name of the zodiac sign "the Bull").
自動翻訳の内容確認。f不適切な訳語は修正(例えば「牡牛座」と訳された "Tauri" など)。 +1. Products names, trade names and proper names such as Tauri, Windows, macOS etc. are shown as they are.
商品名、会社名、固有名詞などは、 + そのまま英語表記とする(必要に応じて括弧書きで「読み」を表示)。 +1. The technical terms shall be checked on the on-line terminology sites (Microsoft Terminology Search, etc.)
技術専門用語類は、オンライン用語検索サイト(マイクロソフト社等)に記載されている一般的なものを採用するが、カタカナ語に関しては適宜和語に置き換える倍もある。 + +### Basic Procedure of KO Translation(번역 기본 절차) + +1. Use On-line Translation for the inital translation.
온라인 번역으로 초기 번역. +1. Checks on the auto-translation result. Inappropriate translations shall be corrected (such as "Tauri" - which is often translated as the name of the zodiac sign "the Bull").
자동 번역 내용 확인. 부적절한 번역어는 수정(예: "황소자리"로 번역된 "Tauri" 등). +1. Products names, trade names and proper names such as Tauri, Windows, macOS etc. are shown as they are.
상품명, 회사명, 고유명사 등은 그대로 영어 표기로 함(필요에 따라 괄호 안에 "읽기" 표시). +1. The technical terms shall be checked on the on-line terminology sites (Microsoft Terminology Search, etc.)
기술 전문 용어류는 온라인 용어 검색 사이트(마이크로소프트사 등)에 기재된 일반적인 것을 채택하지만, 가타카나어에 관해서는 적절히 한국어로 대체하는 경우도 있음. \ No newline at end of file diff --git a/.github/labeler.yml b/.github/labeler.yml index 00bcab595..d2c3e26b9 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -6,6 +6,7 @@ i18n: - src/content/docs/it/**/* - src/content/docs/zh-cn/**/* - src/content/docs/ja/**/* + - src/content/docs/ko/**/* "i18n: es": - src/content/docs/es/**/* @@ -22,3 +23,5 @@ i18n: "i18n: ja": - src/content/docs/ja/**/* +"i18n: ko": + - src/content/docs/ko/**/* diff --git a/.prettierignore b/.prettierignore index cc593132b..4218a9f56 100644 --- a/.prettierignore +++ b/.prettierignore @@ -26,22 +26,20 @@ pnpm-lock.yaml src/components/overrides/Header.astro # TODO: Prettier breaks these pages -src/content/docs/learn/Security/capabilities-for-windows-and-platforms.mdx -src/content/docs/learn/Security/using-plugin-permissions.mdx -src/content/docs/learn/Security/writing-plugin-permissions.mdx -src/content/docs/zh-cn/learn/Security - src/content/docs/start/frontend/qwik.mdx -src/content/docs/ja/start/frontend/qwik.mdx -src/content/docs/es/start/frontend/qwik.mdx -src/content/docs/zh-cn/start/frontend/qwik.mdx - -src/content/docs/learn/splashscreen.mdx -src/content/docs/zh-cn/learn/splashscreen.mdx - -src/content/docs/ja/learn/Security/capabilities-for-windows-and-platforms.mdx -src/content/docs/ja/learn/Security/using-plugin-permissions.mdx -src/content/docs/ja/learn/Security/writing-plugin-permissions.mdx - +src/content/docs/*/start/frontend/qwik.mdx src/content/docs/security/http-headers.mdx +src/content/docs/*/security/http-headers.mdx + +src/content/docs/learn/splashscreen.mdx +src/content/docs/*/learn/splashscreen.mdx + +src/content/docs/learn/Security/capabilities-for-windows-and-platforms.mdx +src/content/docs/*/learn/Security/capabilities-for-windows-and-platforms.mdx + +src/content/docs/learn/Security/using-plugin-permissions.mdx +src/content/docs/*/learn/Security/using-plugin-permissions.mdx + +src/content/docs/learn/Security/writing-plugin-permissions.mdx +src/content/docs/*/learn/Security/writing-plugin-permissions.mdx diff --git a/locales.json b/locales.json index e656feece..a74d96956 100644 --- a/locales.json +++ b/locales.json @@ -18,5 +18,9 @@ "ja": { "label": "日本語", "lang": "ja" + }, + "ko": { + "label": "한국어", + "lang": "ko" } } diff --git a/lunaria.config.json b/lunaria.config.json index df997194f..44c5a5860 100644 --- a/lunaria.config.json +++ b/lunaria.config.json @@ -42,6 +42,10 @@ { "label": "日本語", "lang": "ja" + }, + { + "label": "한국어", + "lang": "ko" } ], "dashboard": { diff --git a/public/d2/docs/ko/concept/Inter-Process Communication/index-0.svg b/public/d2/docs/ko/concept/Inter-Process Communication/index-0.svg new file mode 100644 index 000000000..03c0d9441 --- /dev/null +++ b/public/d2/docs/ko/concept/Inter-Process Communication/index-0.svg @@ -0,0 +1,191 @@ + + + + + + + + +WebviewFrontendCoreBackend Event Event + + + + + + diff --git a/public/d2/docs/ko/concept/Inter-Process Communication/index-1.svg b/public/d2/docs/ko/concept/Inter-Process Communication/index-1.svg new file mode 100644 index 000000000..5f002bab0 --- /dev/null +++ b/public/d2/docs/ko/concept/Inter-Process Communication/index-1.svg @@ -0,0 +1,194 @@ + + + + + + + + +WebviewFrontendCoreBackendInvokeHandler IPC Request Invoke command Serialize return Response + + + + + + + + + diff --git a/public/d2/docs/ko/concept/architecture-0.svg b/public/d2/docs/ko/concept/architecture-0.svg new file mode 100644 index 000000000..d93a3e68c --- /dev/null +++ b/public/d2/docs/ko/concept/architecture-0.svg @@ -0,0 +1,198 @@ + + + + + + + + +CoreUpstreamtauritauri-buildtauri-codegentauri-runtime-wryWRYTAOtauri-runtimetauri-macrostauri-utils + + + + + + + + + + + + + diff --git a/public/d2/docs/ko/concept/process-model-0.svg b/public/d2/docs/ko/concept/process-model-0.svg new file mode 100644 index 000000000..20963bf72 --- /dev/null +++ b/public/d2/docs/ko/concept/process-model-0.svg @@ -0,0 +1,197 @@ + + + + + + + + +CoreEvents & Commands 1Events & Commands 2Events & Commands 3WebView1WebView2WebView3WebViewWebViewWebView + + + + + + + + + + + + diff --git a/src/content/docs/ja/doc-JP Rev Control.md b/src/content/docs/ja/doc-JP Rev Control.md deleted file mode 100644 index e86f0bcb6..000000000 --- a/src/content/docs/ja/doc-JP Rev Control.md +++ /dev/null @@ -1,181 +0,0 @@ ---- -title: Tauri Doc 日本語版 改訂記録メモ | Memorundom on Doc-JP Rev Control -topic: guides # this sidebar is active when viewing this page ---- - -- Rev Status Control of Japanese Translation Documents
日本語訳文書の改訂履歴メモ - -## Basic Procedure of JP Translation(邦訳基本手順) - -1. Use On-line Translation for the inital translation.
オンライン翻訳にて初期翻訳。 -1. Checks on the auto-translation result. Inappropriate translations shall be corrected (such as "Tauri" - which is often translated as the name of the zodiac sign "the Bull").
自動翻訳の内容確認。f不適切な訳語は修正(例えば「牡牛座」と訳された "Tauri" など)。 -1. Products names, trade names and proper names such as Tauri, Windows, macOS etc. are shown as they are.
商品名、会社名、固有名詞などは、 - そのまま英語表記とする(必要に応じて括弧書きで「読み」を表示)。 -1. The technical terms shall be checked on the on-line terminology sites (Microsoft Terminology Search, etc.)
技術専門用語類は、オンライン用語検索サイト(マイクロソフト社等)に記載されている一般的なものを採用するが、カタカナ語に関しては適宜和語に置き換える倍もある。 - -## Rev Numbering System Configuration: x.xx.xx - -Example Numbering(番号体系例): 2.00.01 - -- First Didit(最初の一桁)= Tauri Version: "2" --> Tauri 2.0(Tauri のバージョン) -- Middle Digits(中央の二桁)= English Doc Status: "00" --> EN Doc Status #00(英語版文書番号) -- Last Digits(最後の二桁) = JP Doc Status: "01" --> JP Doc Status #01(日本語文書番号) - -For the details of EN/JP doc status, see the listing below:
文書番号の詳細は以下のリストを参照して下さい。 - -**NOTE** This Rv Control number is for JP translation purpose only and does not necessarily represent the actual revision history of each document.
-**《注意》** この変更履歴番号は、日本語翻訳管理用であり、各文書の実際の変更履歴を反映しているものではありません。 - -## EN/JP Doc Status list(EN/JP 文書簡易比較表) - -### Home/Quick Start - -#### index.mdx - -| EN Doc # | EN Doc Date | JP Doc # | JP Doc Date | -| :------: | :---------- | :------: | :---------- | -| **00** | 2025/01/01 | **00** | 2025/01/06 | - -#### 404.md - -| EN Doc # | EN Doc Date | JP Doc # | JP Doc Date | -| :------: | :---------- | :------: | :---------- | -| **00** | 2025/01/01 | **00** | 2025/01/06 | - -#### rss.mdx - -| EN Doc # | EN Doc Date | JP Doc # | JP Doc Date | -| :------: | :---------- | :------: | :---------- | -| **00** | 2025/01/01 | **00** | 2025/01/06 | - -### Quick Start - -#### start/index.mdx - -| EN Doc # | EN Doc Date | JP Doc # | JP Doc Date | -| :------: | :---------- | :------: | :---------- | -| **00** | 2024/10/01 | **00** | 2025/01/06 | - -#### start/prerequisites.mdx - -| EN Doc # | EN Doc Date | JP Doc # | JP Doc Date | -| :------: | :---------- | :------: | :---------- | -| **00** | 2024/11/17 | **00** | 2025/01/07 | - -#### start/create-project.mdx - -| EN Doc # | EN Doc Date | JP Doc # | JP Doc Date | -| :------: | :---------- | :------: | :---------- | -| **00** | 2024/12/31 | **00** | 2025/01/07 | - -#### frontend/index.mdx - -| EN Doc # | EN Doc Date | JP Doc # | JP Doc Date | -| :------: | :---------- | :------: | :---------- | -| **00** | 2024/10/01 | **00** | 2025/01/07 | - -#### frontend/leptos.mdx - -| EN Doc # | EN Doc Date | JP Doc # | JP Doc Date | -| :------: | :---------- | :------: | :---------- | -| **00** | 2024/10/01 | **00** | 2025/01/07 | - -#### frontend/nextjs.mdx - -| EN Doc # | EN Doc Date | JP Doc # | JP Doc Date | -| :------: | :---------- | :------: | :---------- | -| **00** | 2024/11/01 | **00** | 2025/01/07 | - -#### frontend/nuxt.mdx - -| EN Doc # | EN Doc Date | JP Doc # | JP Doc Date | -| :------: | :---------- | :------: | :---------- | -| **00** | 2024/11/01 | **00** | 2025/01/07 | - -#### frontend/qwik.mdx - -| EN Doc # | EN Doc Date | JP Doc # | JP Doc Date | -| :------: | :---------- | :------: | :---------- | -| **00** | 2024/11/01 | **00** | 2025/01/07 | - -#### frontend/sveltekit.mdx - -| EN Doc # | EN Doc Date | JP Doc # | JP Doc Date | -| :------: | :---------- | :------: | :---------- | -| **00** | 2024/11/01 | **00** | 2025/01/07 | - -#### frontend/trunk.mdx - -| EN Doc # | EN Doc Date | JP Doc # | JP Doc Date | -| :------: | :---------- | :------: | :---------- | -| **00** | 2024/10/01 | **00** | 2025/01/07 | - -#### frontend/vite.mdx - -| EN Doc # | EN Doc Date | JP Doc # | JP Doc Date | -| :------: | :---------- | :------: | :---------- | -| **00** | 2024/11/01 | **00** | 2025/01/07 | - -#### migrate/index.mdx - -| EN Doc # | EN Doc Date | JP Doc # | JP Doc Date | -| :------: | :---------- | :------: | :---------- | -| **00** | 2024/10/01 | **00** | 2025/01/08 | - -#### migrate/from-tauri-1.mdx - -| EN Doc # | EN Doc Date | JP Doc # | JP Doc Date | -| :------: | :---------- | :------: | :---------- | -| **00** | 2024/11/13 | **00** | 2025/01/08 | - -#### migrate/from-tauri-2-beta.mdx - -| EN Doc # | EN Doc Date | JP Doc # | JP Doc Date | -| :------: | :---------- | :------: | :---------- | -| **00** | 2024/10/06 | **00** | 2025/01/08 | - -### Core Concepts - -### concept/index.mdx - -| EN Doc # | EN Doc Date | JP Doc # | JP Doc Date | -| :------: | :---------- | :------: | :---------- | -| **00** | 2025/02/22 | **00** | 2025/03/07 | - -### concept/architecture.mdx - -| EN Doc # | EN Doc Date | JP Doc # | JP Doc Date | -| :------: | :---------- | :------: | :---------- | -| **00** | 2025/02/22 | **00** | 2025/03/06 | - -### concept/process-model.mdx - -| EN Doc # | EN Doc Date | JP Doc # | JP Doc Date | -| :------: | :---------- | :------: | :---------- | -| **00** | 2025/02/22 | **00** | 2025/03/06 | - -### concept/size.mdx - -| EN Doc # | EN Doc Date | JP Doc # | JP Doc Date | -| :------: | :---------- | :------: | :---------- | -| **00** | 2025/02/22 | **00** | 2025/03/07 | - -### concept/I-P-C/index.mdx - -| EN Doc # | EN Doc Date | JP Doc # | JP Doc Date | -| :------: | :---------- | :------: | :---------- | -| **00** | 2025/02/22 | **00** | 2025/03/07 | - -### concept/I-P-C/brownfield.md - -| EN Doc # | EN Doc Date | JP Doc # | JP Doc Date | -| :------: | :---------- | :------: | :---------- | -| **00** | 2025/02/22 | **00** | 2025/03/07 | - -### concept/I-P-C/isolation.md - -| EN Doc # | EN Doc Date | JP Doc # | JP Doc Date | -| :------: | :---------- | :------: | :---------- | -| **00** | 2025/02/22 | **00** | 2025/03/09 | - -Cont. diff --git a/src/content/docs/ko/404.md b/src/content/docs/ko/404.md new file mode 100644 index 000000000..f246edba0 --- /dev/null +++ b/src/content/docs/ko/404.md @@ -0,0 +1,22 @@ +--- +title: '404' +topic: guides # 이 페이지를 볼 때 이 사이드바가 활성화됩니다 +template: doc +editUrl: false +tableOfContents: false +lastUpdated: false +pagefind: false +next: false +prev: false +hero: + title: '404' + tagline: 찾고 있는 페이지를 찾을 수 없습니다. URL을 확인하거나 검색창에서 다시 검색해 주세요. +--- + +

+ 검색에 문제가 있는 경우 GitHub에 보고서를 제출하거나 Discord에 문제를 보고해 주세요. +

+ +
+Doc-KO 2.00.00 +
diff --git a/src/content/docs/ko/about/book.md b/src/content/docs/ko/about/book.md new file mode 100644 index 000000000..951c8017c --- /dev/null +++ b/src/content/docs/ko/about/book.md @@ -0,0 +1,36 @@ +--- +title: The Tauri Book +i18nReady: true +--- + +:::note[진행 업데이트] + +저희는 『The Tauri Book』 집필에 적극적으로 임하고 있습니다. 하지만 Tauri의 급격한 성장으로 인해 지연이 발생하여 최근 이 프로젝트의 우선순위를 변경했습니다. 완료 일정은 아직 미정이지만, 이 페이지를 주시하여 최신 정보를 확인해 주십시오. + +당초 공지했던 공개일보다 늦어진 점 사과드립니다. GitHub Sponsors 또는 Open Collective를 통해 기부하셨고 환불을 원하시는 경우, Open Collective를 통해 진행할 수 있습니다: [Open Collective에서 Tauri에 문의하기](https://opencollective.com/tauri/contact). + +::: + +### Tauri Book 개요 + +『The Tauri Book』에서는 Tauri의 역사와 저희가 내린 설계상의 결정 사항에 대해 설명합니다. 또한, 왜 프라이버시, 보안, 지속 가능성이 중요한지, 그리고 현대의 어떤 소프트웨어 프로젝트에도 적용할 수 있는 기본적인 고찰에 대해서도 자세히 설명합니다. + +포함되는 내용은 다음과 같습니다: + +- Tauri 설계 이면의 방법과 그 이유 +- Tauri로 프로그램을 빌드할 때 할 수 있는 일 +- "신속한 출시"와 "지속 가능하고 신뢰할 수 있는 것" 중 하나를 선택할 필요가 없다는 것 +- Tauri의 바인딩/애플리케이션 계층으로 Rust 언어를 선택한 이유 +- 바이너리 리뷰가 중요한 이유 + +### Tauri의 역사 + +2020년, 네이티브 앱(특정 플랫폼용 앱) 제작은 그 어느 때보다 쉽고 접근하기 쉬워졌습니다. 그럼에도 불구하고, 보안과 프라이버시의 양상이 급변하는 가운데 초보자도 숙련된 개발자도 똑같이 어려운 선택에 직면해 있습니다. 이는 신뢰성이 낮은 사용자 디바이스 환경에서 특히 그렇습니다. + +Tauri에서는 추측할 필요가 없습니다. 왜냐하면 Rust의 언어 기능을 활용하여 자신이 좋아하는 프론트엔드 프레임워크를 사용하여 앱을 구축할 수 있게 되는 "개발의 안전성과 유연한 창의성"이라는 새로운 패러다임을 도입하기 위해 처음부터 설계되었기 때문입니다. +Rust 프로그래밍 언어에 대한 지식이 없어도, 완전히 동일한 코드베이스에서 기록적인 속도로 주요 데스크톱 및 모바일 플랫폼을 위한 작고 빠르며 견고하고 안전한 네이티브 애플리케이션을 어떻게 설계, 구축, 감사, 배포할 수 있는지 알아보십시오. + +저자이자 Tauri의 공동 설립자인 Daniel과 Lucas가 여러분을 이론에서 실행까지의 여정으로 안내합니다. 그 과정에서 Tauri가 만들어진 이유와 그 내부에서 어떻게 작동하는지 배우게 됩니다. +또한, 이 책에서는 오픈 소스, DevOps(개발과 운영), 보안, 엔터프라이즈 아키텍처를 전문으로 하는 해당 분야 분들의 통찰과 함께, 대화 형식의 철학적 논의와 오픈 소스 지속 가능성의 관점도 소개합니다. 거기서부터, 여러분이 만드는 차세대 앱은 편의를 받고, 여러분의 사용자도 그 혜택을 누리게 될 것입니다. + +> > > 《번역 주》 **DevOps** 소프트웨어 개발에서 "개발(Development)"과 "운영(Operations)"을 연계하여 수행하는 방법. 자세한 내용은 Wikipedia의 "[DevOps](https://ko.wikipedia.org/wiki/데브옵스)" 항목을 참조하십시오. diff --git a/src/content/docs/ko/about/governance.md b/src/content/docs/ko/about/governance.md new file mode 100644 index 000000000..e7e8a752d --- /dev/null +++ b/src/content/docs/ko/about/governance.md @@ -0,0 +1,54 @@ +--- +title: Tauri의 거버넌스 +i18nReady: true +--- + +Tauri 조직 구조의 주요 목표 중 하나는 기여자의 건강과 행복을 존중하면서 오픈 소스의 가치에 충실하고 지속적인 실행을 보장하는 것입니다. [커먼즈 컨서번시/타우리 프로그램](https://dracc.commonsconservancy.org/0035/)은 Tauri와 그 부수적인 산출물의 향후 개발을 통해 이러한 가치에 전념하고, 개방적이고 투명하며 효율적인 조직의 거버넌스 프로세스(관리 통치)를 촉진하기 위해 설립되었습니다. + +> > > 《번역 주》 **커먼즈 컨서번시** The Commons Conservancy. "Commons(공유 재산)"를 "Conservancy(보호 관리하는 단체)"라는 의미. 오픈 소스 프로젝트의 실제 개발 작업이 아닌, 프로젝트 운영의 법인 조직을 설립할 목적으로 설치되었습니다. + +## Tauri Working Group(작업 그룹) + +"Tauri 워킹 그룹"은 이 거버넌스 프로세스를 실현하기 위해 만들어진 집합적인 조직으로, 다음 구성원으로 이루어져 있습니다: + +- 워킹 그룹 멤버 +- Tauri 이사회 및 이사 +- Tauri 각 도메인 담당 책임자 +- Tauri 각 도메인 팀 + +![Tauri governance diagram](@assets/about/governance/diagram.svg) + +### 워킹 그룹 멤버 + +"Tauri 워킹 그룹"을 구성하는 모든 개인을 말합니다. + +### Tauri 이사회 및 이사 + +"Tauri 이사회"는 "Tauri 개발 활동 프로그램"의 중심적인 의사 결정 기관이며, 그 전체적인 건전성과 안정성에 책임을 집니다. 이사회는 "Tauri 개발 활동 프로그램"의 주요 결정 사항이나 워킹 그룹에 의해 제기된 문제에 대해 표결을 합니다. + +> > > 《번역 주》 **Tauri 개발 활동 프로그램** 원문은 "The Tauri Programme". 그대로 "Tauri 프로그램"이라고 표기하면 개별 앱 프로그램과 구별하기 어려우므로, 개발 활동을 주관하는 "개발 주체" 또는 "개발 조직"을 "개발 활동 프로그램"으로 표현했습니다. + +개별 이사란 기술적인 기여자이거나, Tauri의 장래 이해 관계자이거나, 업계 경험을 공유하거나, 오픈 소스 내의 규제나 법적 측면에 열정을 가진 사람들 같은 분들입니다. + +### 각 도메인 담당 책임자(Domains & Domain Leads) + +"도메인(Domains)"이란 Tauri 내의 특정 관심 영역을 대표하는 조직 단위입니다. + +"도메인 리드(Domain Leads)"(담당 책임자)란 자신이 이끄는 도메인에 관한 전문 지식을 가진, Tauri 커뮤니티 내의 신뢰받는 기여자입니다. 그 도메인 내의 활동 방향을 정하고, 감독하며, 지원할 책임을 집니다. + +현재 각 "도메인"과 그 "도메인 리드"에 대해서는 GitHub의 [Governance and Guidance Repository](https://github.com/tauri-apps/governance-and-guidance)에 개요가 기재되어 있습니다. + +### 도메인 팀 + +"팀(Teams)"이란 "Tauri 개발 활동 프로그램"의 특정 영역(도메인)을 지원 또는 유지하는 소수의 기여자 그룹입니다. 이러한 팀은, 특히 그때그때의 단기적인 기여로는 같은 결과를 달성할 수 없는 경우 등에, Tauri가 사용하는 장기적인 과제와 목표를 달성하기 위한 수단입니다. + +## Tauri에 참여하기 + +만약 당신이 "Tauri 이사" 또는 "도메인 리드"가 되고 싶다면, 이러한 직책의 선거는 연중 내내 실시됩니다. "도메인 리드" 선거는 봄과 가을에, "이사" 선거는 여름에 실시됩니다. 지원 방법 설명은 각 선거 전에 [Tauri 블로그](https://tauri.app/blog/) (영문판)에 게재됩니다. + +## 추가 정보 + +- [Governance and Guidance Repository](https://github.com/tauri-apps/governance-and-guidance)(영문판): Tauri의 거버넌스와 현재 도메인 및 도메인 리드에 관한 상세 정보 +- [사회 계약](https://github.com/tauri-apps/governance-and-guidance/blob/main/SOCIAL_CONTRACT.md)(영문판): "사회 계약"(도덕 윤리 규범)은 Tauri 의사 결정과 조직의 존재 방식을 보여줍니다 +- [행동 강령](https://github.com/tauri-apps/governance-and-guidance/blob/main/CODE_OF_CONDUCT.md)(영문판) +- ["Tauri 개발 활동 프로그램" 규약](https://dracc.commonsconservancy.org/0035/)(영문판) diff --git a/src/content/docs/ko/about/index.mdx b/src/content/docs/ko/about/index.mdx new file mode 100644 index 000000000..a4538a2ee --- /dev/null +++ b/src/content/docs/ko/about/index.mdx @@ -0,0 +1,30 @@ +--- +title: Tauri에 대하여 +i18nReady: true +--- + +:::tip[팁] + +빠르게 읽을 수 있는 기술 개요를 원하거나 앱 제작을 시작하고 싶다면 [Tauri란?](/ko/start/) 페이지를 참조하십시오. Tauri 프로젝트의 이념에 대해 더 자세히 알고 싶다면 계속 읽어주십시오. + +::: + +import { LinkCard, CardGrid } from '@astrojs/starlight/components'; + + + + + + diff --git a/src/content/docs/ko/about/philosophy.md b/src/content/docs/ko/about/philosophy.md new file mode 100644 index 000000000..879827b4a --- /dev/null +++ b/src/content/docs/ko/about/philosophy.md @@ -0,0 +1,53 @@ +--- +title: Tauri의 이념 +i18nReady: true +--- + +Tauri는 기존의 거의 모든 프론트엔드 프레임워크를 사용하여 개발자가 주요 데스크톱 플랫폼용 애플리케이션을 만드는 데 도움이 되는 툴킷입니다. "코어" 부분은 Rust로 작성되었고 CLI 부분은 Node.js를 활용하므로 Tauri는 뛰어난 앱을 만들고 유지 관리하기 위한 진정한 다국어 접근 방식입니다. + + + +## 보안 우선 + +오늘날의 세계에서 모든 "정직한 위협 모델"은 사용자의 장치가 이미 보안 침해를 당했다고 가정합니다. 이로 인해 앱 개발자는 어려운 상황에 처하게 됩니다. 장치가 이미 위험에 처한 경우 소프트웨어를 어떻게 신뢰할 수 있습니까? + +> > > 《번역 주》 **정직한 위협 모델** 원문은 "**honest** threat model". honest 부분의 정해진 번역이 불분명하여 "정직한, 꾸밈없는"의 의미로 해석했습니다. 아래의 "[진정한 오픈 소스](#진정한-오픈-소스)"의 원문도 "**honest** open source"이지만, 이 honest는 "진정한, 순수한"의 의미로 사용되었습니다. + +"심층 방어(Defence in depth)"가 Tauri가 취한 접근 방식입니다. 공격자에게 노출되는 표면을 최소화하기 위해 모든 예방 조치를 취할 수 있도록 하고 싶었습니다. Tauri를 사용하면 배포할 API 엔드포인트를 선택하고, 앱에 로컬 호스트 서버를 포함할지 여부를 선택하고, 런타임 기능 핸들을 무작위화할 수 있습니다. 이러한 기술과 기타 기술은 귀하와 귀하의 앱 사용자의 방어력을 강화하는 안전한 기준선을 형성합니다. + +"정적 공격(Static attacks)"을 매우 어렵게 만들고 시스템을 서로 분리하여 공격자의 침입을 지연시키는 것이 가장 중요합니다. 다른 프레임워크인 Electron 생태계에서 마이그레이션한 경우에도 안심하십시오. 기본적으로 Tauri는 바이너리만 게시하고 ASAR 파일은 게시하지 않습니다. + +> > > 《번역 주》 **ASAR** Atom Shell Archive Format의 약자. [Electron](https://www.electronjs.org/ko/docs/latest/tutorial/asar-archives)에서 사용되는 여러 파일을 하나로 묶기 위한 간단한 아카이브 형식입니다. 애플리케이션 배포 형식을 만든 후 앱의 소스 코드가 ASAR 아카이브에 번들로 제공됩니다. + +보안이라는 판단 기준에서 Tauri로 빌드하기로 선택함으로써 미래를 내다보는 보안 중심의 자세를 취할 수 있는 다양한 기회가 생길 것입니다. + +## 다국어 지원(사일로가 아닌) + +현대의 대부분의 프레임워크는 단일 언어 체계를 사용하므로 좁은 지식과 관용구의 거품 속에 갇혀 있습니다. 이는 특정 틈새 애플리케이션에서는 잘 작동하지만 일종의 부족주의(사일로화)를 조장하기도 합니다. + +이 상황은 React, Angular, Vue의 각 개발 커뮤니티가 각자의 문제에 몰두하여 결국 이종 교배가 거의 일어나지 않는다는 점에서도 알 수 있습니다. + +같은 상황은 Rust 대 Node 대 C++의 전쟁터에서도 볼 수 있습니다. 거기서는 강경파가 독자적인 입장을 취하고 커뮤니티 간의 협력을 거부합니다. + +현재 Tauri는 백엔드에 Rust를 사용하지만, 머지않아 Go, Nim, Python, C#과 같은 다른 백엔드도 가능해질 것입니다. 왜냐하면 Tauri는 [webview](https://github.com/webview) 기관에 대한 공식 Rust 바인딩을 유지 관리하고 있지만, 여러분의 필요에 따라 백엔드를 전환할 수 있도록 할 예정이기 때문입니다. Tauri의 API는 "C 상호 운용성"을 갖춘 모든 언어로 구현할 수 있으므로 완전한 다국어화를 실현하려면 "PR(풀 리퀘스트)"을 하나 제출하기만 하면 됩니다. + +## 진정한 오픈 소스 + +커뮤니티가 없으면 오픈 소스의 어떤 것도 의미가 없습니다. 오늘날의 소프트웨어 커뮤니티는 놀라운 곳입니다. 거기서는 사람들이 서로 돕고 멋진 것을 만듭니다. 오픈 소스는 그러한 움직임의 매우 큰 부분을 차지합니다. + +오픈 소스의 의미는 사람마다 다르지만, 대부분의 사람들은 오픈 소스가 자유를 증진하는 데 도움이 된다는 데 동의할 것입니다. 소프트웨어가 귀하의 권리를 존중하지 않는 경우, 윤리에 반하는 동작으로 인해 불공평하게 느껴지고 잠재적으로 귀하의 자유를 침해할 수 있습니다. + +이 때문에 FLOSS 지지자들이 "진정한" 오픈 소스인 Tauri를 사용하여 애플리케이션을 만들고 FSF(자유 소프트웨어 재단)가 승인한 GNU/Linux 배포판에 포함될 수 있다는 것을 자랑스럽게 생각합니다. + +> > > 《번역 주》 **FLOSS**(free/libre open-source software) 오픈 소스 자유 소프트웨어. + +## Tauri의 미래 + +Tauri의 미래는 여러분의 참여와 기여에 달려 있습니다. 실제로 Tauri를 사용해 보거나, 문제를 보고하거나, 워킹 그룹(각 작업 그룹)에 참여하거나, 기부해 보십시오. 어떤 기여도 필수적입니다. 어쨌든, 꼭 연락 주시기 바랍니다. diff --git a/src/content/docs/ko/about/trademark.md b/src/content/docs/ko/about/trademark.md new file mode 100644 index 000000000..649412bdc --- /dev/null +++ b/src/content/docs/ko/about/trademark.md @@ -0,0 +1,130 @@ +--- +title: 상표 가이드라인 +i18nReady: true +--- + +:::[warning【주의】] +《번역 주》 이 한국어 번역은 "참고 번역"이며 정확한 법령 해석이 아닙니다. 상표에 관한 취급은 "영문판"의 기재에 따라 주십시오. +::: + +이 방침 문서 "상표 가이드라인"은 "The Tauri Programme within the Commons Conservancy"가 소유한 "TAURI 상표", "서비스 마크" 및 "로고"의 사용 방법을 이해하는 데 도움을 드리기 위해 작성되었습니다. + +> 《번역 주》 **The Tauri Programme within the Commons Conservancy** Tauri 개발팀의 공식 명칭. "커먼즈 컨서번시 내의 Tauri 프로그램"(공유 재산 보호 관리 단체 사이트 내에 등록된 Tauri 프로그램이라는 의미). 법령 관련 내용을 나타내는 본고에서는 원문 표기를 사용합니다. "커먼즈 컨서번시"에 대해서는 [Tauri의 거버넌스](/ko/about/governance/)를 참조하십시오. + +Tauri의 소프트웨어는 자유/무료 오픈 소스 소프트웨어 라이선스에 따라 제공되지만, 그 저작권 라이선스에는 Tauri의 상표를 사용할 라이선스가 포함되어 있지 않습니다. 이 방침 문서는 "배경법" 및 "커뮤니티의 기대"에 따라 Tauri의 상표를 사용하는 방법을 설명하는 것을 목적으로 합니다. + +**이 "방침 문서"가 다루는 범위는:** + +- Tauri의 "문자 상표"와 "서비스/마크": TAURI, TAO, WRY +- Tauri의 "로고": The TAURI, TAO, WRY 각 로고(및 모든 시각적 파생물) + +> 《번역 주》 **문자 상표** 원문은 "word trademarks". 기업명이나 제품명의 문자만으로 만들어진 상표. "워드 마크 word mark". + +이 방침 문서는 등록 여부에 관계없이 모든 "상표"와 "서비스 마크"에 적용됩니다. + +## 일반적인 가이드라인 + +Tauri의 상표 중 하나를 사용하는 경우, 수신자가 "누구로부터 무엇을" 받고 있는지에 대해 항상 누구에게도 오해를 주지 않는 형태로 이루어져야 합니다. 예를 들어, TAURI 소프트웨어의 수정판(포크라고도 함)을 배포하는 경우, "TAURI 소프트웨어를 배포하고 있다"고 말할 수 없습니다. 수신자가 수정판과 Tauri 공식판의 차이를 이해하지 못할 수 있기 때문입니다. + +또한, 귀하의 웹사이트가 Tauri의 공식 웹사이트인 것처럼, 또는 Tauri가 귀하의 웹사이트를 공인하고 있는 것처럼 오해를 주는 형태로 귀하의 웹사이트에 Tauri의 로고를 사용할 수 없습니다. + +단, TAURI 소프트웨어를 좋아한다거나, TAURI 커뮤니티에 참여하고 있다거나, TAURI 소프트웨어의 수정되지 않은 그대로의 버전을 제공하고 있다는 등의 말은 할 수 있습니다. + +Tauri의 상표 또는 그 변형을 귀하 자신의 상표, 서비스 마크, 도메인 이름, 회사명, 상호, 제품명 또는 서비스명의 일부로 사용하거나 등록할 수 없습니다. + +상표법에서는 Tauri의 상표와 매우 유사한 명칭이나 상표의 사용을 인정하지 않습니다. 따라서 Tauri의 상표류나 발음 표기의 명백한 "변형", "외국어 동의어", "모사", 또는 유사하거나 호환되는 제품이나 서비스의 "약어"를 사용할 수 없습니다. Tauri에서는 다음과 같은 사례를 Tauri의 상표류에 매우 유사하다고 간주합니다: + +- TAURIMAGE +- Tauri Wallet App + +## 허용되는 사용 예 + +### 애플리케이션 + +TAURI는 컴퓨터 기기용 애플리케이션을 만들기 위한 프레임워크입니다. 귀하의 애플리케이션이 TAURI를 사용하고 있음을 표방할 수는 있지만, 그 애플리케이션이 "the Tauri Programme within the Commons Conservancy"에 의해 인증되었거나 공식 애플리케이션이라는 인상을 주지 않도록 주의해야 합니다. 또한, 그 애플리케이션에 Tauri의 아이콘을 붙여 _공개하지 않도록_ 주의하십시오. + +### 플러그인과 템플릿 + +적절한 명명 규칙을 사용하여 플러그인이나 템플릿 코드를 공개할 수는 있지만, 그러한 저작물은 "공식적으로 승인된 것이 아님"을 명기해야 합니다. GitHub 조직 내의 `tauri-apps`에 의해 관리되는 코드베이스만이 공식판으로 간주됩니다. + +## Tauri Core의 수정판(포크) + +Tauri 소프트웨어(TAURI CORE)의 수정판을 배포하는 경우, Tauri의 로고와 이름을 모두 삭제해야 합니다. 그러나 원본 라이선스를 SPDX 형식으로 남겨야 합니다. 귀하가 제공하려는 소프트웨어의 출처를 성실하게 기술하기 위해 Tauri의 "워드 마크"는 사용할 수 있지만, Tauri의 "로고"는 사용할 수 없습니다. 예를 들어, 배포하는 코드가 Tauri 소프트웨어의 수정판인 경우, "이 소프트웨어는 TAURI 소프트웨어의 소스 코드에서 파생되었습니다"라고 기재할 수 있습니다. + +> 《번역 주》 **SPDX 형식** [Software Package Data Exchange](https://ko.wikipedia.org/wiki/Software_Package_Data_Exchange) "소프트웨어 패키지 데이터 교환"의 약자. + +### Tauri와의 호환성에 관한 고지에 대하여 + +귀하의 소프트웨어와 Tauri 소프트웨어의 관계를 성실하게 표현하기 위해 "워드 마크"는 사용할 수 있지만, "로고"는 사용할 수 없습니다. 그 외의 사용 방법은 Tauri가 귀하의 소프트웨어를 인증 또는 승인했다고 받아들여질 수 있습니다. 만약 Tauri의 로고를 사용하고 싶다면, 라이선스 조건에 대해 상담해 주십시오. + +### 호환되는 제품의 명명에 대하여 + +TAURI 소프트웨어와 관련하여 귀하의 제품을 설명하고 싶다면, 그 조건은 다음과 같습니다. 다음 조건을 충족하는 경우에만 귀하의 소프트웨어를 "TAURI의 XYZ"(XYZ는 귀하의 제품명)라고 부를 수 있습니다: + +- 귀하의 제품과 함께 공개되는 TAURI 소프트웨어의 모든 버전은 Tauri가 제공하는 바이너리 자체이거나, Tauri가 제공하는 코어 소프트웨어와 도구로 만들어진 것이어야 합니다. +- 귀하의 제품이 TAURI 소프트웨어의 API와 완벽하게 호환되어야 합니다. +- 마케팅 자료나 제품 설명에 다음 문장을 기재해야 합니다: "TAURI is a trademark of The Tauri Programme within the Commons Conservancy. https://tauri.app/ "(TAURI는 the Tauri Programme within the Commons Conservancy의 상표입니다. https://tauri.app/). + +### 사용자 그룹에서의 상표 이용에 대하여 + +다음 조건을 충족하는 경우, "사용자 그룹명"의 일부로 "워드 마크"를 사용할 수 있습니다: + +- 해당 그룹의 활동 중심이 "Tauri 소프트웨어"일 것. +- 해당 그룹이 영리 활동을 하지 않을 것. +- 참가 비용이 장소비, 음식비에 한정될 것. + +Tauri의 상표를 사용하여 회의를 개최하는 것은 허용되지 않습니다. + +### 도메인 이름에서의 상표 사용 금지 + +Tauri의 "워드 마크" 또는 그 변형이나 조합을 포함하는 도메인 이름을 등록할 수 없습니다. + +### 기타 TAURI 상표의 영리 목적 사용에 대하여 + +비디오, 튜토리얼 시리즈, 서적, 기타 교육 자료를 제작하고 구독, 판매, 광고 등을 통해 보상을 받는 경우, "the Tauri Programme within the Commons Conservancy"로부터 명시적인 라이선스 허가를 받아야 합니다. + +## Tauri 상표의 표시 방법 + +Tauri의 상표류를 사용할 권리가 있는 경우, 다음 방법으로 표시하십시오. + +### 상표 마크와 설명문에 대하여 + +웹 페이지, 문서 또는 자료의 처음 또는 가장 눈에 띄는 곳에 상표 마크가 표시되는 경우, 그 상표가 "등록 상표("®")"인지 "미등록 상표("™")"인지를 나타내는 기호를 부기해야 합니다. 어느 쪽에 해당하는지 불분명한 경우, Tauri에 문의하십시오. ("TAURI" 자체는 등록 상표입니다.) + +상표 마크를 사용한 페이지 하단에 다음 주의 사항을 기재하십시오. "TAURI is trademark of [The Tauri Programme within the Commons Conservancy]"(TAURI는 "커먼즈 컨서번시의 Tauri 개발 활동 프로그램"의 상표입니다라는 의미). + +### 문중 상표의 사용에 대하여 + +상표는 항상 "그대로의 형태", "정확한 철자"로 사용하고, 생략하거나, 하이픈으로 연결하거나, 다른 단어와 조합해서는 안 됩니다. + +- 부적절한 예: TAUREE 《※ 철자가 다릅니다.》 +- 적절한 예: TAURI + +상표를 "복수형으로 만들지 마십시오". + +- 부적절한 예: I have seventeen **TAURIs** running on my computer. (컴퓨터에서 17개의 TAURI를 실행하고 있습니다.) 《※ 복수형 표기》 +- 적절한 예: I am running seventeen **TAURI** applications on my computer and have ram to spare. (컴퓨터에서 17개의 TAURI 애플리케이션을 실행하고 있으며 RAM에 여유가 있습니다.) + +상표는 항상 명사를 수식하는 "형용사로서" 사용하십시오. + +- Unacceptable: This is a TAURI. +- Acceptable: This is a TAURI software application. +- 부적절한 예: This is a **TAURI**. (이것은 TAURI입니다.) 《※ 명사로 사용》 +- 적절한 예: This is a **TAURI** software application. (이것은 TAURI의 소프트웨어 애플리케이션입니다.) + +### 로고의 사용에 대하여 + +로고는 확대/축소 표시를 제외하고 어떠한 변경도 해서는 안 됩니다. 즉, 장식적인 요소의 추가 색상이나 비율의 변경 변형 다른 요소의 추가, 로고와의 조합 등을 할 수 없습니다. + +Tauri에서는 로고의 "고대비" 버전도 준비되어 있으며, 다음 "자산" 섹션에서 다운로드할 수 있습니다. + +## 자산 + +- [브랜드 가이드라인](/assets/brand_guidelines.pdf): 이 링크(영문판)에서는 상표에 관한 모든 자료를 다운로드할 수 있습니다 - (PDF, 74.3 MB) +- [로고 팩](/assets/logopack.zip): 이 링크에서는 "로고"와 "워드 마크"의 SVG 형식과 PNG 형식의 데이터를 다운로드할 수 있습니다 - (ZIP, 203 KB) + +--- + +"The Tauri Programme within the Commons Conservancy" Conservancy 내의 Tauri 프로그램은 이러한 상표 가이드라인을 언제든지 변경할 권리를 보유합니다. 질문이나 문의 사항이 있는 경우 `trademark@tauri.app`으로 메일을 보내주십시오. + +위의 가이드라인은 http://www.modeltrademarkguidelines.org에서 구할 수 있는 "모델 상표 가이드라인"을 기반으로 하며, "크리에이티브 커먼즈 저작자표시 3.0 비이식 라이선스 1.0판 2022/08/20자" (https://creativecommons.org/licenses/by/3.0/deed.en_EU)에 따라 사용되었습니다. diff --git a/src/content/docs/ko/concept/Inter-Process Communication/brownfield.md b/src/content/docs/ko/concept/Inter-Process Communication/brownfield.md new file mode 100644 index 000000000..1ccf67cf4 --- /dev/null +++ b/src/content/docs/ko/concept/Inter-Process Communication/brownfield.md @@ -0,0 +1,31 @@ +--- +title: 브라운필드 패턴(Brownfield Pattern) +i18nReady: true +--- + +_**기본 IPC 패턴입니다**_ + +이 패턴은 Tauri를 사용하는 데 있어 가장 명확하고 이해하기 쉬운 것입니다. 기존 프론트엔드 프로젝트와 최대한 호환되도록 하려고 하기 때문입니다. 간단히 말해, 기존 웹 프론트엔드가 브라우저 내에서 사용하는 것 외에는 다른 것이 필요하지 않도록 되어 있다는 것입니다. +단, 이것은 기존 브라우저 애플리케이션에서 작동하는 **_모든 것_**이 그대로 작동한다는 의미는 아닙니다. + +일반적인 "브라운필드"형 소프트웨어 개발에 익숙하지 않은 경우, Wikipedia의 [Brownfield Wikipedia article]()(한국어판 없음)에 알기 쉬운 개설이 있습니다. +Tauri의 경우, (브라운필드형 개발의 대상이 되는) 기존 소프트웨어란 레거시 시스템이 아니라 현재 브라우저의 지원과 동작입니다. + +## 설정 + +브라운필드형 개발은 기본 패턴이므로 설정 옵션을 지정할 필요가 없습니다. +명시적으로 설정하려면 `tauri.conf.json` 구성 파일 내의 `tauri > pattern` 객체를 사용합니다. + +```json +{ + "tauri": { + "pattern": { + "use": "brownfield" + } + } +} +``` + +_**브라운필드형에서는 추가 설정 옵션이 없습니다.**_ + +[brownfield wikipedia article]: https://en.wikipedia.org/wiki/Brownfield_(software_development) diff --git a/src/content/docs/ko/concept/Inter-Process Communication/index.mdx b/src/content/docs/ko/concept/Inter-Process Communication/index.mdx new file mode 100644 index 000000000..952f6486a --- /dev/null +++ b/src/content/docs/ko/concept/Inter-Process Communication/index.mdx @@ -0,0 +1,94 @@ +--- +title: 프로세스 간 통신 +sidebar: + label: Overview + order: 1 +i18nReady: true +--- + +import { CardGrid, LinkCard } from '@astrojs/starlight/components'; + +"프로세스 간 통신(Inter-Process Communication)"(IPC)은 단일 프로세스가 안전하게 통신할 수 있도록 하여 더 복잡한 애플리케이션을 구축하는 데 핵심적인 역할을 합니다. + +구체적인 "프로세스 간 통신(IPC)" 유형(패턴)에 대해서는 다음 설명을 참조하십시오. + + + + + + +Tauri는 [Asynchronous Message Passing](https://ko.wikipedia.org/wiki/메시지_전달)이라는 특별한 스타일의 프로세스 간 통신을 사용합니다. 이 방법에서는 프로세스들이 간단한 데이터 표현을 사용하여 직렬화된 "_요청_"과 "_응답_"을 주고받습니다. 메시지 전달은 인터넷상의 클라이언트-서버 통신에 사용되는 메커니즘이므로 웹 개발 경험이 있는 사람이라면 누구나 익숙할 것입니다. + +또한 메시지 전달은 수신자가 필요에 따라 "요청"을 거부하거나 폐기할 수 있으므로 "공유 메모리 방식"이나 "직접 함수 접근 방식"보다 안전한 방법입니다. 예를 들어, Tauri 코어 프로세스가 "요청"을 악의적인 것으로 판단하면 해당 요청은 폐기되고 해당 함수 처리는 실행되지 않습니다. + +아래에서는 Tauri의 두 가지 "IPC 프리미티브(동기 기본 명령)", 즉 "이벤트 `Events`"와 "명령 `Commands`"에 대해 자세히 설명합니다. + +## 이벤트 + +"이벤트"는 자동 추적형 단방향 "IPC 메시지"로, 라이프사이클 중 각 이벤트와 상태 변화를 전달하는 데 최적입니다. +"[명령](#명령)"과 달리 "이벤트"는 프론트엔드와 Tauri Core(코어부) 양쪽에서 발행할 수 있습니다. + +
+ +```d2 sketch pad=50 +shape: sequence_diagram + +Frontend: { + shape: rectangle + label: "Webview\nFrontend" +} +Core: { + shape: rectangle + label: "Core\nBackend" +} + +Frontend -> Core: "이벤트"{style.animated: true} +Core -> Frontend: "이벤트"{style.animated: true} +``` + +
코어부와 Webview 간에 주고받는 이벤트
+
+ +## 명령 + +Tauri는 또한 "IPC 메시지" 외에도 [foreign function interface](https://ko.wikipedia.org/wiki/외부_함수_인터페이스)와 같은 추상화도 제공합니다[^1]. 기본 주요 API인 `invoke`는 브라우저의 `fetch` API와 유사하며, 프론트엔드가 Rust 함수를 호출하고 인수를 전달하며 데이터를 수신할 수 있도록 합니다. + +이 메커니즘은 내부적으로 [JSON-RPC]와 같은 프로토콜을 사용하여 요청과 응답을 직렬화하므로 모든 인수와 반환 값 데이터는 JSON 표준에 따라 직렬화 가능해야 합니다. + +
+ +```d2 sketch pad=50 +shape: sequence_diagram + + +Frontend: { + label: "Webview\nFrontend" +} + +Core: { + label: "Core\nBackend" +} +InvokeHandler: { + label: "Invoke\nHandler" +} + +Frontend -> Core: "IPC 요청"{style.animated: true} +Core -> InvokeHandler: "명령 호출"{style.animated: true} +InvokeHandler -> Core: "반환 값 직렬화"{style.animated: true} +Core -> Frontend: "응답"{style.animated: true} +``` + +
명령 호출에 관련된 IPC 메시지
+
+ +[^1]: 명령은 내부적으로 메시지 전달을 사용하므로 실제 "외부 함수 인터페이스(FFI)"와 같은 보안상의 함정은 없습니다. + +[Asynchronous Message Passing]: https://en.wikipedia.org/wiki/Message_passing#Asynchronous_message_passing +[json-rpc]: https://www.jsonrpc.org +[foreign function interface]: https://en.wikipedia.org/wiki/Foreign_function_interface diff --git a/src/content/docs/ko/concept/Inter-Process Communication/isolation.md b/src/content/docs/ko/concept/Inter-Process Communication/isolation.md new file mode 100644 index 000000000..9289fe205 --- /dev/null +++ b/src/content/docs/ko/concept/Inter-Process Communication/isolation.md @@ -0,0 +1,116 @@ +--- +title: 아이솔레이션 패턴(Isolation Pattern) +i18nReady: true +--- + +아이솔레이션(분리, 격리) 패턴은 프론트엔드에서 전송된 Tauri API 메시지가 Tauri 코어부에 도달하기 전에 JavaScript를 사용하여 가로채고 변경하는 방법입니다. 아이솔레이션 패턴으로 삽입되는 안전한 JavaScript 코드는 아이솔레이션 애플리케이션이라고 합니다. + +## 아이솔레이션 패턴의 필요성 + +아이솔레이션 패턴의 목적은 Tauri 코어부에 대한 원치 않거나 악의적인 프론트엔드 호출로부터 애플리케이션을 보호하기 위한 메커니즘을 개발자에게 제공하는 것입니다. 아이솔레이션 패턴이 필요하게 된 것은 프론트엔드에서 실행되는 신뢰할 수 없는 콘텐츠로 인해 발생하는 위협에 대응하기 위해 만들어졌습니다. 이러한 위협은 많은 종속성을 가진 애플리케이션에서 흔히 볼 수 있는 사례입니다. 애플리케이션이 마주칠 수 있는 많은 위협 원인의 목록은 [보안: 위협 모델]을 참조하십시오. + +위의 가장 큰 위협 모델은 "개발 시 위협"이었지만, 이러한 위협은 아이솔레이션 패턴을 설계할 때 염두에 두었던 것입니다. 많은 프론트엔드 빌드 도구가 종종 깊이 중첩된 수십(또는 수백) 개의 종속성으로 이루어져 있을 뿐만 아니라, 복잡한 애플리케이션 측에도 수많은 (이 또한 종종 깊이 중첩된) 종속성이 있을 수 있으므로 최종 출력 버전에 번들로 제공됩니다. + +## 아이솔레이션 패턴을 사용하는 경우 + +Tauri는 아이솔레이션 패턴을 사용할 수 있는 경우 항상 사용하는 것을 강력히 권장합니다. 아이솔레이션 애플리케이션에서는 프론트엔드의 _**모든**_ 메시지를 "캡처"(인터셉트)하므로 아이솔레이션 패턴이 _항상_ 사용됩니다. + +또한 Tauri는 외부 Tauri API를 사용할 때 항상 애플리케이션을 "잠금"(록다운)할 것을 강력히 권장합니다. 앱 개발자는 안전한 아이솔레이션 애플리케이션을 이용하여 IPC 입력을 검증하고, 그 입력 내용이 확실히 예상되는 매개변수 범위 내에 있는지 확인합니다. 사례로는 파일 읽기 또는 쓰기 호출이 해당 애플리케이션의 예상치 못한 위치의 경로에 액세스하려고 하지 않는지 확인하거나, Tauri API의 "HTTP 페치 콜"이 "Origin 헤더"에 해당 애플리케이션이 예상하는 것만 설정하고 있는지 확인하는 것입니다. + +하지만 프론트엔드의 _**모든**_ 메시지를 캡처하기 때문에, 상시 동작 API, 예를 들어 [Events] 등에서도 작동합니다. 일부 이벤트에서는 앱 고유의 Rust 코드로 작업을 실행시킬 가능성이 있으므로, 그에도 유사한 검증 방법으로 대응할 수 있습니다. + +## 아이솔레이션 패턴의 적용 + +아이솔레이션 패턴에서 중요한 것은 프론트엔드와 Tauri Core(타우리 코어부) 사이에 안전한 애플리케이션을 삽입하여 IPC 수신 메시지를 캡처하고 수정하는 것입니다. 이는 `