์ ์ฒด ๊ธ207 [๊ณต์๋ฌธ์ ๋ฒ์ญ] Composition Pattern ์ปดํฌ์งํธ ํจํด? ์ปดํฌ์งํธ ํจํด์ ๊ฐ์ฒด๋ค์ ๊ด๊ณ๋ฅผ ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ๊ตฌ์ฑํ์ฌ ๋ถ๋ถ-์ ์ฒด ๊ณ์ธต์ ํํํ๋ ํจํด์ผ๋ก, ์ฌ์ฉ์๊ฐ ๋จ์ผ ๊ฐ์ฒด์ ๋ณตํฉ ๊ฐ์ฒด ๋ชจ๋ ๋์ผํ๊ฒ ๋ค๋ฃจ๋๋ก ํ๋ค ์๋๋ ๊ฐ์ฒด์งํฅ์์ ์ฌ์ฉ๋๋ ํจํด์ธ๋ฏํ๋ค ์ด๊ฑธ ์ด๋ป๊ฒ NextJS์์ ์ฌ์ฉํ๊ฒ ๋ ์ง, ๊ณต์๋ฌธ์๋ฅผ ์ ๋ฆฌํด๋ณด์๋ค Server and Client Composition Patterns ์๋ฒ์ ํด๋ผ์ด์ธํธ์ ์ปดํฌ์งํธ ํจํด ๋ฆฌ์กํธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ๋, ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ด๋ค ๋ถ๋ถ์ด ์๋ฒ์์ ๋ ๋๋์ด์ผ ํ๋์ง ๋๋ ํด๋ผ์ด์ธํธ์์ ๋ ๋๋์ด์ผ ํ๋์ง๋ฅผ ๊ณ ๋ คํ ํ์๊ฐ ์๋ค. ์ด ํ์ด์ง๋ ์๋ฒ ์ปดํฌ๋ํธ์ ํด๋ผ์ด์ธํธ ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ ๋ ์ถ์ฒ๋๋ ์ปดํฌ์ง์ ํจํด์ ๋ค๋ฃฌ๋ค. When to use Server and Client Components? ์ธ์ ์๋ฒ ์ปด.. 2024. 3. 22. [๊ณต์๋ฌธ์ ๋ฒ์ญ] NextJS ํด๋ผ์ด์ธํธ ์ปดํฌ๋ํธ Client Componentsํด๋ผ์ด์ธํธ ์ปดํฌ๋ํธํด๋ผ์ด์ธํธ ์ปดํฌ๋ํธ๋ ์๋ฒ์์ ๋ฏธ๋ฆฌ ๋ ๋๋ง๋ ์ํธ์์ฉ์ด ๊ฐ๋ฅํ UI๋ฅผ ์์ฑํ ์ ์๊ฒ ํ๊ณ , ๋ธ๋ผ์ฐ์ ์์ ๋์ํ๋ JavaScript๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ํด์ค๋ค.์ด ํ์ด์ง๋ ์ด๋ป๊ฒ ํด๋ผ์ด์ธํธ ์ปดํฌ๋ํธ๊ฐ ๋์ํ๋์ง, ์ด๋ป๊ฒ ๊ทธ๋ค์ด ๋ ๋๋๋์ง, ๊ทธ๋ฆฌ๊ณ ์ธ์ ๊ทธ๊ฒ์ ์ฌ์ฉํด์ผ ํ๋์ง์ ๋ํด ์์๋ณผ ๊ฒ์ด๋ค. Benefits of Client Renderingํด๋ผ์ด์ธํธ ๋ ๋๋ง์ ์ด์ ํด๋ผ์ด์ธํธ์ธก์์ ๋ ๋๋ง ์์ ์ ํ๋ ๊ฒ์ ๋ค์๊ณผ ๊ฐ์ 2๊ฐ์ง ์ด์ ์ ๊ฐ์ง๋ค.Interactivity (์ํธ์์ฉ): ํด๋ผ์ด์ธํธ ์ปดํฌ๋ํธ๋ ์ํ(state), ํจ๊ณผ(effects), ์ด๋ฒคํธ ๋ฆฌ์ค๋(event listeners)๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ํด์ค๋ค. ๊ทธ๊ฒ์ ์ ์ ์๊ฒ ์ฆ๊ฐ์ ์ธ ํผ๋๋ฐฑ์ ์ ๊ณตํ๊ณ .. 2024. 3. 21. [๊ณต์๋ฌธ์ ๋ฒ์ญ] NextJS ์๋ฒ ์ปดํฌ๋ํธ Server Components Next13์ด ๋ฑ์ฅํ๋ฉด์ ๊ฐ์ฅ ์ค์ํ ๋ณํ๋ ์๋ฒ ์ปดํฌ๋ํธ๋ผ๊ณ ์๊ฐ๋๋ค ๋ฆฌ์กํธ ์๋ฒ ์ปดํฌ๋ํธ(RSC)๋ ์๋ฒ์์ ๋ ๋๋ง๋๊ณ ์ ํ์ ์ผ๋ก ์บ์๋ ์ ์๋ UI๋ฅผ ์์ฑํ ์ ์๋๋ก ํด์ค๋ค. NextJS์์ ๋ ๋๋ง ์์ ์ Route Segment ๋ณ๋ก ๋ถํ ๋๊ธฐ ๋๋ฌธ์ ์คํธ๋ฆฌ๋ฐ(Streaming)๊ณผ ๋ถ๋ถ ๋ ๋๋ง์ด ๊ฐ๋ฅํ๋ค. ์๋ฒ ๋ ๋๋ง ๋ฐฉ์์๋ 3๊ฐ์ง๊ฐ ์๋ค. Static Rendering (์ ์ ๋ ๋๋ง) Dynamic Rendering (๋์ ๋ ๋๋ง) Streaming (์คํธ๋ฆฌ๋ฐ) Benefits of Server Rendering ์๋ฒ์์ ๋ ๋๋ง์ ํ์ ๋์ ์ด์ Data Fetching (๋ฐ์ดํฐ ๋ถ๋ฌ์ค๊ธฐ) ์๋ฒ ์ปดํฌ๋ํธ๋ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ค๋ ๋ก์ง์ ๋ฐ์ดํฐ ์์ค์ ๊ฐ๊น์ด์ ์๋ .. 2024. 3. 20. 7. ์น ์๋ฒ ๊ตฌ์ ์ด๋ฒ ํ๋ ์์ฝ ์ด๋ฒ์ฃผ์๋ ๋ฐฑ์๋ ์๋ฒ๋ฅผ ์ด๋ค ์์ผ๋ก ๊ตฌ์ฑํ ์ง์ ๋ํด์ ๊ตฌ์์ ํด๋ณด์๋ค ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ์ผ๋จ ์ ์ ๋ฏธ๋ค๋๊ณ , ์ด๋ฒ์ฃผ์๋ ๋ฐฑ์๋ ์๋ฒ ๊ฐ๋ฐ์ ์งํํ๋ค ์ผ๋ฐ์ ์ธ ์ํฉ์ด์๋ค๋ฉด ๋ก์ปฌ์์ ๊ฐ๋ฐ์ ํ๊ณ , AWS์ ๋ฐฐํฌํ๋ ์์ผ๋ก ์งํ์ ํ์ ๊ฒ์ด๋ค. ๊ทธ๋ฐ๋ฐ ์ฐ๊ตฌ์ค์ ์์ ๊ฐ๋ํ ์ ์๋ ์๋ฒ ์ปดํจํฐ๊ฐ ์๋ค๊ณ ํ์ ์, ์ด๊ฒ์ ํ์ฉํ๋ ๋ฐฉํฅ์ผ๋ก ์งํ์ ๊ฒฐ์ ํ์๋ค. ๋ฐฑ์๋ ๊ฐ๋ฐ ๊ฒฝํ๋ ๋ณ๋ก ์์ง๋ง, ์๋ฒ ์ปดํจํฐ๋ก ์๋ฒ๋ฅผ ์ด์ํ๋ ๊ฒ์ ์ฒ์์ด๋ผ ์ด๊ฒ์ ๊ฒ ์์๋ณด์์ผ ํ๋ค. ์๊ฒฉ ์ ์ ๊ณ์ ์ฐ๊ตฌ์ค์ ๋ฐฉ๋ฌธํด์ ์์ ์ ํ ์๋ ์์ด์, ์๊ฒฉ์ผ๋ก ์๋ฒ ์ปดํจํฐ์ ์ ์ํ ์ ์๋๋ก ์ธํ ์ ํ๋ค ๊ธฐ๋ณธ์ ์ธ ์ธํ ์ ์กฐ๊ต๋์ด ํด์ฃผ์๊ณ , ๋๋ ์ฐ๊ตฌ์ค์ ๋ฐฉ๋ฌธํด์ ๋ด ๊ณ์ ์ ๋ฑ๋กํ๊ธฐ๋ง ํ๋ค. ํฌ๋กฌ์์ ์ ๊ณตํ๋ ์๊ฒฉ ๋ฐ์คํฌํฑ์ ์ฌ.. 2024. 3. 20. 6. ๋ ธ๋ ์ญ์ ๋ฐ ๊ฐ์ ์ถ๊ฐ ๊ธฐ๋ฅ ๊ฐ์ ์ด์ ๋ฏธํ ํผ๋๋ฐฑ ์ด์ ๋ฏธํ ์์ ๋ฐ์ ํผ๋๋ฐฑ์ ๋ฐํ์ผ๋ก ๊ธฐ๋ฅ ๊ฐ์ ๋ ธ๋ ์ญ์ ์ ์ด์ ๋ ธ๋๋ ํจ๊ป ์ญ์ ํ ๊ฒ์ธ์ง ์ฌ๋ถ ์ ํ ๊ฐ๋ฅ ์๋ก ๋ค๋ฅธ ํด๋ฌ์คํฐ๊ฐ ๊ฐ์ ์ถ๊ฐ์ ์์ ๋ณ๊ฒฝ Union-Find ์๊ณ ๋ฆฌ์ฆ ์ฑ๋ฅ ๊ฐ์ ํผ๋๋ฐฑ ๋ฐ์ 1. ์ด์ ๋ ธ๋ ์ญ์ ์ฌ๋ถ ๊ฒฐ์ ํน์ ๋ ธ๋ ์ญ์ ์ ํด๋น ๋ ธ๋์ ์ด์ํ ๋ ธ๋๋ฅผ ํจ๊ป ์ญ์ ํ ์ง ์ ํ ๊ฐ๋ฅํ๋๋ก ๊ฐ์ const handleSubmit = useCallback(() => { if (filter === "") { return; } setRerender(false); setGraphData((prev) => { let filteredNodes = prev.nodes; let filteredEdges = prev.edges; if (deleteNeighbor) { filtere.. 2024. 3. 17. ๋ฌด์ํ ํ๋กํ ์ฝ ๋คํธ์ํฌ์ ๋ํ ์ง์์ด ํ์ํ๋ค๊ณ ์๊ฐ๋์ด, ๊น์ํ๋์ "๋ชจ๋ ๊ฐ๋ฐ์๋ฅผ ์ํ HTTP ์น ๊ธฐ๋ณธ ์ง์" ๊ฐ์๋ฅผ ๋ค์๋ค. ๊ทธ ์ค์ ๋ฌด์ํ ํ๋กํ ์ฝ์ ๋ํ ๊ฐ๋ ์ ์ฒ์์ด๋ผ ์ ๋ฆฌํ๊ฒ ๋์๋ค. ๋ชจ๋ ๊ฐ๋ฐ์๋ฅผ ์ํ HTTP ์น ๊ธฐ๋ณธ ์ง์ ๊ฐ์ - ์ธํ๋ฐ ์ค๋ฌด์ ๊ผญ ํ์ํ HTTP ํต์ฌ ๊ธฐ๋ฅ๊ณผ ์ฌ๋ฐ๋ฅธ HTTP API ์ค๊ณ ๋ฐฉ๋ฒ์ ํ์ตํฉ๋๋ค., [์ฌ์ง] ๐ฃ ํ์ธํด์ฃผ์ธ์!๋ณธ ๊ฐ์๋ ์๋ฐ ์คํ๋ง ์์ ์ ๋ณต ์๋ฆฌ์ฆ์ ์ธ ๋ฒ์งธ ๊ฐ์์ ๋๋ค. ์ฐ์ํํ์ ๋ค ์ต์ฐ์ ๊ธฐ์ www.inflearn.com (PPL์๋...) ๋ฌด์ํ ํ๋กํ ์ฝ Stateless Protocol HTTP ํ๋กํ ์ฝ์ ๋ฌด์ํ ํ๋กํ ์ฝ์ ์งํฅํ๋ค ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์ํ๋ฅผ ๋ณด์กดํ์ง ์๋๋ค ์ฅ์ : ์๋ฒ์ ํ์ฅ์ฑ์ด ๋๋ค(Scale Out) ๋จ์ : ํด๋ผ์ด์ธํธ๊ฐ ์ ์กํ๋.. 2024. 3. 8. 5. ์ ์ , ๊ฐ์ ์ถ๊ฐ ๋ฐ ์ญ์ ์ด๋ฒ ํ๋ ์์ฝ ์ด๋ฒ์ฃผ์๋ Cytoscape.js์์ Measure์ ๋ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋์ง ์์๋ณด๊ณ , ์ ์ ๊ณผ ๊ฐ์ ์ ์ถ๊ฐํ๊ณ ์ญ์ ํ ์ ์๋ ๊ธฐ๋ฅ์ ์ผ๋ถ ๊ตฌํํ๋ค. Community Detection์ ์ด๋์ ๋ ๋์์ผ๋, ์ด์ ๋ ธ๋์ Degree, Path์ ๊ธธ์ด ๋ฑ Network์ ๋ํ ์ ๋ณด๋ฅผ ์ฌ์ฉ์์๊ฒ ์ ๊ณตํ๊ธฐ ์ํด์ Network๋ฅผ ์ธก์ ํ ์ ์๋ ๊ธฐ๋ฅ๋ค์ ์ ๊ณตํ๋์ง ์ฐพ์๋ณด์๋ค. ๊ธฐ์กด์๋ ํ์ด์ฌ์์ ํด๋น ๊ธฐ๋ฅ๋ค์ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ํ์ด์ฌ์ ์ด๋ฏธ ๊ตฌํ์ด ๋์ด ์์ง๋ง, ํ๋ก ํธ๋จ์์ ๊ณ์ฐ์ ํด์ ๋ฐ๋ก ๋ณด์ฌ์ฃผ๊ฒ ๋๋ฉด ์๋ฌด๋๋ ๋ ๋น ๋ฅด๊ฒ ์ ๋ฌํ ์ ์๊ธฐ ๋๋ฌธ์ Cytoscape.js์์ ๊ทธ๋ฐ ๊ธฐ๋ฅ๋ค์ ์ ๊ณตํ๋์ง ์ฐพ์๋ณด์๋ค. Network Analyzer Cytoscape์์๋ Network์ ๋ํ ํต๊ณ ์ ๋ณด.. 2024. 3. 4. ์ผ์ฑ SDS 2024(์๋ฐ๊ธฐ) ์๊ณ ๋ฆฌ์ฆ ํน๊ฐ ํ๊ธฐ + ์ํ ์ง๋ 2์ 13์ผ์ ์์ํด์ 23์ผ๊น์งํด์ ์ด๋ฒ ์๊ณ ๋ฆฌ์ฆ ํน๊ฐ์ ๋ง์ณค๋ค. ํน์ ์ด ๊ธ์ ๋ณด์ค์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง, ๋ค์๋ฒ ํน๊ฐ์ ๊ณ ๋ฏผํ๊ณ ๊ณ์ค ๋ถ๋ค์ ์ํด ๋ค๋ฆ๊ฒ ํ๊ธฐ๋ฅผ ์์ฑํ๊ฒ ๋์๋ค. ์ง์์ ์ง์์ ์ด๋ป๊ฒ ? ๋ํ์๋ค์ ๋์์ผ๋ก ํ๊ธฐ ๋๋ฌธ์, ๋งค ๋ฐฉํ๋ง๋ค ํน๊ฐ์ด ์ด๋ฃจ์ด์ง๋ค. ๊ฒจ์ธ์ ๋ณดํต 1์์ฏค์ ์ฌ๋ผ์ค๋ ๊ฒ ๊ฐ์๋ฐ, ์ ํํ ์ธ์ ์ผ์ง๋ ๋ชจ๋ฅด๊ธฐ์ ์ฐพ์๋ณด์์ผ ํ๋ค. ์ด์ ๊น์ง๋ ์ ๊ณผ ํ ์คํธ๊ฐ ์์๋ค๊ณ ํ๋๋ฐ, ์ด๋ฒ์๋ ์ ๊ณผ ํ ์คํธ๋ ์๊ณ ์ง์์๋ง ์์ฑํ๋ฉด ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ง์ ํฉ๊ฒฉ๊ณผ ๋ถํฉ๊ฒฉ์ด ์ด๋์ ๊ฐ๋ฆฌ๋์ง๋ ์ ํํ ๋ชจ๋ฅด๊ฒ ์ง๋ง,, ๋ฐฑ์ค ์์ด๋๋ฅผ ์ ์ถํ๋ ๊ฒ์ ๋ณด์ ํ์์๋ ์๊ณ ๋ฆฌ์ฆ์ ๊ด์ฌ์ ๊ฐ์ง๊ณ ์๋์ง๋ฅผ ๋ณด๋ ๊ฒ ์๋๊น ?? (์ ํํ ๊ฑด ์๋๊ณ ๋ํผ์ ์ ๋๋ค,, ใ ใ ) ํ๋ ํ๋์ ๋งค๋ฒ ๋ค๋ฅผ ์ ์์ง๋ง 2์ฃผ .. 2024. 3. 2. GraphQL๊ณผ N + 1 ๋ฌธ์ ์ฐพ์๋ณด๊ฒ ๋ ๊ณ๊ธฐ ํ์ฌ ์งํํ๊ณ ์๋ ํ๋ก์ ํธ์์, ๋ฐฑ์๋์ ํ๋ก ํธ์๋๊ฐ์ ์์กด๋๋ฅผ ๋จ์ดํธ๋ฆฌ๊ณ ์ GraphQL์ ๋์ ํ๊ฒ ๋์๋ค GraphQL์ ์ฌ์ฉํ๋ฉด ํ๋ก ํธ์ธก์์ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ด๊ฐ๋ ํ์์ด๊ธฐ ๋๋ฌธ์, RestAPI์ฒ๋ผ ์ฌ๋ฌ ๊ฐ์ ์๋ํฌ์ธํธ๋ฅผ ๋ง๋ค์ง ์์๋ ๋๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋ฐ๋ฐ GraphQL์ ์ฌ์ฉํ๋ฉด Resolver๊ฐ ์ฐ์์ ์ผ๋ก ๋์ํ๋ N + 1 ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ๊ฐ ๋น๋ฒํ๋ค๊ณ ํด์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฐพ๊ธฐ์ํด ์์๋ณด๊ฒ ๋์๋ค. N + 1 ๋ฌธ์ ๋? 1๋ฒ์ ์ฟผ๋ฆฌ๋ก ๊ฐ์ ธ์ฌ ์ ์๋ ๋ฐ์ดํฐ์ ๋ํด์ ์ฐธ์กฐํ๋ ๋ฐ์ดํฐ N๊ฐ ๊ฐ๊ฐ์ ๋ํด ์ฟผ๋ฆฌ๋ฅผ ๋ ๋ ค N + 1 ๋ฒ์ ์ฟผ๋ฆฌ ๊ฐ ๋ฐ์ํ๋ ๋ฌธ์ ์๋ฅผ ๋ค์ด, ํ๋์ ๋ธ๋ก๊ทธ์ 3๊ฐ์ ๋๊ธ์ด ์์ฑ๋์ด ์๋ค๊ณ ํด๋ณด์. ์ด๋, ๋ธ๋ก๊ทธ์ ๋๊ธ์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํด์.. 2024. 2. 27. ์ด์ 1 2 3 4 5 6 ยทยทยท 23 ๋ค์