diff --git a/01_Archive/2026-04-20/01_React-Foundation_Mental-Model.md b/01_Archive/2026-04-20/01_React-Foundation_Mental-Model.md new file mode 100644 index 00000000..9faf2764 --- /dev/null +++ b/01_Archive/2026-04-20/01_React-Foundation_Mental-Model.md @@ -0,0 +1,15 @@ +# ๐ผ [LEVEL 1] ๋ฆฌ์กํธ์ ์ฌ์ฅ: UI๋ ์ํ(State)์ ํจ์๋ค + +## 1. ์๊ฐ์ ์ ํ: "์ด๋ป๊ฒ(How)"๊ฐ ์๋๋ผ "๋ฌด์์(What)" +- **HTML/JS ๋ฐฉ์**: "๋ฒํผ์ ์ฐพ์์, ํด๋ฆญ ์ด๋ฒคํธ๋ฅผ ๊ฑธ๊ณ , ํ ์คํธ๋ฅผ ๋ฐ๊พผ๋ค." (๋ช ๋ นํ) +- **๋ฆฌ์กํธ ๋ฐฉ์**: "์ํ๊ฐ `ON`์ด๋ฉด '์ผ์ง'์ ๋ณด์ฌ์ฃผ๊ณ , `OFF`์ด๋ฉด '๊บผ์ง'์ ๋ณด์ฌ์ค๋ค." (์ ์ธํ) +- **๊ตํ**: ์ค๊ธ ์ฃผ๋์ด๋ DOM์ ์ง์ ๊ฑด๋๋ฆฌ์ง ์๋๋ค. ์ค์ง **์ํ**๋ง ๊ฑด๋๋ฆฐ๋ค. + +## 2. ๋ถ๋ณ์ฑ(Immutability): ์ `push`๋ ์๋๋์? +- ๋ฆฌ์กํธ๋ "๊ฐ์ด ๋ฐ๋์๋ค?"๋ฅผ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ์ผ๋ก ํ๋จํ๋ค. +- `arr.push(1)`์ ์ฃผ์๋ ๊ทธ๋๋ก๊ณ ๋ด์ฉ๋ง ๋ฐ๋๋ค. ๋ฆฌ์กํธ๋ ๋ฐ๋ ์ค ๋ชจ๋ฅธ๋ค! +- **์ ๋ต**: `setArr([...arr, 1])` ์ฒ๋ผ ํญ์ **์๋ก์ด ๋ณต์ฌ๋ณธ**์ ๋์ ธ๋ผ. + +## 3. ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ: ๋ฌผ์ ์์์ ์๋๋ก ํ๋ฅธ๋ค. +- ๋ถ๋ชจ๊ฐ ์์์๊ฒ ์ฃผ๋ ๊ฑด `Props`. ์์์ด ๋ถ๋ชจ๋ฅผ ๋ฐ๊พธ๋ ค๋ฉด ๋ถ๋ชจ๊ฐ ์ค `ํจ์`๋ฅผ ํธ์ถํ๋ผ. +- **ํ์ง ๋ง ๊ฒ**: ์์์ด ๋ถ๋ชจ์ ์ํ๋ฅผ ๋ชฐ๋ ๋ฐ๊พธ๋ '๋งค์ง'์ ์์คํ ์ ๋ง์น๋ค. diff --git a/01_Archive/2026-04-20/02_React-Hooks_Advanced-Patterns.md b/01_Archive/2026-04-20/02_React-Hooks_Advanced-Patterns.md new file mode 100644 index 00000000..5a748437 --- /dev/null +++ b/01_Archive/2026-04-20/02_React-Hooks_Advanced-Patterns.md @@ -0,0 +1,16 @@ +# ๐ง [LEVEL 2] Hook์ ์ฌ์ฐ: ๋จ์ ์ฌ์ฉ์ ๋์ด ์ค์ฉ ๋ฐฉ์ง๋ก + +## 1. `useEffect`๋ 'ํ์ด๋จธ'๊ฐ ์๋๋ค. '๋๊ธฐํ' ์ฅ์น๋ค. +- ์ด๋ณด๋ `useEffect`๋ฅผ ํจ์ ์คํ๊ธฐ๋ก ์ด๋ค. +- ์ค๊ธ์ **"์ดํํธ๊ฐ ์ด๋ค ์ํ์ ์ธ๋ถ ์์คํ (API, ๋ผ์ด๋ธ๋ฌ๋ฆฌ)์ ๋๊ธฐํํ๋๊ฐ?"**๋ฅผ ๊ณ ๋ฏผํ๋ค. +- **Check**: ์์กด์ฑ ๋ฐฐ์ด(`[]`)์ ๋ฃ์ ๋ณ์๊ฐ ์ ๋ง ์ด ์ดํํธ์ ์์ธ์ธ๊ฐ? + +## 2. Custom Hooks: ๋ ผ๋ฆฌ์ ๋ถ๋ฆฌ +- ์ปดํฌ๋ํธ ์์ `fetch`, `loading`, `error` ๊ฐ ๊ฐ๋ฅ๊ฐ๋ฅ ๋๋ ค ์๋ค๋ฉด ์คํจ! +- `useFetchData()` ๋ผ๋ ๋๋ง์ ํ ์ ๋ง๋ค์ด ๋ ผ๋ฆฌ๋ง ์ ๋ฝ์๋ด๋ผ. +- **์ฑ๊ณต ๊ฐ์ด๋**: UI ๋ด๋น ์ปดํฌ๋ํธ๋ `const { data } = useMyLogic();` ํ ์ค๋ก ๋๋์ผ ํ๋ค. + +## 3. `useRef`: ์ฌ๋ผ์ง์ง ์๋ ๊ธฐ์ต +- `useState`๋ ๋ฐ๋ ๋๋ง๋ค ํ๋ฉด์ ๋ค์ ๊ทธ๋ฆฐ๋ค(Refrender). +- `useRef`๋ ๊ฐ์ด ๋ฐ๋์ด๋ ํ๋ฉด์ ๊ทธ๋ฆฌ์ง ์๋๋ค. +- **์ฉ๋**: ์ด์ ํ๋ฉด์ ๊ฐ ์ ์ฅ, DOM ์ง์ ์ ๊ทผ(ํฌ์ปค์ค ๋ฑ), ํ์ด๋จธ ID ๋ณด๊ด. diff --git a/01_Archive/2026-04-20/03_React-Architecture_Component-Patterns.md b/01_Archive/2026-04-20/03_React-Architecture_Component-Patterns.md new file mode 100644 index 00000000..006a6280 --- /dev/null +++ b/01_Archive/2026-04-20/03_React-Architecture_Component-Patterns.md @@ -0,0 +1,17 @@ +# ๐๏ธ [LEVEL 3] ์ปดํฌ๋ํธ ์ํคํ ์ฒ: ๋ฒฝ๋ ์๊ธฐ์์ ์ฑ ์ง๊ธฐ๋ก + +## 1. Props Drilling์ ๋ฉ์ถฐ๋ผ! +- ํ ์๋ฒ์ง๊ฐ ์์์๊ฒ ๋ฐ์ดํฐ ์ฃผ๋ ค๊ณ ์๋น , ์ผ์ด์ ๊ฑฐ์ณ๊ฐ๋ ์ฝ๋๋ ์ฃ์ ์ด๋ค. +- **ํด๊ฒฐ์ฑ **: `Context API`๋ฅผ ์ฐ๊ฑฐ๋, **Component Composition(์ปดํฌ๋ํธ ํฉ์ฑ)**์ ์ฌ์ฉํ๋ผ. +- ์์ `} />` ์ฒ๋ผ ์์์ ํต์งธ๋ก ๋๊ฒจ๋ผ. + +## 2. ๊ด์ฌ์ฌ์ ๋ถ๋ฆฌ: Container-Presenter ํจํด +- **Container**: ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ, ๋ก์ง ์ฒ๋ฆฌ. (๋จธ๋ฆฌ) +- **Presenter**: CSS, ์คํ์ผ, ๋ฐ์ดํฐ ๋ณด์ฌ์ฃผ๊ธฐ. (๋ชธํต) +- **ํจ๊ณผ**: ์คํ์ผ๋ง ๋ฐ๊พธ๊ณ ์ถ์ ๋ ๋ก์ง ์ฝ๋๋ฅผ ์ ๋ด๋ ๋๋ค. + +## 3. Atomic Design ๋ง๋ณด๊ธฐ +- `Atom`: ๋ฒํผ, ์ ๋ ฅ์ฐฝ (๊ฐ์ฅ ์์ ๋จ์) +- `Molecule`: ๊ฒ์๋ฐ (Atom์ ๊ฒฐํฉ) +- `Organism`: ํค๋, ํธํฐ (๋ณต์กํ ๊ตฌ์กฐ) +- **๊ธฐ์ค**: ์ํฐ์ ํ๋ก์ ํธ ์ด๋์๋ ์ฐ์ผ ์ ์๊ฒ **์์(Pure)**ํด์ผ ํ๋ค. diff --git a/01_Archive/2026-04-20/04_React-Performance_Optimization.md b/01_Archive/2026-04-20/04_React-Performance_Optimization.md new file mode 100644 index 00000000..7ac365a1 --- /dev/null +++ b/01_Archive/2026-04-20/04_React-Performance_Optimization.md @@ -0,0 +1,15 @@ +# โก [LEVEL 4] ๋ ๋๋ง ์ต์ ํ: "๋ด ์ฑ์ ์ ๋ ์ด ๊ฑธ๋ฆด๊น?" + +## 1. ๋ ๋๋ง์ ๊ณต์ง๊ฐ ์๋๋ค +- ๋ถ๋ชจ๊ฐ ๊ทธ๋ ค์ง๋ฉด ์์๋ ๊ทธ๋ ค์ง๋ค. ์ด๊ฒ ๊ณ์๋๋ฉด ์ฑ๋ฅ ํญ๋ฐ์ด๋ค. +- `React.memo`: "๋ ์๊น๋ ์ค ๊ฑฐ ๋๊ฐ์๋ฐ? ๋ค์ ๊ทธ๋ฆฌ์ง ๋ง!" +- `useMemo`: ๋ณต์กํ ๊ณ์ฐ ๊ฒฐ๊ณผ๋ฌผ ์ฌ์ฌ์ฉ. +- `useCallback`: ํจ์ ์ฌ์์ฑ ๋ฐฉ์ง. + +## 2. '์ฑ๊ธํ ์ต์ ํ'๋ ๋ ์ด๋ค +- ๋ชจ๋ ์ปดํฌ๋ํธ์ `memo`๋ฅผ ๋ฐ๋ฅด๋ ๊ฑด ๋ฉ์ฒญํ ์ง์ด๋ค. +- ์ง์ง ๋๋ฆฐ ๋ถ๋ถ(๋ฆฌ์คํธ 1000๊ฐ ๋ก๋ฉ ๋ฑ)์ ์ฐพ์์ **ํ๋กํ์ผ๋ฌ(DevTools)**๋ก ์ฐ์ด๋ณด๊ณ ์ต์ ํํ๋ผ. + +## 3. Key๊ฐ์ ์ค์์ฑ: `index`๋ ์ตํ์ ์๋จ์ด๋ค +- `map` ๋๋ฆด ๋ `index`๋ฅผ key๋ก ์ฐ๋ฉด, ๋ฆฌ์คํธ ์์๊ฐ ๋ฐ๋ ๋ ๋ฆฌ์กํธ๊ฐ ๋ฉ๋ถ์ ๋น ์ง๋ค. +- ๋ฐ๋์ ๋ฐ์ดํฐ์ **Unique ID**๋ฅผ ์จ๋ผ. ๊ทธ๋์ผ ๋ฆฌ์กํธ๊ฐ "์, ์์๋ง ๋ฐ๋์๋ค?" ํ๊ณ ์๋ฆฌํ๊ฒ ๋์ฒํ๋ค. diff --git a/01_Archive/2026-04-20/05_React-State-Management_Strategy.md b/01_Archive/2026-04-20/05_React-State-Management_Strategy.md new file mode 100644 index 00000000..7268c2ce --- /dev/null +++ b/01_Archive/2026-04-20/05_React-State-Management_Strategy.md @@ -0,0 +1,15 @@ +# ๐ [LEVEL 5] ์ํ ๊ด๋ฆฌ์ ๊ฑฐ๋ฒ๋์ค: ์ด๋์ ์ ์ฅํ ๊ฒ์ธ๊ฐ? + +## 1. ์ํ์๋ ๊ฑฐ์ฃผ์ง๊ฐ ์๋ค +- **Local State**: ๊ทธ ์ปดํฌ๋ํธ๋ง ์๋ฉด ๋๋ ๊ฒ (Input ์ ๋ ฅ๊ฐ ๋ฑ). +- **Global State**: ์จ ๋๋ค๊ฐ ์์์ผ ํ๋ ๊ฒ (๋ก๊ทธ์ธ ์ ๋ณด, ํ ๋ง). +- **Server State**: ์๋ฒ์์ ๋น๋ ค์จ ๊ฒ (๊ฒ์๊ธ ๋ชฉ๋ก). + +## 2. ์๋ฒ ์ํ๋ `React Query`์๊ฒ ๋งก๊ฒจ๋ผ +- `useEffect`๋ก API ํธ์ถํด์ `loading` ๊ด๋ฆฌํ๋ ์๋๋ ๋๋ฌ๋ค. +- ์บ์ฑ, ์ฌ์๋, ๋ก๋ฉ ์ํ๋ฅผ ์๋์ผ๋ก ํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์จ์ **'์ ์ ํ ๋ฐ์ดํฐ'**๋ง ๊ด๋ฆฌํ๋ผ. + +## 3. ์ํ์ ์ต์ํ (Single Source of Truth) +- `firstName`๊ณผ `lastName`์ด ์๋๋ฐ `fullName` ์ด๋ผ๋ ์ํ๋ฅผ ๋ ๋ง๋ค์ง ๋ง๋ผ. +- `fullName`์ ๋ ๋๋งํ ๋ ๊ทธ๋ฅ ํฉ์ณ์ ๋ณด์ฌ์ฃผ๋ฉด ๋๋ค. +- ์ํ๊ฐ ๋ง์์ง์๋ก ๋๊ธฐํ ์ค๋ฅ(๋ฒ๊ทธ)์ ํ๋ฅ ์ ๊ธ์์นํ๋ค. diff --git a/01_Archive/2026-04-20/06_React-Clean-Code_Etiquette.md b/01_Archive/2026-04-20/06_React-Clean-Code_Etiquette.md new file mode 100644 index 00000000..da576cca --- /dev/null +++ b/01_Archive/2026-04-20/06_React-Clean-Code_Etiquette.md @@ -0,0 +1,13 @@ +# ๐งน [LEVEL 6] ๋ฆฌ์กํธ ํด๋ฆฐ ์ฝ๋: ๋๊ตฌ๋ ์ดํดํ๋ ์ฝ๋ + +## 1. ์กฐ๊ฑด๋ถ ๋ ๋๋ง์ ํ๊ฒฉ +- `condition && ` ๋ ํธํ์ง๋ง, `condition`์ด 0์ผ ๋ ํ๋ฉด์ 0์ด ์ฐํ๋ ๋์ฐธ์ฌ๊ฐ ๋๋ค. +- ๊ฐ๊ธ์ `condition ? : null` ์ ์จ์ ๋ช ํํ๊ฒ ํํํ๋ผ. + +## 2. ๊ตฌ์กฐ ๋ถํด ํ ๋น(Destructuring) ์ํํ +- `props.user.name`, `props.user.age` ... ๋ณด๋ ์ฌ๋ ์จ๋์ด๊ฐ๋ค. +- `const { name, age } = user;` ๋ก ๊น๋ํ๊ฒ ์ ๋ฆฌํ๊ณ ์์ํ๋ผ. + +## 3. Early Return: ์ฝ๋๋ฅผ ๋ ์ฌํ๊ฒ +- `if (loading) return ` ์ฒ๋ผ ์คํจ๋ ์์ธ ์ผ์ด์ค๋ฅผ ๋จผ์ ์ณ๋ด๋ผ. +- ๋ค๋ก ๊ฐ์๋ก **'์ง์ง ์ค์ํ ํต์ฌ ๋ก์ง'**๋ง ๋จ์์ ๊ฐ๋ ์ฑ์ด ํญ๋ฐํ๋ค. diff --git a/01_Archive/2026-04-20/07_React-Testing_Reliability.md b/01_Archive/2026-04-20/07_React-Testing_Reliability.md new file mode 100644 index 00000000..73b591e0 --- /dev/null +++ b/01_Archive/2026-04-20/07_React-Testing_Reliability.md @@ -0,0 +1,15 @@ +# ๐ก๏ธ [LEVEL 7] ํ ์คํธ๋ผ๋ ์์ ๋ง: ๋ฒ๊ทธ ์๋ ์ฝ๋๋ฅผ ํฅํ์ฌ + +## 1. "๋ด ์ฝ๋๋ ์๋ฒฝํด"๋ผ๋ ์ฐฉ๊ฐ์ ๋ฒ๋ ค๋ผ +- ์ค๋ฌด์๋ ์๊ธฐ ์ฝ๋๋ฅผ ๋ฏฟ์ง ์๋๋ค, **ํ ์คํธ ์ฝ๋**๋ฅผ ๋ฏฟ๋๋ค. +- `Unit Test`: ํจ์ ํ๋๊ฐ 1+1=2๋ฅผ ๋ด๋ฑ๋์ง ํ์ธ. +- `Integration Test`: ์ปดํฌ๋ํธ์ ์ปดํฌ๋ํธ๊ฐ ๋ง๋์ ์ ๋์๊ฐ๋์ง ํ์ธ. + +## 2. Vitest & React Testing Library (RTL) +- RTL์ ์ฒ ํ: "์ฌ์ฉ์๊ฐ ๋ณด๋ฏ ํ ์คํธํ๋ผ." +- `getByRole('button')` ์ฒ๋ผ ์ฌ์ฉ์๊ฐ ๋ฒํผ์ ์ฐพ๋ฏ ์ฝ๋๋ฅผ ์ง์ผ ํ๋ค. +- **Tip**: ๋ด๋ถ ๊ตฌํ(State ๊ฐ ๋ฑ)์ด ์๋๋ผ **ํ๋ฉด์ ๋ฌด์์ด ๋์ค๋๊ฐ**๋ฅผ ํ ์คํธํ๋ผ. + +## 3. TDD(Test Driven Development) ๋ง๋ณด๊ธฐ +- ํ ์คํธ๋ฅผ ๋จผ์ ์ฐ๊ณ ์ฝ๋๋ฅผ ์ง๋ผ. +- ๋ณต์กํ ๋น์ฆ๋์ค ๋ก์ง์ผ์๋ก TDD๋ ๋น์ ์ ํด๊ทผ ์๊ฐ์ ์๋น๊ฒจ์ค๋ค. diff --git a/01_Archive/2026-04-20/08_React-API_Communication-Patterns.md b/01_Archive/2026-04-20/08_React-API_Communication-Patterns.md new file mode 100644 index 00000000..3167f0ac --- /dev/null +++ b/01_Archive/2026-04-20/08_React-API_Communication-Patterns.md @@ -0,0 +1,14 @@ +# ๐ก [LEVEL 8] API ํต์ ์ ํ๊ฒฉ: ์๋ฒ์ ๋ํํ๋ ๋ฒ + +## 1. Axios Interceptor: ๊ณตํญ ์ ์ ๊ตญ ์ฌ์ฌ +- ๋งค๋ฒ API ์ ๋๋ง๋ค ํ ํฐ ๋ฃ๊ณ ์๋ฌ ์ฒ๋ฆฌํ ๊ฑด๊ฐ? +- `interceptor`๋ฅผ ์จ์ ๋ชจ๋ ์์ฒญ์ **์๋์ผ๋ก ์ธ์ฆ ํ ํฐ**์ ๋ถ์ด๊ณ , ์๋ฌ ์๋ต์ ํ ๊ณณ์์ ์ฒ๋ฆฌํ๋ผ. + +## 2. HTTP ์๋ฌ ํธ๋ค๋ง (401, 404, 500) +- 401(๋ฏธ์ธ์ฆ)์ด ๋จ๋ฉด ์๋์ผ๋ก ๋ก๊ทธ์ธ ํ์ด์ง๋ก ๋ณด๋ด๊ฑฐ๋ ํ ํฐ์ ๊ฐฑ์ ํ๋ผ. +- ์ฌ์ฉ์๋ ํ์ ํ๋ฉด์ด ์๋๋ผ "์ ์ ํ ๋ค์ ์๋ํด ์ฃผ์ธ์"๋ผ๋ ์น์ ํ ๋ฉ์์ง๋ฅผ ์ํ๋ค. + +## 3. API ์ถ์ํ (Service Layer) +- ์ปดํฌ๋ํธ ์์ `axios.get('/api/users')` ๋ฅผ ์ง์ ์ฐ์ง ๋ง๋ผ. +- `userService.js` ํ์ผ์ ๋ฐ๋ก ๋ง๋ค์ด ํจ์ํํ๋ผ. +- **์ด์ **: API ์ฃผ์๊ฐ ๋ฐ๋์ด๋ ํ์ผ ํ๋๋ง ๊ณ ์น๋ฉด ๋๋ค. diff --git a/01_Archive/2026-04-20/09_Styling-Architecture_Governance.md b/01_Archive/2026-04-20/09_Styling-Architecture_Governance.md new file mode 100644 index 00000000..57db485d --- /dev/null +++ b/01_Archive/2026-04-20/09_Styling-Architecture_Governance.md @@ -0,0 +1,15 @@ +# ๐จ [LEVEL 9] ์คํ์ผ ๊ฑฐ๋ฒ๋์ค: ๋์์ธ ์์คํ ๊ตฌ์ถํ๊ธฐ + +## 1. CSS-in-JS vs Utility-First +- `Styled-components`: ์ปดํฌ๋ํธ ์ค์ฌ์ ์คํ์ผ๋ง. ๊ฐ๋ ์ฑ์ด ์ข๋ค. +- `Tailwind CSS`: ํด๋์ค ๊ธฐ๋ฐ์ ๋น ๋ฅธ ๊ฐ๋ฐ. ์์ฐ์ฑ์ด ๋ฏธ์ณค๋ค. +- **์ค๊ธ์ ์ ํ**: ํ์ ๊ท๋ชจ์ ํ๋ก์ ํธ ์ฑ๊ฒฉ์ ๋ง๋ ๋๊ตฌ๋ฅผ ์ ์ํ ์ค ์์์ผ ํ๋ค. + +## 2. Design Tokens: ๋ง๋ฒ์ ๋ณ์ +- `#FF5733` ์ด๋ผ๊ณ ์ง์ ์ฐ์ง ๋ง๋ผ. +- `theme.primary` ๋ผ๊ณ ๋ณ์(Token)๋ฅผ ์จ๋ผ. +- ํ์ฅ๋์ด "๋นจ๊ฐ์ ๋ค ํ๋์์ผ๋ก ๋ฐ๊ฟ!" ๋ผ๊ณ ํ ๋ 1์ด ๋ง์ ๋๋ผ ์ ์๋ค. + +## 3. ๋ฐ์ํ ๋์์ธ (Responsive) +- ๋ชจ๋ฐ์ผ ์ฐ์ (Mobile First)์ผ๋ก ์๊ฐํ๋ผ. +- ์์ ํ๋ฉด์์ ๋จผ์ ์ง๊ณ ํฐ ํ๋ฉด์ผ๋ก ๋ํ๊ฐ๋ ๊ฒ์ด ๋ ผ๋ฆฌ์ ์ผ๋ก ํจ์ฌ ๊ฐ๊ฒฐํ๋ค. diff --git a/01_Archive/2026-04-20/10_Modern-Environment_Ecosystem.md b/01_Archive/2026-04-20/10_Modern-Environment_Ecosystem.md new file mode 100644 index 00000000..49abf4cd --- /dev/null +++ b/01_Archive/2026-04-20/10_Modern-Environment_Ecosystem.md @@ -0,0 +1,15 @@ +# ๐๏ธ [LEVEL 10] ๋ชจ๋ ์คํ์ ์ ํ: Vite์ Next.js + +## 1. ์ ๊ด์ํ ๊ฐ์ ๊ฐ๋ฐ: Vite +- `Create React App(CRA)`์ ์ด์ ๋๋ฆฌ๊ณ ๋ฌด๊ฒ๋ค. +- `Vite`๋ ๋ธ๋ผ์ฐ์ ์ ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ ์จ์ ์๋ฒ ๊ตฌ๋์ด ๋น๋ณด๋ค ๋น ๋ฅด๋ค. +- **๊ตํ**: ๋๊ตฌ๊ฐ ๋ฐ๋๋ฉด ๊ฐ๋ฐ ๊ฒฝํ์ด ๋ฐ๋๊ณ , ๊ฐ๋ฐ ๊ฒฝํ์ ์์ฐ์ฑ์ด๋ค. + +## 2. Server Side Rendering (SSR) & Next.js +- ๊ตฌ๊ธ ๊ฒ์ ๋ก๋ด์ด ๋ด ์ฌ์ดํธ๋ฅผ ์ ์ฐพ๊ฒ ํ๋ ค๋ฉด(SEO) Next.js๊ฐ ํ์๋ค. +- "๊น๋นก์ ์๋ ํ์ด์ง ์ ํ" + "๋น ๋ฅธ ์ฒซ ๋ก๋ฉ"์ ์กฐํ. +- **ํต์ฌ**: ์ธ์ CSR(ํด๋ผ์ด์ธํธ)์ ์ฐ๊ณ ์ธ์ SSR(์๋ฒ)์ ์ธ์ง ๊ตฌ๋ถํ๋ผ. + +## 3. ํด๋ ๊ตฌ์กฐ์ ๋ฏธํ +- `components`, `hooks`, `services`, `utils`, `pages`. +- ๋๊ฐ ํ๋ก์ ํธ๋ฅผ ์ด์์ ๋ **"์, ์ฌ๊ธด ๋ญ๊ฐ ์๊ฒ ๊ตฌ๋"**๋ผ๊ณ ์ง์ํ๊ฒ ๋ง๋ค์ด๋ผ. diff --git a/01_Archive/2026-04-20/11_Reliability_Safety-First.md b/01_Archive/2026-04-20/11_Reliability_Safety-First.md new file mode 100644 index 00000000..bd3cf0cd --- /dev/null +++ b/01_Archive/2026-04-20/11_Reliability_Safety-First.md @@ -0,0 +1,12 @@ +# ๐ [LEVEL 11] ์ตํ์ ๋ฐฉ์ด์ : ์๋ฌ ๋ฐ์ด๋๋ฆฌ์ ๋ก๊น + +## 1. Error Boundary: ์ฑ์ ์ํธ์ +- ์ปดํฌ๋ํธ ํ๋์์ ์๋ฌ๊ฐ ๋ฌ๋ค๊ณ ์ ์ฒด ์ฑ์ด ํ์๊ฒ ์ฃฝ์ด์๋ ์ ๋๋ค. +- ์๋ฌ๊ฐ ๋ ๋ถ๋ถ๋ง "๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค"๋ผ๊ณ ๋ณด์ฌ์ฃผ๊ณ ๋๋จธ์ง๋ ์ด๋ ค๋ฌ๋ผ. + +## 2. Sentry: ๋์ ๋ณด์ด์ง ์๋ ๋ฒ๊ทธ ์ก๊ธฐ +- ์ฌ์ฉ์์ ์ปดํจํฐ์์ ๋๋ ์๋ฌ๋ ๊ฐ๋ฐ์๊ฐ ์ ์ ์๋ค. +- `Sentry` ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฐ๋ํด์, ์๋ฌ๊ฐ ๋๋ ์ฆ์ ๊ฐ๋ฐ์์๊ฒ ์ด๋ฉ์ผ๋ก ์ ๋ณดํ๊ฒ ํ๋ผ. + +## 3. ์ฌ์ฉ์ ๊ฒฝํ(UX) ๋ฐฐ๋ ค: Skeleton UI +- ๋ฐ์ดํฐ ๋ก๋ฉ ์ค์ผ ๋ ๋ฑ ๊ธ๋ฑ ๊ธ ๋๋ `Spinner` ๋ณด๋ค๋, ๋ฐ์ดํฐ๊ฐ ๋ค์ด์ฌ ์๋ฆฌ๋ฅผ ๋ฏธ๋ฆฌ ๋ณด์ฌ์ฃผ๋ `Skeleton`์ด ์ฌ๋ฆฌ์ ์ผ๋ก ํจ์ฌ ๋น ๋ฅด๋ค. diff --git a/01_Archive/2026-04-20/12_Deployment_Final-Gate.md b/01_Archive/2026-04-20/12_Deployment_Final-Gate.md new file mode 100644 index 00000000..a7132b04 --- /dev/null +++ b/01_Archive/2026-04-20/12_Deployment_Final-Gate.md @@ -0,0 +1,14 @@ +# ๐ [LEVEL 12] ๋ฐฐํฌ ํ๋กํ ์ฝ: ์ธ์์ผ๋ก ๋๊ฐ๋ ๋ง์ง๋ง ๊ด๋ฌธ + +## 1. GitHub Actions: ๋น์ ์ฑ์ฉํ๊ธฐ +- ๋ด๊ฐ `Push` ํ๋ฉด ์๋์ผ๋ก ํ ์คํธ ๋๋ฆฌ๊ณ , ์๋ฌ ์์ผ๋ฉด ๋ฐฐํฌ๊น์ง ํด์ฃผ๋ ๋น์๋ฅผ ๊ณ ์ฉํ๋ผ. +- **CI(์ง์์ ํตํฉ)**: ์ฝ๋ ํฉ์น ๋๋ง๋ค ๊ฒ์ฌํ๊ธฐ. +- **CD(์ง์์ ๋ฐฐํฌ)**: ์ฝ๋ ํฉ์น๋ฉด ๋ฐ๋ก ์๋ฒ์ ์ฌ๋ฆฌ๊ธฐ. + +## 2. Vercel & Netlify +- ์์ ์๋ ์๋ฒ ์ธํ ์ ๋ฉฐ์น ์ด ๊ฑธ๋ ธ๋ค. +- ์ง๊ธ์ ํด๋ฆญ ๋ช ๋ฒ์ผ๋ก ์ ์ธ๊ณ์ ๋ด ์ฑ์ ์๋น์คํ ์ ์๋ค. + +## 3. ํ๊ฒฝ ๋ณ์(ENV) ๊ด๋ฆฌ: ๋ณด์์ ํต์ฌ +- API Key๋ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ๊นํ๋ธ์ ์ฌ๋ฆฌ์ง ๋ง๋ผ. +- `.env` ํ์ผ์ ์ฐ๊ณ , ๋ฐฐํฌ ํ๊ฒฝ ์ค์ ์์ ๋ฐ๋ก ๊ด๋ฆฌํ๋ผ. **์ด๊ฑฐ ํ๋๋ก ํ์ฌ ๊ธฐ๋ฐ์ด ํธ๋ฆด ์ ์๋ค.** diff --git a/01_Archive/2026-04-20/13_TypeScript_Type-Safety.md b/01_Archive/2026-04-20/13_TypeScript_Type-Safety.md new file mode 100644 index 00000000..deb59847 --- /dev/null +++ b/01_Archive/2026-04-20/13_TypeScript_Type-Safety.md @@ -0,0 +1,14 @@ +# ๐ [LEVEL 13] ํ์ ์คํฌ๋ฆฝํธ: ํ๋ค๋ฆฌ์ง ์๋ ์ฝ๋์ ๋ผ๋ + +## 1. ์ธํฐํ์ด์ค(Interface)์ ํ์ (Type) +- "์ด ๋ฐ์ดํฐ๋ ์ด๋ป๊ฒ ์๊ฒผ์ด?"๋ฅผ ๋ฏธ๋ฆฌ ์ ์ํ๋ผ. +- ์คํ ๋๋ฌธ์ ๋ฐ์ํ๋ ๋ฉ์ฒญํ ๋ฒ๊ทธ์ 90%๋ฅผ ๋ง์์ค๋ค. +- **์์น**: `any`๋ฅผ ์ฐ๋ ๊ฒ์ ์ฝ๋ฉ์ ํฌ๊ธฐํ๋ ๊ฒ์ด๋ค. ์ฃฝ์ด๋ `any`๋ ์ฐ์ง ๋ง๋ผ. + +## 2. ์ ๋ค๋ฆญ(Generic): ์ ์ฐํ๋ฉด์๋ ์์ ํ๊ฒ +- ์ด๋ค ํ์ ์ด ๋ค์ด์ฌ์ง ๋ชจ๋ฅด์ง๋ง, ๋ค์ด์จ ํ์ ๊ทธ๋๋ก ๋ด๋ฑ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ผ. +- ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ปดํฌ๋ํธ(`Button`, `Select`)๋ฅผ ๋ง๋ค ๋ ์ค๊ธ์์ ์ค๋ ฅ์ด ์ฌ๊ธฐ์ ๋๋ฌ๋๋ค. + +## 3. ํ์ ์ถ๋ก ๊ณผ ์ขํ๊ธฐ(Narrowing) +- ๋ฆฌ์กํธ๊ฐ ํ์ ์ ๋๋ํ๊ฒ ์ ์ถํ๊ฒ ๋์์ค๋ผ. +- `if (user)` ์ฒ๋ผ ํ์ ์ ์ขํ์ `undefined` ์๋ฌ๋ฅผ ์์ฒ ์ฐจ๋จํ๋ผ. diff --git a/01_Archive/2026-04-20/14_Accessibility_Inclusivity.md b/01_Archive/2026-04-20/14_Accessibility_Inclusivity.md new file mode 100644 index 00000000..230d11d0 --- /dev/null +++ b/01_Archive/2026-04-20/14_Accessibility_Inclusivity.md @@ -0,0 +1,14 @@ +# โฟ [LEVEL 14] ์น ์ ๊ทผ์ฑ: ๋ชจ๋๋ฅผ ์ํ ๋ฐฐ๋ ค + +## 1. Semantic HTML์ ์ง์ ํ ์๋ฏธ +- `` ๋ก๋ง ๋๋ฐฐํ์ง ๋ง๋ผ. ์คํฌ๋ฆฐ ๋ฆฌ๋๋ ``๋ฅผ ์ดํดํ์ง ๋ชปํ๋ค. +- ``, ``, ``, ``๋ฅผ ์ ์ฌ์ ์์ ์จ๋ผ. +- **์ด์ **: ์ด๊ฑด ๋จ์ํ ์ฐฉํ ์ผ์ด ์๋๋ผ, **๊ฒ์ ์์ง ์ต์ ํ(SEO)**์ ์ง๊ฒฐ๋๋ค. + +## 2. ARIA(Accessible Rich Internet Applications) +- ํ์ค ํ๊ทธ๋ก ์ค๋ช ์ด ์ ๋ ๋ `aria-label` ๋ฑ์ ์จ์ ํํธ๋ฅผ ์ค๋ผ. +- "์ด ๋ฒํผ์ ๋ฉ๋ด๋ฅผ ๋ซ๋ ๋ฒํผ์ ๋๋ค"๋ผ๊ณ ๊ธฐ๊ณ์๊ฒ ์๋ ค์ฃผ๋ ๋ฐฐ๋ ค๋ค. + +## 3. ํค๋ณด๋ ๋ค๋น๊ฒ์ด์ +- ๋ง์ฐ์ค ์์ด๋ ํญ(`Tab`) ํค๋ง์ผ๋ก ๋ด ์ฑ์ ๋ชจ๋ ๊ธฐ๋ฅ์ ์ธ ์ ์๊ฒ ํ๋ผ. +- ๋๊ตฐ๊ฐ์๊ฒ๋ ์ด๊ฒ์ด ์ธ์๊ณผ ์ํตํ๋ ์ ์ผํ ๊ธธ์ด๋ค. diff --git a/01_Archive/2026-04-20/15_Collaboration_Governance.md b/01_Archive/2026-04-20/15_Collaboration_Governance.md new file mode 100644 index 00000000..30274641 --- /dev/null +++ b/01_Archive/2026-04-20/15_Collaboration_Governance.md @@ -0,0 +1,15 @@ +# ๐ค [LEVEL 15] ํ์ ๊ณผ ๊ฑฐ๋ฒ๋์ค: ํผ์ ํ๋ ๊ฒ ์๋๋ค + +## 1. ์ ์ค์ PR(Pull Request) ์ฐ๊ธฐ +- "์์ ํจ" ํ๋ง๋๋ ๋ฌด์ฑ ์ํ๋ค. +- **๋ฌด์์(What), ์(Why), ์ด๋ป๊ฒ(How)** ํ๋์ง, ๊ทธ๋ฆฌ๊ณ ์คํฌ๋ฆฐ์ท์ ์ฒจ๋ถํ๋ผ. +- ๋๋ฃ์ ์๊ฐ์ ์๊ปด์ฃผ๋ ๊ฒ์ด ์ต๊ณ ์ ์ค๋ ฅ์ด๋ค. + +## 2. ์ฝ๋ ๋ฆฌ๋ทฐ ๋งค๋ (The Kodari Way) +- ์ฝ๋๋ฅผ ๋นํํ๋ ์ฌ๋์ ๋นํํ์ง ๋ง๋ผ. +- "์ ์ด๋ ๊ฒ ํ๋์?" ๋ณด๋ค๋ "์ด๋ฐ ๋ฐฉ์์ ์ด๋จ๊น์?"๋ผ๊ณ ์ ์ํ๋ผ. +- **Pn ๊ท์น**: P1(๊ผญ ์์ ), P2(๊ถ์ฅ), P3(์ง๋ฌธ/์ ์) ์์ผ๋ก ์ค์๋๋ฅผ ํ์ํ๋ผ. + +## 3. ๋ฌธ์ํ(Documentation): ๋ฏธ๋์ ๋์๊ฒ ๋ณด๋ด๋ ํธ์ง +- ๋ณต์กํ ๋ก์ง์ **์ฃผ์**์ด๋ **README**์ ๋จ๊ฒจ๋ผ. +- 3๊ฐ์ ๋ค์ ๋น์ ์ ์ค๋์ ๋น์ ์ ์ ๋ ๊ธฐ์ตํ์ง ๋ชปํ๋ค. diff --git a/10_Wiki/Topics/.obsidian/workspace.json b/10_Wiki/Topics/.obsidian/workspace.json index 260dfc42..1cc6701a 100644 --- a/10_Wiki/Topics/.obsidian/workspace.json +++ b/10_Wiki/Topics/.obsidian/workspace.json @@ -178,6 +178,21 @@ }, "active": "5e19c94f304a33d1", "lastOpenFiles": [ + "Collaboration_Governance.md", + "Accessibility_Inclusivity.md", + "TypeScript_Type_Safety.md", + "Deployment_Final_Gate.md", + "Reliability_Safety_First.md", + "Modern_Environment_Ecosystem.md", + "Styling_Governance.md", + "API_Communication_Patterns.md", + "React_Testing_Strategy.md", + "React_Clean_Code_Best_Practices.md", + "React_State_Management_Strategy.md", + "React_Performance_Optimization.md", + "Component_Design_Patterns.md", + "React_Hooks_Deep_Dive.md", + "React_Mental_Model.md", "Tetris_Project_Retrospective.md", "System_Debugging_Protocol.md", "System_Protocol_Standard.md", diff --git a/10_Wiki/Topics/API_Communication_Patterns.md b/10_Wiki/Topics/API_Communication_Patterns.md new file mode 100644 index 00000000..52608e80 --- /dev/null +++ b/10_Wiki/Topics/API_Communication_Patterns.md @@ -0,0 +1,19 @@ +--- +title: ํจ์จ์ ์ธ API ํต์ ํจํด (Axios & Interceptors) +category: Software Architecture +tags: [API, Axios, Interceptor, Error Handling, Network] +created: 2026-04-20 +--- + +# ํจ์จ์ ์ธ API ํต์ ํจํด + +## ๐ก ์ธํ๋ผ ์ค๊ณ +- **Service Layer**: API ํธ์ถ ๋ก์ง์ ์ปดํฌ๋ํธ์ ๋ถ๋ฆฌํ์ฌ ๋ณ๋ ๋ชจ๋ํ. +- **Interceptors**: ์ ์ญ ์์ฒญ ํค๋ ์ฃผ์ ๋ฐ ์ ์ญ ์๋ฌ ํธ๋ค๋ง. + +## ๐จ ์๋ฌ ๋์ +401(ํ ํฐ ๋ง๋ฃ), 500(์๋ฒ ์ฅ์ ) ๋ฑ ๊ณตํต ์๋ฌ์ ๋ํ ์ค์ ์ง์คํ ๋์ ์๋๋ฆฌ์ค ์๋ฆฝ. + +## ๐ ์ฐ๊ฒฐ๋ ์ง์ +- [[System_Protocol_Standard]] +- [[React_State_Management_Strategy]] diff --git a/10_Wiki/Topics/Accessibility_Inclusivity.md b/10_Wiki/Topics/Accessibility_Inclusivity.md new file mode 100644 index 00000000..0492f311 --- /dev/null +++ b/10_Wiki/Topics/Accessibility_Inclusivity.md @@ -0,0 +1,17 @@ +--- +title: ์น ์ ๊ทผ์ฑ ๋ฐ ํฌ์ฉ์ ์ค๊ณ (a11y) +category: Software Architecture +tags: [Accessibility, a11y, Semantic HTML, Inclusivity] +created: 2026-04-20 +--- + +# ์น ์ ๊ทผ์ฑ ๋ฐ ํฌ์ฉ์ ์ค๊ณ + +## โฟ ์ค๊ณ ์์น +- **Semantic HTML**: ๊ธฐ๊ณ๊ฐ ์ดํดํ ์ ์๋ ์๋ฏธ๋ก ์ ํ๊ทธ ์ฌ์ฉ. +- **ARIA**: ํ์ค ํ๊ทธ ์ธ์ ์ธํฐ๋์ ์ ๋ํ ์๋ฏธ ๋ณด๊ฐ. +- **Keyboard Navigation**: ๋ง์ฐ์ค ์์ด๋ ๋ชจ๋ ๊ธฐ๋ฅ ์ ๊ทผ ๊ฐ๋ฅํ๊ฒ ์ค๊ณ. + +## ๐ ์ฐ๊ฒฐ๋ ์ง์ +- [[Styling_Governance]] +- [[React_Clean_Code_Best_Practices]] diff --git a/10_Wiki/Topics/Collaboration_Governance.md b/10_Wiki/Topics/Collaboration_Governance.md new file mode 100644 index 00000000..941c783f --- /dev/null +++ b/10_Wiki/Topics/Collaboration_Governance.md @@ -0,0 +1,17 @@ +--- +title: ํ์ ๊ฐ์ด๋๋ผ์ธ ๋ฐ ์ฝ๋ ๊ฑฐ๋ฒ๋์ค +category: Software Architecture +tags: [Collaboration, PR, Code Review, Documentation, Governance] +created: 2026-04-20 +--- + +# ํ์ ๊ฐ์ด๋๋ผ์ธ ๋ฐ ์ฝ๋ ๊ฑฐ๋ฒ๋์ค + +## ๐ค ํ์ ๋ฌธํ +- **PR Protocol**: ๋ณ๊ฒฝ ๋ชฉ์ ๊ณผ ๊ธฐ์ ์ ๊ณ ๋ฏผ์ ์์ธํ ๊ธฐ๋ก. +- **Code Review**: ๋นํ์ด ์๋ ๊ฐ์ ์ ์ํ ์ปค๋ฎค๋์ผ์ด์ . +- **Documentation**: ๋ฏธ๋์ ์์ ๊ณผ ๋๋ฃ๋ฅผ ์ํ ์ง์์ ์ธ ๋ฌธ์ ๊ด๋ฆฌ. + +## ๐ ์ฐ๊ฒฐ๋ ์ง์ +- [[React_Clean_Code_Best_Practices]] +- [[Deployment_Final_Gate]] diff --git a/10_Wiki/Topics/Component_Design_Patterns.md b/10_Wiki/Topics/Component_Design_Patterns.md new file mode 100644 index 00000000..150f4ede --- /dev/null +++ b/10_Wiki/Topics/Component_Design_Patterns.md @@ -0,0 +1,17 @@ +--- +title: ์ปดํฌ๋ํธ ์ค๊ณ ํจํด (Atomic & Composition) +category: Software Architecture +tags: [Design Pattern, Atomic Design, Composition, Architecture] +created: 2026-04-20 +--- + +# ์ปดํฌ๋ํธ ์ค๊ณ ํจํด + +## ๐งฉ ๊ตฌ์กฐ ์ค๊ณ +1. **Atomic Design**: Atom(์ต์ ๋จ์) -> Molecule -> Organism -> Template -> Page ์์ผ๋ก ์กฐ๋ฆฝ. +2. **Container-Presenter**: ๋ก์ง ๋ด๋น๊ณผ UI ๋ด๋น์ ๋ถ๋ฆฌ. +3. **Component Composition**: Props Drilling์ ๋ฐฉ์งํ๊ธฐ ์ํด ์์์ ํต์งธ๋ก ๋๊ธฐ๋ ์ ๋ต. + +## ๐ ์ฐ๊ฒฐ๋ ์ง์ +- [[Project_Architecture_Guidelines]] +- [[Styling_Governance]] diff --git a/10_Wiki/Topics/Deployment_Final_Gate.md b/10_Wiki/Topics/Deployment_Final_Gate.md new file mode 100644 index 00000000..fb2d1b96 --- /dev/null +++ b/10_Wiki/Topics/Deployment_Final_Gate.md @@ -0,0 +1,19 @@ +--- +title: ๋ฐฐํฌ ํ๋กํ ์ฝ ๋ฐ CI/CD ์๋ํ +category: Software Architecture +tags: [Deployment, CI/CD, GitHub Actions, Vercel, DevOps] +created: 2026-04-20 +--- + +# ๋ฐฐํฌ ํ๋กํ ์ฝ ๋ฐ CI/CD ์๋ํ + +## ๐ ํ์ดํ๋ผ์ธ +- **CI (Continuous Integration)**: ๋น๋ ๋ฐ ํ ์คํธ ์๋ํ. +- **CD (Continuous Deployment)**: ๋ฐฐํฌ ์๋ํ (Vercel, AWS). + +## ๐ ๋ณด์ ์ ์ฑ +ํ๊ฒฝ ๋ณ์(`.env`) ๊ด๋ฆฌ๋ฅผ ํตํ ๋ฏผ๊ฐ ์ ๋ณด ๋ณดํธ ๋ฐ ๋ณด์ ์ฌ๊ณ ๋ฐฉ์ง. + +## ๐ ์ฐ๊ฒฐ๋ ์ง์ +- [[Modern_Environment_Ecosystem]] +- [[Collaboration_Governance]] diff --git a/10_Wiki/Topics/Modern_Environment_Ecosystem.md b/10_Wiki/Topics/Modern_Environment_Ecosystem.md new file mode 100644 index 00000000..75a4a057 --- /dev/null +++ b/10_Wiki/Topics/Modern_Environment_Ecosystem.md @@ -0,0 +1,19 @@ +--- +title: ๋ชจ๋ ๊ฐ๋ฐ ํ๊ฒฝ ๋ฐ ํ๋ ์์ํฌ ์ํ๊ณ +category: Software Architecture +tags: [Vite, Next.js, Ecosystem, Modern Stack] +created: 2026-04-20 +--- + +# ๋ชจ๋ ๊ฐ๋ฐ ํ๊ฒฝ ๋ฐ ํ๋ ์์ํฌ ์ํ๊ณ + +## ๐๏ธ ๋๊ตฌ์ ์ ํ +- **Vite**: ์ด๊ณ ์ ๋ฒ๋ค๋ง ๋ฐ ๊ฐ๋ฐ ์์ฐ์ฑ. +- **Next.js**: SSR/SSG ์ง์์ ํตํ SEO ์ต์ ํ ๋ฐ ํ์คํ ๊ธฐ๋ฅ. + +## ๐ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ +ํ๋ก์ ํธ ์ ๋ฐ์ ์ผ๊ด์ฑ์ ์ํ ํด๋ ๋ ์ด์์ ํ์ค ํ๋ฆฝ. + +## ๐ ์ฐ๊ฒฐ๋ ์ง์ +- [[Deployment_Final_Gate]] +- [[Project_Architecture_Guidelines]] diff --git a/10_Wiki/Topics/React_Clean_Code_Best_Practices.md b/10_Wiki/Topics/React_Clean_Code_Best_Practices.md new file mode 100644 index 00000000..34ce7ae2 --- /dev/null +++ b/10_Wiki/Topics/React_Clean_Code_Best_Practices.md @@ -0,0 +1,17 @@ +--- +title: ๋ฆฌ์กํธ ํด๋ฆฐ ์ฝ๋ ๋ฐ ๊ฐ๋ฐ ์ํฐ์ผ +category: Software Architecture +tags: [Clean Code, Etiquette, Best Practice, Readable Code] +created: 2026-04-20 +--- + +# ๋ฆฌ์กํธ ํด๋ฆฐ ์ฝ๋ ๋ฐ ๊ฐ๋ฐ ์ํฐ์ผ + +## ๐งน ํต์ฌ ์์น +- **Early Return**: ๋ณต์กํ ์กฐ๊ฑด๋ฌธ์ ํผํ๊ณ ์์ธ๋ฅผ ๋จผ์ ์ฒ๋ฆฌ. +- **Destructuring**: Props ๋ฐ ๋ฐ์ดํฐ ๊ตฌ์กฐ ๋ถํด ํ ๋น์ผ๋ก ๊ฐ๋ ์ฑ ํ๋ณด. +- **Explicit Naming**: ๋ณ์์ ํจ์๋ช ์ ์๋๋ฅผ ๋ช ํํ ํจ (e.g., `handleBtnClick` ๋์ `handleSubmit`). + +## ๐ ์ฐ๊ฒฐ๋ ์ง์ +- [[Collaboration_Governance]] +- [[System_Debugging_Protocol]] diff --git a/10_Wiki/Topics/React_Hooks_Deep_Dive.md b/10_Wiki/Topics/React_Hooks_Deep_Dive.md new file mode 100644 index 00000000..953720e9 --- /dev/null +++ b/10_Wiki/Topics/React_Hooks_Deep_Dive.md @@ -0,0 +1,20 @@ +--- +title: ๋ฆฌ์กํธ ํ (Hooks) ์ฌ์ธต ๋ถ์ ๋ฐ ํ์ฉ +category: Software Architecture +tags: [React, Hooks, useEffect, Custom Hooks] +created: 2026-04-20 +--- + +# ๋ฆฌ์กํธ ํ (Hooks) ์ฌ์ธต ๋ถ์ + +## ๐ก useEffect์ ๋ณธ์ง +- ๋จ์ํ ๋ผ์ดํ์ฌ์ดํด ํจ์๊ฐ ์๋๋ผ, **์ธ๋ถ ์์คํ ๊ณผ์ ๋๊ธฐํ** ์ฅ์น์. +- ์์กด์ฑ ๋ฐฐ์ด(`deps`) ๊ด๋ฆฌ๊ฐ ํต์ฌ. + +## ๐ ๏ธ Custom Hooks +- ์ปดํฌ๋ํธ์์ ๋น์ฆ๋์ค ๋ก์ง์ ๋ถ๋ฆฌํ์ฌ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ๊ฒ ๋ง๋๋ ๊ธฐ์ . +- UI ์ปดํฌ๋ํธ๋ ์ค์ง ๋ฐ์ดํฐ ์ ๋ฌ๊ณผ ๋ ๋๋ง์๋ง ์ง์คํ๊ฒ ํจ. + +## ๐ ์ฐ๊ฒฐ๋ ์ง์ +- [[React_Mental_Model]] +- [[React_Performance_Optimization]] diff --git a/10_Wiki/Topics/React_Mental_Model.md b/10_Wiki/Topics/React_Mental_Model.md new file mode 100644 index 00000000..3c2fa037 --- /dev/null +++ b/10_Wiki/Topics/React_Mental_Model.md @@ -0,0 +1,20 @@ +--- +title: ๋ฆฌ์กํธ ํต์ฌ ๋ฉํ ๋ชจ๋ธ (UI as a Function of State) +category: Software Architecture +tags: [React, State, Mental Model, Immutability] +created: 2026-04-20 +--- + +# ๋ฆฌ์กํธ ํต์ฌ ๋ฉํ ๋ชจ๋ธ + +## ๐ฏ ํต์ฌ ๊ฐ๋ +๋ฆฌ์กํธ ์ฑ์ ๋จ์ํ DOM์ ์กฐ์ํ๋ ๊ฒ์ด ์๋๋ผ, **์ํ(State)**๊ฐ ๋ฐ๋๋ฉด UI๊ฐ ์๋์ผ๋ก ์ ๋ฐ์ดํธ๋๋ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋๋ค. + +## ๐งฑ 3๋ ์์น +1. **Immutability (๋ถ๋ณ์ฑ)**: ์ํ๋ ์ง์ ์์ ํ์ง ์๊ณ ํญ์ ์๋ก์ด ๋ณต์ฌ๋ณธ์ ๋ง๋ค์ด ๊ต์ฒดํด์ผ ํจ. +2. **Declarative UI (์ ์ธํ UI)**: "์ด๋ป๊ฒ"๊ฐ ์๋๋ผ "๋ฌด์์" ๋ณด์ฌ์ค์ง์ ์ง์ค. +3. **Unidirectional Data Flow (๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ)**: Props๋ ๋ถ๋ชจ์์ ์์์ผ๋ก๋ง ํ๋ฆ. + +## ๐ ์ฐ๊ฒฐ๋ ์ง์ +- [[React_Hooks_Deep_Dive]] +- [[Component_Design_Patterns]] diff --git a/10_Wiki/Topics/React_Performance_Optimization.md b/10_Wiki/Topics/React_Performance_Optimization.md new file mode 100644 index 00000000..f4199c4d --- /dev/null +++ b/10_Wiki/Topics/React_Performance_Optimization.md @@ -0,0 +1,20 @@ +--- +title: ๋ฆฌ์กํธ ๋ ๋๋ง ์ต์ ํ ์ ๋ต +category: Software Architecture +tags: [Performance, Memoization, React.memo, Optimization] +created: 2026-04-20 +--- + +# ๋ฆฌ์กํธ ๋ ๋๋ง ์ต์ ํ ์ ๋ต + +## โก ์ฃผ์ ๋๊ตฌ +- **React.memo**: Props ๋ณ๊ฒฝ์ด ์์ ๋ ์ฌ๋ ๋๋ง ๋ฐฉ์ง. +- **useMemo / useCallback**: ์ฐ์ฐ ๊ฒฐ๊ณผ ๋ฐ ํจ์ ๊ฐ์ฒด์ ๋ฉ๋ชจ์ด์ ์ด์ . +- **Virtualization**: ๋๋์ ๋ฆฌ์คํธ ๋ ๋๋ง ์ ํ๋ฉด์ ๋ณด์ด๋ ๊ฒ๋ง ์ฒ๋ฆฌ. + +## ๐จ ์ฃผ์์ฌํญ +์ฑ๊ธํ ์ต์ ํ(Premature Optimization)๋ ์ง์ํ๋ฉฐ, ๋ฐ๋์ ์ฑ๋ฅ ์ธก์ ์ ์ ํํด์ผ ํจ. + +## ๐ ์ฐ๊ฒฐ๋ ์ง์ +- [[WebWorker_Performance]] +- [[System_Debugging_Protocol]] diff --git a/10_Wiki/Topics/React_State_Management_Strategy.md b/10_Wiki/Topics/React_State_Management_Strategy.md new file mode 100644 index 00000000..f28fe0be --- /dev/null +++ b/10_Wiki/Topics/React_State_Management_Strategy.md @@ -0,0 +1,20 @@ +--- +title: ์ ๋ต์ ์ํ ๊ด๋ฆฌ ๊ฐ์ด๋ (Global & Server State) +category: Software Architecture +tags: [State Management, React Query, SSOT, Architecture] +created: 2026-04-20 +--- + +# ์ ๋ต์ ์ํ ๊ด๋ฆฌ ๊ฐ์ด๋ + +## ๐ ์ํ์ ๋ถ๋ฅ +1. **UI State**: ๋ก์ปฌ ์ํ (useState). +2. **Global State**: ์ ์ญ ์ํ (Context API, Zustand/Redux). +3. **Server State**: ์๋ฒ ๋ฐ์ดํฐ (React Query, SWR). + +## ๐ฏ ์์น +์ํ๋ ๊ฐ๋ฅํ ๋ฎ๊ฒ(Lift State Down), ํ์ํ ๋๋ง ๋๊ฒ(Lift State Up) ์ ์งํ์ฌ ๋ณต์ก๋๋ฅผ ๊ด๋ฆฌํจ. + +## ๐ ์ฐ๊ฒฐ๋ ์ง์ +- [[React_Hooks_Deep_Dive]] +- [[System_Protocol_Standard]] diff --git a/10_Wiki/Topics/React_Testing_Strategy.md b/10_Wiki/Topics/React_Testing_Strategy.md new file mode 100644 index 00000000..2dce3c56 --- /dev/null +++ b/10_Wiki/Topics/React_Testing_Strategy.md @@ -0,0 +1,20 @@ +--- +title: ๋ฆฌ์กํธ ์ ํ๋ฆฌ์ผ์ด์ ํ ์คํธ ์ ๋ต +category: Software Architecture +tags: [Testing, Vitest, RTL, Unit Test, QA] +created: 2026-04-20 +--- + +# ๋ฆฌ์กํธ ์ ํ๋ฆฌ์ผ์ด์ ํ ์คํธ ์ ๋ต + +## ๐งช ํ ์คํธ ํผ๋ผ๋ฏธ๋ +- **Unit Test**: ๊ฐ๋ณ ์ ํธ๋ฆฌํฐ/ํจ์ ๊ฒ์ฆ. +- **Integration Test**: ์ปดํฌ๋ํธ ๊ฐ ์ํธ์์ฉ ๋ฐ UI ํ๋ฆ ๊ฒ์ฆ. + +## ๐ ๏ธ ๋๊ตฌ +- **Vitest**: ๊ณ ์ฑ๋ฅ ํ ์คํธ ๋ฌ๋. +- **React Testing Library**: ์ฌ์ฉ์ ์ค์ฌ์ DOM ํ ์คํธ ์งํฅ. + +## ๐ ์ฐ๊ฒฐ๋ ์ง์ +- [[System_Debugging_Protocol]] +- [[Reliability_Safety_First]] diff --git a/10_Wiki/Topics/Reliability_Safety_First.md b/10_Wiki/Topics/Reliability_Safety_First.md new file mode 100644 index 00000000..eb50a016 --- /dev/null +++ b/10_Wiki/Topics/Reliability_Safety_First.md @@ -0,0 +1,16 @@ +--- +title: ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฑ ๋ฐ ๋ก๊น (Error Boundary) +category: Software Architecture +tags: [Reliability, Error Boundary, Sentry, Logging, Stability] +created: 2026-04-20 +--- + +# ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฑ ๋ฐ ๋ก๊น + +## ๐ ์ฅ์ ๋์ +- **Error Boundary**: ๊ตญ์์ ์๋ฌ๊ฐ ์ ์ฒด ์ฑ์ ๋ฌด๋๋จ๋ฆฌ์ง ์๋๋ก ๋ณดํธ. +- **Logging (Sentry)**: ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ์๋ฌ์ ์ค์๊ฐ ๋ชจ๋ํฐ๋ง ๋ฐ ์ถ์ . + +## ๐ ์ฐ๊ฒฐ๋ ์ง์ +- [[System_Debugging_Protocol]] +- [[React_Testing_Strategy]] diff --git a/10_Wiki/Topics/Styling_Governance.md b/10_Wiki/Topics/Styling_Governance.md new file mode 100644 index 00000000..2e13b6bb --- /dev/null +++ b/10_Wiki/Topics/Styling_Governance.md @@ -0,0 +1,19 @@ +--- +title: ์คํ์ผ ๊ฑฐ๋ฒ๋์ค ๋ฐ ๋์์ธ ์์คํ +category: Software Architecture +tags: [Styling, Tailwind, CSS-in-JS, Design System, Responsive] +created: 2026-04-20 +--- + +# ์คํ์ผ ๊ฑฐ๋ฒ๋์ค ๋ฐ ๋์์ธ ์์คํ + +## ๐จ ์คํ์ผ ์ ๋ต +- **Design Tokens**: ์์, ์ฌ๋ฐฑ, ํฐํธ๋ฅผ ๋ณ์ํํ์ฌ ์ ์ง๋ณด์์ฑ ํ๋ณด. +- **Tailwind CSS**: ์ ํธ๋ฆฌํฐ ์ฐ์ ๋ฐฉ์์ผ๋ก ๊ฐ๋ฐ ์๋ ๊ทน๋ํ. + +## ๐ฑ ๋ฐ์ํ ์ค๊ณ +Mobile First ์์น์ ์ค์ํ์ฌ ์ํฅ์ ๋ฏธ๋์ด ์ฟผ๋ฆฌ ์ ์ฉ. + +## ๐ ์ฐ๊ฒฐ๋ ์ง์ +- [[Component_Design_Patterns]] +- [[Accessibility_Inclusivity]] diff --git a/10_Wiki/Topics/TypeScript_Type_Safety.md b/10_Wiki/Topics/TypeScript_Type_Safety.md new file mode 100644 index 00000000..2ba4f7ee --- /dev/null +++ b/10_Wiki/Topics/TypeScript_Type_Safety.md @@ -0,0 +1,20 @@ +--- +title: ํ์ ์คํฌ๋ฆฝํธ ๊ธฐ๋ฐ์ ์์ ์ ๊ฐ๋ฐ (Type Safety) +category: Software Architecture +tags: [TypeScript, Interface, Type Safety, Generic] +created: 2026-04-20 +--- + +# ํ์ ์คํฌ๋ฆฝํธ ๊ธฐ๋ฐ์ ์์ ์ ๊ฐ๋ฐ + +## ๐ ํต์ฌ ์ฅ์ +- ์ปดํ์ผ ๋จ๊ณ์ ์๋ฌ ํฌ์ฐฉ์ผ๋ก ์ฌํ ๋ฒ๊ทธ 90% ์ด์ ์๋ฐฉ. +- ์ฝ๋ ์์ฒด๊ฐ ๋ฌธ์๊ฐ ๋๋ ์๋ ๋ช ์ธ ํจ๊ณผ. + +## ๐ ๏ธ ๊ณ ๊ธ ๋ฌธ๋ฒ +- **Generic**: ์ฌ์ฌ์ฉ์ฑ ๋์ ํ์ ์ค๊ณ. +- **Narrowing**: ๋ฐํ์ ํ์ ๊ฒ์ฌ ๋ฐ ์ขํ๊ธฐ๋ฅผ ํตํ ์์ ํ ๋ฐ์ดํฐ ์ฒ๋ฆฌ. + +## ๐ ์ฐ๊ฒฐ๋ ์ง์ +- [[React_Clean_Code_Best_Practices]] +- [[React_Hooks_Deep_Dive]]