์ „์ฒด ๊ธ€

ยท React
MVVM ์•„ํ‚คํ…์ณ ๋””์ž์ธ ํŒจํ„ด MVVM์€ Model - View - View Model์˜ ์•ฝ์ž๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ฃผ๋Š” presentation UI๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ํŒจํ„ด์ด๋‹ค. View ์•ฑ์˜ ๋ณด์—ฌ์ง€๋Š” UI View Model ์•ฑ์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋‹ด๊ณ ์žˆ์Œ ๋ทฐ์™€ ๋ชจ๋ธ ์‚ฌ์ด์—์„œ ๋ทฐ์˜ ์š”์ฒญ์— ๋”ฐ๋ผ ๋กœ์ง์„ ์‹คํ–‰ ๋ชจ๋ธ ๋ฐ์ดํ„ฐ์˜ ๋ณ€ํ™”์— ๋”ฐ๋ผ ๋ทฐ๋ฅผ ๊ฐฑ์‹  ๋ชจ๋ธ์— ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญ, ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๊ณต Model ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌ ๋ทฐ๋ชจ๋ธ์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์‘๋‹ต ๋ทฐ ui ์ปดํฌ๋„ŒํŠธ์ด๋‹ค. ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ์—์„œ props๋กœ ์ „๋‹ฌ๋ฐ›์€ ์ƒํƒœ์— ๋”ฐ๋ผ์„œ ํ™”๋ฉด์ด ๋™์ž‘ํ•œ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋ฉด ์ด๋ฒคํŠธ์— ๋”ฐ๋ฅธ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์„ ๋ทฐ์—์„œ ๋ฐ”๋กœ ์ฒ˜๋ฆฌํ•˜์ง€์•Š๊ณ , ์ƒ์œ„ ์ปจํ…Œ์ด๋„ˆ์ธ View Model ์ปจํ…Œ์ด๋„ˆ์—์„œ ์ฒ˜๋ฆฌํ•˜๋„๋ก ํ•œ๋‹ค. interface..
ยท React
๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์ƒํƒœ๋Š” ๋ฐฐ์—ด ํƒ€์ž…์ด๊ณ , ๋ฐฐ์—ด์˜ ์š”์†Œ๋Š” ๊ฐ 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..
ยท Git
์›๋ž˜ ์†Œ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ–ˆ๋˜ 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 ํŒŒ์ผ์ด ์œ„์น˜ํ•ด์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ ์œ„์น˜๋ฅผ ์ด๋™์‹œํ‚จ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ..
ยท React
์ƒํ™ฉ 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..
๋‚˜์˜ ๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ๋Š” ์œ ์ž…์ด ์ •๋ง ์—†๋Š” ํŽธ์ด๋ผ ๋ณ„๋กœ ์žฌ๋ฏธ๊ฐ€์—†์–ด์„œ ์ž˜ ์•ˆ์ผ๋‹ค… ๐Ÿซ  ๊ทธ์น˜๋งŒ… ๋‚˜์ค‘์— ๋ณด๋ฉด ๋‚ด๊ฐ€ ์žฌ๋ฐŒ์œผ๋‹ˆ๊นŒ ์จ๋ณด๋Š” ์ฒซ์ถœ๊ทผ ์ผ๊ธฐ ๋ฒŒ์จ ์ฒซ ์ถœ๊ทผ ํ•œ ์ฃผ๊ฐ€ ๊ฐ”๊ณ  ํ•œ๋ฒˆ์˜ ์ฃผ๋ง์ด ์ง€๋‚˜๊ฐ”๋‹ค. ์‹œ๊ฐ„ ์ •๋ง ๋น ๋ฅด๊ณ  ์ •์‹ ์—†๊ณ  ์—ฌ์ „ํžˆ ๋ชธ๊ณผ ๋งˆ์Œ์ด ์ ์‘์ค‘์ธ ์ƒํƒœ์ด๋‹ค. ใ…‹ใ…‹ ์›๋ž˜ ์ฒซ์ถœ๊ทผํ•˜๊ณ  ๋‹น์ผ๋‚  ์ƒ๊ฐ์„ ๋‚จ๊ฒจ๋‘๊ณ ์‹ถ์€๋ฐ ๊ทธ ์ „๋‚  ๊ฑฑ์ •์ด ๋˜์–ด์„œ์ธ์ง€ ๊ฑฐ์˜ ์ž ์„ ๊นŠ๊ฒŒ ๋ชป์žค๋‹ค… ๊ทธ๋ž˜์„œ ์ฒซ์งธ๋‚  ์ง‘์— ์ข€๋น„๋˜์„œ ์™€์„œ ๋จธ๋ฆฌ๊ฐ€ ๊นจ์ง€๋Š” ์ค„.. ๊ทธ๋ž˜์„œ ๊ธ€ ์“ธ ์—ฌ์œ  ์—†์—ˆ๊ณ  ์ง€๊ธˆ๋„ ์‚ฌ์‹ค ๋ฉฐ์น ์งธ ์ž ์„ ๊นŠ๊ฒŒ ์ž˜ ๋ชป์ž์„œ ๋งค์šฐ ํ”ผ๊ณคํ•œ ์ƒํƒœ์ง€๋งŒ.. (์•ฝ๊ฐ„ ๋ฐค์ƒˆ์„œ ์ƒˆ๋ฒฝ๋น„ํ–‰๊ธฐ ํƒ€๊ณ  ์˜จ๋‚  ๋ฐค ๋Š๋‚Œ..) ๊ทธ๋ž˜๋„ ์ง€๊ธˆ ๊ธฐ๋กํ•˜์ง€์•Š์œผ๋ฉด ๊ธˆ๋ฐฉ ๋˜ ๋Š๋ผ๋Š” ๊ฒƒ๋“ค์ด ๋‹ค ๋‚ ๋ผ๊ฐˆ ๊ฒƒ์ด๋ฏ€๋กœ ์ง€๊ธˆ ๊ธฐ๋กํ•ด๋ณธ๋‹ค. ๊ฐ€๋ณด์ž๊ณ ~~ ๋งˆ์ง€๋ง‰์œผ๋กœ ํšŒ์‚ฌ์— ์ถœ๊ทผํ–ˆ๋˜๊ฒŒ 22๋…„ 1์›”์ด์—ˆ์œผ๋‹ˆ๊นŒ ํ‡ด์‚ฌํ•˜..
ยท React
react ๊ธฐ๋ณธ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ๋งŒ๋“ค์–ด๋‘” todo app์„ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ฐฐ์šฐ๊ณ  ํ•œ๋ฒˆ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํ•ด๋ณด์•˜๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋ฉด์„œ ์ปดํŒŒ์ผ์—์„œ ์—๋Ÿฌ ๋‚ด์ฃผ๋Š” ๊ฒƒ๋“ค์„ ๋‚˜๋ฆ„ ์ด๊ฒƒ์ €๊ฒƒ ํ•ด๋ณด๋ฉด์„œ ๋นจ๊ฐ„ ์ค„ ๋‹ค ์—†์•ด๋‹ค๊ณ  ์ข‹์•„ํ–ˆ๋Š”๋ฐ ์‹ค์ œ๋กœ ์ผœ๋ณด๋‹ˆ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์งˆ ์•Š๋Š” ๊ฒƒ....??? ์ด๊ฑธ ๋””๋ฒ„๊น… ํ•˜๋Š”๋ฐ๋„ ์‹œ๊ฐ„์„ ์–ผ๋งˆ๋‚˜ ๋“ค์˜€๋Š”์ง€... ^^ ๋‹ค์Œ์—” ์‹ค์ˆ˜ํ•˜์ง€ ์•Š๊ธฐ์œ„ํ•ด ๊ธฐ๋กํ•ด๋ณธ๋‹ค! ๐Ÿ“Œ ๋ฌธ์ œ form ํƒœ๊ทธ์— submit ์ด๋ฒคํŠธ๋ฅผ ๋“ฑ๋กํ•ด๋‘์–ด์„œ input์„ ์ž‘์„ฑํ•˜๊ณ  ์ถ”๊ฐ€ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ๋‚ด์šฉ์ด ์„œ๋ฒ„๋กœ ๊ฐ€๊ณ  ํ™”๋ฉด ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€๊ฐ€ ๋˜์–ด์•ผํ•จ. But, ์ž๊พธ ํ™”๋ฉด์ด ์ƒˆ๋กœ๊ณ ์นจ๋จ. ์•„๋ฌด๋Ÿฐ ์ฝ˜์†”๋„ ์•ˆ๋ณด์ด๊ณ  ๊ทธ๋ƒฅ ์™„์ „ ์ƒˆ๋กœ์šด ํ™”๋ฉด ์ด๊ฒŒ e.preventDefault()๊ฐ€ ์ž‘๋™์„ ์•ˆํ•ด์„œ ๊ทธ๋Ÿฐ๊ฑด์ง€๋„ ํ•œ์ฐธ ์ดํ›„์— ๊นจ๋‹ฌ์•˜๋‹ค... ๐Ÿ˜‚ form ํƒœ๊ทธ ์‚ฌ์šฉํ•˜..
ยท React
hana@Hanaui-MacBookAir ~ % npm install -g typescript npm ERR! code EACCES npm ERR! syscall mkdir npm ERR! path /usr/local/lib/node_modules/typescript npm ERR! errno -13 npm ERR! Error: EACCES: permission denied, mkdir '/usr/local/lib/node_modules/typescript' npm ERR! [Error: EACCES: permission denied, mkdir '/usr/local/lib/node_modules/typescript'] { npm ERR! errno: -13, npm ERR! code: 'EACCES',..
ยท React
ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋ฉด์„œ ๊ฐ€์žฅ ํ•ด๊ฒฐํ•˜๊ธฐ์–ด๋ ค์›Œ์„œ ์• ๋จน์—ˆ๋˜ ๋ถ€๋ถ„์ด ์žˆ๋‹ค. ๋ฐ”๋กœ App.js์˜ useEffect ๋น„๋™๊ธฐ์š”์ฒญ์˜ ์‹คํ–‰์ˆœ์„œ ๋ถ€๋ถ„์ด๋‹ค. ์˜ˆ์ƒํ–ˆ๋˜ ์‹คํ–‰์ˆœ์„œ์— ๋”ฐ๋ผ ์‹คํ–‰์ด๋˜์ง€์•Š์•„ ์‚ฌ์šฉ์ž ์ธ๊ฐ€๊ฐ€ ์ •๋ณด๊ฐ€ ํ•„์š”ํ•œ ํŽ˜์ด์ง€ (ex ๋งˆ์ดํŽ˜์ด์ง€)์—์„œ ์ƒˆ๋กœ๊ณ ์นจ์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค์ง€ ๋ชปํ•˜๋Š” ์ด์Šˆ๊ฐ€ ์žˆ์—ˆ๋‹ค. ํ”„๋กœ์ ํŠธ๊ฐ€ ๋๋‚ ๋•Œ ๊นŒ์ง€๋„ ํ•ด๊ฒฐ์ด๋˜์ง€ ์•Š์•„ ์ž„์‹œ๋ฐฉํŽธ์œผ๋กœ ํ•ด๊ฒฐํ•ด๋‘๊ณ , ์ดํ›„ ๋ฆฌํŒฉํ† ๋ง์„ ํ•˜๋ฉด์„œ๋„ ๊ทธ ์ด์Šˆ์— ๋Œ€ํ•ด ์—ฌ๋Ÿฌ๊ฐ€์ง€๋ฅผ ์ฐพ์•„๋ณด๊ณ  ์ ์šฉํ•ด๋ณด์•˜์ง€๋งŒ ์‰ฝ๊ฒŒ ํ•ด๊ฒฐ์ด ๋˜์ง€ ์•Š์•˜๋‹ค. ํ”Œ์ ์ด ๋๋‚˜๊ณ  ์•ฝ 1๋‹ฌ์ด ์ง€๋‚œ๋ฌด๋ ต.. ๊ฐ™์ด ๊ฐœ๋ฐœํ–ˆ๋˜ ์šฐ๋ฆฌํŒ€ ์ˆ˜์ง„๋‹˜ํ•˜๊ณ  ๋””์Šค์ฝ”๋“œ๋กœ ๊ทผํ™ฉ์ฃผ๊ณ  ๋ฐ›๋‹ค๊ฐ€ ๊ทธ ์ด์Šˆ์— ๋Œ€ํ•ด ์–˜๊ธฐํ•˜๊ฒŒ๋˜์—ˆ๊ณ  ๊ทธ๋‚  ๊ทธ ๋ฌธ์ œ๋ฅผ digginggํ•˜๋‹ค๊ฐ€ ๋“œ๋””์–ด...!!! ์ƒˆ๋ฒฝ 3์‹œ๊ฐ€ ๋„˜์–ด์„œ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ๋‹ค. ๐Ÿ˜ญ ์ •๋ง ... ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๊ณ  u..
hana1203
hana's lab ๐ŸŒฑ