feat: Wiki 지식 자산 업데이트 - UX Scenarios, Frontend, Game Design, Topics 추가 [2026-05-08]
This commit is contained in:
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-B2F9C0
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-api-응답-및-에러-핸들링-아키텍처
|
||||
title: API 응답 및 에러 핸들링 아키텍처
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-B2F9C0]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - API 응답 및 에러 핸들링 아키텍처"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[API 응답 및 에러 핸들링 아키텍처]]
|
||||
@@ -22,7 +33,7 @@ github_commit: "[P-Reinforce] Continuous Worker - API 응답 및 에러 핸들
|
||||
* **메타데이터 활용과 컨트롤러 중심의 제어 흐름**
|
||||
응답 객체에 `_tag`와 같은 메타데이터 속성을 포함하여 내부 로직 및 응답 객체를 구분하면, 마이크로서비스 및 클라이언트 환경 간에 일관된 제어 흐름을 제공할 수 있습니다 [10, 11]. 또한 컨트롤러는 요청과 응답의 모든 흐름을 관리해야 하며, 전역 Catch-all 미들웨어는 비즈니스 로직의 제어 흐름을 담당하는 대신 오직 예상치 못한 결함을 처리하고 개발자에게 알리는 용도로만 사용해야 합니다 [12, 13].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -35,3 +46,52 @@ github_commit: "[P-Reinforce] Continuous Worker - API 응답 및 에러 핸들
|
||||
*Last updated: 2026-04-18*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -0,0 +1,92 @@
|
||||
---
|
||||
id: wiki-2026-0508-aspnet-core
|
||||
title: ASPNET Core
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-761015]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.95
|
||||
tags: [uncategorized]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Mega Batch 2 - Wikified ASP.NET Core"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# ASP.NET Core
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> ASP.NET Core는 내장된 의존성 주입(DI) 컨테이너를 제공하여 소프트웨어의 의존성 역전 원칙 구현을 돕는 프레임워크입니다 [1]. 웹 애플리케이션 개발 시 클린 아키텍처를 적용하여 비즈니스 로직을 프레임워크나 데이터베이스로부터 분리된 구조로 개발할 수 있게 해줍니다 [2]. 다만, 주제를 깊이 있게 다루기에는 소스에 관련 정보가 부족합니다.
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
- **의존성 역전 원칙(DIP)의 구현 지원**: ASP.NET Core는 내장된 의존성 주입(Dependency Injection) 컨테이너를 포함하고 있습니다 [1]. 이를 통해 소프트웨어 컴포넌트 간의 결합을 분리(decoupling)하고, 객체 지향 설계의 핵심인 의존성 역전 원칙(Dependency [[Inversion]] Principle)을 훨씬 수월하게 구현할 수 있도록 지원합니다 [1].
|
||||
- **클린 아키텍처(Clean [[Architecture]]) 기반의 웹 애플리케이션**: ASP.NET Core 앱을 통해 견고하고 구조화된 코딩 패턴을 가진 웹 애플리케이션을 구축할 수 있습니다 [2]. Controller, Service(또는 Use case), Domain model, Infrastructure와 같은 명확한 계층(Layer)을 사용하여 비즈니스 연산이 특정 웹 프레임워크나 데이터베이스 기술에 강하게 종속되는 것을 방지합니다 [2].
|
||||
- **소스 정보의 한계**: ASP.NET Core 프레임워크 자체의 전반적인 기능이나 구동 방식 등에 대해서는 소스에 관련 정보가 부족합니다.
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 지식 자산화 및 기존 네트워크 연동 단계.
|
||||
- **정책 변화:** Programming & Web 카테고리의 전문성 확보 및 링크 밀도 최적화.
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
- **Related Topics:** Dependency Inversion Principle, Clean Architecture, Dependency Injection
|
||||
- **Projects/Contexts:** Web Applications
|
||||
- **Contradictions/Notes:** 소스 간의 모순은 없으나, ASP.NET Core라는 루트 주제를 포괄적으로 설명하기에는 제공된 소스에 관련 정보가 부족합니다. 소스에서는 주로 소프트웨어 아키텍처 패턴의 유용한 적용 사례 중 하나로만 짧게 언급하고 있습니다.
|
||||
|
||||
---
|
||||
*Last updated: 2026-04-18*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-7DEA60
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-ast-추상-구문-트리
|
||||
title: AST (추상 구문 트리)
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-7DEA60]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - AST (추상 구문 트리)"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[AST (추상 구문 트리)]]
|
||||
@@ -18,7 +29,7 @@ github_commit: "[P-Reinforce] Continuous Worker - AST (추상 구문 트리)"
|
||||
* **코드 문체론(Code Stylometry) 및 작성자 식별:** 기계 학습 기반의 코드 문체론에서 AST는 개발자가 언어의 문법 구조를 어떻게 조직화하는지 나타내는 구문적 특징(Syntactic features)을 추출하는 수단으로 사용됩니다 [2]. AST 노드의 조합이나 노드 유형 기반의 특징들은 소스 코드 및 실행 파일로부터 작성자를 식별하는 강력한 지표로 활용됩니다 [5, 6].
|
||||
* **린팅(Linting) 등 도구에서의 활용:** 정적 분석을 돕는 [[ESLint]]와 같은 도구에서도 AST가 활용됩니다. 예를 들어 `eslint-plugin-jsx-a11y` 플러그인은 JSX 구조 내의 접근성 문제에 대하여 즉각적인 AST 린팅 피드백을 제공하여 개발자를 돕습니다 [7]. 또한, 디컴파일된 바이너리를 `[[Joern]]`과 같은 도구를 통해 파싱하여 AST를 구성한 뒤 다양한 코드 특징을 추출할 수도 있습니다 [6].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -31,3 +42,52 @@ github_commit: "[P-Reinforce] Continuous Worker - AST (추상 구문 트리)"
|
||||
*Last updated: 2026-04-18*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,37 +1,25 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-C7BE0D
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
tags: [auto-reinforced]
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - AST(Abstract Syntax Tree)"
|
||||
id: wiki-20260508-ast-abstract-syntax-tree--redir
|
||||
title: AST(Abstract Syntax Tree)
|
||||
category: Programming & Language
|
||||
status: merged
|
||||
redirect_to: AST(Abstract_Syntax_Tree)
|
||||
canonical_id: AST(Abstract_Syntax_Tree)
|
||||
aliases: []
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.92
|
||||
tags: [redirect]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-05-08
|
||||
github_commit: pending
|
||||
inferred_by: Claude Opus 4.7 (auto-merge 2026-05-08)
|
||||
---
|
||||
|
||||
# [[AST(Abstract Syntax Tree)]]
|
||||
# AST(Abstract Syntax Tree)
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> AST(Abstract Syntax Tree, 추상 구문 트리)는 소스 코드를 파싱하여 프로그래밍 언어의 문법적 구조를 트리 형태로 표현한 데이터 구조입니다. 공백이나 들여쓰기 같은 표면적인 레이아웃 정보는 배제하고 본질적인 구문 특징과 알고리즘 구조만을 보존하는 것이 특징입니다 [1]. 주로 [[SAST]](정적 애플리케이션 보안 테스트), 린팅(Linting), 그리고 코드 작성자를 식별하는 코드 스타일로메트리(Code Stylometry) 분야에서 코드를 분석하는 핵심 기반으로 사용됩니다 [1, 2].
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
* **AST의 구조적 특징 및 CST와의 차이**
|
||||
AST는 소스 코드를 구문 분석(Parsing)하여 만들어지며, 컴파일러나 분석 도구가 코드를 이해하는 추상적인 뼈대 역할을 합니다 [1, 2]. 코드의 들여쓰기나 줄 바꿈 등 레이아웃 속성을 철저히 보존하는 CST(Concrete Syntax Tree)와 달리, AST는 이러한 레이아웃 특징을 무시합니다 [1, 3]. 따라서 코드를 포맷팅하거나 여백을 크게 수정하더라도 구문이 동일하다면 파싱 후 생성되는 AST의 구조는 변하지 않습니다 [3].
|
||||
|
||||
* **정적 분석(Static [[Analysis]]) 및 보안 스캐닝에서의 역할**
|
||||
소프트웨어의 취약점을 찾는 SAST 도구들은 소스 코드를 실행하지 않고 파싱하여 AST를 구축한 뒤, 여기에 다양한 분석 기법을 적용하여 코드의 논리적 오류와 보안 문제를 탐지합니다 [2]. 또한, `[[ESLint]]-plugin-jsx-a11y`와 같은 린터 플러그인들은 AST를 기반으로 정적 검사를 수행해 코드 오류에 대한 즉각적인 피드백을 제공합니다 [4]. AI를 활용한 코드 리뷰 시스템 역시 조건문, 루프, try-catch 구조 등의 AST 노드 수를 인지하는 방식으로 코드의 구조적 복잡도를 계산합니다 [5].
|
||||
|
||||
* **코드 스타일로메트리(작성자 식별)에서의 활용**
|
||||
기계학습을 활용해 소스 코드의 작성자를 추적하는 '코드 스타일로메트리' 연구에서 AST는 작성자 고유의 구문적(Syntactic) 특성을 추출하는 표준적인 표현 방식으로 사용됩니다 [1, 6]. 작성자가 선호하는 문법 구조, 노드의 바이그램(bigram), 트리 전체의 노드 수, 너비와 깊이 등 AST 기반의 특징들은 표면적인 타이포그래피나 변수명보다 위조하기가 훨씬 어려워 작성자의 고유한 알고리즘적 특징을 포착하는 데 매우 중요하게 활용됩니다 [7-9].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
- **Related Topics:** CST(Concrete Syntax Tree), [[정적 애플리케이션 보안 테스트(SAST)]], 코드 스타일로메트리(Code Stylometry), [[정적 분석(Static Analysis)]]
|
||||
- **Projects/Contexts:** 기계학습 기반의 소스 코드 저자 식별 연구, AI 기반 코드 복잡도 분석(카카오), 정적 보안 취약점 스캐닝 파이프라인
|
||||
- **Contradictions/Notes:** AST 기반의 분석은 작성자의 본질적인 프로그래밍 구조를 파악하고 위조 공격에 강하다는 장점이 있지만, 공백이나 들여쓰기 등 개발자의 개성이 묻어나는 '레이아웃 특징'을 담지 못합니다. 이로 인해 소스 코드 작성자 식별 실험에서 AST 기반 모델(51.00%)은 레이아웃 정보까지 포함하는 CST 기반 모델(67.86%)에 비해 상대적으로 낮은 정확도를 보였습니다 [10, 11].
|
||||
|
||||
---
|
||||
*Last updated: 2026-04-19*
|
||||
> [!IMPORTANT]
|
||||
> 이 문서는 P-Reinforce Phase 2 자동 MERGE에 의해 **[[AST(Abstract_Syntax_Tree)]]**로 통합되었습니다.
|
||||
|
||||
---
|
||||
*Redirected to: [[AST(Abstract_Syntax_Tree)]]*
|
||||
|
||||
@@ -1,25 +1,25 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-F31A94
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.95
|
||||
tags: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Mega Batch - Wikified Ambient Declarations"
|
||||
id: wiki-20260508-ambient-declarations-redir
|
||||
title: Ambient Declarations
|
||||
category: Programming & Language
|
||||
status: merged
|
||||
redirect_to: Ambient_Declarations
|
||||
canonical_id: Ambient_Declarations
|
||||
aliases: []
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.92
|
||||
tags: [redirect]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-05-08
|
||||
github_commit: pending
|
||||
inferred_by: Claude Opus 4.7 (auto-merge 2026-05-08)
|
||||
---
|
||||
|
||||
# [[Ambient Declarations]]
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> 핵심 요약 작업 진행 중
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
본문 상세 구성 진행 중
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
- **과거 데이터와의 충돌:** 지식 자산화 및 기존 네트워크 연동 단계.
|
||||
- **정책 변화:** Programming & Language 카테고리의 전문성 확보 및 링크 밀도 최적화.
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
# Ambient Declarations
|
||||
|
||||
> [!IMPORTANT]
|
||||
> 이 문서는 P-Reinforce Phase 2 자동 MERGE에 의해 **[[Ambient_Declarations]]**로 통합되었습니다.
|
||||
|
||||
---
|
||||
*Redirected to: [[Ambient_Declarations]]*
|
||||
|
||||
@@ -1,32 +1,25 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-711498
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
tags: [auto-reinforced]
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - Beat Saber"
|
||||
id: wiki-20260508-beat-saber-redir
|
||||
title: Beat Saber
|
||||
category: Programming & Language
|
||||
status: merged
|
||||
redirect_to: Beat_Saber
|
||||
canonical_id: Beat_Saber
|
||||
aliases: []
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.92
|
||||
tags: [redirect]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-05-08
|
||||
github_commit: pending
|
||||
inferred_by: Claude Opus 4.7 (auto-merge 2026-05-08)
|
||||
---
|
||||
|
||||
# [[Beat Saber]]
|
||||
# Beat Saber
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> 'Beat Saber'는 모션 트래킹 기술을 활용해 플레이어가 가상현실 속에서 광선검을 휘둘러 리듬에 맞춰 표적을 베고 장애물을 피하는 인기 VR 리듬 엑서게임(Exergame)입니다 [1]. 전 세계적으로 200만 장 이상 판매된 성공적인 상업 게임으로, 햅틱 및 시청각 피드백을 통해 높은 몰입감을 제공합니다 [1, 2]. 실제 테니스와 맞먹는 에너지 소모량을 바탕으로 신체 활동을 돕는 유용한 도구로 인정받고 있으며, VR 멀미([[VR Sickness]]) 및 몰입 상태([[Flow State]])를 분석하는 학술 연구에서도 널리 활용되고 있습니다 [2, 3].
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
- **게임의 특징과 신체적 효과:** Beat Games에서 개발한 Beat Saber는 플레이어에게 햅틱, 청각, 그리고 성과 기반 피드백을 제공하여 강렬한 몰입감을 선사합니다 [1]. 가상현실 건강 및 운동 연구소(VR Health Institute)에 따르면, 이 게임을 플레이할 때 소모되는 에너지는 실제 테니스를 치는 것과 유사합니다 [2]. 사용자들은 몰입형 환경이 운동의 힘든 강도로부터 주의를 분산시켜 주며, 현실에서의 운동과 비슷한 신체 활동 효과를 얻을 수 있다고 평가합니다 [4].
|
||||
- **VR 사후 효과(Aftereffects) 및 멀미 연구 도구:** 이 게임은 단기(10분) 및 장기(50분) VR 노출이 사용자의 시각, 인지, 웰빙 및 VR 멀미에 미치는 영향을 조사하는 연구의 테스트 베드로 사용되었습니다 [2, 5]. 연구 결과, Beat Saber는 멀미로 인한 중도 포기자가 발생하지 않을 정도로 전반적으로 플레이어들에게 잘 수용되는(well tolerated) 것으로 나타났습니다 [6, 7]. 발생하는 즉각적인 사후 효과 역시 대부분 일시적이었으며 게임 종료 40분 후 기저 수준으로 회복되었으나, 장시간(50분) 플레이한 일부 참가자(약 14%)는 회복 후에도 여전히 높은 수준의 멀미를 경험한 것으로 확인되었습니다 [6, 8].
|
||||
- **몰입(Flow) 상태 유도 및 검증:** Beat Saber는 플레이어의 기술과 과제의 난이도 간의 균형을 맞추기 용이한 통제된 싱글 플레이어 게임이라는 특성이 있습니다 [3]. 이러한 장점 덕분에 e스포츠 및 게임 환경에서 플레이어의 신경 생리학적 몰입 상태(Flow [[State]])를 안정적으로 유도하고 측정하기 위한 실험실 기반의 고충실도 검증(high-fidelity validation) 연구 모델에서도 핵심적인 과제로 제안 및 활용됩니다 [3].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
- **Related Topics:** VR Exergame, [[VR Sickness]], [[Flow State]]
|
||||
- **Projects/Contexts:** 가상현실 노출 사후 효과(VR Aftereffects) 연구, 몰입 상태 예측 프레임워크(Flow State Prediction Framework)
|
||||
- **Contradictions/Notes:** 소스 연구에 따르면 Beat Saber 플레이 후의 사후 효과(멀미 등)는 전반적으로 일시적이며 40분 내에 기저 수준으로 회복되어 멀미로 인한 실험 탈락자가 없었지만 [6, 7], 장시간(50분) 노출될 경우 특정 사용자 집단(약 14%)에서는 게임 종료 40분 후에도 여전히 높은 수준의 멀미가 유지되는 등 개인의 민감도와 노출 시간에 따라 상이한 결과가 나타납니다 [6, 8].
|
||||
|
||||
---
|
||||
*Last updated: 2026-04-19*
|
||||
> [!IMPORTANT]
|
||||
> 이 문서는 P-Reinforce Phase 2 자동 MERGE에 의해 **[[Beat_Saber]]**로 통합되었습니다.
|
||||
|
||||
---
|
||||
*Redirected to: [[Beat_Saber]]*
|
||||
|
||||
@@ -1,8 +1,25 @@
|
||||
---
|
||||
id: ci_cd_pipeline_redirect
|
||||
redirect: [[CI_CD_Pipeline]]
|
||||
id: wiki-20260508-ci-cd-pipeline-redir
|
||||
title: CI CD Pipeline
|
||||
category: Programming & Language
|
||||
status: merged
|
||||
redirect_to: CI_CD_Pipeline
|
||||
canonical_id: CI_CD_Pipeline
|
||||
aliases: []
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.92
|
||||
tags: [redirect]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-05-08
|
||||
github_commit: pending
|
||||
inferred_by: Claude Opus 4.7 (auto-merge 2026-05-08)
|
||||
---
|
||||
|
||||
# Redirect
|
||||
# CI CD Pipeline
|
||||
|
||||
이 문서는 [[CI_CD_Pipeline]]으로 통합되었습니다.
|
||||
> [!IMPORTANT]
|
||||
> 이 문서는 P-Reinforce Phase 2 자동 MERGE에 의해 **[[CI_CD_Pipeline]]**로 통합되었습니다.
|
||||
|
||||
---
|
||||
*Redirected to: [[CI_CD_Pipeline]]*
|
||||
|
||||
@@ -1,6 +1,22 @@
|
||||
---
|
||||
id: ci_cd_automation_redirect
|
||||
redirect: [[CI_CD_Pipeline]]
|
||||
id: wiki-2026-0508-ci-cd-파이프라인-자동화
|
||||
title: CI CD 파이프라인 자동화
|
||||
category: 10_Wiki/Topics
|
||||
status: merged
|
||||
redirect_to: CI_CD_Pipeline
|
||||
canonical_id: CI_CD_Pipeline
|
||||
aliases: [ci_cd_automation_redirect]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.92
|
||||
tags: [uncategorized]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-05-08
|
||||
github_commit: pending
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# Redirect
|
||||
|
||||
@@ -1,6 +1,22 @@
|
||||
---
|
||||
id: ci_cd_korean_redirect
|
||||
redirect: [[CI_CD_Pipeline]]
|
||||
id: wiki-2026-0508-ci-cd-파이프라인
|
||||
title: CI CD 파이프라인
|
||||
category: 10_Wiki/Topics
|
||||
status: merged
|
||||
redirect_to: CI_CD_Pipeline
|
||||
canonical_id: CI_CD_Pipeline
|
||||
aliases: [ci_cd_korean_redirect]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.92
|
||||
tags: [uncategorized]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-05-08
|
||||
github_commit: pending
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# Redirect
|
||||
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-ECB052
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-cst-구체-구문-트리
|
||||
title: CST (구체 구문 트리)
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-ECB052]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - CST (구체 구문 트리)"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[CST (구체 구문 트리)]]
|
||||
@@ -22,7 +33,7 @@ github_commit: "[P-Reinforce] Continuous Worker - CST (구체 구문 트리)"
|
||||
* **코드 스타일로메트리(저자 식별)에서의 활용**
|
||||
레이아웃 및 어휘적 특징이 개인의 코딩 스타일을 결정하는 핵심 요소이므로, 이를 포착하기 위해 코드 작성자 분류 모델에서 CST가 중요한 입력 데이터로 사용됩니다 [4, 6]. 구체적인 단말 노드 간의 경로를 해시화하여 나타낸 '경로 컨텍스트(path context)'의 집합(bag)은 입력된 소스 코드의 문체, 레이아웃 및 구문적 특징을 훌륭하게 유지합니다 [7, 8]. 한 연구 결과에 따르면 파이썬 소스 코드 분류에 AST 대신 CST를 도입했을 때 프로그래머의 식별 정확도가 51.00%에서 67.86%로 현저히 향상되었습니다 [6, 9].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -35,3 +46,52 @@ github_commit: "[P-Reinforce] Continuous Worker - CST (구체 구문 트리)"
|
||||
*Last updated: 2026-04-18*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-663B99
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-chrome-devtools-크롬-개발자-도구
|
||||
title: Chrome DevTools(크롬 개발자 도구)
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-663B99]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - [[Chrome DevTools]](크롬 개발자 도구)"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[Chrome DevTools(크롬 개발자 도구)]]
|
||||
@@ -21,7 +32,7 @@ github_commit: "[P-Reinforce] Continuous Worker - [[Chrome DevTools]](크롬 개
|
||||
* **보존자(Retainers) 및 경로 추적:** DevTools는 선택한 객체를 가리키는 다른 객체들의 참조 경로(가비지 컬렉션 루트로부터의 경로)를 보여주는 보존자 섹션을 제공합니다 [13-15]. 특정 보존자를 무시(Ignore this retainer) 처리하여 다른 어떤 객체가 해당 객체의 메모리를 유지하고 있는지 코드를 수정하지 않고도 확인할 수 있습니다 [14].
|
||||
* **Node.js 연동 분석:** `chrome://inspect`를 통해 실행 중인 Node.js 프로세스에 연결하여 프로덕션 환경의 메모리 누수 상황을 분석할 수도 있습니다 [16]. 또한 Node.js에서 네이티브 프로파일링을 통해 생성된 `.heapprofile` 파일을 DevTools에 로드하면 함수 수준의 할당 내역을 파악할 수 있습니다 [17].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -34,3 +45,52 @@ github_commit: "[P-Reinforce] Continuous Worker - [[Chrome DevTools]](크롬 개
|
||||
*Last updated: 2026-04-19*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-6038C1
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-chromium
|
||||
title: Chromium
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-6038C1]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - Chromium"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[Chromium]]
|
||||
@@ -17,7 +28,7 @@ github_commit: "[P-Reinforce] Continuous Worker - Chromium"
|
||||
- **렌더링 유휴 시간(Idle Time)과 GC 연동:** 브라우저 환경에서 Chromium은 초당 60프레임(FPS)을 유지하기 위해 각 프레임당 약 16.6ms의 렌더링 시간을 가집니다 [2]. 만약 애니메이션 작업이 예상보다 일찍 끝나면, Chromium은 남는 유휴 시간을 활용해 V8 가비지 컬렉터가 큐에 쌓아둔 '유휴 작업(Idle tasks)'을 사전에 실행하여 성능 저하(jank)를 방지할 수 있습니다 [2]. 또한, Chrome의 렌더러 엔진인 [[Blink]]는 '[[Oilpan]]'이라는 독자적인 가비지 컬렉터를 보유하고 있으며, V8의 메인 GC인 [[Orinoco]]와 원활하게 상호 협력하도록 기술이 공유 및 이식되고 있습니다 [10].
|
||||
- **메모리 프로파일링 및 추적(Tracing) 인프라:** Chromium은 V8의 내부 메모리 상태 및 실행 흐름을 시각적으로 분석할 수 있는 Chrome Tracing 시스템(`chrome://tracing`)을 제공합니다 [1, 7]. 개발자나 보안 연구원은 `--track-gc-object-stats` 등의 플래그를 사용하여 V8 힙 객체 통계를 수집할 수 있습니다 [6, 7, 11]. 이러한 인프라는 V8 파서와 컴파일러의 메모리 소비 최적화 작업을 가능하게 했으며 [12, 13], 실패한 Chrome 렌더러의 충돌 덤프(Crash dumps)를 분석하여 메모리 손상 익스플로잇(Exploit) 공격 시도를 사전에 탐지하는 포렌식 기술의 기반이 됩니다 [3, 14, 15].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -30,3 +41,52 @@ github_commit: "[P-Reinforce] Continuous Worker - Chromium"
|
||||
*Last updated: 2026-04-19*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-D932E1
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-code-minification
|
||||
title: Code Minification
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-D932E1]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - Code Minification"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[Code Minification]]
|
||||
@@ -18,7 +29,7 @@ github_commit: "[P-Reinforce] Continuous Worker - Code Minification"
|
||||
* **코드 작성자 인식(Code Stylometry)에 미치는 영향:** 변수명 지정 방식, 공백 사용, 주석 처리 등은 프로그래머 고유의 코딩 스타일을 나타내는 주요 특징입니다. 코드 축소는 이러한 불필요한 문자 및 식별자 이름을 일괄적으로 지우거나 변경하므로 작성자 고유의 흔적을 훼손하게 됩니다 [4]. 관련 연구에 따르면 코드 축소를 적용할 경우 작성자 인식 정확도가 약 17.86% 감소하여, 코드 문체 분석(Code Stylometry)을 통한 작성자 식별을 더 어렵게 만드는 것으로 나타났습니다 [4].
|
||||
* **성능 사례:** Python 코드의 축소를 지원하는 도구인 'Python Minifier'의 실험 사례를 보면, 축소화 작업 후 소스 코드 라인 수(SLOC)는 60%, 문자 수는 37%나 감소하여 매우 큰 파일 크기 최적화 효과를 보여주었습니다 [5, 6].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -31,3 +42,52 @@ github_commit: "[P-Reinforce] Continuous Worker - Code Minification"
|
||||
*Last updated: 2026-04-19*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
+64
-4
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-59CADB
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-code-splitting-lazy-loading-코드-분
|
||||
title: Code Splitting Lazy Loading (코드 분할 및 지연 로딩)
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-59CADB]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - Code Splitting Lazy Loading (코드 분할 및 지연 로딩)"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[Code Splitting Lazy Loading (코드 분할 및 지연 로딩)]]
|
||||
@@ -26,7 +37,7 @@ github_commit: "[P-Reinforce] Continuous Worker - Code Splitting Lazy Loading (
|
||||
- **스켈레톤 UI (Skeleton UI):** 지연 로딩이 발생할 때 화면이 일시적으로 비어보이는 현상을 막고 누적 레이아웃 이동(CLS)을 방지하기 위해, `<Suspense fallback={...}>` 내부에 최종 콘텐츠와 유사한 크기의 스켈레톤 UI나 로딩 인디케이터를 반드시 제공해야 합니다.
|
||||
- **지연 로딩의 금기:** 초기 렌더링에 즉시 필요하거나 화면 최상단(Above-the-fold)에 위치한 핵심 컴포넌트는 절대 지연 로딩해서는 안 됩니다.
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -40,3 +51,52 @@ github_commit: "[P-Reinforce] Continuous Worker - Code Splitting Lazy Loading (
|
||||
_Last updated: 2026-04-14_
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,8 +1,25 @@
|
||||
---
|
||||
id: continuous_integration_redirect
|
||||
redirect: [[CI_CD_Pipeline]]
|
||||
id: wiki-20260508-continuous-integration-ci--redir
|
||||
title: Continuous Integration (CI)
|
||||
category: Programming & Language
|
||||
status: merged
|
||||
redirect_to: Continuous_Integration_CI
|
||||
canonical_id: Continuous_Integration_CI
|
||||
aliases: []
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.92
|
||||
tags: [redirect]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-05-08
|
||||
github_commit: pending
|
||||
inferred_by: Claude Opus 4.7 (auto-merge 2026-05-08)
|
||||
---
|
||||
|
||||
# Redirect
|
||||
# Continuous Integration (CI)
|
||||
|
||||
이 문서는 [[CI_CD_Pipeline]]으로 통합되었습니다.
|
||||
> [!IMPORTANT]
|
||||
> 이 문서는 P-Reinforce Phase 2 자동 MERGE에 의해 **[[Continuous_Integration_CI]]**로 통합되었습니다.
|
||||
|
||||
---
|
||||
*Redirected to: [[Continuous_Integration_CI]]*
|
||||
|
||||
@@ -1,36 +1,25 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-5C7CCB
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
tags: [auto-reinforced]
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - Cosmos 플랫폼 (Netflix)"
|
||||
id: wiki-20260508-cosmos-netflix--redir
|
||||
title: Cosmos 플랫폼 (Netflix)
|
||||
category: Programming & Language
|
||||
status: merged
|
||||
redirect_to: Cosmos_플랫폼_(Netflix)
|
||||
canonical_id: Cosmos_플랫폼_(Netflix)
|
||||
aliases: []
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.92
|
||||
tags: [redirect]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-05-08
|
||||
github_commit: pending
|
||||
inferred_by: Claude Opus 4.7 (auto-merge 2026-05-08)
|
||||
---
|
||||
|
||||
# [[Cosmos 플랫폼 (Netflix)]]
|
||||
# Cosmos 플랫폼 (Netflix)
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> Cosmos는 넷플릭스(Netflix)가 마이크로서비스, 비동기 워크플로우, 서버리스 함수의 장점을 결합하여 구축한 컴퓨팅 플랫폼이다 [1]. 기존 모놀리식 아키텍처인 'Reloaded'의 한계를 극복하고 관측성, 모듈성, 생산성, 지속적 배포(Continuous Delivery)를 향상시키기 위해 개발되었다 [2, 3]. 수 분에서 수년에 걸쳐 실행되는 복잡한 계층적 워크플로우 및 리소스 집약적인 알고리즘을 조율하는 데 최적화되어 있으며, 대규모 처리량과 지연 시간에 민감한 작업 부하를 모두 지원한다 [1].
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
* **배경 및 점진적 전환:** 넷플릭스의 기존 미디어 처리 시스템인 'Reloaded'는 개발팀 규모가 커짐에 따라 인프라와 애플리케이션 코드가 뒤섞이고 새로운 기능 배포가 지연되는 모놀리식 아키텍처의 한계를 겪었다 [2]. 이를 해결하기 위해 워크플로우 기반 미디어 특화 마이크로서비스 플랫폼인 Cosmos가 구축되었으며, 시스템을 완전히 교체할 때까지 기존 시스템 주위를 감싸며 새로운 시스템을 성장시키는 '스트랭글러 피그(Str[[ANGLE]]r fig) 패턴'을 도입하여 위험을 줄이면서 마이그레이션을 진행했다 [3, 4].
|
||||
* **다차원적 관심사의 분리 ([[Separation of Concerns]]):** Cosmos는 로직을 API, 워크플로우, 서버리스 함수로 나누는 한편, 도메인 특화 애플리케이션 로직과 분산 컴퓨팅을 처리하는 플랫폼으로 분리하는 양방향 관심사 분리 원칙을 적용했다 [5]. 분산 처리를 담당하는 플랫폼은 세 가지 주요 하위 시스템과 이를 연결하는 큐잉 시스템으로 구성된다 [6].
|
||||
* **Optimus:** 외부 요청을 내부 비즈니스 모델로 매핑하는 API 계층이다 [6].
|
||||
* **Plato:** 비즈니스 규칙을 모델링하는 워크플로우 계층으로, 'Emirax'라는 도메인 특화 언어(DSL)를 사용하는 포워드 체이닝(forward chaining) 규칙 엔진을 기반으로 설계되었다 [6-8].
|
||||
* **Stratum:** 상태가 없으며 계산 집약적인 알고리즘을 실행하는 서버리스 계층이다 [6].
|
||||
* **Timestone:** 위의 하위 시스템들이 비동기적으로 통신할 수 있도록 돕는 대규모 저지연 우선순위 큐잉 시스템이다 [6].
|
||||
* **지연 시간 관리 및 활용 사례:** Cosmos는 서비스의 분해와 계층화를 지원하여 스튜디오에서 들어오는 미디어 소스를 처리하는 대규모 처리량 중심의 고위급 서비스인 'Tapas'와, 사용자 대면 작업으로 지연 시간에 민감한 'Sagan' 등의 다양한 서비스를 효율적으로 오케스트레이션한다 [9-12]. 수요 폭증 시 발생하는 지연 문제를 해결하기 위해 Stratum은 리소스 풀(Resource pools) 설정, 사전 확보된 웜 용량(Warm capacity), 컨테이너 시작 비용을 분산하는 마이크로 배치(Micro-batches), 작업의 우선순위(Priority) 지정 등의 전략을 활용한다 [13].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
- **Related Topics:** 마이크로서비스 (Microservices), 서버리스 컴퓨팅 (Serverless Computing), [[관심사의 분리 (Separation of Concerns)]]
|
||||
- **Projects/Contexts:** Reloaded, Optimus, Plato, Stratum, Timestone, Tapas, Sagan
|
||||
- **Contradictions/Notes:** "서버리스 함수를 조율하는 워크플로우를 트리거하는 마이크로서비스"라는 Cosmos의 프로그래밍 모델은 강력하지만, 단순한 애플리케이션에 적용하기에는 부가되는 복잡성이 이점보다 클 수 있다는 점이 지적된다 [14]. 또한, Cosmos 플랫폼 도입 당시 애플리케이션 개발자들은 일관성과 신뢰성을 획득하는 대신 일정한 유연성을 포기하는 방향으로 마인드셋을 전환해야 했다 [14].
|
||||
|
||||
---
|
||||
*Last updated: 2026-04-18*
|
||||
> [!IMPORTANT]
|
||||
> 이 문서는 P-Reinforce Phase 2 자동 MERGE에 의해 **[[Cosmos_플랫폼_(Netflix)]]**로 통합되었습니다.
|
||||
|
||||
---
|
||||
*Redirected to: [[Cosmos_플랫폼_(Netflix)]]*
|
||||
|
||||
@@ -1,42 +1,25 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-C15CB2
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
tags: [auto-reinforced]
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - Cumulative Layout [[Shift]] (CLS)"
|
||||
id: wiki-20260508-cumulative-layout-shift-cls--redir
|
||||
title: Cumulative Layout Shift (CLS)
|
||||
category: Programming & Language
|
||||
status: merged
|
||||
redirect_to: Cumulative-Layout-Shift-CLS
|
||||
canonical_id: Cumulative-Layout-Shift-CLS
|
||||
aliases: []
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.92
|
||||
tags: [redirect]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-05-08
|
||||
github_commit: pending
|
||||
inferred_by: Claude Opus 4.7 (auto-merge 2026-05-08)
|
||||
---
|
||||
|
||||
# [[Cumulative Layout Shift (CLS)]]
|
||||
# Cumulative Layout Shift (CLS)
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> Cumulative Layout Shift (CLS)는 웹 페이지가 로드되는 동안 레이아웃과 콘텐츠가 얼마나 예기치 않게 이동하는지를 측정하는 시각적 안정성(Visual [[Stability]]) 지표입니다 [1, 2]. 구글의 코어 웹 바이탈([[Core Web Vitals]])을 구성하는 핵심 지표 중 하나로, 나중에 렌더링된 콘텐츠가 중요한 콘텐츠를 밀어내면서 발생하는 사용자 경험의 저하를 방지하기 위해 사용됩니다 [1, 2]. CLS 점수는 0.1 미만을 유지하는 것이 권장됩니다 [3].
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
* **측정 기준 및 중요성:**
|
||||
CLS는 시각적 안정성을 측정하는 지표로, 페이지 로드 중 요소들의 위치가 변경되는 레이아웃 이동 현상을 수치화합니다 [1, 2]. 이상적이고 쾌적한 사용자 경험을 위해 CLS 점수는 0.1 미만이어야 하며, 0.25를 초과할 경우 상태가 매우 나쁜 것으로 간주되어 성능 개선이 필요합니다 [3]. LCP, INP와 함께 최적화되어야 하는 코어 웹 바이탈의 중요 요소입니다 [4].
|
||||
|
||||
* **주요 발생 원인 및 최적화 방법:**
|
||||
주로 앱 배너, 이미지, 광고, 임베드 요소 등이 화면에 나타나면서 기존에 렌더링된 콘텐츠를 아래로 밀어낼 때 발생합니다 [2, 5, 6]. 이를 방지하기 위해서는 이미지나 광고, 임베드 요소가 로드될 공간을 미리 확보(reserve space)해 두어야 하며, 기존에 있는 콘텐츠 위로 새로운 콘텐츠를 동적으로 삽입하는 것을 피해야 합니다 [6].
|
||||
|
||||
* **분석 및 디버깅:**
|
||||
[[Chrome DevTools]]의 성능(Performance) 패널을 사용해 CLS의 원인을 파악하고 디버깅할 수 있습니다 [7].
|
||||
* 'Layout shifts' 트랙에서 레이아웃 이동은 보라색 다이아몬드로 표시되며, 시간상 근접성에 따라 클러스터 형태(보라색 선)로 그룹화됩니다 [7].
|
||||
* 이 다이아몬드나 'Worst cluster 1 shift' 항목을 클릭하면 어떤 DOM 요소가 이동에 영향을 받았는지 식별할 수 있으며, 마우스를 올리면 뷰포트 내에서 해당 요소가 하이라이트됩니다 [7, 8].
|
||||
|
||||
* **브라우저 지원 동향:**
|
||||
현재 구글을 중심으로 측정되고 있으나, 파이어폭스(Firefox)와 사파리(Safari)의 브라우저 호환성을 위한 [[Interop 2025]] 프로젝트에는 CLS 지원이 계획되어 있지 않습니다 [9]. 다만, 차기 프로젝트인 [[Interop 2026]]에 CLS를 포함하려는 제안이 존재합니다 [9].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
- **Related Topics:** [[Core Web Vitals]], [[Largest Contentful Paint (LCP)]], [[Interaction to Next Paint (INP)]]
|
||||
- **Projects/Contexts:** [[Chrome DevTools]], [[Interop 2026]]
|
||||
- **Contradictions/Notes:** CLS 수치는 기기의 해상도에 크게 의존하기 때문에 실제 방문자 데이터를 나타내는 현장(Field) 데이터와 개발자의 로컬(Local) 데이터 간에 차이가 발생하기 쉽습니다. 이러한 이유로 코어 웹 바이탈 지표 중에서도 에뮬레이션하여 측정하기 가장 까다로운 지표로 평가받습니다 [8].
|
||||
|
||||
---
|
||||
*Last updated: 2026-04-19*
|
||||
> [!IMPORTANT]
|
||||
> 이 문서는 P-Reinforce Phase 2 자동 MERGE에 의해 **[[Cumulative-Layout-Shift-CLS]]**로 통합되었습니다.
|
||||
|
||||
---
|
||||
*Redirected to: [[Cumulative-Layout-Shift-CLS]]*
|
||||
|
||||
@@ -1,6 +1,22 @@
|
||||
---
|
||||
id: dast_korean_redirect
|
||||
redirect: [[DAST]]
|
||||
id: wiki-2026-0508-dast-동적-애플리케이션-보안-테스트
|
||||
title: DAST (동적 애플리케이션 보안 테스트)
|
||||
category: 10_Wiki/Topics
|
||||
status: merged
|
||||
redirect_to: DAST
|
||||
canonical_id: DAST
|
||||
aliases: [dast_korean_redirect]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.92
|
||||
tags: [uncategorized]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-05-08
|
||||
github_commit: pending
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# Redirect
|
||||
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-3A0CD0
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-dom-요소-조작-및-타입-좁히기
|
||||
title: DOM 요소 조작 및 타입 좁히기
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-3A0CD0]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - DOM 요소 조작 및 타입 좁히기"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[DOM 요소 조작 및 타입 좁히기]]
|
||||
@@ -28,7 +39,7 @@ github_commit: "[P-Reinforce] Continuous Worker - DOM 요소 조작 및 타입
|
||||
* **타입 서술어(Type Predicates):** 반환 타입에 `is` 키워드를 사용하여(예: `value is Positive`), 함수가 `true`를 반환할 때 조건문 내부에서 매개변수가 특정 타입으로 좁혀지도록 타입 시스템에 알립니다 [6, 12].
|
||||
* **단언 함수(Assertion Functions):** 입력된 값이 기대한 타입이 아닐 경우 에러를 던지도록 작성된 함수입니다. 이 함수를 통과한 이후의 코드는 해당 값이 특정 타입이 확실함을 타입 시스템이 인지하여 타입을 좁히게 됩니다 [13, 14].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -41,3 +52,52 @@ github_commit: "[P-Reinforce] Continuous Worker - DOM 요소 조작 및 타입
|
||||
*Last updated: 2026-04-18*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-15DA1E
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-dom-요소-조작
|
||||
title: DOM 요소 조작
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-15DA1E]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - DOM 요소 조작"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[DOM 요소 조작]]
|
||||
@@ -20,7 +31,7 @@ github_commit: "[P-Reinforce] Continuous Worker - DOM 요소 조작"
|
||||
* **DOM 조작과 타입 단언(`as`):** TypeScript 환경에서 DOM 요소를 조작하거나 타입 추론이 어려운 외부 데이터를 다룰 때, 개발자가 런타임 유효성을 확인하여 타입에 대해 확신이 있다면 `as` 키워드를 사용하여 타입을 단언할 수 있습니다 [2]. 주로 DOM 요소의 타입을 구체적으로 좁혀야(narrow) 할 때(예: 특정 HTML 요소로 단언할 때) 제한적으로 `as`의 사용이 고려됩니다 [3].
|
||||
* **DOM 추가 시 보안(XSS) 유의사항:** 사용자의 입력값을 검증 없이 DOM(예: `innerHTML`)에 직접 쓰는 것은 보안상 매우 위험한 방식입니다 [1]. 악의적인 코드가 주입되는 XSS(크로스 사이트 스크립팅) 공격을 막기 위해, DOM에 데이터를 추가하기 전에 반드시 텍스트를 소독(sanitize)해야 합니다 [1]. TypeScript의 브랜디드 타입(Branded Types)을 활용하면 소독된 문자열과 소독되지 않은 문자열의 타입을 구분할 수 있어, 안전하게 처리된 문자열만 DOM에 삽입되도록 타입 시스템 수준에서 강제할 수 있습니다 [1, 4].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -33,3 +44,52 @@ github_commit: "[P-Reinforce] Continuous Worker - DOM 요소 조작"
|
||||
*Last updated: 2026-04-18*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-DEC013
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-discriminated-unions
|
||||
title: Discriminated Unions
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-DEC013]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - Discriminated Unions"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[Discriminated Unions]]
|
||||
@@ -25,7 +36,7 @@ github_commit: "[P-Reinforce] Continuous Worker - Discriminated Unions"
|
||||
* **주의사항 및 베스트 프랙티스**
|
||||
판별자로는 항상 문자열 리터럴 타입을 사용하는 것이 권장되며, 모든 브랜치에 걸쳐 일관된 판별자 속성을 포함해야 합니다 [12, 16, 18]. 타입을 좁힐 때는 `instanceof` 연산자를 사용하는 대신 반드시 판별자 속성을 확인해야 합니다 [18]. 단, 아주 거대한 코드베이스에서 과도하게 복잡한 유니온 타입을 사용하면 TypeScript의 컴파일 속도가 느려질 수 있으며, 깊게 중첩될 경우 에러 메시지를 파악하기 어려워질 수 있으므로 주의해야 합니다 [10].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -38,3 +49,52 @@ github_commit: "[P-Reinforce] Continuous Worker - Discriminated Unions"
|
||||
*Last updated: 2026-04-18*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-D03C5F
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-early-z
|
||||
title: Early Z
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-D03C5F]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - Early-Z"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[Early-Z]]
|
||||
@@ -17,7 +28,7 @@ github_commit: "[P-Reinforce] Continuous Worker - Early-Z"
|
||||
- **투명 재질 렌더링 시의 비활성화:** 겹쳐 있는 투명한 기하학적 구조(예: 옷, 머리카락 레이어 등)를 렌더링할 때는 올바른 알파 블렌딩 결과를 얻기 위해 '뒤에서 앞으로(Back-to-Front)' 렌더링을 강제해야 합니다 [1, 3]. 이 과정에서 숨겨진 픽셀을 건너뛰게 해주는 초기 깊이 테스트(Early-Z) 최적화가 비활성화되며, 결과적으로 하나의 픽셀을 여러 번 렌더링하는 심각한 오버드로우가 발생하게 됩니다 [1].
|
||||
- **[[InstancedMesh]] 환경에서의 한계:** 드로우 콜을 줄여주는 `InstancedMesh` 기술은 내부 인스턴스들에 대한 자동 정렬 기능을 제공하지 않고 버퍼에 저장된 순서대로만 렌더링합니다 [2]. 만약 먼 곳에 있는 인스턴스가 먼저 그려지고 가까운 인스턴스가 나중에 그려진다면, Early-Z를 통한 조기 종료 이점을 얻지 못합니다 [2]. 이는 드로우 콜 감소로 얻은 이점보다 막대한 오버드로우 비용을 초래하여, GPU를 프래그먼트 바운드([[Fragment-bound]]) 상태에 빠뜨려 전체 성능을 오히려 저하시킬 수 있습니다 [2].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -30,3 +41,52 @@ github_commit: "[P-Reinforce] Continuous Worker - Early-Z"
|
||||
*Last updated: 2026-04-19*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-2BC744
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-edge-bleeding
|
||||
title: Edge Bleeding
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-2BC744]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - Edge Bleeding"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[Edge Bleeding]]
|
||||
@@ -17,7 +28,7 @@ github_commit: "[P-Reinforce] Continuous Worker - Edge Bleeding"
|
||||
- **기존의 해결 방식과 한계:** 이 현상을 방지하기 위해 텍스처 아틀라스 내부의 개별 텍스처들 사이에 물리적인 여백(Padding)을 추가하는 우회 기법이 사용됩니다 [2]. 하지만 이 방식은 텍스처 공간을 낭비하게 만들어 메모리 비효율성을 초래합니다 [2].
|
||||
- **현대적인 해결책 (Data Array Textures):** [[WebGL]] 2.0에서 지원하는 데이터 배열 텍스처(Data Array Textures)를 사용하면 Edge Bleeding을 완벽히 제거할 수 있습니다 [3, 4]. 이 방식은 텍스처를 평면에 병합하는 대신 레이어(Layer) 구조의 스택으로 쌓아 인덱스로 접근하므로, 밉맵 생성 시 인접 텍스처 간의 교차 오염(Cross-contamination)이 발생하지 않습니다 [1, 3].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -30,3 +41,52 @@ github_commit: "[P-Reinforce] Continuous Worker - Edge Bleeding"
|
||||
*Last updated: 2026-04-19*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-C7A07F
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-effect-ts
|
||||
title: Effect TS
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-C7A07F]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - Effect TS"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[Effect TS]]
|
||||
@@ -17,7 +28,7 @@ github_commit: "[P-Reinforce] Continuous Worker - Effect TS"
|
||||
* **정교한 타입 브랜드 단언 함수(`Brand.refined`)**: Effect TS는 제약 조건을 검증하기 위해 `Brand.refined`라는 함수를 별도로 제공합니다 [1, 5]. 이 함수는 값이 제약 조건을 충족하는지 확인하는 함수와, 제약 조건과 일치하지 않을 경우 에러를 던지는 함수라는 두 가지 매개변수를 활용하여 안전한 타입 단언(assertion)을 수행합니다 [5].
|
||||
* **에러 처리 및 메타데이터 컨벤션 모델링**: Effect TS는 시스템의 '예상되는 에러(Expected Errors)'와 '예상치 못한 에러(Defects)'를 명확히 구분하는 아키텍처적 접근법을 제시합니다 [3]. 이와 더불어 내부 로직이나 디버깅, 관측 도구에서 사용되는 데이터를 다른 응답 객체와 시각적으로 구분하기 위해 `_tag`와 같은 속성(메타데이터)을 사용하는 훌륭한 컨벤션을 제공합니다 [4, 6].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -30,3 +41,52 @@ github_commit: "[P-Reinforce] Continuous Worker - Effect TS"
|
||||
*Last updated: 2026-04-18*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-687305
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-electron
|
||||
title: Electron
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-687305]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - Electron"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[Electron]]
|
||||
@@ -17,7 +28,7 @@ github_commit: "[P-Reinforce] Continuous Worker - Electron"
|
||||
- **GPU 메모리 누수 취약성**: Electron 앱은 Chromium GPU 프로세스가 렌더러 프로세스와 완전히 분리되어 있기 때문에 GPU 메모리 누수로 악명이 높습니다 [4]. 3D 씬에서 객체를 삭제하더라도 단순히 씬 그래프에서 제거하는 것만으로는 연관된 GPU 버퍼가 자동으로 해제되지 않습니다 [4].
|
||||
- **최적화 및 안정성 확보 전략**: Electron 런타임 환경 내에서 메모리 안정성을 유지하기 위해서는 `SharedArrayBuffer`를 활용하여 데이터 복제 오버헤드 없이 다중 스레딩을 처리해야 합니다 [1, 3]. 더불어 메모리 누수를 막기 위해, 삭제 시 씬을 순회하며 모든 기하학적 구조와 재질에 대해 명시적으로 `.dispose()`를 호출하는 엄격한 리소스 폐기(Disposal) 패턴을 강제해야 합니다 [4].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -30,3 +41,52 @@ github_commit: "[P-Reinforce] Continuous Worker - Electron"
|
||||
*Last updated: 2026-04-19*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-71F155
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-escape-hatch-탈출구
|
||||
title: Escape Hatch (탈출구)
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-71F155]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - Escape Hatch (탈출구)"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[Escape Hatch (탈출구)]]
|
||||
@@ -17,7 +28,7 @@ github_commit: "[P-Reinforce] Continuous Worker - Escape Hatch (탈출구)"
|
||||
- **고수준과 저수준 인터페이스의 공존:** 좋은 SDK일수록 고수준과 저수준 인터페이스가 공존하도록 설계됩니다 [1]. 흔한 유즈케이스를 한 번에 끝내는 워크플로우(예: `start` 메서드)를 제공하는 동시에, 앱 브릿지(서버) 호출에 가까운 원자적인 저수준 호출(예: `open`, `send`, `listen`, `close` 등)을 탈출구로써 함께 제공해야 합니다 [1, 2].
|
||||
- **확장성 및 호환성 확보:** 저수준의 탈출구를 명확하게 제공하면, 편의성을 위해 고수준 메서드를 지속적으로 개선하더라도 저수준 메서드를 안정적으로 유지할 수 있어 하위 호환성 유지에 큰 도움이 됩니다 [2]. 이는 단기적인 개발자 경험(DX)을 개선할 뿐만 아니라, SDK의 장기적인 확장성과 호환성을 지켜주는 핵심적인 역할을 수행합니다 [1].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -30,3 +41,52 @@ github_commit: "[P-Reinforce] Continuous Worker - Escape Hatch (탈출구)"
|
||||
*Last updated: 2026-04-18*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,37 +1,25 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-648FC3
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
tags: [auto-reinforced]
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - Excess Property Checking"
|
||||
id: wiki-20260508-excess-property-checking-redir
|
||||
title: Excess Property Checking
|
||||
category: Programming & Language
|
||||
status: merged
|
||||
redirect_to: Excess_Property_Checking
|
||||
canonical_id: Excess_Property_Checking
|
||||
aliases: []
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.92
|
||||
tags: [redirect]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-05-08
|
||||
github_commit: pending
|
||||
inferred_by: Claude Opus 4.7 (auto-merge 2026-05-08)
|
||||
---
|
||||
|
||||
# [[Excess Property Checking]]
|
||||
# Excess Property Checking
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> TypeScript의 Excess Property Checking(과잉 속성 체크)은 객체 리터럴이 다른 변수에 할당되거나 함수의 인수로 전달될 때 예상치 못한 초과 속성을 감지하고 타입 에러를 표출하는 기능이다 [1-3]. 이는 TypeScript의 기본 동작인 구조적 타이핑([[Structural Typing]]) 규칙을 더 엄격하게 적용하는 예외적인 사례로 볼 수 있다 [1]. 개발자가 속성 이름에 오타를 내는 등의 실수로 인해 발생할 수 있는 의도치 않은 런타임 오류를 방지하기 위해 존재한다 [4-6].
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
* **동작 원리와 목적**
|
||||
TypeScript의 타입 시스템은 기본적으로 객체가 요구되는 최소한의 속성만 가지고 있다면 호환성을 허용하는 구조적 타이핑(Structural Typing, 일명 덕 타이핑)을 따른다 [7-9]. 그러나 대상 타입에 직접 객체 리터럴을 할당하거나 함수의 인자로 객체 리터럴을 넘길 때는 특별히 Excess Property Checking이 발동하여 선언되지 않은 잉여 속성이 있는지 엄격하게 검사한다 [1, 3, 6, 10-12]. 이는 개발자가 초과 속성을 전달하려는 의도가 없을 것이라고 가정하여 오타(예: `color` 대신 `colour`) 등의 실수를 컴파일 시점에 포착하기 위함이다 [4-6, 9].
|
||||
|
||||
* **한계점 및 우회 문제**
|
||||
Excess Property Checking은 객체 리터럴을 중간 변수(intermediate variable)에 먼저 할당한 뒤 다른 변수나 인수로 전달할 경우에는 작동하지 않는다는 맹점이 있다 [1, 3, 4, 12, 13]. 중간 변수를 사용할 때 대상 타입과 최소 하나의 속성이라도 일치한다면, TypeScript는 초과 속성이 있더라도 에러를 발생시키지 않는다 [14]. (만약 공통 속성이 하나도 없다면 '약한 타입 검사(Weak Type Detection)' 규칙에 의해 에러가 발생한다 [3, 15]). 또한 명시적인 반환 타입 어노테이션이 없는 문맥적인 할당에서도 에러를 제대로 잡아내지 못하는 한계가 보고된 바 있다 [16].
|
||||
|
||||
* **보완 전략 (`satisfies` 및 커스텀 타입)**
|
||||
객체 리터럴을 중간 변수를 통해 전달하면서 발생하는 우회 문제를 극복하기 위해 TypeScript 4.9에서 도입된 `satisfies` 연산자를 활용할 수 있다 [17, 18]. `satisfies` 연산자는 객체의 구체적인 값 형태를 유지하면서도 대상 타입에 정의되지 않은 초과 속성을 엄격히 걸러내어 타입 안전성을 보장한다 [18-21]. 또한, 제네릭과 `never` 타입을 결합하여 대상 인터페이스와 실제 입력을 비교하고 잉여 속성을 잡아내는 재귀적 유틸리티 타입을 만들어 수동으로 초과 속성을 찾아낼 수도 있지만, 이는 타입 검사 성능에 부정적인 영향을 미칠 수 있어 주의해서 사용해야 한다 [22-24].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
- **Related Topics:** [[Structural Typing]], [[satisfies [[Opera]]tor]], Weak Type Detection
|
||||
- **Projects/Contexts:** TypeScript Type[[ system]], [[ESLint]] Rule Proposals (no-excess-properties)
|
||||
- **Contradictions/Notes:** 소스 [25]에 따르면, Facebook의 Flow처럼 초과 속성을 허용하지 않는 정확한 객체 타입(`Exact<T>`) 구문을 TypeScript에도 도입하자는 오랜 제안이 있었으나, TypeScript 팀은 Excess Property Checking 자체를 더 똑똑하게 개선하는 방향을 선호한다. 한편, ESLint의 린트 룰을 통해 초과 속성 검사를 강제하려는 시도에 대해서는, TypeScript의 모든 객체가 본질적으로 구조적 타이핑에 의해 "inexact"한 특성을 갖기 때문에 린트 룰 적용 시 노이즈(False Positive)가 과도하게 발생할 수 있다는 반론이 제기된다 [26, 27].
|
||||
|
||||
---
|
||||
*Last updated: 2026-04-18*
|
||||
> [!IMPORTANT]
|
||||
> 이 문서는 P-Reinforce Phase 2 자동 MERGE에 의해 **[[Excess_Property_Checking]]**로 통합되었습니다.
|
||||
|
||||
---
|
||||
*Redirected to: [[Excess_Property_Checking]]*
|
||||
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-41DF27
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-flame-chart
|
||||
title: Flame Chart
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-41DF27]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - Flame Chart"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[Flame Chart]]
|
||||
@@ -17,7 +28,7 @@ github_commit: "[P-Reinforce] Continuous Worker - Flame Chart"
|
||||
- **시각적 구분:** 차트의 가독성을 높이기 위해 스크립트마다 무작위로 색상이 지정됩니다 [2]. 일반적으로 어두운 노란색은 스크립팅 활동을, 보라색은 렌더링 활동을 나타냅니다 [2]. 특히 작업 시간이 긴 작업(Long tasks)은 빨간색 삼각형으로 강조 표시되며, 50밀리초를 넘긴 구간은 차트에서 빨간색으로 음영 처리되어 성능 저하의 원인을 직관적으로 식별할 수 있습니다 [1, 3].
|
||||
- **차트 제어 및 디버깅:** 사용자는 플레임 차트를 깔끔하게 정리하기 위해 특정 함수나 그 하위 항목을 숨길 수 있으며, 관련 없는 스크립트를 무시 목록(Ignore list)에 추가하여 차트에서 제외할 수 있습니다 [5-7]. 또한 자바스크립트 샘플링([[JavaScript]] samples)을 비활성화하면 상세한 자바스크립트 콜 스택 정보가 생략되고, 대신 `Event (click)`나 `Function Call`과 같은 상위 수준의 이벤트만 플레임 차트에 짧게 표시됩니다 [3, 8].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -30,3 +41,52 @@ github_commit: "[P-Reinforce] Continuous Worker - Flame Chart"
|
||||
*Last updated: 2026-04-19*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-CE0886
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-fuzzing
|
||||
title: Fuzzing
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-CE0886]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - Fuzzing"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[Fuzzing]]
|
||||
@@ -18,7 +29,7 @@ github_commit: "[P-Reinforce] Continuous Worker - Fuzzing"
|
||||
- **취약점 이해 도모:** 이러한 과정을 통해 개발자는 애플리케이션의 런타임 동작 방식과 내재된 취약점들을 보다 포괄적이고 종합적으로 이해할 수 있게 됩니다 [1].
|
||||
- 소스에 관련 정보가 부족합니다.
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -31,3 +42,52 @@ github_commit: "[P-Reinforce] Continuous Worker - Fuzzing"
|
||||
*Last updated: 2026-04-18*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-31335C
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-gc-root
|
||||
title: GC Root
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-31335C]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - GC Root"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[GC Root]]
|
||||
@@ -17,7 +28,7 @@ github_commit: "[P-Reinforce] Continuous Worker - GC Root"
|
||||
- **마킹 및 추적 과정(Marking and Tracing):** [[Mark-Sweep]] 알고리즘 등에서 살아있는 객체를 찾는 과정은 루트 세트(root set)에서 출발합니다 [3]. 가비지 컬렉터의 초기 단계에서 루트 스캔을 실행하여 모든 루트 객체를 식별하고, 이를 처리를 위한 작업 스택(work stack)에 푸시합니다 [2]. 그런 다음 GC는 루트 객체에서 시작해 다른 객체를 가리키는 모든 포인터를 재귀적으로 추적하여 도달 가능한 객체들을 마킹(Mark)합니다 [2, 3]. 루트로부터 도달할 수 없는 나머지 모든 것들은 가비지로 간주됩니다 [4, 6].
|
||||
- **마이너 GC를 위한 특수 루트(V8 [[Scavenge]]r):** V8 엔진의 젊은 세대(young generation)를 수집하는 마이너 GC(Scavenger)의 경우, GC가 실행될 때마다 전체 구세대(old generation) 힙을 모두 스캔하는 비효율을 피하기 위해 쓰기 장벽([[Write Barrier]]s)을 활용합니다 [7]. 이를 통해 구세대에서 젊은 세대로 향하는 참조(old-to-new [[Reference]]s) 목록을 유지하며, 이를 스택 및 전역 변수 등과 결합하여 젊은 세대 가비지 컬렉션을 위한 추가적인 루트 세트로 사용합니다 [7].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -30,3 +41,52 @@ github_commit: "[P-Reinforce] Continuous Worker - GC Root"
|
||||
*Last updated: 2026-04-19*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-CA2F39
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-garbage-collection-가비지-컬렉션
|
||||
title: Garbage Collection(가비지 컬렉션)
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-CA2F39]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - [[Garbage Collection]](가비지 컬렉션)"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[Garbage Collection(가비지 컬렉션)]]
|
||||
@@ -36,7 +47,7 @@ github_commit: "[P-Reinforce] Continuous Worker - [[Garbage Collection]](가비
|
||||
* **Incremental (점진적 처리):** 자바스크립트 실행 중간중간에 작은 단위로 GC 작업을 번갈아 수행(Interleaving)하여 응답성을 유지합니다 [30, 32, 34].
|
||||
* **Concurrent (동시 처리):** 메인 스레드가 자바스크립트를 계속 실행하는 동안 보조 스레드들이 백그라운드에서 전적으로 Marking 및 Sweeping 작업을 수행합니다 [7, 32, 35].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -49,3 +60,52 @@ github_commit: "[P-Reinforce] Continuous Worker - [[Garbage Collection]](가비
|
||||
*Last updated: 2026-04-19*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,34 +1,25 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-D9833D
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
tags: [auto-reinforced]
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - Generational Hypothesis"
|
||||
id: wiki-20260508-generational-hypothesis-redir
|
||||
title: Generational Hypothesis
|
||||
category: Programming & Language
|
||||
status: merged
|
||||
redirect_to: Generational_Hypothesis
|
||||
canonical_id: Generational_Hypothesis
|
||||
aliases: []
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.92
|
||||
tags: [redirect]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-05-08
|
||||
github_commit: pending
|
||||
inferred_by: Claude Opus 4.7 (auto-merge 2026-05-08)
|
||||
---
|
||||
|
||||
# [[Generational Hypothesis]]
|
||||
# Generational Hypothesis
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> 세대 가설(Generational Hypothesis)은 대부분의 객체가 생성된 직후에 도달할 수 없는 상태가 되어 소멸한다는(die young) 프로그래밍의 경험적 관찰을 의미합니다 [1, 2]. 이 원리는 V8이나 [[JavaScript]]뿐만 아니라 대부분의 동적 프로그래밍 언어에 적용되는 가비지 컬렉션의 핵심 전제입니다 [2]. V8 엔진은 이 가설을 적극적으로 활용하여 메모리 힙을 '젊은 세대(Young Generation)'와 '오래된 세대(Old Generation)'로 분할함으로써 가비지 컬렉션의 효율성과 성능을 최적화합니다 [1, 3, 4].
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
- **가설의 개념적 기반**: 프로그램에서 대다수의 객체는 수명이 매우 짧은 반면, 극소수의 객체만이 훨씬 오래 살아남는다는 사실에 기초합니다 [3]. 가비지 컬렉터의 관점에서 보면, 객체가 할당된 후 거의 즉시 참조되지 않는 '도달 불가능(unreachable)' 상태가 됨을 의미합니다 [2].
|
||||
- **세대별 힙 공간 분할 (Generational Heap Layout)**: V8은 객체 수명 주기의 이러한 특성을 이용하기 위해 메모리 힙을 두 세대의 공간으로 나눕니다 [1, 2, 4].
|
||||
- **New Space (젊은 세대)**: 새롭게 생성된 짧은 수명의 객체들이 할당되는 비교적 작은 공간입니다 [3, 4]. 이곳의 객체들은 일찍 소멸할 것으로 예상되므로, V8은 빈번하고 빠른 마이너 가비지 컬렉션([[Scavenge]])을 실행하여 신속하게 메모리를 회수합니다 [1, 4].
|
||||
- **[[Old Space]] (오래된 세대)**: New Space에서 두 번의 가비지 컬렉션 주기(Minor GC)를 견디고 살아남은 객체들은 Old Space로 승격(promoted)됩니다 [1, 3, 4]. 사용자 세션과 같이 지속될 것으로 예상되는 데이터들이 모이며, 비용이 더 많이 드는 [[Major GC]]를 통해 덜 빈번하게 관리됩니다 [1, 4].
|
||||
- **가비지 컬렉션 성능 최적화 효과**: V8의 가비지 컬렉터는 살아남은 객체를 복사하여 이동시키는 방식을 사용합니다 [2]. 복사 작업 자체는 비용이 많이 들지만, 세대 가설에 따라 실제로 살아남는 객체의 비율은 매우 적습니다 [2]. 결국 살아남은 소수의 객체만 이동시키면 나머지 대다수의 객체는 '암묵적인 가비지(implicit garbage)'로 자연스럽게 정리되므로, 전체 할당 횟수가 아닌 생존한 객체의 수에 비례하는 최소한의 비용만 지불하게 됩니다 [2].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
- **Related Topics:** [[Garbage Collection]], [[V8 JavaScript Engine]], Young Generation (New Space), Old Generation (Old Space), Scavenger (Minor GC)
|
||||
- **Projects/Contexts:** V8 [[memory]] [[Management]]
|
||||
- **Contradictions/Notes:** 제공된 소스들은 모두 일관되게 세대 가설의 원리와 V8 엔진 내 적용 방식을 지지하며, 이에 반대되는 모순된 주장이나 기록은 확인되지 않습니다.
|
||||
|
||||
---
|
||||
*Last updated: 2026-04-19*
|
||||
> [!IMPORTANT]
|
||||
> 이 문서는 P-Reinforce Phase 2 자동 MERGE에 의해 **[[Generational_Hypothesis]]**로 통합되었습니다.
|
||||
|
||||
---
|
||||
*Redirected to: [[Generational_Hypothesis]]*
|
||||
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-88077C
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-google-lighthouse
|
||||
title: Google Lighthouse
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-88077C]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - Google [[Lighthouse]]"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[Google Lighthouse]]
|
||||
@@ -17,7 +28,7 @@ github_commit: "[P-Reinforce] Continuous Worker - Google [[Lighthouse]]"
|
||||
* **도구 통합 및 엔진 재사용:** Lighthouse는 Google의 PageSpeed Insights 진단을 구동하는 핵심 엔진입니다 [1], [2]. 또한 Google은 [[Chrome]] DevTools의 성능 탭과 Lighthouse 보고서 양쪽 모두에서 사용할 수 있는 새로운 '인사이트 감사(Insights audits)' 기능을 도입하여, 성능 권장 사항을 식별하기 위해 별도의 엔진을 유지하는 대신 동일한 코드를 재사용하도록 개선했습니다 [1].
|
||||
* **스로틀링(Throttling) 시뮬레이션의 한계 및 개선:** Lighthouse는 점수를 결정하기 위해 스로틀링 시뮬레이션을 사용하는데, 이로 인해 때때로 부정확한 데이터가 생성되기도 합니다 [5]. 예를 들어, 페이지 콘텐츠가 미리 로드된(preloaded) 리소스에 의존하지 않음에도 불구하고 해당 리소스가 렌더링을 차단한다고 잘못 가정하는 경우가 있습니다 [5]. 이러한 부정확성을 해결하고 Lighthouse 지표를 더욱 신뢰할 수 있도록 실제 브라우저 동작과 더 잘 일치하게 스로틀링 시뮬레이션을 업데이트하는 작업이 진행 중입니다 [5], [6].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -30,3 +41,52 @@ github_commit: "[P-Reinforce] Continuous Worker - Google [[Lighthouse]]"
|
||||
*Last updated: 2026-04-19*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,40 +1,25 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-A29470
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
tags: [auto-reinforced]
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - Incremental Marking"
|
||||
id: wiki-20260508-incremental-marking-redir
|
||||
title: Incremental Marking
|
||||
category: Programming & Language
|
||||
status: merged
|
||||
redirect_to: Incremental_Marking
|
||||
canonical_id: Incremental_Marking
|
||||
aliases: []
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.92
|
||||
tags: [redirect]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-05-08
|
||||
github_commit: pending
|
||||
inferred_by: Claude Opus 4.7 (auto-merge 2026-05-08)
|
||||
---
|
||||
|
||||
# [[Incremental Marking]]
|
||||
# Incremental Marking
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> Incremental Marking은 가비지 컬렉션의 마킹 단계를 한 번의 긴 일시 정지([[Stop-the-world]])로 처리하지 않고, 애플리케이션 실행과 교차하여 여러 개의 짧은 작업 단위로 나누어 수행하는 메모리 관리 기법입니다 [1, 2]. 이 방식은 가비지 컬렉션에 소요되는 전체 시간을 줄이지는 않지만, 작업을 시간에 따라 분산시킴으로써 메인 스레드의 응답성을 크게 향상시킵니다 [2]. 결과적으로 모바일 기기 등에서 발생할 수 있는 긴 지연을 방지하고 애플리케이션이 사용자 입력 및 애니메이션에 원활하게 반응할 수 있도록 돕습니다 [2, 3].
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
- **트리거 및 기본 작동 원리:**
|
||||
Incremental Marking은 힙(heap)의 크기가 특정 임계값에 도달할 때 활성화됩니다 [3, 4]. 활성화된 이후에는 애플리케이션이 메모리를 할당할 때마다 짧은 마킹 단계(step)가 실행되어, 객체의 생성 속도에 맞춰 마킹 프로세스가 보조를 맞추게 됩니다 [1, 4]. 일반적인 마킹과 마찬가지로 깊이 우선 탐색(Depth-First-[[Search]]) 기반이며, 객체의 상태를 흰색(미발견), 회색(발견되었으나 이웃 객체 미처리), 검은색(완전 처리됨)으로 분류하는 시스템을 사용합니다 [3]. 이 방식을 통해 과거 500~1000ms에 달하던 긴 가비지 컬렉션 지연 시간이 5~10ms 수준의 매우 짧은 일시 정지로 쪼개집니다 [3, 4].
|
||||
|
||||
- **객체 그래프의 동적 변화 및 [[Write Barrier]] 방어:**
|
||||
점진적 마킹의 가장 큰 난제는 마킹 작업 사이사이에 자바스크립트가 실행되므로 힙 내의 객체 그래프 구조가 계속 변할 수 있다는 점입니다 [2, 5]. 특히 완전히 검사가 끝난 '검은색' 객체에서 아직 발견되지 않은 '흰색' 객체로의 새로운 포인터가 생성될 경우, 살아있는 흰색 객체가 가비지로 잘못 분류될 위험이 있습니다 [5]. V8 엔진은 이를 방지하기 위해 '쓰기 장벽(Write Barrier)'을 사용하여 검은색에서 흰색으로 향하는 포인터 생성을 감지합니다 [5]. 이러한 포인터가 감지되면 해당 검은색 객체를 다시 회색으로 변경하고 마킹 덱(deque)에 밀어넣어 재검색되도록 보장합니다 [5].
|
||||
|
||||
- **Lazy Sweeping으로의 전환:**
|
||||
모든 객체의 생존 여부가 식별되어 Incremental Marking 작업이 완료되면, V8은 한꺼번에 메모리를 지우지 않고 필요에 따라 페이지 단위로 메모리를 해제하는 'Lazy Sweeping' 단계를 시작하여 남은 오버헤드를 분산시킵니다 [6, 7].
|
||||
|
||||
- **IBM JVM에서의 적용 사례:**
|
||||
자바스크립트 엔진 외에도 IBM JVM의 균형(balanced) GC 정책에서 '점진적 동시 마킹(Incremental concurrent mark [[Processing]])'이 활용됩니다 [8, 9]. 이는 글로벌 마킹 작업을 전체 힙에 걸쳐 점진적으로 수행하며, 부분적인 GC 사이클과 교차되어 긴 정지 시간을 방지합니다 [8].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
- **Related Topics:** [[Garbage Collection]], [[Write Barrier]], Lazy Sweeping, [[Mark-Sweep]], [[Orinoco]]
|
||||
- **Projects/Contexts:** [[V8 [[JavaScript]] Engine]], IBM OpenJ9
|
||||
- **Contradictions/Notes:** V8 엔진의 Incremental Marking은 메인 스레드가 자바스크립트 실행 중간에 간헐적으로 마킹 작업을 나누어 수행하는 구조이지만 [2], IBM JVM의 Incremental concurrent mark 작업에서는 애플리케이션 스레드가 객체 추적에 관여하지 않으며 오직 백그라운드 스레드만이 사용된다는 기술적 차이가 존재합니다 [8].
|
||||
|
||||
---
|
||||
*Last updated: 2026-04-19*
|
||||
> [!IMPORTANT]
|
||||
> 이 문서는 P-Reinforce Phase 2 자동 MERGE에 의해 **[[Incremental_Marking]]**로 통합되었습니다.
|
||||
|
||||
---
|
||||
*Redirected to: [[Incremental_Marking]]*
|
||||
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-42C840
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-index-masking
|
||||
title: Index Masking
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-42C840]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - Index Masking"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[Index Masking]]
|
||||
@@ -17,7 +28,7 @@ github_commit: "[P-Reinforce] Continuous Worker - Index Masking"
|
||||
- **보안을 위한 아키텍처 도입:** Spectre 및 Meltdown 공격을 방어하기 위해 [[WebKit]]을 비롯한 웹 브라우저 엔진들은 기존의 분기(branch) 기반 보안 검사의 한계를 보완하고자 Index Masking과 [[Pointer Poisoning]] 같은 분기 없는(branchless) 보안 검사 방식을 도입하였다 [1, 3, 4].
|
||||
- **성능에 미치는 영향:** 이 보안 완화 기법은 자바스크립트 엔진 및 JIT(Just-In-Time) 컴파일러가 수행하는 그래픽 실행의 크리티컬 패스에 추가 명령어를 도입하므로, 기본 마이크로 지연 시간(base micro-latency)을 약간 증가시킨다 [5]. 그러나 WebKit의 테스트에 따르면 Speedometer 및 ARES-6 벤치마크에서는 측정 가능한 성능 영향이 없었으며, JetStream 벤치마크에서는 성능에 미치는 영향이 2.5% 미만인 것으로 확인되었다 [4].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -30,3 +41,52 @@ github_commit: "[P-Reinforce] Continuous Worker - Index Masking"
|
||||
*Last updated: 2026-04-19*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-D6CCE0
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-instancedmesh-동적-버퍼-확장
|
||||
title: InstancedMesh 동적 버퍼 확장
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-D6CCE0]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - [[InstancedMesh]] 동적 버퍼 확장"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[InstancedMesh 동적 버퍼 확장]]
|
||||
@@ -22,7 +33,7 @@ github_commit: "[P-Reinforce] Continuous Worker - [[InstancedMesh]] 동적 버
|
||||
- **최적화 및 대안 전략**
|
||||
이러한 성능 하락을 방지하려면 런타임에 동적으로 버퍼를 확장하는 대신, 앱 시작 시점이나 로드 시 최대 예상 인스턴스 수에 맞춰 충분한 크기의 버퍼를 미리 할당(Preallocate)하는 방식이 권장된다 [3, 5]. 또한, 대규모 프로젝트에서는 예측 불가능한 버퍼 확장을 막기 위해 사전에 엄격한 메모리 예산을 수립해야 한다 [1]. 메모리 할당 및 해제의 오버헤드를 최소화하기 위해 한 번 생성된 인스턴스 데이터를 재사용하는 객체 풀링(Object [[Pooling]])이나 링 버퍼(Ring Buffer) 구조를 채택하는 것이 효율적이다 [1].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -35,3 +46,52 @@ github_commit: "[P-Reinforce] Continuous Worker - [[InstancedMesh]] 동적 버
|
||||
*Last updated: 2026-04-19*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-88CEC2
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-instancedmesh-사용-시-드로우-콜-최적화의-한계
|
||||
title: InstancedMesh 사용 시 드로우 콜 최적화의 한계점 사례 연구
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-88CEC2]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - [[InstancedMesh]] 사용 시 드로우 콜 최적화의 한계점 사례 연구"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[InstancedMesh 사용 시 드로우 콜 최적화의 한계점 사례 연구]]
|
||||
@@ -31,7 +42,7 @@ github_commit: "[P-Reinforce] Continuous Worker - [[InstancedMesh]] 사용 시
|
||||
* **대안 기술 및 최적화 전략**
|
||||
InstancedMesh의 한계를 보완하기 위해 서로 다른 기하학적 구조를 수용하고 개별 컬링/가시성 제어가 가능한 **`BatchedMesh`**가 활용되고 있으나, 이 역시 지나치게 많은 삼각형을 처리할 때는 버퍼 패킹 오버헤드가 발생합니다 [15]. 궁극적으로는 **[[WebGPU]]의 컴퓨트 셰이더([[Compute Shader]])를 도입하여 가시성 판별과 오클루전 처리를 GPU 내부에서 해결하는 GPU 주도 렌더링([[Indirect Draw]]) 방식**이 강력한 대안으로 부상하고 있습니다 [16, 17].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -44,3 +55,52 @@ github_commit: "[P-Reinforce] Continuous Worker - [[InstancedMesh]] 사용 시
|
||||
*Last updated: 2026-04-19*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-7D070F
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-instancedmesh-최적화
|
||||
title: InstancedMesh 최적화
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-7D070F]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - [[InstancedMesh]] 최적화"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[InstancedMesh 최적화]]
|
||||
@@ -29,7 +40,7 @@ github_commit: "[P-Reinforce] Continuous Worker - [[InstancedMesh]] 최적화"
|
||||
* **[[InstancedMesh2]] 및 BatchedMesh 활용:** 단일 지오메트리 제약이 문제가 된다면, 서로 다른 지오메트리를 하나의 드로우 콜로 묶어주는 BatchedMesh 사용이 권장됩니다 [26], [27]. 또한, 커뮤니티 생태계의 `InstancedMesh2` 라이브러리를 활용하면 개별 인스턴스의 프러스텀 컬링, 정렬, [[Level of Detail (LOD)]], BVH 기반의 빠른 레이캐스팅, 스킨드 애니메이션 최적화 등의 기능을 확장 적용할 수 있습니다 [28], [29], [30].
|
||||
* **[[WebGPU]] 컴퓨트 셰이더 도입:** WebGPU 환경에서는 GPU가 직접 가시성 판단과 컬링을 처리하여 CPU와 GPU 간의 통신 비용을 "0"에 수렴하게 하는 간접 그리기([[Indirect Draw]]) 방식이 차세대 대안으로 떠오르고 있습니다 [31].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -44,3 +55,52 @@ github_commit: "[P-Reinforce] Continuous Worker - [[InstancedMesh]] 최적화"
|
||||
*Last updated: 2026-04-19*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-48DB08
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-interop-2025
|
||||
title: Interop 2025
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-48DB08]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - Interop 2025"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[Interop 2025]]
|
||||
@@ -17,7 +28,7 @@ github_commit: "[P-Reinforce] Continuous Worker - Interop 2025"
|
||||
- **주요 브라우저의 참여 및 지표 구현**: Interop 2025 프로젝트의 일환으로 Firefox와 Safari는 핵심 웹 지표 중 '최대 콘텐츠 풀 페인트(Largest Contentful Paint, LCP)'와 '다음 페인트에 대한 상호작용(Interaction to Next Paint, INP)'을 지원하기 위한 작업을 시작했습니다[1].
|
||||
- **누적 레이아웃 이동(CLS) 지원 보류**: 또 다른 주요 지표인 '누적 레이아웃 이동(Cumulative Layout [[Shift]], CLS)'에 대한 지원은 Interop 2025 계획에 현재 포함되어 있지 않습니다[1]. 다만, 이를 후속 프로젝트인 [[Interop 2026]]에 포함하려는 제안이 존재합니다[1].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -30,3 +41,52 @@ github_commit: "[P-Reinforce] Continuous Worker - Interop 2025"
|
||||
*Last updated: 2026-04-19*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-9C355C
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-inventory-management-example
|
||||
title: Inventory Management Example
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-9C355C]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - Inventory [[Management]] Example"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[Inventory Management Example]]
|
||||
@@ -17,7 +28,7 @@ github_commit: "[P-Reinforce] Continuous Worker - Inventory [[Management]] Examp
|
||||
- **매핑 오류와 조용한 실패**: 백엔드 데이터를 프론트엔드 타입으로 매핑할 때, 속성 이름을 잘못 입력하거나(`quantity` 대신 `qty` 사용 등) 불필요한 필드를 포함하는 등의 오류가 쉽게 발생할 수 있습니다 [2]. 엄격한 검사가 없다면 TypeScript는 이러한 오타를 잡아내지 못할 수 있으며, 조용히 오류를 통과시킬 위험이 있습니다 [2].
|
||||
- **`satisfies` 키워드를 통한 엄격성 강제**: 데이터 매핑 함수 내에서 `satisfies` 키워드를 사용하면 엄격한 타입 계약을 강제할 수 있습니다 [3]. 이를 통해 대상 타입에 정의된 유효한 속성만 포함되도록 보장하며, 그렇지 않을 경우 발생할 수 있는 초과 속성 문제나 오타를 컴파일 단계에서 포착하여 방지할 수 있습니다 [3, 4].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -30,3 +41,52 @@ github_commit: "[P-Reinforce] Continuous Worker - Inventory [[Management]] Examp
|
||||
*Last updated: 2026-04-18*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-AF3315
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-mark-sweep-compact-알고리즘
|
||||
title: Mark Sweep Compact 알고리즘
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-AF3315]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - [[Mark-Sweep]]-Compact 알고리즘"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[Mark-Sweep-Compact 알고리즘]]
|
||||
@@ -20,7 +31,7 @@ github_commit: "[P-Reinforce] Continuous Worker - [[Mark-Sweep]]-Compact 알고
|
||||
- **컴팩트(Compact) 단계**: 살아있는 객체들을 다른 페이지의 빈 공간으로 이동시켜 단편화된 메모리 페이지(작은 빈 공간이 많은 상태)의 실제 사용량을 줄이고 최적화합니다 [10], [11]. 이 단계에서는 기존 객체를 복사하고 원본의 첫 단어 자리에 포워딩 주소(forwarding address)를 남기며, 이주가 끝나면 관련된 모든 포인터를 새로운 복사본의 위치로 업데이트합니다 [10].
|
||||
- **성능과 실행 특징**: 스윕 알고리즘은 각 페이지의 마크 비트맵을 순회하며 마크되지 않은 객체의 범위를 찾기만 하므로 매우 간단합니다 [8]. 반면 컴팩트 작업은 살아있는 대량의 객체를 이동시키고 이 객체들을 가리키는 모든 참조([[Reference]]) 값을 변경해야 하므로 연산 비용이 매우 큽니다 [3], [4]. 따라서 컴팩트 작업은 매번 수행되지 않고 힙이 심하게 단편화되었거나 메모리 할당 실패가 발생하는 등 선택적이고 필수적인 상황에서만 실행되도록 제어됩니다 [3], [4].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -33,3 +44,52 @@ github_commit: "[P-Reinforce] Continuous Worker - [[Mark-Sweep]]-Compact 알고
|
||||
*Last updated: 2026-04-19*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,41 +1,25 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-7C6103
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
tags: [auto-reinforced]
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - Netflix 마이크로서비스 전환"
|
||||
id: wiki-20260508-netflix--redir
|
||||
title: Netflix 마이크로서비스 전환
|
||||
category: Programming & Language
|
||||
status: merged
|
||||
redirect_to: Netflix_마이크로서비스_전환
|
||||
canonical_id: Netflix_마이크로서비스_전환
|
||||
aliases: []
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.92
|
||||
tags: [redirect]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-05-08
|
||||
github_commit: pending
|
||||
inferred_by: Claude Opus 4.7 (auto-merge 2026-05-08)
|
||||
---
|
||||
|
||||
# [[Netflix 마이크로서비스 전환]]
|
||||
# Netflix 마이크로서비스 전환
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> Netflix의 마이크로서비스 전환은 혁신성, 신뢰성, 효율성을 개선하기 위해 기존의 거대한 모놀리식 아키텍처를 독립적으로 배포 및 확장이 가능한 작은 서비스 단위로 쪼갠 7년간의 대규모 마이그레이션 과정입니다 [1, 2]. 이 과정에서 무상태([[State]]less) 서비스 지향, 수평적 확장, 데이터베이스의 NoSQL(Cassandra) 전환 및 자동화된 파괴 테스트(Chaos Monkey)를 원칙으로 삼아 99.999%의 높은 가용성을 확보했습니다 [2-4]. 최근에는 모놀리식화된 기존 시스템의 한계를 극복하고자 API, 워크플로우, 서버리스 함수가 결합된 차세대 마이크로서비스 플랫폼인 'Cosmos'를 도입하여 시스템을 한 단계 더 진화시키고 있습니다 [5, 6].
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
- **초기 아키텍처와 전환 배경:** Netflix는 2008년 8월 데이터 센터와 RDBMS를 기반으로 한 모놀리식 아키텍처로 서비스를 시작했으나, 시스템의 단단한 결합(tight coupling)으로 인해 빠른 혁신과 잦은 배포가 불가능했습니다 [2, 7]. 개발 속도를 높이고 높은 가용성을 달성하기 위해 7년에 걸쳐 작은 독립적인 서비스들로 구성된 마이크로서비스 아키텍처로의 전환을 단행했습니다 [1, 2].
|
||||
- **전환의 핵심 원칙 (First [[Principles]]):**
|
||||
- **구축보다 구매 (Buy vs. Build):** 가능하면 오픈소스(OSS) 기술을 우선적으로 사용하고, 꼭 필요한 기능만 직접 구축합니다 [2].
|
||||
- **무상태(Stateless) 서비스와 수평적 확장:** 지속성이나 캐싱 계층을 제외한 모든 서비스는 상태를 유지하지 않도록(Stateless) 설계하여, 수직적 확장(Scale up)의 한계를 피해 수평적 확장(Scale out)을 지향합니다 [2, 3].
|
||||
- **이중화와 격리 (Redundancy and Isolation):** 다중 지역(Multi-Regional) 복제 구성을 채택하고, 장애 발생 시 파급 반경(Blast radius)을 격리하여 복원력을 높입니다 [3].
|
||||
- **파괴 테스트 자동화:** Simian Army의 Chaos Monkey 등을 활용하여 의도적으로 결함을 주입하고 파괴 테스트를 자동화함으로써 시스템의 신뢰성을 지속적으로 검증합니다 [3].
|
||||
- **데이터베이스 마이그레이션:** 대규모 확장에 불리한 기존의 RDBMS 대신 확장성, 파티션 내구성, 가용성이 뛰어난 NoSQL인 Cassandra로 전환했습니다 [3].
|
||||
- **운영 효과 및 한계:** 마이크로서비스 구조는 클린 아키텍처의 높은 응집도와 낮은 결합도 개념을 적용하여, 컨테이너 및 Kubernetes를 통해 수백만 명의 사용자를 위한 탄력적인 확장을 제공합니다 [8, 9]. Netflix는 이를 통해 연간 단 52분의 다운타임만 허용하는 99.999%(4 9's)의 가용성을 목표로 합니다 [4]. 그러나 분산 시스템으로 변모하면서 서비스 간 통신 메커니즘 처리, 여러 팀의 조율, JVM/VM 추가 구동에 따른 메모리 소비 급증과 같은 복잡성 및 비용의 증가라는 단점도 수반되었습니다 [10-12].
|
||||
- **차세대 마이크로서비스 플랫폼 'Cosmos' 도입:**
|
||||
- 시간이 지나면서 기존의 3세대 미디어 처리 시스템('Reloaded') 또한 비대해져 모놀리스와 같이 인프라와 애플리케이션 코드가 뒤섞이는 운영상 병목을 일으켰습니다 [13-15].
|
||||
- 이를 해결하기 위해 워크플로우 기반 미디어 중심 마이크로서비스 플랫폼인 'Cosmos'를 구축했습니다 [5]. Cosmos는 외부 요청을 처리하는 API 계층(Optimus), 비즈니스 규칙을 모델링하는 워크플로우 계층(Plato), 계산 집약적이고 상태가 없는 작업을 실행하는 서버리스 함수 계층(Stratum)으로 관심사를 횡단 및 논리적으로 철저히 분리했습니다 [15, 16].
|
||||
- 레거시 시스템에서 Cosmos로의 이전은 점진적으로 기존 시스템을 둘러싸며 대체하는 교살자 무화과(Str[[ANGLE]]r fig) 패턴을 적용하여 리스크를 최소화하고 있습니다 [17].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
- **Related Topics:** 모놀리식 아키텍처, 수평적 확장 (Scale out), Cassandra, 오픈소스 (OSS), 서버리스 함수
|
||||
- **Projects/Contexts:** Reloaded 시스템, Cosmos 플랫폼, Chaos Monkey (Simian Army)
|
||||
- **Contradictions/Notes:** 마이크로서비스 아키텍처는 혁신과 배포 속도 향상이라는 큰 장점을 가져다주었지만, 반대로 구현 시 분산 시스템의 복잡성을 관리해야 하고 다수의 서비스 인스턴스를 실행하는 데 따른 심각한 메모리 사용량(오버헤드) 증가를 초래한다는 구조적 한계점이 소스에서 분명히 지적되고 있습니다 [10, 11].
|
||||
|
||||
---
|
||||
*Last updated: 2026-04-18*
|
||||
> [!IMPORTANT]
|
||||
> 이 문서는 P-Reinforce Phase 2 자동 MERGE에 의해 **[[Netflix_마이크로서비스_전환]]**로 통합되었습니다.
|
||||
|
||||
---
|
||||
*Redirected to: [[Netflix_마이크로서비스_전환]]*
|
||||
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-4670EE
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-nodejs-메모리-최적화
|
||||
title: Nodejs 메모리 최적화
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-4670EE]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - [[Nodejs]] 메모리 최적화"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[Nodejs 메모리 최적화]]
|
||||
@@ -34,7 +45,7 @@ github_commit: "[P-Reinforce] Continuous Worker - [[Nodejs]] 메모리 최적화
|
||||
* `--max-semi-space-size`: New Space의 크기를 조절하며, 단기 객체(예: API 요청마다 생성되는 임시 객체)가 대량으로 생성되는 환경에서 늘려주면 잦은 마이너 GC 실행을 줄여 전반적인 성능을 높일 수 있습니다 [17].
|
||||
* `--gc-interval` 및 `--expose-gc`: 가비지 컬렉션의 빈도를 강제로 조정하거나, 프로그램 내부에서 `global.gc()`를 호출해 수동으로 가비지 컬렉션을 실행할 수 있도록 하는 옵션입니다 [18-20].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -47,3 +58,52 @@ github_commit: "[P-Reinforce] Continuous Worker - [[Nodejs]] 메모리 최적화
|
||||
*Last updated: 2026-04-19*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-EA5D5E
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-nodejs-메모리-튜닝
|
||||
title: Nodejs 메모리 튜닝
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-EA5D5E]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - [[Nodejs]] 메모리 튜닝"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[Nodejs 메모리 튜닝]]
|
||||
@@ -35,7 +46,7 @@ github_commit: "[P-Reinforce] Continuous Worker - [[Nodejs]] 메모리 튜닝"
|
||||
* Node.js에서의 누수는 메모리가 유실된 것이 아니라 GC 루트로부터의 참조가 끈질기게 남아있어 V8이 이를 회수하지 못하는 상태를 뜻합니다 [32].
|
||||
* 주요 누수 패턴으로는 해제되지 않은 이벤트 리스너(`EventEmitter`), 변수 참조를 잃지 않는 클로저(Closures), 크기 제한이 없는 인메모리 캐시, 정리되지 않은 타이머(`setInterval`), 제대로 닫히지 않은 스트림과 소켓 등이 있습니다 [33-35].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -50,3 +61,52 @@ github_commit: "[P-Reinforce] Continuous Worker - [[Nodejs]] 메모리 튜닝"
|
||||
*Last updated: 2026-04-19*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-7A23E5
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-nodejs-성능-디버깅
|
||||
title: Nodejs 성능 디버깅
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-7A23E5]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - [[Nodejs]] 성능 디버깅"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[Nodejs 성능 디버깅]]
|
||||
@@ -33,7 +44,7 @@ github_commit: "[P-Reinforce] Continuous Worker - [[Nodejs]] 성능 디버깅"
|
||||
* `--max-semi-space-size`: 빈번하게 생성 및 소멸되는 객체가 저장되는 New Space의 크기를 조절한다. 처리량이 많은 상황에서 이 크기를 늘리면 잦은 [[Scavenge]](마이너 GC) 사이클을 줄여 성능을 향상할 수 있다 [24, 25].
|
||||
* `--expose-gc`: 이를 설정하면 애플리케이션 코드 내에서 `global.gc()`를 수동으로 호출하여 대량의 데이터 처리 후 명시적으로 메모리를 회수할 수 있다 [26, 27].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -46,3 +57,52 @@ github_commit: "[P-Reinforce] Continuous Worker - [[Nodejs]] 성능 디버깅"
|
||||
*Last updated: 2026-04-19*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-C8E2E0
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-nodejs-성능-최적화-및-디버깅
|
||||
title: Nodejs 성능 최적화 및 디버깅
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-C8E2E0]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - [[Nodejs]] 성능 최적화 및 디버깅"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[Nodejs 성능 최적화 및 디버깅]]
|
||||
@@ -27,7 +38,7 @@ github_commit: "[P-Reinforce] Continuous Worker - [[Nodejs]] 성능 최적화
|
||||
- **Node.js 운영 환경에서의 적용 및 로그(Log) 수집:**
|
||||
Node.js 환경에서도 `--inspect` 플래그를 사용하여 크롬 개발자 도구에 연결한 뒤 'Memory > Allocation instrumentation on timeline'을 활용할 수 있다 [7]. 부하 테스트(예: 100~1,000건의 요청)를 진행하면서 타임라인을 기록하고 수거되지 않는 파란색 막대를 확인하여 메모리 누수 위치를 신속하게 특정할 수 있다 [7, 13]. 또한 터미널 레벨에서 `--trace-gc` 플래그를 지정하면 V8 엔진은 메모리 할당 실패(allocation failure) 시 발생하는 GC 이벤트마다 타임스탬프(ms), GC 유형(예: [[Scavenge]], [[Mark-Sweep]]), GC 전후의 힙 사용량(MB) 및 소요 시간 등을 상세한 텍스트 로그 형태로 출력하여 메모리 포화 상태를 디버깅할 수 있게 해준다 [14-16].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -40,3 +51,52 @@ github_commit: "[P-Reinforce] Continuous Worker - [[Nodejs]] 성능 최적화
|
||||
*Last updated: 2026-04-19*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-56A451
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-nodejs-프로세스-모니터링-및-메모리-분석
|
||||
title: Nodejs 프로세스 모니터링 및 메모리 분석
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-56A451]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - [[Nodejs]] 프로세스 모니터링 및 메모리 분석"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[Nodejs 프로세스 모니터링 및 메모리 분석]]
|
||||
@@ -37,7 +48,7 @@ github_commit: "[P-Reinforce] Continuous Worker - [[Nodejs]] 프로세스 모니
|
||||
- `--max-semi-space-size`: New Space의 크기를 조절하여 단기 객체의 잦은 생성으로 인한 마이너 GC 발생 빈도를 늦출 수 있습니다 [34].
|
||||
- `--expose-gc`: 애플리케이션 코드 내에서 `global.gc()`를 호출해 개발자가 수동으로 가비지 컬렉션을 트리거할 수 있게 합니다 [35, 36].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -50,3 +61,52 @@ github_commit: "[P-Reinforce] Continuous Worker - [[Nodejs]] 프로세스 모니
|
||||
*Last updated: 2026-04-19*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-1F94B3
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-object-pooling-오브젝트-풀링
|
||||
title: Object Pooling (오브젝트 풀링)
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-1F94B3]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - Object [[Pooling]] (오브젝트 풀링)"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[Object Pooling (오브젝트 풀링)]]
|
||||
@@ -30,7 +41,7 @@ github_commit: "[P-Reinforce] Continuous Worker - Object [[Pooling]] (오브젝
|
||||
|
||||
**4. 고속화를 위한 Free List (프리 리스트) 기법** 가장 단순한 오브젝트 풀은 가용한 객체를 찾기 위해 풀 전체를 순회하므로 $O(n)$의 시간이 걸립니다. 이를 최적화하기 위해 비활성 상태인 객체들의 사용하지 않는 메모리 공간(예: C++의 `union`)을 활용하여 다음 빈 객체를 가리키는 포인터를 저장하는 **프리 리스트(Free List)**를 구축하면, 추가적인 메모리 낭비 없이 $O(1)$의 속도로 즉시 객체를 할당할 수 있습니다.
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -44,3 +55,52 @@ github_commit: "[P-Reinforce] Continuous Worker - Object [[Pooling]] (오브젝
|
||||
_Last updated: 2026-04-15_
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-9214B8
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-old-space-구-세대-공간
|
||||
title: Old Space (구 세대 공간)
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-9214B8]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - [[Old Space]] (구 세대 공간)"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[Old Space (구 세대 공간)]]
|
||||
@@ -25,7 +36,7 @@ github_commit: "[P-Reinforce] Continuous Worker - [[Old Space]] (구 세대 공
|
||||
- **메모리 튜닝 및 누수 탐지:**
|
||||
Node.js 애플리케이션에서 대규모 데이터를 처리할 때 `--max-old-space-size` 커맨드라인 플래그를 사용하면 Old Space의 최대 크기(예: 4096MB)를 명시적으로 늘릴 수 있어 잦은 가비지 컬렉션으로 인한 성능 저하를 방지할 수 있습니다 [14, 15]. 또한 `--trace-gc-verbose` 로깅 분석 시, Major GC가 발생한 이후에도 "Old space, used" 크기가 지속적으로 증가한다면 강력한 메모리 누수([[memory]] Leak)의 징후로 판단할 수 있습니다 [16].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -38,3 +49,52 @@ github_commit: "[P-Reinforce] Continuous Worker - [[Old Space]] (구 세대 공
|
||||
*Last updated: 2026-04-19*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,39 +1,25 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-3FD05B
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
tags: [auto-reinforced]
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - [[Old Space]](Old Generation)"
|
||||
id: wiki-20260508-old-space-old-generation--redir
|
||||
title: Old Space(Old Generation)
|
||||
category: Programming & Language
|
||||
status: merged
|
||||
redirect_to: Old_Space(Old_Generation)
|
||||
canonical_id: Old_Space(Old_Generation)
|
||||
aliases: []
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.92
|
||||
tags: [redirect]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-05-08
|
||||
github_commit: pending
|
||||
inferred_by: Claude Opus 4.7 (auto-merge 2026-05-08)
|
||||
---
|
||||
|
||||
# [[Old Space(Old Generation)]]
|
||||
# Old Space(Old Generation)
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> Old Space(또는 Old Generation)는 V8 엔진의 힙(Heap) 메모리 영역 중 하나로, [[New Space(Young Generation)]]에서 두 번의 마이너 가비지 컬렉션([[Scavenge]]) 주기 동안 살아남은 수명이 긴 객체들이 이동(승격)하여 저장되는 공간이다 [1-3]. 이 공간은 주로 사용자 세션, 캐시 데이터 등 영구적인 상태를 유지하는 데이터 저장에 사용되며, New Space에 비해 크기가 훨씬 크고 가비지 컬렉션([[Major GC]])이 덜 빈번하게 발생하지만 더 많은 컴퓨팅 리소스를 소모한다 [4, 5].
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
* **객체의 승격(Promotion) 및 수명:**
|
||||
V8의 메모리 관리는 대부분의 객체가 짧은 수명을 가진다는 '세대적 가설([[Generational Hypothesis]])'에 기반한다 [6]. 초기에 New Space에 할당된 객체가 두 번의 스캐빈지(Scavenge) 주기를 거친 후에도 살아남으면, 장기 보관을 위해 설계된 Old Space로 승격(Promoted)된다 [1, 3, 4]. 전체 객체 중 약 20%만이 Old Generation 영역으로 살아남게 된다 [7].
|
||||
* **Old Space의 세부 구조:**
|
||||
가비지 컬렉션의 효율을 높이기 위해 Old Space는 내부적으로 크게 두 가지 공간으로 세분화된다 [3, 8].
|
||||
* **Old-pointer-space:** 다른 객체를 가리키는 포인터를 포함할 가능성이 있는 대부분의 객체가 저장된다 [3, 9].
|
||||
* **Old-data-space:** 문자열(Strings), 박싱된 숫자, 포인터가 없는 원시 데이터 배열 등 외부 객체에 대한 포인터를 포함하지 않는 객체들이 저장된다 [3, 9]. 가비지 컬렉터는 이 영역에서 포인터 추적(tracing) 단계를 건너뛸 수 있으므로 마킹 단계의 소요 시간을 효과적으로 단축한다 [4].
|
||||
* **가비지 컬렉션(Major GC) 관리:**
|
||||
Old Space는 수백 메가바이트 이상의 데이터를 포함할 수 있으므로, Scavenge 알고리즘 대신 **[[Mark-Sweep]]** 및 **Mark-Compact** 알고리즘을 사용하는 Major GC에 의해 관리된다 [10-12]. Major GC는 힙을 순회하며 살아있는 객체를 표시(Mark)하고, 참조되지 않는 객체의 메모리 주소를 빈 공간(Free list)으로 기록(Sweep)하며, 필요한 경우 메모리 파편화(Fragmentation)를 줄이기 위해 객체들을 한곳으로 모으는 압축(Compact) 작업을 수행한다 [13-16].
|
||||
* **메모리 제어 및 튜닝:**
|
||||
Old Space의 크기는 `--initial_old_space_size`와 `--max-old-space-size`라는 V8 커맨드라인 플래그를 통해 제어할 수 있다 [3, 17]. 대량의 영구 데이터나 사용자 세션 정보를 처리하는 애플리케이션의 경우, 장기 생존 객체가 Old Space에 가득 차면 빈번하고 비용이 큰 가비지 컬렉션이 발생해 응답 속도 저하 또는 OOM(Out of [[memory]]) 충돌이 일어날 수 있으므로 해당 플래그를 통해 Old Space의 제한 크기를 늘리는 튜닝이 권장된다 [5, 17].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
- **Related Topics:** [[New Space(Young Generation)]], [[Major GC]], Mark-Sweep-Compact, [[Garbage Collection]]
|
||||
- **Projects/Contexts:** [[V8 Engine]] Memory [[Management]], Node.js Performance Tuning
|
||||
- **Contradictions/Notes:** 소스에 관련 정보가 부족합니다.
|
||||
|
||||
---
|
||||
*Last updated: 2026-04-19*
|
||||
> [!IMPORTANT]
|
||||
> 이 문서는 P-Reinforce Phase 2 자동 MERGE에 의해 **[[Old_Space(Old_Generation)]]**로 통합되었습니다.
|
||||
|
||||
---
|
||||
*Redirected to: [[Old_Space(Old_Generation)]]*
|
||||
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-C312D4
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-old-space
|
||||
title: Old Space
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-C312D4]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - Old Space"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[Old Space]]
|
||||
@@ -21,7 +32,7 @@ github_commit: "[P-Reinforce] Continuous Worker - Old Space"
|
||||
* **[[Write Barrier]]s 및 저장 버퍼(Store Buffer):** Old Space의 객체가 New Space의 객체를 참조하는 경우, V8 엔진은 이 참조를 추적하기 위해 'Write Barrier' 코드와 'Store Buffer'를 활용합니다 [11-13]. 이는 스캐빈저(Scavenger)가 New Space를 수집할 때 Old Space 전체를 스캔하지 않고도 해당 참조를 파악할 수 있게 해줍니다 [11, 13].
|
||||
* **메모리 튜닝 및 누수 감지:** `--trace-gc-verbose` 플래그를 사용하여 로그를 확인할 때, Major GC 이벤트 이후에도 Old space의 사용량이 지속적으로 증가한다면 메모리 누수([[memory]] Leak)가 발생하고 있다는 강력한 지표가 됩니다 [14]. 개발자는 애플리케이션의 메모리 사용량에 맞게 `--initial_old_space_size` 및 `--max-old-space-size` 커맨드라인 플래그를 사용하여 Old Space의 크기를 직접 제어할 수 있습니다 [3, 15].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -34,3 +45,52 @@ github_commit: "[P-Reinforce] Continuous Worker - Old Space"
|
||||
*Last updated: 2026-04-19*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-3353DC
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-orinoco-가비지-컬렉터
|
||||
title: Orinoco 가비지 컬렉터
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-3353DC]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - [[Orinoco]] 가비지 컬렉터"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[Orinoco 가비지 컬렉터]]
|
||||
@@ -27,7 +38,7 @@ Orinoco는 메인 스레드를 해방시키기 위해 다음 세 가지 주요
|
||||
* **Idle-time GC (유휴 시간 GC)**: [[Chrome]]과 같은 환경에서 애니메이션 프레임(예: 초당 60프레임, 약 16.6ms)을 렌더링한 후 여유 시간이 남을 경우, GC가 해당 유휴 시간을 활용하여 선제적으로 가비지 컬렉션 작업을 수행합니다 [5, 15].
|
||||
* 기타 V8의 블랙 할당(Black allocation) 기능과 포인터 추적(Tracking Pointers) 기법을 개선하여 On-heap 및 Off-heap 메모리의 피크 사용량을 큰 폭으로 줄였습니다 [3, 16, 17].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -40,3 +51,52 @@ Orinoco는 메인 스레드를 해방시키기 위해 다음 세 가지 주요
|
||||
*Last updated: 2026-04-19*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-6EB2FE
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-orinoco-프로젝트
|
||||
title: Orinoco 프로젝트
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-6EB2FE]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - [[Orinoco]] 프로젝트"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[Orinoco 프로젝트]]
|
||||
@@ -19,7 +30,7 @@ github_commit: "[P-Reinforce] Continuous Worker - [[Orinoco]] 프로젝트"
|
||||
- **동시(Concurrent) 처리:** 메인 스레드가 멈추지 않고 JavaScript를 실행하는 동안, 백그라운드의 헬퍼 스레드들이 GC 작업을 전담하여 처리합니다 [8]. 객체의 상태가 언제든 변할 수 있어 읽기/쓰기 경합(read/write races)을 처리해야 하는 가장 복잡한 기술이지만, 메인 스레드를 온전히 자유롭게 해방시킬 수 있습니다 [8].
|
||||
- **프로젝트의 성과 및 확장:** Orinoco 프로젝트를 통해 많은 GC 작업이 백그라운드로 이동하면서 지연 시간과 페이지 로딩 성능이 비약적으로 향상되었으며, 스크롤이나 애니메이션이 훨씬 부드러워졌습니다 [9]. 더 나아가, 여기서 개발된 새로운 기술의 일부는 [[Chrome]]의 렌더러([[Blink]])에 내장된 가비지 컬렉터인 '[[Oilpan]]'으로 이식하여 협력을 개선하는 작업도 진행 중입니다 [10].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -32,3 +43,52 @@ github_commit: "[P-Reinforce] Continuous Worker - [[Orinoco]] 프로젝트"
|
||||
*Last updated: 2026-04-19*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,40 +1,25 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-DEB938
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
tags: [auto-reinforced]
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - Pointer Compression"
|
||||
id: wiki-20260508-pointer-compression-redir
|
||||
title: Pointer Compression
|
||||
category: Programming & Language
|
||||
status: merged
|
||||
redirect_to: Pointer_Compression
|
||||
canonical_id: Pointer_Compression
|
||||
aliases: []
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.92
|
||||
tags: [redirect]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-05-08
|
||||
github_commit: pending
|
||||
inferred_by: Claude Opus 4.7 (auto-merge 2026-05-08)
|
||||
---
|
||||
|
||||
# [[Pointer Compression]]
|
||||
# Pointer Compression
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> Pointer Compression(포인터 압축)은 64비트 플랫폼에서 V8 엔진의 메모리 오버헤드를 줄이기 위해 포인터를 베이스 주소로부터의 32비트 오프셋(offset)으로 저장하는 기술입니다 [1]. 이 기술은 V8 힙 크기를 최대 40%까지 줄이고 CPU 및 가비지 컬렉션(GC) 성능을 5~10% 향상시키는 장점이 있습니다 [2]. 하지만 포인터 압축을 활성화하면 V8 힙의 최대 크기가 4GB로 제한된다는 주요한 단점이 수반됩니다 [1, 3].
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
- **작동 원리 및 메모리 구조:**
|
||||
64비트 플랫폼에서 V8 엔진은 객체 참조에 따른 메모리 오버헤드를 절반으로 줄이기 위해 전체 64비트 주소 대신 베이스 주소(base address)로부터의 32비트 오프셋을 포인터로 저장합니다 [1]. 이러한 구조적 변경으로 인해 V8의 모든 힙(Heap) 객체는 4GB의 연속된 '케이지(cage)' 영역 내에 강제로 상주해야만 합니다 [1].
|
||||
|
||||
- **성능 이점 (Performance Benefits):**
|
||||
포인터 압축은 메모리 및 성능 최적화에 크게 기여합니다. 이를 통해 V8 힙 크기를 최대 40%까지 감소시킬 수 있으며, CPU 및 가비지 컬렉션(GC)의 성능을 5%에서 10%가량 향상시킵니다 [2]. 대다수의 애플리케이션에서는 이러한 이점이 매우 유의미한 성능 향상으로 이어집니다 [2].
|
||||
|
||||
- **메모리 한계 및 영향 (Limitations):**
|
||||
포인터 압축의 가장 큰 부작용은 V8 힙 크기가 4GB를 초과할 수 없다는 것입니다 [3]. 시스템이 128GB의 RAM을 보유하고 있더라도 단일 V8 isolate의 관리되는 힙 공간은 엄격하게 4GB로 제한됩니다 [4]. 애플리케이션이 이 메모리 한계에 도달하게 되면, V8 엔진은 치명적인 OOM(Out of [[memory]]) 충돌을 피하기 위해 가용 공간을 확보하려고 시도하며 이 과정에서 [[Major GC]]의 빈도가 극적으로 증가하게 됩니다 [4].
|
||||
|
||||
- **해결 및 우회 방안 (Workarounds):**
|
||||
4GB 이상의 더 큰 힙 공간이 필수적인 애플리케이션의 경우 몇 가지 우회 방법이 존재합니다. 포인터 압축이 비활성화된 Node.js의 복사본을 앱에 포함하여 메모리 집약적인 작업을 자식 프로세스(child process)로 분리시키거나, 포인터 압축 기능 자체를 비활성화한 사용자 정의(custom) 버전의 [[Electron]]을 빌드하여 사용할 수 있습니다 [5].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
- **Related Topics:** V8 Memory Cage, [[Garbage Collection]] (GC), Out of Memory (OOM), V8 Heap
|
||||
- **Projects/Contexts:** [[V8 Engine]], [[Electron]], Node.js, [[Chromium]]
|
||||
- **Contradictions/Notes:** 소스에 따르면 포인터 압축은 메모리 사용량을 대폭 줄이고 CPU 효율을 높이지만, 그 대가로 힙 크기를 4GB로 강제 제한하여 메모리 집약적인 작업에는 불리할 수 있다는 명확한 트레이드오프(trade-off)를 갖습니다 [2-4].
|
||||
|
||||
---
|
||||
*Last updated: 2026-04-19*
|
||||
> [!IMPORTANT]
|
||||
> 이 문서는 P-Reinforce Phase 2 자동 MERGE에 의해 **[[Pointer_Compression]]**로 통합되었습니다.
|
||||
|
||||
---
|
||||
*Redirected to: [[Pointer_Compression]]*
|
||||
|
||||
@@ -1,36 +1,25 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-5449D4
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
tags: [auto-reinforced]
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - Reachability [[Analysis]]"
|
||||
id: wiki-20260508-reachability-analysis-redir
|
||||
title: Reachability Analysis
|
||||
category: Programming & Language
|
||||
status: merged
|
||||
redirect_to: Reachability_Analysis
|
||||
canonical_id: Reachability_Analysis
|
||||
aliases: []
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.92
|
||||
tags: [redirect]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-05-08
|
||||
github_commit: pending
|
||||
inferred_by: Claude Opus 4.7 (auto-merge 2026-05-08)
|
||||
---
|
||||
|
||||
# [[Reachability Analysis]]
|
||||
# Reachability Analysis
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> 도달 가능성 분석(Reachability Analysis)은 소스 코드 및 오픈 소스 종속성 분석에 사용되는 보안 테스트 기법으로, 오염된 데이터가 민감한 싱크(sink)에 도달할 수 있는지 또는 특정 취약점이 실제 프로덕션 환경이나 실행 경로에서 호출 가능한지를 추적하는 방법입니다 [1, 2]. 콜 그래프(call graph)와 데이터 흐름 분석을 통해 취약한 함수로의 연결 고리를 식별하며, 도달할 수 없는 데드 코드(dead code)를 필터링합니다 [3, 4]. 결과적으로 노이즈와 오탐(false positives)을 줄여 개발자 및 보안팀이 실제 위협에 집중할 수 있도록 돕는 핵심 기술입니다 [4, 5].
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
* **작동 원리:** 도달 가능성 분석은 애플리케이션의 엔드포인트를 리졸브하고 취약한 함수로 이어지는 콜 그래프를 생성하여, 해당 코드 영역이 실제로 실행 가능한지를 판별합니다 [3]. 이를 통해 퍼스트 파티(first-party) 코드뿐만 아니라 서드 파티(third-party) 코드에 존재하는 취약점이 실제 실행 경로(execution paths)와 연결되어 있는지를 함수 수준(function-level)의 세분화된 단위로 추적할 수 있습니다 [2, 5].
|
||||
* **보안 점검 및 문제 해결의 우선순위 지정:** 이 기법의 가장 큰 이점은 개발자의 알림 피로도(alert fatigue)를 줄이는 데 있습니다 [5]. 실제 런타임 조건에서 도달할 수 없는 데드 경로나 실행되지 않는 모듈에 위치한 취약점을 제외(필터링)시킴으로써, 심각성, 익스플로잇 가능성(exploitability), 비즈니스 영향도 등을 고려한 맥락 인식 기반의 우선순위 분류가 가능해집니다 [4, 6].
|
||||
* **주요 보안 분석 도구에서의 활용 사례:**
|
||||
* **Endor Labs:** 퍼스트 파티 및 서드 파티 코드 전반에 걸친 함수 수준의 도달 가능성 분석을 적용하여, 취약점이 외부의 신뢰할 수 없는 입력에 노출되는지 판단하고 SCA(Software Composition Analysis)와 [[SAST]](Static Application Security [[Testing]]) 결과를 통합합니다 [2, 5].
|
||||
* **Veracode:** 데이터 흐름을 추적하여 오염된(tainted) 데이터가 민감한 싱크(sink)에 도달할 수 있는지를 도달 가능성 분석을 통해 확인합니다 [1].
|
||||
* **[[Corgea]]:** SAST 스캔 과정에서 엔드포인트를 식별하고 취약한 함수에 대한 콜 그래프를 생성하여 도달 여부를 시각화합니다 [3].
|
||||
* **Qwiet AI:** CPG(Code Property Graph) 분석과 함께 도달 가능성 기반의 필터링을 사용하여, 스캔 속도를 최적화하고 분류해야 할 보안 경고 수를 효과적으로 줄입니다 [7, 8].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
- **Related Topics:** [[SAST (Static Application Security Testing)]], SCA (Software Composition Analysis), Call Graph, Data Flow Analysis, False Positives, Vulnerability Prioritization
|
||||
- **Projects/Contexts:** Endor Labs, Veracode, [[Corgea]], Qwiet AI
|
||||
- **Contradictions/Notes:** 제공된 소스 내에서 도달 가능성 분석의 효용성에 대한 모순점은 없으며, 모든 자료가 공통적으로 SAST 및 SCA 도구에서 오탐을 줄이고 실제 위험을 식별하는 데 매우 효과적이고 필수적인 접근법이라고 동의하고 있습니다 [2, 4].
|
||||
|
||||
---
|
||||
*Last updated: 2026-04-19*
|
||||
> [!IMPORTANT]
|
||||
> 이 문서는 P-Reinforce Phase 2 자동 MERGE에 의해 **[[Reachability_Analysis]]**로 통합되었습니다.
|
||||
|
||||
---
|
||||
*Redirected to: [[Reachability_Analysis]]*
|
||||
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-33C0BF
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-readonly-유틸리티-타입
|
||||
title: Readonly 유틸리티 타입
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-33C0BF]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - [[readonly]] 유틸리티 타입"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[Readonly 유틸리티 타입]]
|
||||
@@ -27,7 +38,7 @@ github_commit: "[P-Reinforce] Continuous Worker - [[readonly]] 유틸리티 타
|
||||
- **얕은 불변성(Shallow Immutability):** `Readonly<T>`는 1단계 깊이의 속성에만 작용합니다. 객체 내부의 중첩된 객체 속성은 여전히 수정이 가능하며, 이를 해결하기 위해서는 매핑된 타입과 조건부 타입을 결합한 커스텀 `[[DeepReadonly]]<T>` 유틸리티를 구현해야 합니다[5, 6, 17].
|
||||
- **에일리어싱(Aliasing) 문제:** `readonly` 타입의 데이터를, 수정 가능한 타입(mutable)을 매개변수로 받는 함수에 전달할 경우 타입 호환성 규칙에 의해 통과될 수 있습니다. 이로 인해 함수 내부에서 원본 데이터가 변경되는 우회 돌연변이가 발생할 수 있습니다[18, 19].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -40,3 +51,52 @@ github_commit: "[P-Reinforce] Continuous Worker - [[readonly]] 유틸리티 타
|
||||
*Last updated: 2026-04-18*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-ED64AE
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-result-type
|
||||
title: Result Type
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-ED64AE]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - Result Type"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[Result Type]]
|
||||
@@ -17,7 +28,7 @@ github_commit: "[P-Reinforce] Continuous Worker - Result Type"
|
||||
- **타입 안전성(Type Safety)과 예측 가능성 향상:** Result Type은 반환 타입 안에 성공(`Ok`)과 실패(`Err`)의 형태를 모두 담기 때문에, 개발자가 코드를 분석할 때 시그니처만 보더라도 어떤 결과와 에러가 반환될지 예측할 수 있습니다 [1, 7]. 이는 '최소 놀람의 원칙(Principle of least astonishment)'을 충족시키며, 컴파일러가 모든 반환 경우를 확인(Exhaustiveness check)하도록 강제하여 런타임 오류 가능성을 원천적으로 차단합니다 [3, 9].
|
||||
- **언어별 구현 및 활용:** 이 패턴은 본래 F#, Elixir, Erlang, Rust와 같은 함수형 프로그래밍 언어에서 기원하였으며, 주로 구별된 유니온([[Discriminated Unions]])이나 Either 모나드의 형태를 띠고 있습니다 [5, 16, 17]. TypeScript 생태계에서는 `neverthrow`와 같은 외부 라이브러리를 활용하여 명시적인 `Err` 및 `Ok` 객체로 에러 제어 흐름을 구현할 수 있습니다 [1, 18].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -30,3 +41,52 @@ github_commit: "[P-Reinforce] Continuous Worker - Result Type"
|
||||
*Last updated: 2026-04-18*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,6 +1,22 @@
|
||||
---
|
||||
id: sca_korean_redirect
|
||||
redirect: [[SCA]]
|
||||
id: wiki-2026-0508-sca-소프트웨어-구성-분석
|
||||
title: SCA (소프트웨어 구성 분석)
|
||||
category: 10_Wiki/Topics
|
||||
status: merged
|
||||
redirect_to: SCA
|
||||
canonical_id: SCA
|
||||
aliases: [sca_korean_redirect]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.92
|
||||
tags: [uncategorized]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-05-08
|
||||
github_commit: pending
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# Redirect
|
||||
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-FAB206
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-solid-원칙
|
||||
title: SOLID 원칙
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-FAB206]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - SOLID 원칙"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[SOLID 원칙]]
|
||||
@@ -25,7 +36,7 @@ github_commit: "[P-Reinforce] Continuous Worker - SOLID 원칙"
|
||||
* 구현 방법(How)보다 컴포넌트가 해야 할 일인 인터페이스(What)를 먼저 설계하는 관행을 들이면 자연스럽게 OCP와 DIP 원칙을 뒷받침할 수 있다 [7].
|
||||
* 이 원칙들은 객체 지향 시스템, 라이브러리, 그리고 지속적으로 성장하는 대규모 코드베이스에 이상적으로 적용되며, 결합도가 낮고 테스트 가능성이 높으며 유연한 코드를 산출하는 핵심 기반이 된다 [8].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -38,3 +49,52 @@ github_commit: "[P-Reinforce] Continuous Worker - SOLID 원칙"
|
||||
*Last updated: 2026-04-18*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,36 +1,25 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-A346D0
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
tags: [auto-reinforced]
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - SPA 라우트 전환 성능 최적화"
|
||||
id: wiki-20260508-spa--redir
|
||||
title: SPA 라우트 전환 성능 최적화
|
||||
category: Programming & Language
|
||||
status: merged
|
||||
redirect_to: SPA_라우트_전환_성능_최적화
|
||||
canonical_id: SPA_라우트_전환_성능_최적화
|
||||
aliases: []
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.92
|
||||
tags: [redirect]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-05-08
|
||||
github_commit: pending
|
||||
inferred_by: Claude Opus 4.7 (auto-merge 2026-05-08)
|
||||
---
|
||||
|
||||
# [[SPA 라우트 전환 성능 최적화]]
|
||||
# SPA 라우트 전환 성능 최적화
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> SPA(Single Page Application) 라우트 전환은 현대 프론트엔드 애플리케이션에서 메모리 누수가 발생하는 가장 주요한 원인 중 하나입니다 [1]. 이전 라우트의 컴포넌트가 적절히 정리되지 않으면 애플리케이션의 세션 수명 동안 메모리에 지속적으로 누적되어 성능 저하를 유발합니다 [1]. 따라서 성공적인 라우트 전환 성능 최적화를 위해서는 사용되지 않는 리소스와 참조를 철저히 식별하고 해제하는 메모리 관리가 필수적입니다 [1, 2].
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
- **라우트 전환과 메모리 누수:** SPA 라우트 전환(SPA route transitions)은 애플리케이션 내 메모리 누수의 1위 출처로 지목됩니다 [1]. 이전 라우트에서 사용되었던 컴포넌트들이 이벤트 리스너(listeners), 타이머(timers), 혹은 전역 상태 참조(global [[State]] [[Reference]]s) 등을 제대로 정리(clean up)하지 못할 경우, 이 컴포넌트들은 가비지 컬렉터에 의해 회수되지 못하고 세션 수명 내내 메모리에 축적됩니다 [1].
|
||||
- **누수 탐지를 위한 3-스냅샷 기법(Three-snapshot technique):** 라우트 전환 시 발생하는 메모리 누수를 감지하고 최적화하기 위해 가장 신뢰할 수 있는 방법은 3-스냅샷 기법입니다 [2].
|
||||
1. 기준이 되는 첫 번째 힙 스냅샷([[Heap Snapshot]] 1)을 캡처합니다 [2].
|
||||
2. 라우트 간 이동(navigate between routes)과 같이 누수가 의심되는 작업을 수행한 후 두 번째 스냅샷을 찍습니다 [2].
|
||||
3. 동일한 라우트 전환 작업을 다시 반복하고 세 번째 스냅샷을 캡처합니다 [2].
|
||||
4. 두 번째와 세 번째 스냅샷을 비교하여, 첫 번째와 두 번째 사이에 할당되었으나 세 번째 스냅샷까지 여전히 메모리에 살아있는 객체들을 찾아냅니다 [2]. 이 접근법은 단순 1회성 할당으로 인한 오탐(false positives)을 걸러내고 실제 누수 후보를 식별하는 데 효과적입니다 [2].
|
||||
- **정보 한계:** 제공된 소스에서는 SPA 라우트 전환 시의 성능 최적화를 메모리 누수 발생 원인과 그 탐지(DevTools 활용 등) 관점에서만 다루고 있습니다 [1, 2]. 라우팅 시의 렌더링 최적화, 코드 스플리팅, 네트워크 지연 단축 등 다른 측면의 최적화에 대해서는 소스에 관련 정보가 부족합니다.
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
- **Related Topics:** 메모리 누수([[memory]] Leak), 3-스냅샷 기법(Three-snapshot technique), 가비지 컬렉션([[Garbage Collection]])
|
||||
- **Projects/Contexts:** [[Browser]] Memory Leak Detection
|
||||
- **Contradictions/Notes:** 소스에서는 SPA 라우트 전환 성능 최적화에 대한 전반적인 프론트엔드 렌더링 최적화 기술은 언급하지 않으며, 오직 컴포넌트 언마운트 시의 정리 실패로 인한 메모리 누수 문제와 그 진단법에만 집중하고 있습니다.
|
||||
|
||||
---
|
||||
*Last updated: 2026-04-19*
|
||||
> [!IMPORTANT]
|
||||
> 이 문서는 P-Reinforce Phase 2 자동 MERGE에 의해 **[[SPA_라우트_전환_성능_최적화]]**로 통합되었습니다.
|
||||
|
||||
---
|
||||
*Redirected to: [[SPA_라우트_전환_성능_최적화]]*
|
||||
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-6B64AB
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-scheduler-api
|
||||
title: Scheduler API
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-6B64AB]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - Scheduler API"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[Scheduler API]]
|
||||
@@ -17,7 +28,7 @@ github_commit: "[P-Reinforce] Continuous Worker - Scheduler API"
|
||||
- **핵심 기능 (`scheduler.yield()`):** 개발자는 `scheduler.yield()` 메서드를 사용하여 작업(job) 중간에 브라우저의 스케줄러로 제어권을 쉽게 양보(yield)할 수 있습니다 [1]. 이를 통해 브라우저는 기존에 진행 중이던 작업을 마저 처리하기 전에, 사용자 상호작용 처리와 같은 다른 긴급한 작업을 먼저 다룰 수 있게 됩니다 [1].
|
||||
- **브라우저 지원 현황:** [[Chrome]]은 2024년에 이 새로운 API를 처음 도입했으며, 2025년 8월부터는 Firefox에서도 지원을 시작했습니다 [2]. 하지만 Safari는 아직 Scheduler API를 지원하지 않는 상태입니다 [2].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -30,3 +41,52 @@ github_commit: "[P-Reinforce] Continuous Worker - Scheduler API"
|
||||
*Last updated: 2026-04-19*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-F7D840
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-server-architecture
|
||||
title: Server Architecture
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-F7D840]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - Server [[Architecture]]"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[Server Architecture]]
|
||||
@@ -15,7 +26,7 @@ github_commit: "[P-Reinforce] Continuous Worker - Server [[Architecture]]"
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
소스에 관련 정보가 부족합니다.
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -28,3 +39,52 @@ github_commit: "[P-Reinforce] Continuous Worker - Server [[Architecture]]"
|
||||
*Last updated: 2026-04-18*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-918534
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-sharedarraybuffer-동시성-문제-해결법
|
||||
title: SharedArrayBuffer 동시성 문제 해결법
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-918534]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - SharedArrayBuffer 동시성 문제 해결법"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[SharedArrayBuffer 동시성 문제 해결법]]
|
||||
@@ -22,7 +33,7 @@ github_commit: "[P-Reinforce] Continuous Worker - SharedArrayBuffer 동시성
|
||||
- **쓰기(Write) 전담 스레드:** 웹 워커(Web Worker)는 백그라운드에서 물리 연산이나 AI 로직 등을 수행하며 버퍼의 데이터를 업데이트(Write)합니다.
|
||||
- **읽기(Read) 전담 스레드:** 메인 스레드(React 및 렌더링 루프)는 렌더링 시점에 버퍼에서 데이터를 즉시 읽어와(Read) 복사 비용 없이 [[WebGL]]/Three.js 메시의 속성에 반영합니다. 이러한 데이터 지향 설계(Data-Oriented Design)를 채택하면 여러 스레드가 동일한 데이터에 동시에 쓰기 작업을 하는 상황을 구조적으로 방지할 수 있습니다.
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -36,3 +47,52 @@ github_commit: "[P-Reinforce] Continuous Worker - SharedArrayBuffer 동시성
|
||||
_Last updated: 2026-04-14_
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
+64
-4
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-C3F189
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-sharedarraybuffer-보안-이슈와-cross-o
|
||||
title: SharedArrayBuffer 보안 이슈와 Cross Origin Isolation
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-C3F189]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - SharedArrayBuffer 보안 이슈와 Cross-Origin Isolation"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[SharedArrayBuffer 보안 이슈와 Cross-Origin Isolation]]
|
||||
@@ -24,7 +35,7 @@ github_commit: "[P-Reinforce] Continuous Worker - SharedArrayBuffer 보안 이
|
||||
|
||||
**4. 설정 시 발생할 수 있는 사이드 이펙트 및 주의사항** 위 헤더를 적용하여 고성능 환경을 얻는 대신, 보안 격리가 너무 엄격해져서 **기존에 잘 작동하던 외부 CDN 스크립트나 외부 이미지 등이 차단되는 문제**가 발생할 수 있습니다. 이를 해결하기 위해서는 외부 리소스를 제공하는 서버 측에서 `Cross-Origin-Resource-Policy: cross-origin` (CORP) 헤더나 적절한 CORS 설정(`Access-Control-Allow-Origin`)을 제공해야 하며, 클라이언트의 HTML 태그에도 `<img src="..." crossorigin="anonymous">`와 같이 명시적인 속성을 추가해 주어야 합니다.
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -38,3 +49,52 @@ github_commit: "[P-Reinforce] Continuous Worker - SharedArrayBuffer 보안 이
|
||||
_Last updated: 2026-04-14_
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
+64
-4
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-32CC81
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-sharedarraybuffer-보안을-위한-cross-o
|
||||
title: SharedArrayBuffer 보안을 위한 Cross Origin Isolation 서버 헤더 설정
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-32CC81]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - SharedArrayBuffer 보안을 위한 Cross-Origin Isolation 서버 헤더 설정"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[SharedArrayBuffer 보안을 위한 Cross-Origin Isolation 서버 헤더 설정]]
|
||||
@@ -27,7 +38,7 @@ github_commit: "[P-Reinforce] Continuous Worker - SharedArrayBuffer 보안을
|
||||
- HTML 내 모든 외부 리소스 태그(예: `<img>`, `<script>`)에 `crossorigin="anonymous"` 속성을 추가해야 합니다.
|
||||
- 해당 외부 리소스를 제공하는 서버 측에서 `Access-Control-Allow-Origin` (CORS) 또는 `Cross-Origin-Resource-Policy: cross-origin` (CORP) 응답 헤더를 함께 내려주어야 합니다.
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -41,3 +52,52 @@ github_commit: "[P-Reinforce] Continuous Worker - SharedArrayBuffer 보안을
|
||||
_Last updated: 2026-04-14_
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-4A9AE0
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-sharedarraybuffer로-스레드-간-메모리-공유-
|
||||
title: SharedArrayBuffer로 스레드 간 메모리 공유 효율 높이기
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-4A9AE0]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - SharedArrayBuffer로 스레드 간 메모리 공유 효율 높이기"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[SharedArrayBuffer로 스레드 간 메모리 공유 효율 높이기]]
|
||||
@@ -27,11 +38,58 @@ github_commit: "[P-Reinforce] Continuous Worker - SharedArrayBuffer로 스레드
|
||||
- **매우 낮은 추상화 수준:** 일반적인 JSON 객체나 유연한 자바스크립트 데이터 구조를 사용할 수 없으며, 바이트 단위의 로우 레벨 바이너리 버퍼를 직접 계산하고 다뤄야 하므로 개발 난이도가 매우 높고 사용자 친화적이지 않습니다.
|
||||
- **보안 제약 (COOP/COEP):** 멜트다운(Meltdown) 및 스펙터([[Spectre]])와 같은 CPU 보안 취약점을 방지하기 위해, 웹 서버에서 보안 헤더(`Cross-Origin-Opener-Policy` 및 `Cross-Origin-Embedder-Policy`)를 엄격하게 설정해야만 브라우저에서 `SharedArrayBuffer` 기능을 활성화할 수 있습니다. (※ 이 내용은 제공된 소스 외부의 일반적인 웹 보안 지식입니다. 실제 도입 시 서버 설정 확인이 필요합니다.)
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-8C150A
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-structural-typing
|
||||
title: Structural Typing
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-8C150A]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - Structural Typing"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[Structural Typing]]
|
||||
@@ -28,7 +39,7 @@ github_commit: "[P-Reinforce] Continuous Worker - Structural Typing"
|
||||
* 그러나 객체를 중간 변수에 먼저 할당한 뒤 전달하는 식의 간접 할당 상황이 되면 EPC가 작동하지 않고, 구조적 타이핑의 "최소 요건 충족" 원칙으로 되돌아가 초과 속성을 그대로 허용하게 된다[13, 14].
|
||||
* 이와 같은 우회 현상으로 인한 런타임 오류나 초과 속성 유입 문제를 방지하기 위해 `satisfies` 연산자를 활용하면, 구조의 구체성을 잃지 않으면서도 대상 타입과의 구조적 계약을 엄격히 준수하도록 강제할 수 있다[15, 16].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -41,3 +52,52 @@ github_commit: "[P-Reinforce] Continuous Worker - Structural Typing"
|
||||
*Last updated: 2026-04-18*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-63B068
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-teamcity
|
||||
title: TeamCity
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-63B068]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - TeamCity"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[TeamCity]]
|
||||
@@ -18,7 +29,7 @@ github_commit: "[P-Reinforce] Continuous Worker - TeamCity"
|
||||
- **프로덕션 배포 전 품질 관리:** 파이프라인 내에서 TeamCity를 활용하면 저품질의 코드가 프로덕션 환경에 도달하기 전에 이를 사전에 차단하는 가드레일 역할을 수행할 수 있습니다 [4].
|
||||
- **한계:** 제공된 소스에서는 TeamCity가 강력한 CI 도구이며 Qodana와 통합된다는 점 외에, TeamCity 자체의 구체적인 아키텍처나 세부 기능에 대해서는 다루고 있지 않으므로 소스에 관련 정보가 부족합니다.
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -31,3 +42,52 @@ github_commit: "[P-Reinforce] Continuous Worker - TeamCity"
|
||||
*Last updated: 2026-04-19*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-C43BEF
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-toss-front-sdk-기반-외부-연동사-플러그인-개발
|
||||
title: Toss Front SDK 기반 외부 연동사 플러그인 개발 생태계 구축
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-C43BEF]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - Toss Front SDK 기반 외부 연동사 플러그인 개발 생태계 구축"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[Toss Front SDK 기반 외부 연동사 플러그인 개발 생태계 구축]]
|
||||
@@ -19,7 +30,7 @@ github_commit: "[P-Reinforce] Continuous Worker - Toss Front SDK 기반 외부
|
||||
- **파레토 법칙에 따른 인터페이스 공존 전략**: 좋은 SDK는 퍼사드를 통한 고수준(High-level) API뿐만 아니라 저수준(Low-level) API도 함께 제공합니다 [5]. 80%의 흔한 유즈케이스는 고수준 퍼사드 인터페이스로 간단히 해결하게 하고, 20%의 세밀한 제어가 필요한 경우에는 저수준 인터페이스를 탈출구(Escape Hatch)로 제공하여 개발자 경험과 SDK의 장기적인 호환성, 유연성을 동시에 확보합니다 [5-7].
|
||||
- **단일 책임 원칙(SRP)에 기반한 리소스 관리**: 구조적 안정성을 위해 "리소스를 만든 곳에서 닫는다"는 단일 책임 원칙을 적용했습니다 [8]. 명확한 클린업(Cleanup) 책임을 SDK 인터페이스 구조에 녹여냄으로써 이벤트나 리스너가 누수되는 것을 원천적으로 방지하고 효율적인 리소스 관리를 유도합니다 [7, 8].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -32,3 +43,52 @@ github_commit: "[P-Reinforce] Continuous Worker - Toss Front SDK 기반 외부
|
||||
*Last updated: 2026-04-18*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-5397E2
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-turborepo-기반-모노레포-워크플로우
|
||||
title: Turborepo 기반 모노레포 워크플로우
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-5397E2]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - [[Turborepo]] 기반 모노레포 워크플로우"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[Turborepo 기반 모노레포 워크플로우]]
|
||||
@@ -19,7 +30,7 @@ github_commit: "[P-Reinforce] Continuous Worker - [[Turborepo]] 기반 모노레
|
||||
- **[[Husky]]와 Lint-staged의 효율적 연동:** 루트 오케스트레이션 구성이 마련되면 Husky의 pre-commit 훅을 통해 루트의 `lint-staged`가 실행됩니다 [6]. 이 과정에서 오직 변경된 파일만 식별되며, 루트 설정의 매핑에 따라 개별 패키지 룰에 맞게 빠르고 정확하게 린팅됩니다 [6], [9].
|
||||
- **Turborepo 캐싱 통합:** 공통 ESLint 설정 패키지를 `turbo.json`의 전역 의존성(global dependency)으로 추가함으로써 설정이 변경될 때 모든 패키지의 캐시가 적절히 무효화(invalidate) 되도록 구성합니다 [6]. 이는 결과적으로 린트 결과를 효과적으로 캐싱하여 작업 속도를 비약적으로 향상시킵니다 [6], [9].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -32,3 +43,52 @@ github_commit: "[P-Reinforce] Continuous Worker - [[Turborepo]] 기반 모노레
|
||||
*Last updated: 2026-04-19*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-C5884C
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-turborepo-환경-구성
|
||||
title: Turborepo 환경 구성
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-C5884C]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - [[Turborepo]] 환경 구성"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[Turborepo 환경 구성]]
|
||||
@@ -19,7 +30,7 @@ github_commit: "[P-Reinforce] Continuous Worker - [[Turborepo]] 환경 구성"
|
||||
- **Husky 및 lint-staged 통합:** 루트 `package.json` 파일과 Husky의 `pre-commit` 훅을 연동하여, 코드가 커밋될 때 루트 설정에 따라 변경된 파일만 효율적으로 린팅하도록 구성합니다 [10].
|
||||
- **Turborepo 캐시 무효화 적용:** `turbo.json` 설정 내 전역 의존성(`globalDependencies`)에 ESLint 설정 패키지를 등록합니다 [10]. 이를 통해 중앙의 린팅 설정이 변경될 때마다 Turborepo가 모든 관련 패키지의 캐시를 정확히 무효화(invalidate)하도록 처리합니다 [10].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -32,3 +43,52 @@ github_commit: "[P-Reinforce] Continuous Worker - [[Turborepo]] 환경 구성"
|
||||
*Last updated: 2026-04-19*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-F2D6B7
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-turborepo를-활용한-다중-애플리케이션-및-라이브러리
|
||||
title: Turborepo를 활용한 다중 애플리케이션 및 라이브러리 통합 관리
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-F2D6B7]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - [[Turborepo]]를 활용한 다중 애플리케이션 및 라이브러리 통합 관리"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[Turborepo를 활용한 다중 애플리케이션 및 라이브러리 통합 관리]]
|
||||
@@ -25,7 +36,7 @@ github_commit: "[P-Reinforce] Continuous Worker - [[Turborepo]]를 활용한 다
|
||||
* **Turborepo 캐싱과 [[Husky]], lint-staged 통합 최적화**
|
||||
루트 오케스트레이션이 완성되면, `Husky`의 pre-commit 훅을 통해 `lint-staged`를 실행할 때 변경된 파일에 대해서만 빠르고 정확한 린팅을 수행할 수 있습니다 [8]. 추가적으로, `turbo.json` 설정 파일에 ESLint 구성 패키지를 글로벌 의존성(global dependency)으로 명시하면, 공통 설정이 변경될 때마다 Turborepo가 모든 패키지의 린트 캐시를 지능적으로 무효화합니다 [8]. 이를 통해 불필요한 중복 검사를 줄이고 린트 캐싱 성능을 극대화하여 전체적인 개발과 커밋 속도를 크게 단축할 수 있습니다 [9-11].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -38,3 +49,52 @@ github_commit: "[P-Reinforce] Continuous Worker - [[Turborepo]]를 활용한 다
|
||||
*Last updated: 2026-04-19*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,33 +1,25 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-2B5557
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
tags: [auto-reinforced]
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - Type Casting"
|
||||
id: wiki-20260508-type-casting-redir
|
||||
title: Type Casting
|
||||
category: Programming & Language
|
||||
status: merged
|
||||
redirect_to: Type_Casting
|
||||
canonical_id: Type_Casting
|
||||
aliases: []
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.92
|
||||
tags: [redirect]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-05-08
|
||||
github_commit: pending
|
||||
inferred_by: Claude Opus 4.7 (auto-merge 2026-05-08)
|
||||
---
|
||||
|
||||
# [[Type Casting]]
|
||||
# Type Casting
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> 타입 캐스팅(Type Casting) 또는 타입 단언(Type Assertion)은 개발자가 TypeScript 컴파일러보다 값의 타입에 대해 더 잘 알고 있을 때, 컴파일러에게 특정 값의 타입을 지정하도록 강제하는 방법입니다 [1]. 다른 언어의 타입 캐스트와 유사하지만 데이터의 구조를 재구성(restructuring)하거나 특별한 검사를 수행하지 않으며, 런타임 동작에 아무런 영향을 주지 않습니다 [1]. 이는 오로지 컴파일러에 의해서만 소비되며, 개발자가 값의 타입을 확신할 때 예외적으로 사용해야 합니다 [1, 2].
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
- **문법 및 작동 방식:** 타입 캐스팅은 주로 `as` 키워드를 사용하여 구현됩니다(예: `value as Type`) [1]. 이 방식은 JSX/TSX 환경에서 지원되는 유일한 문법입니다 [1]. 런타임 시 객체에 프로퍼티를 추가하거나 변형하지 않고, 단지 컴파일러에게 해당 값을 지정된 타입으로 취급하도록 지시합니다 [1, 3].
|
||||
- **주요 활용 사례:** DOM 조작을 수행하거나 런타임에서 별도로 검증을 마친 외부 데이터를 처리할 때 주로 사용됩니다 [2]. 또한 Branded Types(브랜디드 타입)이나 Strong/Super Opaque Types(강한/초강력 불투명 타입)을 정의하고 사용할 때, 런타임에 브랜드 속성을 추가하지 않고도 컴파일러에게 타입 구분을 강제하기 위해 명시적인 캐스팅이 필수적으로 활용됩니다 [3-6].
|
||||
- **타입 캐스팅의 위험성:** `as` 단언은 개발자가 잘못 판단한 경우에도 타입 에러를 우회하게 만들어 예기치 않은 버그를 초래할 수 있습니다 [2, 7]. 특히, `as`를 통한 캐스팅은 초과 속성 검사(Excess Property Checks)를 무시하기 때문에, 대상 타입에 명시되지 않은 초과 속성이 객체에 존재하더라도 컴파일러가 이를 허용하는 조용한 에러(silent errors)를 유발할 수 있습니다 [8].
|
||||
- **한계 및 안전한 대안:** 객체가 대상 타입과 근본적으로 호환되지 않을 경우(필수 속성 누락 등) TypeScript는 타입 캐스트를 거부합니다 [9]. 이 경우 값을 `unknown`으로 먼저 캐스팅한 후 다시 원하는 타입으로 캐스팅하여 우회할 수 있으나, 이는 권장되지 않는 패턴입니다 [9]. 맹목적인 캐스팅보다는 런타임에 값을 검증하는 타입 가드(Type Predicates/Guards) 함수나, 구체적인 타입을 유지하면서도 초과 속성 검사를 강제할 수 있는 `satisfies` 연산자를 활용하는 것이 더 안전한 설계입니다 [9-12].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
- **Related Topics:** Type Assertion, Type Guards, [[Satisfies [[Opera]]tor]], Branded Types, unknown
|
||||
- **Projects/Contexts:** DOM Manipulation, Type[[ system]] Design
|
||||
- **Contradictions/Notes:** 소스에서는 `as` 키워드를 사용한 타입 캐스팅이 타입 에러를 우회하는 강력한 수단이지만, 초과 속성 검사를 건너뛰어 안전성을 훼손하므로, 구조적 엄격함을 유지해야 하는 데이터 변환 및 매핑 상황에서는 캐스팅보다 `satisfies` 키워드를 사용하는 것을 우선적으로 권장합니다 [8, 9].
|
||||
|
||||
---
|
||||
*Last updated: 2026-04-18*
|
||||
> [!IMPORTANT]
|
||||
> 이 문서는 P-Reinforce Phase 2 자동 MERGE에 의해 **[[Type_Casting]]**로 통합되었습니다.
|
||||
|
||||
---
|
||||
*Redirected to: [[Type_Casting]]*
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
---
|
||||
id: wiki-2026-0508-type-theory
|
||||
title: Type Theory
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AI-054]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.96
|
||||
tags: [type theory, formal verification, type system, compiler]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-06-XX
|
||||
github_commit: "[P-Reinforce] Processed Type Theory."
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[Type Theory]] (타입 이론)
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> 프로그래밍 언어의 타입 시스템을 수학적 공리(Axiom)와 논리학에 기반하여 분석하고, 프로그램의 안전성과 정확성을 컴파일 타임에 증명하는 학문이다.
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
- **정의:** 타입을 단순히 데이터의 분류를 넘어, 시스템이 가질 수 있는 '속성'과 '규칙'으로 바라보는 접근법이다. 프로그램의 정적 분석을 수학적 증명 과정으로 확장한다.
|
||||
- **주요 개념:**
|
||||
1. **타입 추론 (Type Inference):** 코드를 작성할 때 타입을 명시하지 않아도 컴파일러가 타입 규칙에 따라 자동으로 타입을 유추하는 능력.
|
||||
2. **계산 가능성(Computability) 및 안전성:** 타입 이론의 궁극적 목표는 프로그램이 어떤 조건에서도 예측 불가능한 오류 없이 동작함을 수학적으로 증명하는 것이다 (Formal Verification).
|
||||
3. **Advanced Features:** 고급 언어 기능인 추상 데이터 타입, 범주론적 접근 등은 컴파일러 설계 자체를 학문적으로 다룬다.
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 완벽한 타입 안전성(Type Safety)을 달성하는 것은 매우 어려우며, 실제 개발에서는 '실용적인 타협점' (예: Runtime Validation, Zod 사용)이 필요하다.
|
||||
- **정책 변화:** 타입 시스템은 언어 차원의 기능뿐만 아니라, 도메인 모델링(DDD)의 규칙을 코드로 강제하는 도구로 활용되어 그 가치가 극대화되고 있다.
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
- Parent: Type Safety
|
||||
- Related: Formal Methods in Software Engineering , Algebraic-Data-Types , TypeScript Type System
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-9DE40A
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-typescript-타입-시스템-및-인터페이스-설계
|
||||
title: TypeScript 타입 시스템 및 인터페이스 설계
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-9DE40A]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - TypeScript 타입 시스템 및 인터페이스 설계"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[TypeScript 타입 시스템 및 인터페이스 설계]]
|
||||
@@ -28,7 +39,7 @@ github_commit: "[P-Reinforce] Continuous Worker - TypeScript 타입 시스템
|
||||
* **불변성과 브랜디드 타입(Branded Types)을 통한 데이터 오염 방지**
|
||||
`readonly` 수식어는 객체나 배열이 런타임 성능 저하 없이 컴파일 시점에 불변성을 유지하도록 보장하여 의도치 않은 상태 변경을 차단합니다 [8, 33-35]. 또한, 구조적 타이핑의 한계인 "기본 타입에의 집착(Primitive Obsession)"을 해결하기 위해 고유한 표식(`__brand`)을 부여하는 브랜디드 타입 기법을 적용할 수 있습니다 [7, 9, 36, 37]. 이는 ID와 일반 문자열이 혼용되는 것을 컴파일러 수준에서 강력히 차단합니다 [9, 37, 38].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -41,3 +52,52 @@ github_commit: "[P-Reinforce] Continuous Worker - TypeScript 타입 시스템
|
||||
*Last updated: 2026-04-18*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-2609F8
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-typescript-타입-시스템을-활용한-내부-로직-보호-
|
||||
title: TypeScript 타입 시스템을 활용한 내부 로직 보호 및 데이터 검증
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-2609F8]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - TypeScript 타입 시스템을 활용한 내부 로직 보호 및 데이터 검증"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[TypeScript 타입 시스템을 활용한 내부 로직 보호 및 데이터 검증]]
|
||||
@@ -28,7 +39,7 @@ github_commit: "[P-Reinforce] Continuous Worker - TypeScript 타입 시스템을
|
||||
* **`[[readonly]]`를 통한 불변성(Immutability) 확립**
|
||||
데이터 무결성을 보호하기 위해 `readonly` 수식어를 사용하여 컴파일 타임에 속성값의 변경을 원천적으로 막을 수 있습니다 [29-31]. 얕은 수준(Shallow)의 보호를 넘어서기 위해 재귀적 유틸리티 타입인 `[[DeepReadonly]]`를 적용하면, 복잡하게 중첩된 객체 트리 구조 내부의 모든 상태가 예기치 않게 오염되는 것을 완벽히 차단할 수 있습니다 [31-33].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -41,3 +52,52 @@ github_commit: "[P-Reinforce] Continuous Worker - TypeScript 타입 시스템을
|
||||
*Last updated: 2026-04-18*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-348B57
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-typescript의-제어-흐름-분석-및-상태-관리-패턴
|
||||
title: TypeScript의 제어 흐름 분석 및 상태 관리 패턴
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-348B57]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - TypeScript의 제어 흐름 분석 및 상태 관리 패턴"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[TypeScript의 제어 흐름 분석 및 상태 관리 패턴]]
|
||||
@@ -28,7 +39,7 @@ github_commit: "[P-Reinforce] Continuous Worker - TypeScript의 제어 흐름
|
||||
* **ts-pattern과 분기 처리 최적화**
|
||||
외부 라이브러리인 `ts-pattern`을 사용하면 패턴 매칭을 통해 복잡한 조건부 분기를 선언적으로 작성하고 `.exhaustive()` 메서드를 통해 처리되지 않은 케이스를 안전하게 감지할 수 있습니다 [17]. 하지만 `ts-pattern`은 내부적으로 복잡한 타입 추론과 객체 생성을 수반하므로 자바스크립트의 기본 제어 구조(`if/else`, `switch`)에 비해 연산 성능이 저하될 수 있으며, 지나치게 단순한 로직에 사용할 경우 오버엔지니어링이 될 수 있어 상황에 맞는 유연한 도입이 필요합니다 [17-19].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -41,3 +52,52 @@ github_commit: "[P-Reinforce] Continuous Worker - TypeScript의 제어 흐름
|
||||
*Last updated: 2026-04-18*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-696914
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-union-types
|
||||
title: Union Types
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-696914]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - Union Types"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[Union Types]]
|
||||
@@ -19,7 +30,7 @@ github_commit: "[P-Reinforce] Continuous Worker - Union Types"
|
||||
- **완전성 검사 (Exhaustiveness Checking)**: 식별 가능한 유니온을 `switch` 문으로 분기 처리할 때, `never` 타입을 활용해 모든 분기를 안전하게 처리했는지 컴파일러에게 검사받을 수 있습니다 [17-19]. 만약 유니온 타입에 새로운 변형(Variant)이 추가되었는데 `switch` 문에서 처리하지 않았다면, `never` 타입 검사에 걸려 컴파일 에러가 발생하므로 누락을 방지할 수 있습니다 [18-20].
|
||||
- **Type Brands의 대안**: 값의 종류가 미리 정해져 있는 상황이라면, 복잡한 Branded Types를 사용하는 것보다 알려진 값들을 Union Types로 구성하는 것이 값의 종류를 정확히 설명하는 데 유리할 수 있습니다 [21, 22].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -32,3 +43,52 @@ github_commit: "[P-Reinforce] Continuous Worker - Union Types"
|
||||
*Last updated: 2026-04-18*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-18F9C4
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-v8-엔진-힙-아키텍처-및-로그-분석
|
||||
title: V8 엔진 힙 아키텍처 및 로그 분석
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-18F9C4]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - V8 엔진 힙 아키텍처 및 로그 분석"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[V8 엔진 힙 아키텍처 및 로그 분석]]
|
||||
@@ -30,7 +41,7 @@ github_commit: "[P-Reinforce] Continuous Worker - V8 엔진 힙 아키텍처 및
|
||||
* **세부 로그 (--trace-gc-verbose / --trace-gc-nvp):** 각 힙 공간(New, Old, Large Object 등)의 사용량과 시스템에 커밋된 양을 분리하여 상세히 보여줍니다. 만약 메이저 GC 이후에도 Old space의 Used 영역이 점진적으로 계속 증가한다면 전형적인 메모리 누수 증상으로 판단합니다 [30, 32].
|
||||
* **프로파일링 도구 연계:** `--heap-prof` 플래그나 크롬 DevTools의 [[Allocation Timeline]]을 활용해 주기적인 힙 스냅샷을 찍고 분석할 수 있습니다. 할당 후 수집되지 않아 파란색으로 남은 타임라인 막대나, DevTools의 'Retainers' 패널을 역추적함으로써 어떤 루트 객체가 해제되어야 할 메모리를 쥐고 있는지([[Retaining Path]]s) 정확히 파악 가능합니다 [33-36].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -43,3 +54,52 @@ github_commit: "[P-Reinforce] Continuous Worker - V8 엔진 힙 아키텍처 및
|
||||
*Last updated: 2026-04-19*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-221751
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-v8-엔진-힙-아키텍처
|
||||
title: V8 엔진 힙 아키텍처
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-221751]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - V8 엔진 힙 아키텍처"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[V8 엔진 힙 아키텍처]]
|
||||
@@ -32,7 +43,7 @@ github_commit: "[P-Reinforce] Continuous Worker - V8 엔진 힙 아키텍처"
|
||||
* 64비트 시스템에서 메모리 사용량을 줄이고 보안을 강화하기 위해, V8은 모든 힙 객체를 4GB 크기의 연속적인 '메모리 케이지(Memory Cage)' 구역 내에 가둡니다 [20-22].
|
||||
* 객체의 포인터는 완전한 64비트 주소가 아닌 케이지의 기본 주소(Base Address)로부터의 32비트 오프셋으로 압축되어 저장됩니다 [21, 22]. 이로 인해 힙 메모리는 물리적 RAM의 크기와 무관하게 4GB의 엄격한 상한선을 가집니다 [20, 21].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -45,3 +56,52 @@ github_commit: "[P-Reinforce] Continuous Worker - V8 엔진 힙 아키텍처"
|
||||
*Last updated: 2026-04-19*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,33 +1,25 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-7B9E16
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
tags: [auto-reinforced]
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - VR Sickness"
|
||||
id: wiki-20260508-vr-sickness-redir
|
||||
title: VR Sickness
|
||||
category: Programming & Language
|
||||
status: merged
|
||||
redirect_to: VR_Sickness
|
||||
canonical_id: VR_Sickness
|
||||
aliases: []
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.92
|
||||
tags: [redirect]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-05-08
|
||||
github_commit: pending
|
||||
inferred_by: Claude Opus 4.7 (auto-merge 2026-05-08)
|
||||
---
|
||||
|
||||
# [[VR Sickness]]
|
||||
# VR Sickness
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> VR 멀미(VR Sickness, 또는 모션 병, 사이버 멀미)는 헤드마운트 디스플레이(HMD)를 비롯한 가상현실 기기를 사용할 때 발생하는 메스꺼움, 방향 감각 상실, 시각적 장애 등의 부작용을 의미합니다 [1], [2]. 이는 주로 시각적 경험과 신체적 전정 감각 간의 충돌로 인해 발생하며 [3], 사용자의 실재감(Presence)을 저해하고 작업 수행 능력과 즐거움을 크게 감소시키는 주요 요인입니다 [2].
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
- **발생 원인:** VR 멀미의 가장 유력한 원인으로는 가상 세계와 현실 세계의 불일치에서 오는 **시각-전정 충돌(visual-vestibular conflict)**이 꼽힙니다 [3]. 시각적으로 인지되는 환경과 실제 신체적 감각이 일치하지 않을 때 감각 통합에 교란이 일어나며 발생합니다 [3]. 또한, HMD의 특성상 화면의 초점과 안구의 움직임이 어긋나는 **폭주-조절 불일치([[Vergence-Accommodation Conflicts]])** 역시 안구 운동 증상 및 피로를 유발하는 핵심 원인입니다 [3].
|
||||
- **주요 증상 및 파급 효과:** 사용자는 메스꺼움, 방향 감각 상실, 시각적 장애 외에도 피로, 발한, 두통, 눈의 통증 및 복시 등을 겪을 수 있습니다 [2], [4], [5]. 이러한 증상들은 사용자가 가상 세계에 몰입하는 **실재감을 깨뜨리고**, 동기 부여와 즐거움을 떨어뜨리며 작업 수행 능력을 저하시킵니다 [2]. VR 멀미로 인한 실험 중단율(dropout rate)은 평균 약 15.6%에 달하며 [2], [6], 어떤 사용자는 VR을 종료한 후 최대 24시간 이후에 나타나는 지연된 증상(latent symptoms)을 경험하기도 합니다 [7].
|
||||
- **영향 요인:** **콘텐츠의 특성**(카메라 이동, 사용자 움직임, 시각적 복잡성 등)과 **기기의 특성**이 멀미 발생과 심각도에 중요한 역할을 합니다 [8], [9]. 특히 노출 시간은 증상 발생의 핵심 요소로, 장시간 노출될수록 심각한 증상을 보고할 확률이 높아집니다 [10]. 이와 함께 연령, HMD의 착용감, 자세 안정성, 개인의 멀미 감수성 등 **개인차(Individual differences)**도 중요한 영향을 미칩니다 [11].
|
||||
- **완화 전략:** 멀미 증상을 피하기 위해 자주 휴식을 취하거나, 짧고 반복적인 노출을 통해 VR 환경에 적응(습관화)하는 전략이 도움이 될 수 있습니다 [11]. 장시간 노출 전에 짧게 체험해 보는 것이 권장되며, 증상이 나타나면 즉시 사용을 중단하고 회복될 때까지 기다려야 합니다 [11], [12].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
- **Related Topics:** Visual-Vestibular Conflict, Vergence-Accommodation Conflict, Presence, Head-Mounted Displays (HMD)
|
||||
- **Projects/Contexts:** VR [[Exergaming]] (예: [[Beat Saber]]를 활용한 VR 노출 시간 및 후유증 연구 [13], [14])
|
||||
- **Contradictions/Notes:** 일반적으로 VR 노출 시간이 길어질수록 증상이 심해진다고 알려져 있으나, 한 연구 검토에서는 10~20분 노출된 경우보다 20분 이상 노출된 연구에서 평균적으로 덜 심각한 증상이 보고되기도 했습니다. 이는 노출 시간 자체의 문제라기보다는 각 연구에 사용된 VR 콘텐츠의 유형(예: 360도 비디오, 게임, 정적 풍경 등) 분포 차이로 인한 결과일 수 있습니다 [10].
|
||||
|
||||
---
|
||||
*Last updated: 2026-04-19*
|
||||
> [!IMPORTANT]
|
||||
> 이 문서는 P-Reinforce Phase 2 자동 MERGE에 의해 **[[VR_Sickness]]**로 통합되었습니다.
|
||||
|
||||
---
|
||||
*Redirected to: [[VR_Sickness]]*
|
||||
|
||||
@@ -1,35 +1,25 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-BD2336
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
tags: [auto-reinforced]
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - VR 멀미 ([[VR Sickness]])"
|
||||
id: wiki-20260508-vr-vr-sickness--redir
|
||||
title: VR 멀미 (VR Sickness)
|
||||
category: Programming & Language
|
||||
status: merged
|
||||
redirect_to: VR 멀미(VR sickness)
|
||||
canonical_id: VR 멀미(VR sickness)
|
||||
aliases: []
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.92
|
||||
tags: [redirect]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-05-08
|
||||
github_commit: pending
|
||||
inferred_by: Claude Opus 4.7 (auto-merge 2026-05-08)
|
||||
---
|
||||
|
||||
# [[VR 멀미 (VR Sickness)]]
|
||||
# VR 멀미 (VR Sickness)
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> VR 멀미(VR Sickness 또는 Cybersickness)는 헤드마운트 디스플레이(HMD)를 사용하는 가상현실(VR) 경험 중 다수의 사용자가 겪는 부정적인 상태로, 메스꺼움, 방향 감각 상실, 시각적 장애 등의 증상을 동반합니다 [1, 2]. 이러한 멀미 증상은 가상현실에서의 몰입감(presence), 동기 부여, 즐거움 및 과제 수행 능력을 저하시키며, 결과적으로 평균 15.6%의 높은 중도 포기율(dropout rate)을 초래하는 주요 원인이 됩니다 [2].
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
- **발생 원인 및 이론:** VR 멀미의 정확한 병인에 대해서는 아직 학계의 완전한 합의가 이루어지지 않았으나, 가장 유력한 이론은 가상 세계와 현실 세계 간의 '감각 불일치(mismatch)' 현상입니다 [3, 4]. 특히 사용자의 시각적 경험과 신체적/전정 기관의 경험이 일치하지 않을 때 발생하는 시각-전정 갈등(visual-vestibular conflict)이 주요 원인으로 꼽힙니다 [3]. 또한, HMD 사용 시 발생하는 폭주-조절 갈등([[Vergence-Accommodation Conflicts]])으로 인해 시각적 피로와 같은 안구 운동 관련 증상이 유발될 수 있습니다 [3].
|
||||
- **주요 증상:** VR 멀미의 증상은 크게 메스꺼움(nausea), 안구 운동 이상(oculomotor symptoms: 눈의 피로, 초점 맞추기 어려움 등), 방향 감각 상실(disorientation: 현기증, 어지러움) 등 3가지 범주로 나뉩니다 [5]. 신체 활동이 수반되는 VR 엑서게임(Exergame)을 플레이할 경우, 피로, 땀, 방향 감각 상실 등 고강도 유산소 운동에서 나타나는 증상과 VR 멀미 증상이 겹쳐 이 둘을 구별하기 어려울 수 있습니다 [6].
|
||||
- **영향을 미치는 요인:**
|
||||
- **콘텐츠 및 기기:** 화면의 높은 시각적 움직임(visual motion), 장면의 복잡성, 이동 방식(locomotion) 및 몰입감 등은 멀미를 악화시키는 주요 요소이며, 기기와 콘텐츠 특성이 멀미의 발현 및 진행에 핵심적인 역할을 합니다 [7, 8].
|
||||
- **개인차:** 사용자의 연령, HMD 착용 상태(fit), 자세 안정성, 그리고 사용자가 평소 가지고 있는 멀미에 대한 감수성(susceptibility) 등 개인의 특성도 멀미 발생 가능성에 상당한 영향을 미칩니다 [9].
|
||||
- **노출 시간 및 회복:** VR 노출 시간이 길어질수록 사용자는 더 심각한 멀미 증상을 보고하는 경향이 있습니다 [7, 10]. 사용 후 나타나는 후유증의 지속 시간은 짧게는 10분에서 길게는 4시간 이상까지 다양하며, 증상을 경험하는 사용자는 즉각 VR 사용을 중단하고 완전히 회복될 때까지 휴식을 취해야 합니다 [11]. 또한, 짧은 노출 시간만으로도 심한 멀미를 겪는 사용자는 긴 시간 노출될 경우 유사하거나 더 심각한 증상을 경험할 가능성이 매우 높습니다 [9, 12].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
- **Related Topics:** [[시각-전정 갈등 (Visual-Vestibular Conflict)]], [[폭주-조절 갈등 (Vergence-Accommodation Conflict)]], [[몰입감 (Presence)]], [[헤드마운트 디스플레이 (HMD)]]
|
||||
- **Projects/Contexts:** [[VR 엑서게임 (VR [[Exergaming]])]]
|
||||
- **Contradictions/Notes:** VR 멀미의 정확한 발병 원인(etiology)에 대해서는 학계 내에서 여전히 일치된 합의가 없습니다 [3, 4]. 덧붙여, VR 엑서게임 환경에서는 멀미 증상이 격렬한 신체 운동으로 인해 유발되는 자연스러운 신체 반응과 중복되기 때문에 정확한 멀미를 식별해 내는 것이 까다로울 수 있습니다 [6].
|
||||
|
||||
---
|
||||
*Last updated: 2026-04-19*
|
||||
> [!IMPORTANT]
|
||||
> 이 문서는 P-Reinforce Phase 2 자동 MERGE에 의해 **[[VR 멀미(VR sickness)]]**로 통합되었습니다.
|
||||
|
||||
---
|
||||
*Redirected to: [[VR 멀미(VR sickness)]]*
|
||||
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-926D42
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-vr-멀미-vr-sickness
|
||||
title: VR 멀미(VR sickness)
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-926D42]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - VR 멀미([[VR Sickness]])"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[VR 멀미(VR sickness)]]
|
||||
@@ -27,7 +38,7 @@ github_commit: "[P-Reinforce] Continuous Worker - VR 멀미([[VR Sickness]])"
|
||||
* **완화 및 회복 전략:**
|
||||
VR 사용 후 후유증이 기저 수준으로 회복되는 데 걸리는 시간은 증상의 초기 심각도에 따라 다릅니다 [12]. 일반적인 경우, VR 노출 후 약 40분의 대기 시간을 가지면 증상이 정상 수준으로 돌아옵니다 [8, 13]. 멀미를 완화하기 위해서는 가상 세계의 시각적 움직임과 사용자의 실제 신체 움직임을 일치시키고, 장시간 사용 전 짧은 세션으로 테스트하거나 자주 휴식을 취하여 적응(habituation)을 유도하는 전략이 권장됩니다 [10, 11, 13].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -40,3 +51,52 @@ github_commit: "[P-Reinforce] Continuous Worker - VR 멀미([[VR Sickness]])"
|
||||
*Last updated: 2026-04-19*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,33 +1,25 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-122E42
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
tags: [auto-reinforced]
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - Vergence-Accommodation Conflicts"
|
||||
id: wiki-20260508-vergence-accommodation-conflicts-redir
|
||||
title: Vergence Accommodation Conflicts
|
||||
category: Programming & Language
|
||||
status: merged
|
||||
redirect_to: Vergence-Accommodation_Conflicts
|
||||
canonical_id: Vergence-Accommodation_Conflicts
|
||||
aliases: []
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.92
|
||||
tags: [redirect]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-05-08
|
||||
github_commit: pending
|
||||
inferred_by: Claude Opus 4.7 (auto-merge 2026-05-08)
|
||||
---
|
||||
|
||||
# [[Vergence-Accommodation Conflicts]]
|
||||
# Vergence Accommodation Conflicts
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> Vergence-Accommodation Conflicts(양안 폭주-초점 조절 불일치)는 주로 헤드마운트 디스플레이(HMD) 사용 시 발생하는 현상으로, 자연스러운 시각 환경에서 피드백 루프를 통해 함께 작동하는 안구 운동 기능인 '양안 폭주(Vergence)'와 '초점 조절(Accommodation)'이 서로 분리될 때 발생합니다 [1, 2]. 이 충돌은 깊이 지각을 위한 망막 단서에 불확실성을 초래하여 두통, 눈의 통증, 피로, 복시 등의 안구 운동 증상을 유발할 수 있습니다 [1, 2]. 이러한 불일치가 가상현실(VR) 멀미를 유발하는 직접적인 원인인지, 아니면 단순히 멀미 증상을 악화시키는 요인인지는 아직 명확하게 밝혀지지 않았습니다 [3].
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
- **자연스러운 시각 처리 메커니즘:** 양안 폭주(Vergence)와 초점 조절(Accommodation)은 인간이 깊이 단서를 정확하게 인지하고 사용하는 데 필수적인 안구 운동 기능입니다 [3]. 자연스러운 시청 환경에서 이 두 가지 기능은 피드백 루프 안에서 함께 작동하므로, 하나의 메커니즘이 변화하면 다른 메커니즘도 동시에 변화하게 됩니다 [2].
|
||||
- **HMD 환경에서의 불일치(Decoupling) 발생:** 가상현실(VR) 경험을 제공하는 헤드마운트 디스플레이(HMD)를 착용할 경우, 정상적으로 함께 작동해야 할 양안 폭주와 초점 조절 기능이 서로 분리(decoupled)되는 현상이 발생하며, 이를 Vergence-Accommodation Conflicts라고 부릅니다 [2].
|
||||
- **신체적 부작용 및 안구 운동 증상:** 이러한 시각적 불일치는 사용자의 깊이 지각(depth perception)과 관련된 망막 단서에 불확실성을 유발합니다 [2]. 결과적으로 사용자는 두통, 눈의 통증, 피로감, 그리고 사물이 두 개로 보이는 복시(double vision)와 같은 동반 증상을 겪게 되며, 전반적인 안구 운동 증상(oculomotor symptoms)이 증가하게 됩니다 [1, 2].
|
||||
- **VR 멀미([[VR Sickness]])와의 관계:** Vergence-Accommodation Conflicts가 심각한 시각적 불편함을 초래함에도 불구하고, 이것이 특정 개인에게 발생하는 VR 멀미의 직접적인 원인인지, 아니면 이미 발생한 멀미 증상의 심각성을 가중시키는(compounds) 역할만 하는 것인지는 아직 불분명합니다 [3].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
- **Related Topics:** Oculomotor Functions, Head-Mounted Displays (HMDs), [[VR Sickness]], Depth Perception
|
||||
- **Projects/Contexts:** Virtual Reality (VR) [[Exergaming]]
|
||||
- **Contradictions/Notes:** 소스에 따르면 Vergence-Accommodation Conflicts가 특정 사용자에게서 나타나는 VR 멀미(VR sickness)의 직접적인 발병 원인인지, 혹은 멀미 증상을 악화시키는 보조 요인인지에 대한 인과관계는 아직 명확하지 않다고 언급되어 있습니다 [3].
|
||||
|
||||
---
|
||||
*Last updated: 2026-04-19*
|
||||
> [!IMPORTANT]
|
||||
> 이 문서는 P-Reinforce Phase 2 자동 MERGE에 의해 **[[Vergence-Accommodation_Conflicts]]**로 통합되었습니다.
|
||||
|
||||
---
|
||||
*Redirected to: [[Vergence-Accommodation_Conflicts]]*
|
||||
|
||||
@@ -0,0 +1,91 @@
|
||||
---
|
||||
id: wiki-2026-0508-war-yes
|
||||
title: War Yes
|
||||
category: "Programming & Tools"
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: []
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.92
|
||||
tags: [uncategorized]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-05-08
|
||||
github_commit: pending
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# War-Yes
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
War-Yes(war-yes.com)는 실시간 전술 게임 [[WARNO]]의 유닛 데이터를 브라우징, 검색, 필터링 및 비교할 수 있도록 유저가 제작한 웹사이트입니다 [1]. 인게임 유닛 카드에서 제공하는 스탯뿐만 아니라 게임 내에서는 확인할 수 없는 숨겨진 수치(hidden values)를 제공하여 커뮤니티의 데이터 분석을 돕습니다 [2]. 이 도구를 통해 플레이어들은 명중률 곡선 시각화 및 세부 메커니즘 정보를 활용해 유닛 간의 상대적인 성능을 정밀하게 비교할 수 있습니다 [3].
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
* **웹사이트 개발 및 주요 기능:** War-Yes는 게임 내 제한적인 유닛 비교 기능의 불편함을 해소하기 위해 만들어졌습니다 [1]. 개발자는 AI 텍스트 파서를 이용해 유닛 카드 데이터를 추출했으며, 모바일 환경에서도 쉽게 유닛 데이터를 이해하고 유닛들을 차트로 비교할 수 있도록 강력한 검색 및 필터링 기능을 제공합니다 [1, 4].
|
||||
* **숨겨진 스탯(Hidden Stats) 및 메커니즘 분석:** 인게임 아머리(Armory) 화면에서는 볼 수 없는 게임 엔진 내부의 수치를 파싱하여 제공합니다 [2, 5]. 대표적으로 숨겨진 명중률 곡선을 시각화하여 보여주거나 [3], ECM 및 명중률 계산 공식 등 게임 밸런스에 직결되는 지식들을 제공하여 유저들이 데이터를 기반으로 전술적 분석을 할 수 있게 지원합니다 [6, 7].
|
||||
* **커뮤니티 생태계 역할:** War-Yes는 단순한 데이터베이스를 넘어 전용 Discord 서버를 운영하고 있습니다 [8]. 이 공간에서 캐주얼하게 게임을 즐기는 유저들이 모여 사이트의 버그나 새로운 기능에 대한 피드백을 주고받으며, 게임 생태계에 적극적으로 참여하고 있습니다 [8, 9].
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
- **Related Topics:** [[Warno-Armory]], [[숨겨진 수치 (Hidden Stats)]]
|
||||
- **Projects/Contexts:** [[WARNO 커뮤니티 데이터 분석 및 파싱 도구]]
|
||||
- **Contradictions/Notes:** 한 유저의 경험에 따르면, 과거 War-Yes 사이트에는 장갑에 대한 고폭탄(HE) 데미지 변환과 같은 세부 메커니즘 정보가 있었으나 최근 사이트가 개편되면서 상당수의 정보가 누락된 것으로 보인다는 지적이 있습니다 [10].
|
||||
|
||||
---
|
||||
*Last updated: 2026-04-28*
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
|
||||
- **과거 데이터와의 충돌:** 없음
|
||||
- **정책 변화:** 없음
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
+64
-4
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-EBB42F
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-web-worker와-sharedarraybuffer를-이
|
||||
title: Web Worker와 SharedArrayBuffer를 이용한 실제 고부하 병렬 처리 구현체 (실패 성공 포함)
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-EBB42F]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - Web Worker와 SharedArrayBuffer를 이용한 실제 고부하 병렬 처리 구현체 (실패_성공 포함)"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[Web Worker와 SharedArrayBuffer를 이용한 실제 고부하 병렬 처리 구현체 (실패_성공 포함)]]
|
||||
@@ -15,7 +26,7 @@ github_commit: "[P-Reinforce] Continuous Worker - Web Worker와 SharedArrayBuffe
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
소스에 관련 정보가 부족합니다.
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -28,3 +39,52 @@ github_commit: "[P-Reinforce] Continuous Worker - Web Worker와 SharedArrayBuffe
|
||||
*Last updated: 2026-04-19*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,32 +1,25 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-2240C5
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
tags: [auto-reinforced]
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - Write Barrier"
|
||||
id: wiki-20260508-write-barrier-redir
|
||||
title: Write Barrier
|
||||
category: Programming & Language
|
||||
status: merged
|
||||
redirect_to: Write_Barrier
|
||||
canonical_id: Write_Barrier
|
||||
aliases: []
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.92
|
||||
tags: [redirect]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-05-08
|
||||
github_commit: pending
|
||||
inferred_by: Claude Opus 4.7 (auto-merge 2026-05-08)
|
||||
---
|
||||
|
||||
# [[Write Barrier]]
|
||||
# Write Barrier
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> Write Barrier(쓰기 장벽)는 가비지 컬렉션(GC) 시스템에서 객체에 새로운 포인터(참조)가 저장될 때마다 이를 감지하고 기록하기 위해 실행되는 짧은 코드 조각입니다 [1]. 주로 구 세대(Old-space) 객체가 신규 세대(New-space) 객체를 참조하는 것을 추적하거나, 점진적/동시성 마킹(Incremental/Concurrent marking) 중에 변경된 객체 그래프를 추적하는 데 필수적으로 사용됩니다 [1-3]. 이를 통해 가비지 컬렉터가 메모리 힙 전체를 무거운 비용으로 스캔하지 않고도 살아있는 객체를 정확하고 빠르게 식별할 수 있도록 돕습니다 [4, 5].
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
* **세대 간 참조 추적 (Old-to-New Pointers):** V8 엔진이 신규 공간(New-space)을 스캐빈지([[Scavenge]]) 방식으로 수집할 때, 구 공간(Old-space)의 객체가 신규 공간 객체를 가리키는 포인터를 추적해야 합니다 [4]. 전체 구 공간을 탐색하는 것은 매우 큰 비용을 수반하므로, 객체의 참조가 저장될 때 쓰기 장벽(Write barrier) 코드가 실행되어 구 공간에서 신규 공간으로 향하는 포인터를 찾아내어 '스토어 버퍼(Store buffer)' 등에 그 위치를 기록해 둡니다 [1, 5].
|
||||
* **점진적 및 동시성 마킹(Marking) 중의 참조 무결성 유지:** 점진적(Incremental) 또는 동시성(Concurrent) 마킹 과정에서는 마킹이 진행되는 동안 자바스크립트 실행 등에 의해 객체 그래프가 변경될 수 있습니다 [2]. 이미 GC에 의해 스캔이 완전히 끝난 객체(Black object)가 새롭게 생성되거나 아직 스캔되지 않은 객체(White object)를 참조하게 될 경우, 살아있는 객체가 죽은 것으로 오인될 위험이 있습니다 [2]. 쓰기 장벽은 이러한 'Black→White' 포인터 생성을 감지하여, Black 객체를 다시 재탐색 상태(Grey object)로 변경하고 마킹 데크(Deque)로 돌려보내 정상적인 추적이 완료되게 만듭니다 [2, 3, 6].
|
||||
* **성능 오버헤드와 런타임 최적화:** 포인터가 변경될 때마다 추가 명령(Instruction)을 실행해야 하므로 시스템에 어느 정도의 비용(오버헤드)이 발생하지만, 일반적으로 메모리 쓰기 작업이 읽기 작업보다 훨씬 적게 발생하므로 관리 가능한 수준입니다 [1]. V8 엔진에서는 크랭크샤프트(Crankshaft)와 같은 컴파일러가 최적화를 통해 객체가 스택에 할당되거나 신규 공간에만 존재함을 확명할 수 있는 경우, 해당 저장 작업에서 쓰기 장벽을 생략하여 성능을 개선합니다 [7].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
- **Related Topics:** [[Garbage Collection]], Store Buffer, [[Incremental Marking]], Concurrent Marking, [[Scavenge]]
|
||||
- **Projects/Contexts:** [[V8 [[JavaScript]] Engine]], IBM E[[CLIP]]se OpenJ9
|
||||
- **Contradictions/Notes:** 소스에 관련 정보가 부족합니다.
|
||||
|
||||
---
|
||||
*Last updated: 2026-04-19*
|
||||
> [!IMPORTANT]
|
||||
> 이 문서는 P-Reinforce Phase 2 자동 MERGE에 의해 **[[Write_Barrier]]**로 통합되었습니다.
|
||||
|
||||
---
|
||||
*Redirected to: [[Write_Barrier]]*
|
||||
|
||||
@@ -1,13 +1,99 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-REDIRECT-RV-003
|
||||
id: wiki-2026-0508-zod-런타임-유효성-검사-통합
|
||||
title: Zod 런타임 유효성 검사 통합
|
||||
category: Redirect
|
||||
status: merged
|
||||
duplicate_of: "[[Runtime_Validation]]"
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-REDIRECT-RV-003]
|
||||
duplicate_of: Runtime_Validation
|
||||
source_trust_level: A
|
||||
confidence_score: 0.92
|
||||
tags: [uncategorized]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-05-08
|
||||
github_commit: pending
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[Zod 런타임 유효성 검사 통합]]
|
||||
|
||||
> [!NOTE]
|
||||
> 본 문서는 **[[Runtime_Validation]]**으로 통합되었습니다. 🫡🐟
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
|
||||
> Zod는 TypeScript 친화적 스키마 정의 라이브러리로, 런타임 유효성 검사와 컴파일 타임 타입 추론을 한 스키마에서 동시에 제공해 외부 입력 신뢰성과 DX를 동시에 끌어올린다.
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
|
||||
**추출된 패턴:** "한 번 스키마 정의 → 타입 + 검증 + 변환" — 타입과 런타임 검증의 단일 출처.
|
||||
|
||||
**세부 내용:**
|
||||
- 정의: `z.object({ ... })` → 타입 `z.infer<typeof schema>`.
|
||||
- 검증: `schema.parse(input)` (throw) / `safeParse` (Result).
|
||||
- 변환: `.transform()` 으로 정규화·변형.
|
||||
- 통합: tRPC, React Hook Form, Server Actions, Next.js.
|
||||
- 대안: Yup, Joi, Valibot, ArkType.
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** merged
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
|
||||
- **과거 데이터와의 충돌:** 없음
|
||||
- **정책 변화:** 없음
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
|
||||
- **Parent:** [[10_Wiki/Topics]]
|
||||
- **Related:** *(TODO: 최소 2개)*
|
||||
- **Opposite / Trade-off:** *(TODO)*
|
||||
- **Raw Source:** 직접 입력
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-725C86
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-zod-파싱과-브랜디드-타입을-결합한-런타임-데이터-검증
|
||||
title: Zod 파싱과 브랜디드 타입을 결합한 런타임 데이터 검증
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-725C86]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - Zod 파싱과 브랜디드 타입을 결합한 런타임 데이터 검증"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[Zod 파싱과 브랜디드 타입을 결합한 런타임 데이터 검증]]
|
||||
@@ -19,7 +30,7 @@ github_commit: "[P-Reinforce] Continuous Worker - Zod 파싱과 브랜디드 타
|
||||
- **Zod 통합 구현 (Zod Integration)**: Zod는 자체적으로 `.brand()` 메서드를 지원하여 런타임 파싱과 브랜디드 타입 부여를 우아하게 결합합니다 [5]. 예를 들어, `z.string().uuid().brand<"UserId">()`와 같이 스키마를 구성하면, 파싱을 통과한 데이터는 런타임에서 유효한 문자열이자 UUID 포맷임을 입증받게 되며, TypeScript 컴파일러 상에서는 구별되는 고유한 `UserId` 타입으로 취급됩니다 [4, 5].
|
||||
- **데이터 오염 방지 효과**: 이렇게 브랜디드 타입과 런타임 파서가 결합된 데이터만이 시스템 핵심 로직으로 진입하도록 강제함으로써, 검증되지 않은 데이터가 섞이는 것을 방지하고 애플리케이션의 안정성을 극대화합니다 [3, 8, 10].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -32,3 +43,52 @@ github_commit: "[P-Reinforce] Continuous Worker - Zod 파싱과 브랜디드 타
|
||||
*Last updated: 2026-04-18*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-CAF879
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
id: wiki-2026-0508-as-const-assertion
|
||||
title: as const Assertion
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-CAF879]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.95
|
||||
tags: []
|
||||
tags: [uncategorized]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Mega Batch 2 - Wikified [[as const]] Assertion"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[as const Assertion]]
|
||||
@@ -17,7 +28,7 @@ github_commit: "[P-Reinforce] Mega Batch 2 - Wikified [[as const]] Assertion"
|
||||
- **불변성과 안전성 확보:** 이 기능을 사용하면 의도치 않은 값의 변경을 막아 컴파일 타임의 타입 검증과 런타임의 불변성(immutability)을 모두 확보할 수 있습니다 [2].
|
||||
- **`satisfies` 연산자와의 결합 패턴:** TypeScript에서 `as const`는 `satisfies` 연산자와 결합하여 자주 사용됩니다 [2]. 이 조합은 타입 검증(type validation)과 불변성을 동시에 제공하므로, 변경되어서는 안 되는 설정 객체나 룩업 테이블을 안전하게 생성하는 데 매우 이상적인 패턴으로 평가받습니다 [2, 3].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 지식 자산화 및 기존 네트워크 연동 단계.
|
||||
- **정책 변화:** Programming & Language 카테고리의 전문성 확보 및 링크 밀도 최적화.
|
||||
|
||||
@@ -30,3 +41,52 @@ github_commit: "[P-Reinforce] Mega Batch 2 - Wikified [[as const]] Assertion"
|
||||
*Last updated: 2026-04-18*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
+64
-4
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-33DDD3
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-bitecs와-sharedarraybuffer를-결합한-멀
|
||||
title: bitECS와 SharedArrayBuffer를 결합한 멀티스레드 고성능 아키텍처
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-33DDD3]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - bitECS와 SharedArrayBuffer를 결합한 멀티스레드 고성능 아키텍처"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[bitECS와 SharedArrayBuffer를 결합한 멀티스레드 고성능 아키텍처]]
|
||||
@@ -24,7 +35,7 @@ github_commit: "[P-Reinforce] Continuous Worker - bitECS와 SharedArrayBuffer를
|
||||
|
||||
**4. 렌더링과 시뮬레이션의 디커플링 이점** 이 아키텍처를 적용하면 무거운 물리 연산이 React의 가상 DOM 재조정([[Reconciliation]])이나 메인 스레드를 블로킹하지 않습니다. 또한 매 프레임 객체를 새로 생성하지 않고 배열의 값만 변경하므로, 가비지 컬렉션(GC) 스파이크로 인한 프레임 드랍을 원천적으로 방지할 수 있습니다.
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -38,3 +49,52 @@ github_commit: "[P-Reinforce] Continuous Worker - bitECS와 SharedArrayBuffer를
|
||||
_Last updated: 2026-04-14_
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-6AB6C6
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-bitecs와-sharedarraybuffer의-실제-코드
|
||||
title: bitECS와 SharedArrayBuffer의 실제 코드 통합
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-6AB6C6]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - bitECS와 SharedArrayBuffer의 실제 코드 통합"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[bitECS와 SharedArrayBuffer의 실제 코드 통합]]
|
||||
@@ -57,7 +68,7 @@ Velocity.y[eid] = 1.23;
|
||||
|
||||
**4. 스레드 간 데이터 동기화 원리** 위와 같이 구성한 후 `bufferX`, `bufferY`를 웹 워커로 전달하면 메인 스레드와 워커 스레드는 완벽하게 동일한 메모리를 공유하게 됩니다. 워커 스레드에서 물리 연산을 통해 배열의 `x, y` 인덱스 값을 업데이트하면, 메인 스레드는 `postMessage`로 매번 데이터를 넘겨받을 필요 없이 `bitECS`의 `Velocity.x[eid]`를 통해 즉시 렌더링에 반영할 수 있습니다.
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -71,3 +82,52 @@ Velocity.y[eid] = 1.23;
|
||||
_Last updated: 2026-04-14_
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -0,0 +1,102 @@
|
||||
---
|
||||
id: wiki-2026-0508-ndf-parse-패키지
|
||||
title: ndf parse 패키지
|
||||
category: "Programming & Tools"
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: []
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.92
|
||||
tags: [uncategorized]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-05-08
|
||||
github_commit: pending
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[ndf-parse]] 패키지
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
`ndf-parse` 패키지는 Eugen[[ system]]s의 NDF(Neutral Data Format) 파일을 구문 분석(파싱)하고 수정한 뒤, 이를 다시 유효한 NDF 코드로 작성할 수 있게 해주는 도구입니다 [1]. 게임에서 기본적으로 제공하는 자체 도구들보다 [[WARNO]] 모드(mod)를 훨씬 쉽게 편집할 수 있도록 개발되었습니다 [1]. 다만, 이 패키지는 Windows 환경을 위해서만 제작되고 테스트되었다는 특징이 있습니다 [1].
|
||||
|
||||
## 📖 Core 소스에 관련 정보가 부족합니다.
|
||||
(※ 소스 내에 `ndf-parse` 패키지에 대한 정보가 한정적이어서 제공된 내용을 최대한 종합하여 작성했습니다.)
|
||||
|
||||
- **기능 및 목적**: `ndf-parse`는 WARNO의 모더들이 게임 데이터를 직접 수정할 수 있도록 지원하는 패키지입니다 [1]. 스크립트를 활용하면 모든 차량 유닛의 물류(logistics) 용량을 일괄적으로 두 배 늘리는 등 반복적이거나 복잡한 데이터 수정 작업을 프로그래밍 방식으로 쉽게 처리할 수 있습니다 [1].
|
||||
- **API 및 모듈 구성**: 코드와 데이터를 구문 분석하고 수정하기 위해 여러 API 참조를 제공합니다. 주요 구성 요소로는 `model` 및 `printer` 모듈이 있으며, `convert()`, `expression()`, `expressions()`, `walk()`, `Mod`, `Edit`와 같은 함수와 기능들이 포함되어 있습니다 [1].
|
||||
- **WARNO 데이터 설계와의 연관성**: WARNO의 시스템은 유닛 특성, 무기 체계, 탄약 등 모든 시뮬레이션 논리를 NDF 파일(예: `UniteDescriptor.ndf`, `Ammunition.ndf`) 내에 엄격히 정의하고 있습니다 [2, 3]. `ndf-parse`는 게임 소스 코드를 건드리지 않고 이 방대한 텍스트 기반 데이터 객체들을 직접 통제할 수 있는 수단을 제공하여 데이터 중심 설계의 모딩을 돕습니다 [1, 2].
|
||||
- **제약 사항 (Caveats)**: 개발 및 테스트가 오직 Windows 운영 체제에서만 진행되었기 때문에 다른 환경에서 사용할 때는 주의가 필요합니다 [1].
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
- **Related Topics:** [[NDF (Neutral Data Format)]], [[WARNO 모딩]]
|
||||
- **Projects/Contexts:** [[WARNO 데이터 기반 설계]], [[WME (Warno Mod Editor)]]
|
||||
- **Contradictions/Notes:** 소스에 `ndf-parse`에 대한 구체적인 작동 원리나 세부 코드는 부족하지만, Windows 전용으로 제작 및 테스트되었다는 명확한 제약 사항이 존재합니다 [1]. 또한, 커뮤니티가 사용하는 WME(Warno Mod Editor)와 같은 다른 모딩 도구들과 궤를 같이하여 NDF 데이터를 다루기 위한 서드파티 솔루션으로 기능합니다 [1, 4].
|
||||
|
||||
---
|
||||
*Last updated: 2026-04-28*
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
|
||||
**추출된 패턴:**
|
||||
> *(TODO)*
|
||||
|
||||
**세부 내용:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
|
||||
- **과거 데이터와의 충돌:** 없음
|
||||
- **정책 변화:** 없음
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-7A0150
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-ts-brand
|
||||
title: ts brand
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-7A0150]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - ts-brand"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[ts-brand]]
|
||||
@@ -17,7 +28,7 @@ github_commit: "[P-Reinforce] Continuous Worker - ts-brand"
|
||||
* **고급 브랜딩 기능 및 유틸리티:** 다른 타입스크립트 유틸리티 라이브러리(예: `utility-types`, `ts-toolbelt`, `ts-essentials`)들도 헬퍼 제네릭을 제공하지만, `ts-brand`는 브랜딩을 위한 더욱 진보된 기능을 구체적으로 제공합니다 [1]. 예를 들어, `make`와 같은 함수를 통해 타입 브랜드 어서션(assertion) 등을 수행할 수 있는 기능을 포함하고 있습니다 [3].
|
||||
* **생태계 내의 위치:** 타입스크립트는 기본적으로 브랜디드 타입을 내장 지원하지 않으므로, 이 패턴을 도입하고자 하는 개발자들은 `ts-brand`나 `[[Effect TS]]`와 같은 커뮤니티 라이브러리를 주로 활용하게 됩니다 [2, 4]. 이 라이브러리들은 복잡한 타입 설정 코드를 공유 패키지 형태로 단순화해 줍니다 [2].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -30,3 +41,52 @@ github_commit: "[P-Reinforce] Continuous Worker - ts-brand"
|
||||
*Last updated: 2026-04-18*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -0,0 +1,91 @@
|
||||
---
|
||||
id: wiki-2026-0508-가변적-lod-level-of-detail-시스템
|
||||
title: 가변적 LOD(Level of Detail) 시스템
|
||||
category: "Programming & Tools"
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: []
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.92
|
||||
tags: [uncategorized]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-05-08
|
||||
github_commit: pending
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# 가변적 LOD(Level of Detail) 시스템
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
가변적 LOD(Level of Detail) 시스템은 카메라와 대상 유닛 간의 거리에 따라 3D 모델의 정밀도를 동적으로 조절하는 기술입니다 [1, 2]. [[WARNO]]에서는 이 시스템을 통해 수 킬로미터에 달하는 대규모 전장의 실시간 가시성과 엔진 성능을 확보합니다 [2, 3]. 가까운 시점에서는 고해상도의 정밀한 모델을 보여주고, 거리가 멀어질수록 형태를 단계적으로 단순화하여 시스템 연산 부담을 크게 줄여주는 역할을 합니다 [1].
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
- **거리 기반 모델 정밀도 조절**: WARNO의 가변적 LOD 시스템은 카메라에서 객체(유닛)까지의 거리에 의존하여 모델의 디테일 수준을 결정합니다 [1]. 이를 통해 거리별 3D 모델의 정밀도를 동적으로 조절하여 대규모 전장에서 실시간 가시성을 효율적으로 확보합니다 [2].
|
||||
- **단계적인 디테일 변화**: 플레이어의 시점이 유닛에 근접할 경우, 격납고(Hangar) 메뉴에서 볼 수 있는 수준의 매우 상세하고 정교한 모델이 렌더링됩니다 [1]. 반대로 시점이 멀어지게 되면 몇 가지 중간 단계를 거쳐 최종적으로는 단순한 색상 상자(colourful box) 형태로 유닛의 묘사가 간략화됩니다 [1].
|
||||
- **Iriszoom 엔진과의 통합 및 최적화**: 이 시스템은 광활한 전장을 조감하는 전략적 시점부터 개별 병사의 장비까지 식별 가능한 전술적 시점을 단일 렌더링 파이프라인에서 매끄럽게 연결해 주는 Iriszoom 엔진의 줌(Zoom) 기능과 결합되어 작동합니다 [3]. 덕분에 매우 세밀한 시점부터 3x3km 크기의 넓은 전장 시점까지 전환할 때도 끊김 현상(stuttering) 없이 뛰어난 최적화 성능을 제공합니다 [4].
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
- **Related Topics:** [[Iriszoom 엔진]], [[데이터 기반 설계(Data-Driven Design)]]
|
||||
- **Projects/Contexts:** [[WARNO]]
|
||||
- **Contradictions/Notes:** 소스 내에서 이 시스템의 메커니즘에 대한 모순점은 발견되지 않습니다. 오히려 가변적 LOD 시스템의 원활한 작동 덕분에 세밀한 모델링과 애니메이션이 많은 환경에서도 대규모 10v10 전투를 4K 해상도와 최고 옵션에서 프레임 드랍 없이 안정적으로 실행할 수 있다는 플레이어들의 호평이 존재합니다 [5].
|
||||
|
||||
---
|
||||
*Last updated: 2026-04-28*
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
|
||||
- **과거 데이터와의 충돌:** 없음
|
||||
- **정책 변화:** 없음
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-51196C
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-가비지-컬렉션-garbage-collection
|
||||
title: 가비지 컬렉션 (Garbage Collection)
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-51196C]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - 가비지 컬렉션 ([[Garbage Collection]])"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[가비지 컬렉션 (Garbage Collection)]]
|
||||
@@ -31,7 +42,7 @@ github_commit: "[P-Reinforce] Continuous Worker - 가비지 컬렉션 ([[Garbage
|
||||
- **성능 최적화 기법 (지연 최소화)**
|
||||
과거 전통적인 GC 방식은 전체 애플리케이션 실행을 멈추는 'Stop-The-World' 일시 정지가 길어지는 문제가 있었습니다 [2, 32]. 이를 개선하기 위해 V8의 [[Orinoco]] 가비지 컬렉터 등은 메인 스레드와 헬퍼 스레드가 동시에 작업을 나누어 수행하는 **병렬(Parallel)** 처리, 메인 스레드의 [[JavaScript]] 실행 사이사이에 GC 작업을 작은 단위로 쪼개서 수행하는 **점진적(Incremental)** 처리, 그리고 메인 스레드 실행을 방해하지 않고 백그라운드에서 GC를 동시에 수행하는 **동시(Concurrent)** 기법을 도입하여 지연(Latency)과 버벅거림을 획기적으로 줄였습니다 [33-38].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -44,3 +55,52 @@ github_commit: "[P-Reinforce] Continuous Worker - 가비지 컬렉션 ([[Garbage
|
||||
*Last updated: 2026-04-19*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-9DED54
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-가상현실-멀미-vr-sickness
|
||||
title: 가상현실 멀미 (VR Sickness)
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-9DED54]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - 가상현실 멀미 ([[VR Sickness]])"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[가상현실 멀미 (VR Sickness)]]
|
||||
@@ -21,7 +32,7 @@ github_commit: "[P-Reinforce] Continuous Worker - 가상현실 멀미 ([[VR Sick
|
||||
* **개인차:** 사용자의 연령, HMD 착용 상태의 적합성, 자세 안정성, 그리고 개인의 멀미 민감도 등은 증상 발현에 영향을 미칩니다 [9]. 특히 짧은 노출 시간에도 심각한 멀미 증상을 겪은 사용자는 더 긴 노출 환경에서 유사하거나 더 악화된 증상을 경험할 가능성이 높습니다 [9].
|
||||
* **사후 효과(Aftereffects) 및 회복:** 기기 사용을 종료하더라도 증상은 즉시 사라지지 않고 서서히 감소하며, 초기 증상이 심각했던 사용자일수록 회복에 더 오랜 시간이 소요됩니다 [10]. 또한 사용 후 최대 24시간이 지난 뒤에 잠복성 증상(두통, 피로 등)이 발생할 수도 있기 때문에, 증상이 나타나면 완전히 회복될 때까지 기기 사용을 중단하고 대기하는 것이 권장됩니다 [10-12].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -34,3 +45,52 @@ github_commit: "[P-Reinforce] Continuous Worker - 가상현실 멀미 ([[VR Sick
|
||||
*Last updated: 2026-04-19*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-807F75
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-가상현실-vr-자전거-시뮬레이터
|
||||
title: 가상현실(VR) 자전거 시뮬레이터
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-807F75]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - 가상현실(VR) 자전거 시뮬레이터"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[가상현실(VR) 자전거 시뮬레이터]]
|
||||
@@ -21,7 +32,7 @@ github_commit: "[P-Reinforce] Continuous Worker - 가상현실(VR) 자전거 시
|
||||
* **멀미의 주요 증폭 요인:** 시뮬레이터 멀미(SSQ) 점수는 사용자가 시뮬레이터에 노출된 시간과 가상으로 구현된 움직임(Simulated motion)이 증가할수록 함께 높아지는 것으로 나타났습니다 [1].
|
||||
* **몰입도와 부작용의 상충(Trade-off):** HMD는 엑스어게임(Exergames)을 수행할 때 스크린 기반 환경보다 더 높은 몰입감을 제공하는 선택지일 수 있습니다 [1]. 하지만 이와 동시에 화면 기반 엑스어게임에 비해 더 높은 수준의 멀미를 유발할 수 있다는 한계도 동반합니다 [1].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -34,3 +45,52 @@ github_commit: "[P-Reinforce] Continuous Worker - 가상현실(VR) 자전거 시
|
||||
*Last updated: 2026-04-19*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
@@ -1,33 +1,25 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-4772F3
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
tags: [auto-reinforced]
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - 객체 지향 프로그래밍 (OOP)"
|
||||
id: wiki-20260508--oop--redir
|
||||
title: 객체 지향 프로그래밍 (OOP)
|
||||
category: Programming & Language
|
||||
status: merged
|
||||
redirect_to: 객체_지향_프로그래밍(OOP)
|
||||
canonical_id: 객체_지향_프로그래밍(OOP)
|
||||
aliases: []
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.92
|
||||
tags: [redirect]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-05-08
|
||||
github_commit: pending
|
||||
inferred_by: Claude Opus 4.7 (auto-merge 2026-05-08)
|
||||
---
|
||||
|
||||
# [[객체 지향 프로그래밍 (OOP)]]
|
||||
# 객체 지향 프로그래밍 (OOP)
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> 객체 지향 프로그래밍(OOP)은 데이터와 그 데이터를 다루는 동작([[Behavior]])을 객체(object)라는 단위 안에 캡슐화하여 소프트웨어의 복잡성을 관리하는 프로그래밍 패러다임입니다 [1, 2]. 클래스와 상속 구조를 통해 코드 중복을 방지하고 재사용성을 높일 수 있습니다 [3]. 주로 단일 책임 원칙(SRP)을 포함한 SOLID 설계 원칙과 함께 적용되어 유지보수가 용이하고 유연한 소프트웨어 아키텍처를 구축하는 데 핵심적인 역할을 합니다 [1, 4].
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
- **캡슐화와 관심사의 분리 (Encapsulation & SoC):** 1980년대에 본격적으로 부상한 OOP 패러다임은 데이터와 행동을 객체 내에 캡슐화하는 아이디어를 도입했습니다 [1]. 각 객체에 특정한 기능이나 관심사에 대한 책임을 부여함으로써, 시스템 구조 내에서 자연스럽게 '관심사의 분리([[Separation of Concerns]])'를 이끌어냈습니다 [2].
|
||||
- **클래스 상속(Inheritance)과 코드 재사용:** OOP에서는 여러 클래스가 공통으로 공유하는 속성이나 동작을 하나의 기본 클래스(base class)에 배치할 수 있습니다 [3]. 다른 클래스들은 이 기본 클래스를 상속받아 기능을 이어받으므로, 코드를 중복해서 다시 정의할 필요 없이 DRY(Don't Repeat Yourself) 원칙을 효과적으로 달성할 수 있습니다 [3].
|
||||
- **SOLID 설계 원칙 기반:** 소프트웨어 설계를 더 이해하기 쉽고, 유연하며, 유지보수 가능하게 만들기 위해 고안된 5가지 기본 원칙인 SOLID 원칙의 토대가 됩니다 [4]. 특히 객체와 클래스가 단 하나의 책임만 가져야 한다는 단일 책임 원칙(SRP)은 OOP의 핵심 철학을 뒷받침합니다 [1, 5].
|
||||
- **구조적 한계 및 AOP를 통한 보완:** OOP 접근 방식을 따르면 기능 단위의 수직적 분리와 객체 간 책임 분리가 원활하게 이루어집니다 [6, 7]. 하지만 로깅이나 보안과 같이 시스템 전체에 흩어져 공통으로 사용되는 '횡단 관심사(Cross-Cutting Concerns)'를 모듈화하는 데에는 한계가 존재합니다 [6]. 이러한 OOP의 단점은 횡단 관심사를 수평적으로 분리해 모듈화하는 관점 지향 프로그래밍(AOP) 기술을 결합함으로써 보완할 수 있습니다 [6, 7].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
- **Related Topics:** [[관심사의 분리 (SoC)]], [[SOLID 원칙]], [[관점 지향 프로그래밍 (AOP)]]
|
||||
- **Projects/Contexts:** [[소프트웨어 시스템 설계 및 아키텍처 구축]]
|
||||
- **Contradictions/Notes:** 소스에 따르면 OOP는 객체 간 책임을 분리하고 기능 단위의 수직적 분리를 달성하는 데 탁월하지만, 시스템 전반에 걸친 공통 기능(횡단 관심사)을 분리하는 데는 단점이 존재하며 이는 AOP 방식을 통해 반대/보완적으로 해결될 수 있다고 설명합니다 [6, 7].
|
||||
|
||||
---
|
||||
*Last updated: 2026-04-18*
|
||||
> [!IMPORTANT]
|
||||
> 이 문서는 P-Reinforce Phase 2 자동 MERGE에 의해 **[[객체_지향_프로그래밍(OOP)]]**로 통합되었습니다.
|
||||
|
||||
---
|
||||
*Redirected to: [[객체_지향_프로그래밍(OOP)]]*
|
||||
|
||||
@@ -1,10 +1,21 @@
|
||||
---
|
||||
id: [[P-Reinforce]]-AUTO-D7D274
|
||||
category: "10_Wiki/💡 Topics/Programming & Language"
|
||||
confidence_score: 0.90
|
||||
id: wiki-2026-0508-객체-지향-프로그래밍-object-oriented-prog
|
||||
title: 객체 지향 프로그래밍 (Object Oriented Programming)
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-D7D274]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - 객체 지향 프로그래밍 (Object-Oriented Programming)"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
---
|
||||
|
||||
# [[객체 지향 프로그래밍 (Object-Oriented Programming)]]
|
||||
@@ -18,7 +29,7 @@ github_commit: "[P-Reinforce] Continuous Worker - 객체 지향 프로그래밍
|
||||
- **관심사의 분리(SoC) 실현:** OOP는 개별 객체가 특정 기능 측면이나 관심사에 대해 고유의 책임을 가지도록 구조화함으로써, 자연스럽게 명확한 관심사의 분리가 이루어지도록 장려합니다 [2].
|
||||
- **AOP를 통한 한계 보완:** OOP는 객체 간의 책임을 분리해 수직적인 모듈화를 달성하는 데에는 매우 효과적이지만, 로깅이나 보안과 같이 시스템 전반에 걸쳐 공통으로 사용되는 '횡단 관심사(Cross-Cutting Concerns)'를 분리하는 데에는 한계가 존재합니다 [3]. 따라서 이러한 OOP의 단점을 보완하고 코드를 더욱 단순화하기 위해 관점 지향 프로그래밍(AOP)과 같은 기법이 함께 활용됩니다 [3, 8].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
|
||||
@@ -31,3 +42,52 @@ github_commit: "[P-Reinforce] Continuous Worker - 객체 지향 프로그래밍
|
||||
*Last updated: 2026-04-18*
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user