์ ์ฒด ๊ธ(46)
-
JavaScript (10) - Promise
Promise Lifecycleconst myPromise = new Promise((resolve, reject) => { setTimeout(() => { resolve("foo"); }, 300);});myPromise .then(handleFulfilledA, handleRejectedA) .then(handleFulfilledB, handleRejectedB) .then(handleFulfilledC, handleRejectedC); Promise ์์function delay(ms){ return new Promise((resolve) => { setTimeout(() => { resolve(`waited: ${ms}`) },ms) })}d..
2025.12.14 -
JavaScript (9) - ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐํ์ ๊ตฌ์กฐ(Runtime Architecture)/๋์ ์๋ฆฌ
์๋ฐ์คํฌ๋ฆฝํธ ๋ฐํ์ ๊ตฌ์กฐ/ ๋์์๋ฆฌ์ฝ์คํ์์ ํ ๋ฒ์ ํ๋์ ์์ ๋ง ์คํํ๋ ์ฑ๊ธ์ค๋ ๋ ๋ชจ๋ธ๋ก ๋์ํ๋ค.๋น๋๊ธฐ ์์ ์ ๋ธ๋ผ์ฐ์ (Web API), Node ํ๊ฒฝ์์ ์ฒ๋ฆฌ ํ ํ ํ ์คํฌํ๋ก ์ด๋ํ๋ค.์ด๋ฒคํธ๋ฃจํ๋ ์ฝ์คํ์ด ๋น๋ ์๊ฐ ํ ์คํฌํ์ ์๋ ์์ ์ ์ฝ์คํ์ผ๋ก ์ด๋์์ผ ์คํํ๋ฆ์ ์ด์ด๊ฐ๋ค. 1) ์ฝ์คํ(Call Stack)์ง๊ธ ๋ฐ๋ก ์คํํด์ผ ํ ํจ์๋ค๋งจ ์ ํ๋๋ง ์คํ๋จ2) ์น API (๋ธ๋ผ์ฐ์ /Node๊ฐ ์ ๊ณต)setTimeout, fetch ๊ฐ์ ๊ฒ๋ค ์ฌ๊ธฐ์ ์ฒ๋ฆฌ๋จJS ์์ง์ด ์๋! (๋ธ๋ผ์ฐ์ ๊ฐ ์ฒ๋ฆฌ)ex) ์ค์ผ์ฅด๋ง, ์๋ฒ์์ ํต์ , ์ด๋ฒคํธ, ํ์ผ I/O, Cache API3) ํ์คํฌ ํ(Task Queue / Callback Queue)“์ค๋น ๋๋ฌ์ผ๋๊น ์คํํด๋ ๋ผ!” ํ๊ณ ๊ธฐ๋ค๋ฆฌ๋ ํจ์๋ค4) ์ด๋ฒคํธ..
2025.12.04 -
JavaScript (8) - ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ
๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ์์ ์ด ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ๋ค์ ์ฝ๋ ์คํ setTimeout() ๋ผ๋ Web API(์ฝ๋ฐฑ ๋๊ธฐ ๊ณต๊ฐ)์๊ฒ ๋งก๊ธฐ๊ณ '๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ' Main Thread ์คํasyncPrint ๋ฅผ ๋จผ์ ํธ์ถ ํ์ผ๋ foo ํจ์๋ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ๋จผ์ ์คํ ๋ ํ 3์ด๋ค asyncPrint ๊ฐ ์คํ๋จ ์ฑ๊ธ์ฐ๋ ๋์์ (์ค์ผ์ฅด๋ง, ์๋ฒ์ ํต์ , ์ด๋ฒคํธ, ํ์ผI/O, Cache API)์ ๊ฐ์ ์ด๋ฒคํธ๋ค์๋ฉ์ธ์ฐ๋ ๋๊ฐ ์๋ ๋ณ๋์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ฐ๋ ๋๋ฅผ ํ์ฉ ํ๊ณ ๊ทธ ํ์ ๋ค์ ๋ฉ์ธ์ฐ๋ ๋์์ ์์ ์ ์งํํ๋ค. JS(FE/BE) ์ค์ ์์์ค์ผ์ฅด๋ง์๋ฒ์ ํต์ ์ด๋ฒคํธํ์ผ I/OCache API ๊ฒฐ๋ก JS๋ ์ฑ๊ธ์ฐ๋ ๋์ง๋ง ๋น๋๊ธฐ ๋ฐฉ์์ ํตํด์ ๋์์ฑ์ ๋ฌ์ฑ ํ ์ ์์ ์ถ์ฒ: AI์๋์ ์น๊ฐ๋ฐ : ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ๊ณผ ๋ฐ..
2025.12.03 -
JavaScript (7) - ๊ฐ๋น์ง ์ปฌ๋ ์ (GC)๋?
JavaScript ๊ฐ๋น์ง ์ปฌ๋ ์ (GC)๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋์ผ๋ก ํด์ ํด์ฃผ๋ ์์ง ๋ด๋ถ ๊ธฐ๋ฅ.์๋ฐ์คํฌ๋ฆฝํธ๋ ๊ฐ๋ฐ์๊ฐ malloc() ๊ฐ์ ๊ฑธ ์ง์ ์ฐ์ง ์๊ธฐ ๋๋ฌธ์, ๋์ ์์ง(V8 ๋ฑ)์ด ์์์ ์ฌ์ฉ ์ฌ๋ถ๋ฅผ ํ๋จํ๊ณ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํจ GC๋ “์ด๋ค ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ฒ๋ฆด์ง” ์ด๋ป๊ฒ ํ๋จํ ๊น?ํต์ฌ ๊ฐ๋ : Reachability(๋๋ฌ ๊ฐ๋ฅ์ฑ)์ด๋๊ฐ์์ ์ ๊ทผ ๊ฐ๋ฅํ ๊ฐ์ด๋ฉด = ์ด์์์ (ํด์ X)์ด๋์์๋ ์ ๊ทผํ ์ ์๊ฒ ๋๋ฉด = ์ฃฝ์ (ํด์ O)๋๋ฌ ๊ฐ๋ฅํ ์์์ (roots):์ ์ญ ๊ฐ์ฒด (window, global)ํ์ฌ ์คํ ์ค์ธ ํจ์ ์ค์ฝํํด๋ก์ ์ ๋ฌถ์ธ ๋ณ์call stack์ ์กด์ฌํ๋ ๋ณ์๋ค์์ 1let a = { name: 'ํ์์' };let b = a;// ์ด์ a, b ๋ ๋ค ์ด ๊ฐ์ฒด๋ฅผ ์ฐธ..
2025.11.30 -
[Next.js] (12) - Streaming
๐ ์คํธ๋ฆฌ๋ฐํด๋ผ์ด์ธํธ์์๋ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ์ค์ง ์์๋ ์ง๊ธ๊น์ง ๋ฐ์ ๋ฐ์ดํฐ์ ์ ๊ทผํ ์ ์์ -> ๊ฒฐ๊ณผ์ ์ผ๋ก ์ฌ์ฉ์๊ฐ ๊ธด ๋ก๋ฉ ์์ด ์ฌ์ฉ์์๊ฒ ์ข์ ๊ฒฝํ ์ ๊ณต ๊ฐ๋ฅ์คํธ๋ฆฌ๋ฐ์ ์ด์ฉํ๋ฉด ์ผ๋จ ๋ญ๋ผ๋ ๋น ๋ฅด๊ฒ ๋ณด์ฌ์ค ์ ์์๋๋ฆฌ๊ฒ ๋ ๋๋ง ๋๋ ๋ถ๋ถ?๋ก๋ฉ๋ฐ ๊ฐ์ ๋์ฒด UI๋ฅผ ๋ณด์ฌ์ฃผ๋ฉด ๋๋ค!Dynamic ํ์ด์ง์ ์์ฃผ ์ด์ฉ๋๋ค.ํ์ด์ง ์คํธ๋ฆฌ๋ฐ์ค๋ ๊ฑธ๋ฆฌ๋ ์ปดํฌ๋ํธ์ ๋ ๋๋ง์ ์ฌ์ฉ์๊ฐ ์ข ๋ ์ข์ ํ๊ฒฝ์์ ๊ธฐ๋ค๋ฆด ์ ์๋๋ก ํด์ฃผ๋ ๊ธฐ๋ฅ ๐ Stream - ๊ฐ์ฒ, ๊ฐ๋ฌผ์คํธ๋ฆฌ๋ฐ - ๊ฐ๋ฌผ์ ๋ฐ์ดํฐ๋ฅผ ํ๋ ค ๋ณด๋ด๋ฏ์ด ์ฐ์์ ์ผ๋ก ํ ๋ฐ์ดํฐ์ฉ ํ๋ ค ๋ณด๋ด๋ ๊ฒ ์ถ์ฒ: https://www.inflearn.com/course/%ED%95%9C%EC%9E%85-%ED%81%AC%EA%B8%B0-nextjs/dashboar..
2024.11.14 -
[Next.js] (11) - Client Route Cache
๐ ํด๋ผ์ด์ธํธ ๋ผ์ฐํธ ์บ์๋ธ๋ผ์ฐ์ ์ ์ ์ฅ๋๋ ์บ์ - ํ์ด์ง ์ด๋์ ํจ์จ์ ์ผ๋ก ์งํํ๊ธฐ ์ํด ํ์ด์ง์ ์ผ๋ถ ๋ฐ์ดํฐ ๋ณด๊ดLayout์ ~/, ~/search ์ผ ๊ฒฝ์ฐ์ ๊ณ์ ๋ถ๋ฌ์ด (์ค๋ณต ์์ฒญ) - ํด๋ผ์ด์ธํธ ๋ผ์ฐํธ ์บ์์ ์ฉ ์๋ ๊ฒฝ์ฐ๊ณตํต๋ ๋ ์ด์์๋ง ๋ฐ๋ก ๋ณด๊ดํด์ ์๋ฒ์ ์ค๋ณต์์ฒญ ํ์ง ์์์๋์ผ๋ก next app ์ ์ ์ฉ๋์ด์์ํด๋ผ์ด์ธํธ ๋ผ์ฐํธ ์บ์๋ ์๋ก๊ณ ์นจ ๋๋ฉด ์ฌ๋ผ์ง (๋ธ๋ผ์ฐ์ ๋๊น!) new Date().toLocaleString() //๋ฆฌ๋ ๋๋ง ๋๋์ง ํ์ธํ ๋ ์ฌ์ฉํ๋ฉด ์ข์ ์ถ์ฒ: https://www.inflearn.com/course/%ED%95%9C%EC%9E%85-%ED%81%AC%EA%B8%B0-nextjs/dashboard ํ ์ ํฌ๊ธฐ๋ก ์๋ผ๋จน๋ Next.js(15+) ๊ฐ์ | ..
2024.11.14 -
[Next.js] (10) - Full Route Cache(ํ ๋ผ์ฐํธ ์บ์)
๐ Full Route Cache(ํ ๋ผ์ฐํธ ์บ์)Next ์๋ฒ์ธก์์ ๋น๋ ํ์์ ํน์ ํ์ด์ง์ ๋ ๋๋ง ๊ฒฐ๊ณผ๋ฅผ ์บ์ฑํ๋ ๊ธฐ๋ฅ ๐ Dynamic Page๋ก ์ค์ ๋๋ ๊ธฐ์คํน์ ํ์ด์ง๊ฐ ์ ์ ์์ฒญ์ ๋ฐ์ ๋ ๋ง๋ค ๋งค๋ฒ ๋ณํ๊ฐ ์๊ธฐ๊ฑฐ๋, ๋ฐ์ดํฐ๊ฐ ๋ฌ๋ผ์ง ๊ฒฝ์ฐ์บ์๋์ง ์๋ Data Fetching์ ์ฌ์ฉํ ๊ฒฝ์ฐ๋์ ํจ์(์ฟ ํค, ํค๋, ์ฟผ๋ฆฌ์คํธ๋ง)์ ์ฌ์ฉํ๋ ์ปดํฌ๋ํธ๊ฐ ์์ ๋๐ Static Page๋ก ์ค์ ๋๋ ๊ธฐ์คDynamic Page ๊ฐ ์๋๋ฉด ๋ชจ๋ Static Page๊ฐ ๋๋ค (Default)๋์ ํจ์(ex: Query String)๋ฐ์ดํฐ ์บ์ํ์ด์ง ๋ถ๋ฅYesNoDynamic PageYesYesDynamic PageNoNoDynamic PageNoYesStatic Page - ํ ๋ผ์ฐํธ ์บ์ ์ ์ฉ R..
2024.11.12 -
[Next.js] (9) - Request Memoization
๐ Request Memoization (์์ฒญ์ ๊ธฐ์ตํ๋ค)ํ๋์ ํ์ด์ง๋ฅผ ๋ณด์ฌ์ค ๋ ์ค๋ณต๋ API์์ฒญ๋ค์ ์๋์ผ๋ก ์บ์ฑ ๐ ์ค์ํ๋์ ํ์ด์ง๋ฅผ ๋ ๋๋งํ๋ ๋์์ ์ค๋ณต๋ API ์์ฒญ์ ์บ์ฑํ๊ธฐ ์ํด ์กด์ฌ!๊ทธ๋์ ๋ ๋๋ง์ด ์ข ๋ฃ๋๋ฉด ๋ชจ๋ ์บ์๊ฐ ์๋ฉธ๋จNext์์ ์๋์ผ๋ก ์ ๊ณต๐ Data Cache ๊ฐ ๋ฉ๋ชจ์ด์ ์ด์ ๊ณผ ๋ค๋ฅธ ์ ๋ฐฑ์๋ ์๋ฒ๋ก๋ถํฐ ๋ถ๋ฌ์จ ๋ฐ์ดํฐ๋ฅผ ๊ฑฐ์ ์๊ตฌ์ ์ผ๋ก ๋ณด๊ดํ๊ธฐ ์ํด ์ฌ์ฉ์๋ฒ ๊ฐ๋์ค์๋ ์๊ตฌ์ ์ผ๋ก ๋ณด๊ด ์ถ์ฒ: https://www.inflearn.com/course/%ED%95%9C%EC%9E%85-%ED%81%AC%EA%B8%B0-nextjs/dashboard ํ ์ ํฌ๊ธฐ๋ก ์๋ผ๋จน๋ Next.js(15+) ๊ฐ์ | ์ด์ ํ Winterlood - ์ธํ๋ฐ์ด์ ํ Winterloo..
2024.11.12