ํ์
์คํฌ๋ฆฝํธ์ ์ธ๋ฑ์ค ์๊ทธ๋์ณ index signature ๋ฌธ๋ฒ [key: T]: U ์ธ์ ์ฌ์ฉ? ํ์
์คํฌ๋ฆฝํธ์ ์ด๋ค ๊ฐ์ฒด๊ฐ ์ฌ๋ฌ ํค๊ฐ์ ๊ฐ์ง๊ณ ์์ ๋ ์ฌ์ฉ "์ด ๊ฐ์ฒด์์ ๋ชจ๋ T ํ์
์ ํค๋ U ํ์
์ ๊ฐ์ ๊ฐ๋๋ค"๋ ๊ฒ์ ํํํ ๋ ์ธ๋ฑ์ค ์๊ทธ๋์ฒ๋ฅผ ํตํด ๋ช
์์ ์ผ๋ก ์ ์ํ ํค ์ธ์ ๋ค์ํ ํค๋ฅผ ๊ฐ์ฒด์ ์์ ํ๊ฒ ์ถ๊ฐ ๊ฐ๋ฅ ์ฃผ์ํ ์ ์ธ๋ฑ์ค ์๊ทธ๋์ฒ์ ํค(T)๋ ๋ฐ๋์ number ํน์ string ํ์
์ด์ด์ผ ํ๋ค. ์? ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด์ ํค ํ์
์ ๋ฌธ์์ด์ด๋ฏ๋ก string ์ด์ด์ผ ํ๋ค. ๊ทธ๋ ๋ค๋ฉด number ํ์
์? ๋ฐฐ์ด์ ๊ฒฐ๊ตญ ํค ํ์
์ด ์ซ์์ธ ๊ฐ์ฒด์ ์ผ์ข
์ด๋ฏ๋ก number ํ์
๋ ํค๊ฐ ๋ ์ ์๋ค. ์์ ์ฝ๋ const airplaneSeating: {[seatNumber: string]: st..
๋ถ๋ฅ ์ ์ฒด๋ณด๊ธฐ
๋ฐ์ด๋๋ฆฌ ํ์
์ ํ์ผ ์๋ต ๋ชจํนํ๊ธฐ ์ง๊ธ ์ฌ๋ด ํ๋ก์ ํธ๋ ๋ฐฑ์๋ api์ ํ๋ฐํธ ๊ฐ๋ฐ์ ๋์์ ๋ณํ์ ์ผ๋ก ์งํํ๊ณ ์๋ค. ๋ฐ๋ผ์ ์๋ฒ๋จ API๊ฐ ์์ฑ๋๊ณ ๋ฐฐํฌ๋๊ธฐ ์ด์ ์๋ msw๋ผ๋ ์๋ฒ API ๋ชจํน ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ณ ์๋๋ฐ, ์ค์ ๋ฐฑ์๋ api ์์ด๋ ํ๋ฐํธ๋จ์์ mock ์๋ฒ๋ฅผ ๊ตฌํํด์ ๊ฐ์ง๋ก ๋คํธ์ํฌ ํต์ ์ ํ ์ ์๋ค. json ํ์์ผ๋ก ํต์ ์ ์ฃผ๊ณ ๋ฐ๋ ๊ฑด ๊ณต์๋ฌธ์์๋ ์ ๋์์์ด์ Mocking์ ํ์๋๋ฐ, ์ด๋ฒ์ ๋ฐ์ด๋๋ฆฌ ํ์
์ ์ด๋ฏธ์ง ํ์ผ์ get ํด์ค๋ ๋ถ๋ถ์์ ๋ชฉ์๋ฒ๋ฅผ ๊ตฌํํ๋๋ฐ ํฐ ๋๊ด์ด ์์๋ค. ์๋ต ์์ ํ๋ฐํธ์์ ์ด๋ฏธ์ง ํ์ผ์ get ํด์ฌ๋ ์๋ฒ์์ ์ฃผ๋ ์๋ต์ ์๋์ ๊ฐ๋ค. ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ ์ฆ, ์๋ฒ์์๋ ์ด ๋ฉํฐ๋ฏธ๋์ด ๋ฐ์ดํฐ๋ฅผ 0๊ณผ 1 ๊ฐ๋ง ์กด์ฌํ๋ ์ด์ง ๋ฐ์ดํฐ๋ก ์๋ตํด์ฃผ๋ ..
๋์คํฐ ์ด๋ฏธ์ง Raster ํฝ์
pixel ์ด๋ผ๋ ์ ๋ค์ ๊ฐ๋ก ์ธ๋ก๋ก ๋์ดํ ๊ฒ ๋์คํฐ ์ด๋ฏธ์ง์ ํ์ง์ ์ ๋ฐ๋/์ ๋ช
๋์ ๋ฐ๋ผ ๊ฒฐ์ ๋จ 1. ์ ๋ฐ๋ ์ผ๋ง๋ ์ ๋ฐํ๊ฒ ์์ ํํํ๋์ง - ๊ฐ ํฝ์
๋น ์์ ํํํ๋๋ฐ ํ์ํ ๋นํธ ์์ ๋ฐ๋ผ ์ ํํ์ ์ ๋ฐ๋๊ฐ ๊ฒฐ์ - ํฝ์
๋น 1bit ์ฌ์ฉ์ ํฐ/๊ฒ ๋ ์๊น๋ง ํํ - 8bit์ ๊ฒฝ์ฐ 256 ์ปฌ๋ฌ (2โธ = 256) ํํ ๊ฐ๋ฅ 2. ์ ๋ช
๋ ํด์๋ resolution ์ผ๋ง๋ ์กฐ๋ฐํ๊ฒ ํฝ์
์ ํํํ๋์ง - ๋จ์๋น ์ผ๋ง๋ ๋ง์ ์ (ํฝ์
)์ ๋ณด์ฌ์ค ์ ์๋์ง๋ฅผ ์๋ฏธ ํด์๋๊ฐ ๋์์๋ก ์์ธํ ๊ทธ๋ฆผ ํํํจ ์ด๋ฏธ ์ ํด์ง ํด์๋๋ฅผ ๋์ผ ์๋ ์์ ๋ฒกํฐํ์ผ ๋ณด๋ค ๋ ๋ค์ํ ์์ ํํ, ๋น๊ณผ ์์์ ๋ ์ธ๋ฐํ๊ฒ ํํ ๊ฐ๋ฅ ์ด๋ฏธ์ง ํฌ๊ธฐ ํ๋์ ํ์ง ์ ํ, ์ธํ๋ถํํ๊ฒ ํํ๋จ ์๋ฐฑ๋ง๊ฐ์..
Thoughts ๊ฐ๋ฐ์๋ก ์ฒซ ์ผ์ ํ ์ง ๋ฒ์จ 3๊ฐ์์ด ์ง๋ฌ๋ค. ๊ฐ๋ฐ์๋ก ์ ์งํ๋ค๋ ์๊ฐ์ด ์ ๋ค๊ณ , ์ ์ฑ์ ์ ๋ง๋ค๊ณ ๋๋๋ค. ์์ง๊น์ง(?) ๋ฌผ๋ก ์๋ก์ด ๊ฐ๋
์ด๋ ์๋ก์ด ํด์ ์ฒ์ ๋ฐฐ์ธ๋ ๋๋์ฒด ๋ช๋ฒ์ ๋ด๋ ์ด๋ ต๊ณ ์ง์ง ๋์์ด ํ๋ ค์ง๋... ๋๋๋ ๋ค๊ธดํ์ง๋ง.. ๋ด๊ฐ ์ง๋ ์ฝ๋๊ฐ ๋ด๊ฐ ์ํ๋๋๋ก ํ๋ฉด์ ์ดฅ์ดฅ ๋์์ง๋ ๊ทธ ํฌ์ด์ด๋... ๋ด๊ฐ ๊ฐ๋ฐ์๋ผ๋๊ฒ ์ข์ ๊ฒ ๊ฐ๋ค! ๋ญ ๋ด ์์ ์ ์์ง ๊ฐ๋ฐ์๋ผ๊ณ ๋ถ๋ฅผ ์ ์๋ ์์ค์ธ์ง๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง... ๐ฅฒ ์์ง ํผ์์ ๋ชจ๋ ๊ฑธ ๋ค ์ฐฉ์ฐฉ ์ ๋ง๋ค ์๋ ์๋ค. ๋ ๋ง์ ์ ๋ง๋ ๊ฑฐ๊ฐ์๋ฐ? ๋ผ๊ณ pr์ ์ฌ๋ฆฌ๊ณ , ์ฝ๋๋ฆฌ๋ทฐ๊ฐ ๋ช๊ฐ ๋ฌ๋ฆฌ๋ฉด ์ฃผ๋
์ด ๋๋ ๊ฒ๋ ์ฌ์ค์ด๋ค. ๊ทธ๋ฆฌ๊ณ ๋ด๊ฐ ๋ง๋ ๋ถ๋ถ์ ์ง๊ทนํ ๋๋ฌด ์ ์ ๋ถ๋ถ์ธ ๊ฑฐ ๊ฐ๊ธฐ๋ ํ๊ณ .. ๋ด ์ฝ๋๊ฐ ๋ฐ๋ก 100% ๋ฐ์์ด ์๋๊ณ ์๋์ด..
๊ฐ์ฒด ํ์์ ๊ฐ์ง ๋ฐฐ์ด ์์์ ๊ฐ์ ์์ ํ๊ณ ์ถ์๋ค. ๊ทธ๋ฐ๋ฐ ๋ฐฐ์ด์ ๋ถ๋ณ์ฑ์ ์ง์ผ์ฃผ๋ map() ๊ณ ์ฐจํจ์๋ฅผ ์ฌ์ฉํด์ ๊ฐ์ฒด์ ์์๋ฅผ ์์ ํ๋๋ฐ๋, ์๋ณธ ๋ฐฐ์ด์ ๋ฐ์ดํฐ๊ฐ ์์ ์์ ๋๋ ํ์์ด ๋ฐ์ํ๋ค. immutable๊ณผ mutable ์ฐจ์ด๋ฅผ ์ ๋๋ก ์๊ณ ์ฐ๊ธฐ์ํด ์ ๋ฆฌํด๋ณด๋ คํ๋ค. ๋ฐ์ดํฐ state๋ผ๋ ๋ฐฐ์ด์ ๊ฐ์ฒด ํ์์ ์์๊ฐ ๋ค์ด๊ฐ์๋ค. const state = [ { id: 1, content: 'a' }, { id: 2, content: 'b' }, ]; ๋ชฉํ ํน์ id๋ก ๊ฐ์ฒด ์์๋ฅผ ์ฐพ์ ๊ทธ ์์์ content ๊ฐ์ ๋ฐ๊พธ๋ ํจ์๋ฅผ ์์ฑํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ฒ์ state๊ฐ๊ณผ ํจ์๋ฅผ ํธ์ถํ์๋์ ๋ฐํ๋๋ ๊ฐ๊ณผ, ๊ทธ ์ดํ state๊ฐ์ด๋ ๋น๊ตํด๋ด์ผ๋ก์จ ์๋ณธ state ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋์๋์ง (mutable), ..
์ํฉ rebase๋ฅผ ํ๊ณ ์๊ฒฉ ์ ์ฅ์์ Push๋ฅผ ํ๋ค. ๊ทธ๋ฐ๋ฐ pushํ๊ณ ๋์ rebase๊ฐ ์๋ชป ๋์๋ค๋ ๊ฒ์ ๊นจ๋ฌ์๋ค. reset์ ํ์๋.. ๊ทธ ์ด์ ์ปค๋ฐ์ rebase๋์ด์ ์๋๋ฐ..? ํด๊ฒฐ์ฑ
1. git reflog๋ก rebase ํ๋ ์ปค๋ฐ ์ด๋ ฅ์ ํ์ธํ๋ค. git reflog reflog๋ reference log ์ ์ค์๋ง๋ก ์ฐธ์กฐ ๋ก๊ทธ๋ผ๋ ๊ฒ์ด๋ค. (git log ๋ช
๋ น์ด๋ก ์ปค๋ฐ ํ์คํ ๋ฆฌ๋ฅผ ๋ก๊ทธ๋ก ๋ณด๋ ๊ฒ๊ณผ ๋๊ฐ์ด ๋จ์ํ ๋ก๊ทธ๋ฅผ ํ์ธํ๋ ๋ช
๋ น์ด์ด๋ค.) git ๋ก์ปฌ ์ ์ฅ์๋ ์ด ์ฐธ์กฐ ๋ก๊ทธ์ ์ต๊ทผ ์ด๋ ฅ์ ๋ชจ๋ ์ ์ฅํ๊ณ ์๋ค. ๋ฐ๋ผ์ reflog ๋ช
๋ น์ด๋ก reset --hardํ๊ฑฐ๋ rebaseํ ์ปค๋ฐ ์ด๋ ฅ๋ ํ์ธํ ์ ์๋ค. 2. ์ด์ rebase๋ฅผ ํ๊ธฐ ์ด์ ์ผ๋ก ๋๋์๊ฐ๊ณ ์ถ์ ์ปค๋ฐ ์์ด๋๋ฅผ..
MVVM ์ํคํ
์ณ ๋์์ธ ํจํด MVVM์ Model - View - View Model์ ์ฝ์๋ก ์ ํ๋ฆฌ์ผ์ด์
์ ๋น์ฆ๋์ค ๋ก์ง๊ณผ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ฃผ๋ presentation UI๋ฅผ ๋ถ๋ฆฌํ๋ ํจํด์ด๋ค. View ์ฑ์ ๋ณด์ฌ์ง๋ UI View Model ์ฑ์ ๋น์ฆ๋์ค ๋ก์ง์ ๋ด๊ณ ์์ ๋ทฐ์ ๋ชจ๋ธ ์ฌ์ด์์ ๋ทฐ์ ์์ฒญ์ ๋ฐ๋ผ ๋ก์ง์ ์คํ ๋ชจ๋ธ ๋ฐ์ดํฐ์ ๋ณํ์ ๋ฐ๋ผ ๋ทฐ๋ฅผ ๊ฐฑ์ ๋ชจ๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์์ฒญ, ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณต Model ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌ ๋ทฐ๋ชจ๋ธ์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์๋ต ๋ทฐ ui ์ปดํฌ๋ํธ์ด๋ค. ์์ ์ปดํฌ๋ํธ์์ props๋ก ์ ๋ฌ๋ฐ์ ์ํ์ ๋ฐ๋ผ์ ํ๋ฉด์ด ๋์ํ๋ค. ์ฌ์ฉ์๊ฐ ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํค๋ฉด ์ด๋ฒคํธ์ ๋ฐ๋ฅธ ๋ฐ์ดํฐ ๋ณ๊ฒฝ์ ๋ทฐ์์ ๋ฐ๋ก ์ฒ๋ฆฌํ์ง์๊ณ , ์์ ์ปจํ
์ด๋์ธ View Model ์ปจํ
์ด๋์์ ์ฒ๋ฆฌํ๋๋ก ํ๋ค. interface..
๋ฐ์ดํฐ ๊ตฌ์กฐ ์ํ๋ ๋ฐฐ์ด ํ์
์ด๊ณ , ๋ฐฐ์ด์ ์์๋ ๊ฐ object ๊ฐ์ฒด์ด๋ค. const initialState = [{id: '1', isDone: false }, {id: '2', isDone: false }, ...] ๋ชฉํ ์์ ๊ฐ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ ์ ์ญ ์ํ state ๋ฐฐ์ด์์ ํด๋นํ๋ ์์๋ฅผ ๋จผ์ ์ฐพ๊ณ , isDone ์์ฑ์ ๋ฐ๊พธ๊ณ ์ถ๋ค. redux toolkit์ ์ฌ์ฉํด์ ์ํ๋ฅผ ๊ด๋ฆฌํ๋๋ฐ, ๋ฐฐ์ด ์ ํน์ ์์์ ์์ฑ isDone์ ์ ์ ๊ฐ ๋๋ฅด๋ checkbox ์ด๋ฒคํธ ๊ฐ๋๋ก ๋ฐ๊ฟ์ผํ๋ค. UI ์ฝ๋ ์ ์ ๊ฐ ์ฒดํฌํ๋ ์ฒดํฌ๋ฐ์ค์ event.target.checked ๊ฐ์ ๋ฐ์์ rtk ์ฌ๋ผ์ด์ค๋ก dispatchํ๋ ์ฝ๋ export interface Todo { id: string; isDo..
์๋ ์๋ฌธ์๋ก ์์ํ๋ barChartSlice.ts ํ์ผ์ด๋ฆ์ vscode์์ ๋๋ฌธ์๋ก BarChartSlice.ts ๋ฐ๊พธ๊ณ , github์ ์๊ฒฉ์ ์ฅ์๋ก ํธ์ฌํ๋ค. ํ์ง๋ง, ์
๋ฐ์ดํธ๋ ์๊ฒฉ์ ์ฅ์์๋ ๋๋ฌธ์๋ก ๋ฐ๋ ํ์ผ๋ช
์ด ๋ฐ์์ด ์๋์ด์์๋ค. git์ ๋/์๋ฌธ์ ๊ตฌ๋ถ์ ํ์ง ๋ชปํ๋ค. ๋ฐ๋ผ์ ํ์ผ ์ด๋ฆ์ ๋๊ฐ์ง๋ง ๋/์๋ฌธ์๋ง ๋ณ๊ฒฝํด์ ๋ค์ ์๊ฒฉ์ ์ฅ์๋ก push ํ๋ ๊ฒฝ์ฐ, rename ํด์ฃผ๋ ๋ช
๋ น์ด๋ก ์ง์ ํ์ผ์ด๋ฆ์ ์์ ํด์ฃผ์ด์ผ ํ๋ค. ์ด๋ ์ฐ๋ ๋ช
๋ น์ด? git mv mv๋ move๋ฅผ ํํํ ์ฝ์์ธ๋ฐ, ๊ณต์๋ฌธ์์ ๋ณด๋ฉด move or rename a file, a directory๋ผ๊ณ ๋์จ๋ค. git mv ํ์ผ์ ์ด๋ฆ์ rename ํด์ค๋ค. git mv ํ์ผ์ด ์์นํด์๋ ๋๋ ํ ๋ฆฌ ์์น๋ฅผ ์ด๋์ํจ๋ค. ๊ทธ๋ฐ๋ฐ..
์ํฉ d3 ์ฐจํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก line ์ฐจํธ๋ฅผ ๊ทธ๋ฆฌ๋๋ฐ, ์ฐจํธ์ ๊ทธ๋ ค์ง๋ value ๊ฐ์ด 0์ผ๋๋ ๋ผ์ธ ์ฐจํธ๊ฐ ์์ ๋ํ๋์ง ์๊ณ , ๋ค๋ฅธ ๊ฐ์ด ์์๋๋ ์ฐจํธ๊ฐ ๊ทธ๋ ค์ง๋ค๊ฐ 0์ด ๋์ค๋ฉด ์ฐจํธ๊ฐ ๋๊ธฐ๋ ์ด์ํ ํ์์ด ์์๋ค. Error: attribute d: Expected number, "M36.5,NaNL79.5,NaNL122…". ๊ฒ๋ค๊ฐ ์ฝ์์๋ ์ด๋ฐ ์๋ฌ๊ฐ ์ฐํ๊ณ ์์๋ค. ๊ธฐ์กด import { line } from 'd3-shape'; const LineChart = ({bars, xScale, yScale}) => { const lineGenerator = line() .x((bar) => xScale(bar.data.indexValue) + bar.width / 2) .y((bar) => yScal..