๋ชฉ๋ก์ „์ฒด ๊ธ€ (115)

let's get IT with DAVINA ๐Ÿ’ป

React๋กœ TodoApp ๋งŒ๋“ค๊ธฐ (1)Setup

๋ถ€ํŠธ์บ ํ”„๊ฐ€ ๋๋‚˜๊ณ  ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๋” ์‹ฌํ™”๋˜๊ณ , ์ƒˆ๋กœ์šด ์–ธ์–ด ๊ธฐ๋ฐ˜์œผ๋กœ, ๋” ์–ด๋ ค์šด ์ˆ˜์ค€์˜ ์ถ”๊ฐ€ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” ๋“ฏ ํ•˜์—ฌ ๋Œ€๋‹จํ•ด๋ณด์ธ๋‹ค.. ๋ฌผ๋ก  ์ฝ”๋”ฉ์ด๋ž€๊ฑธ ์ฒ˜์Œ ์‹œ์ž‘ํ–ˆ์„ ๋•Œ "๋‚˜"๋ณด๋‹ค๋Š” ํ˜„์žฌ์˜ "๋‚ด"๊ฐ€ ๋” ๋ฐœ์ „ํ•ด์žˆ๋Š” ๋ชจ์Šต์ด๊ณ , ๋ถˆ์•ˆํ•ดํ•˜์ง€ ๋ง์ž๊ณ  ๋งค์ผ ๋‹ค์งํ•˜์ง€๋งŒ ๋‚œ ๋‚ด๊ฐ€ ๊ธฐ๋ณธ๊ธฐ๊ฐ€ ์—ฌ์ „ํžˆ ๋งŽ์ด ๋ถ€์กฑํ•˜๊ตฌ๋‚˜๋ฅผ ๊ณ„์† ๊นจ๋‹ฌ์œผ๋ฉฐ ๋งŽ์ด ์ขŒ์ ˆํ•˜๋Š” ์š”์ฆ˜์ธ๊ฒƒ๊ฐ™๋‹ค.. ๊ทธ ์–ด๋–ค ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์“ฐ๊ฑด ํ•˜๋‚˜์˜ ํ™ˆํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค ๋•Œ, CRUD๋ฅผ ์ •๋ง ์™„๋ฒฝํ•˜๊ฒŒ ์†์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€๋ฅผ ์Šค์Šค๋กœ์—๊ฒŒ ๋ฌผ์–ด๋ณธ๋‹ค๋ฉด ๋„ˆ๋ฌด๋‚˜๋„ ๋‹น์—ฐํžˆ NO์˜€๋‹ค.. ๊ทธ๋ž˜์„œ ๋‚œ ๋” ์–ด๋ ต๊ธฐ๋ณด๋‹จ ๊ธฐ๋ณธ๊ธฐ๋ฅผ ๋‹ค์‹œ ํ•œ ๋ฒˆ ๋‹ฆ๊ณ ์ž ํ”„๋กœ์ ํŠธ ์ „ ๋ถ€ํŠธ์บ ํ”„์—์„œ ๊ณผ์ œ๋กœ ์คฌ๋˜ (๋‚œ ์‹คํŒจํ–ˆ๋˜) Todo App์„ ๋‹ค์‹œ ํ•œ๋ฒˆ ๋งŒ๋“ค์–ด๋ณด๊ณ ์ž ์‹œ์ž‘ํ–ˆ๋‹ค. 1. React Component ๋งŒ๋“ค..

DEV_IN/React 2023. 3. 2. 21:14
This

JS์—์„œ this๋Š” ์™œ ์–ด๋ ค์šธ๊นŒ? ๋‹ค๋ฅธ ์–ธ์–ด๋“ค์—์„œ this๋Š” ๋งŒ๋“ค์–ด์ง„ ๊ฐ์ฒด ์ž๊ธฐ ์ž์‹ ์„ ๋œปํ•˜์ง€๋งŒ, JS์—์„  ๋‹ค๋ฅด๋‹ค! JS์—์„œ this๋Š” ์š”์ˆ ๋žจํ”„ ์ง€๋‹ˆ๋‹ค!! ๋ˆ„๊ฐ€ ํ˜ธ์ถœํ–ˆ๋ƒ์— ๋”ฐ๋ผ ๋ˆ„๊ตฌ์˜ ์ง€๋‹ˆ์ธ์ง€ ๋™์ ์œผ๋กœ ๋‹ฌ๋ผ์ง„๋‹ค. This 1. ๋ธŒ๋ผ์šฐ์ € ์ „์—ญ์Šค์ฝ”ํ”„์—์„œ console.log(this) result : window ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ด reason : ๋ธŒ๋ผ์šฐ์ € ์ „์—ญ ๊ฐ์ฒด๊ฐ€ window์ด๊ธฐ ๋•Œ๋ฌธ์— 2. function(){} ๋‚ด๋ถ€์—์„œ this ํ˜ธ์ถœ result : window ๊ฐ์ฒด๊ฐ€ ๋‚˜์˜ด reason : 'ํ•จ์ˆ˜'๋Š” ์„ ์–ธ ์‹œ window ๊ฐ์ฒด์— '๋“ฑ๋ก'๋จ. ์ด ํ•จ์ˆ˜๋Š” class์— ์†ํ•œ ๊ฒƒ๋„ ์•„๋‹ˆ๊ณ , ์ „์—ญ ์Šค์ฝ”ํ”„์—์„œ ํ˜ธ์ถœ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— this๊ฐ€ ์†ํ•œ ๊ณณ์€ window ๊ฐ์ฒด์ž„. ๋”ฐ๋ผ์„œ, window.simpleFun()๋กœ๋„..

DEV_IN/JavaScript 2023. 2. 28. 18:35
Prototype

TypeScript๋ฅผ ๋ฐฐ์šฐ๋ฉด์„œ ๊ฒฐ๊ตญ, ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ superset์ธ๋ฐ ๊ทธ๋Ÿฌ๋ ค๋ฉด JavaScript ๊ฐœ๋…์„ ์กฐ๊ธˆ ๋” ์ •๋ฆฌ ํ•  ํ•„์š”์„ฑ์„ ๋Š๊ผˆ๋‹ค๋นˆ Prototype์€ JS์˜ ์ƒ์† ๊ธฐ๋Šฅ, ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์œ„ํ•œ ๊ฒƒ์ด๋‹ค!!! Prototype TS๋Š” ์•„๋ž˜์™€๊ฐ™์ด JS์˜ superset์ž…๋‹ˆ๋‹ค. JS์—์„  ์—†์—ˆ๋˜, class, interface, generics, types ๋“ฑ์„ ์ด์šฉํ•ด์„œ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ๊ฐ€๋Šฅํ–ˆ์Šต๋‹ˆ๋‹ค. BUT, JS๋„ ์—„๋ฐ€ํžˆ ๋งํ•˜๋ฉด proto-based๋ฅผ ํ†ตํ•ด ๊ฐ์ฒด ์ง€ํ–ฅ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ, ES6๋ถ€ํ„ฐ๋Š” class๋ฅผ ์ด์šฉํ•ด์„œ ํ”„๋กœํ† ๋ฅผ ๊ธฐ๋ฐ˜์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. Prototype์€ ์ƒ์†์„ ์œ„ํ•ด ์“ฐ์ด๋Š” ์•„์ด์ž…๋‹ˆ๋‹ค! ์šฐ๋ฆฌ๊ฐ€ Class๋ฅผ ์ด์šฉํ•ด์„œ ์ƒ์†์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ..

DEV_IN/JavaScript 2023. 2. 28. 17:24
DOM

TypeScript ์ ์šฉํ•˜๋Š” ์ž‘์€ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“œ๋ ค๋‹ค๋ณด๋‹ˆ ํ•ญ์ƒ React๋งŒ ์‚ฌ์šฉํ•ด์™€์„œ ๊ฐ•์˜๋ฅผ ๋“ฃ๋Š”๋ฐ DOM ๊ฐœ๋…์ด ๋‚˜์˜ค๋ฉด ๋ฉ˜๋ถ•์ด ์™”๋‹ค.. ๊ทธ๋Ÿฐ ๋‚ด ๋ง˜์„ ์•Œ์•˜๋Š”์ง€ DOM ๊ด€๋ จ ์˜์ƒ์„ ์˜ฌ๋ ค์ฃผ์‹  ๊ฐ•์‚ฌ๋‹˜ ๋•๋ถ„์— ์ •๋ฆฌ๋ฅผ ํ•ด๋ณธ๋Œœ.. DOM Document Object Model์˜ ์•ฝ์ž HTML- ์›นํŽ˜์ด์ง€์˜ ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“œ๋Š” ๋งˆํฌ์—… ์–ธ์–ด JavaScript- HTML๋กœ ๋งŒ๋“ค์–ด์ง„ ๊ตฌ์กฐ์— ๊ธฐ๋Šฅ์„ ๋”ํ• ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด DOM- HTML ์š”์†Œ๋ฅผ Object์ฒ˜๋Ÿผ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋ธ DOM์€ document๊ฐ์ฒด๋ฅผ ํ†ตํ•ด HTML์— ์ ‘๊ทผ BOM(Browser Object Model)์ด window ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด ๋ธŒ๋ผ์šฐ์ €์— ์ ‘๊ทผ (window๊ฐ์ฒด๊ฐ€ document๊ฐ์ฒด๋ณด๋‹ค ์ƒ์œ„ ๊ฐœ๋…) ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ด๋Ÿฐ HTML Tag๋“ค์„ ๋‹ค ์ฝ์„ ..

DEV_IN/HTML 2023. 2. 27. 15:33
์•Œ๊ณ ๋ฆฌ์ฆ˜/๊ณต๊ฐ„ ๋ณต์žก๋„

๊ณต๊ฐ„ ๋ณต์žก๋„ (Space Complexity) ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ˆ˜ํ–‰๋˜๋Š” ๋ฐ์— ํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ์˜ ์ด๋Ÿ‰ ํ”„๋กœ๊ทธ๋žจ์ด ์š”๊ตฌํ•˜๋Š” ๊ณต๊ฐ„ ⇒ ๊ณ ์ •์ ์ธ ๊ณต๊ฐ„ + ๊ฐ€๋ณ€์ ์ธ ๊ณต๊ฐ„ ๊ณ ์ •์ ์ธ ๊ณต๊ฐ„: ์ฒ˜๋ฆฌํ•  ๋ฐ์ดํ„ฐ์˜ ์–‘์— ๋ฌด๊ด€ํ•˜๊ฒŒ ํ•ญ์ƒ ์š”๊ตฌ๋˜๋Š” ๊ณต๊ฐ„์œผ๋กœ์„œ, ํ”„๋กœ๊ทธ๋žจ์˜ ์„ฑ๋Šฅ์— ํฐ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์Œ ๊ฐ€๋ณ€์ ์ธ ๊ณต๊ฐ„: ์ฒ˜๋ฆฌํ•  ํ…Œ์ดํ„ฐ์˜ ์–‘์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ์š”๊ตฌ๋˜๋Š” ๊ณต๊ฐ„์œผ๋กœ์„œ ํ”„๋กœ๊ทธ๋žจ์˜ ์„ฑ๋Šฅ์— ํฐ ์˜ํ–ฅ์„ ์คŒ! ๊ณต๊ฐ„ ๋ณต์žก๋„ ๊ณ„์‚ฐ์€ ์‹œ๊ฐ„ ๋ณต์žก๋„ ๊ณ„์‚ฐ๊ณผ ๋น„์Šทํ•˜๊ฒŒ ๋น… ์˜ค(Big-O) ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ํ‘œํ˜„ ๋ณดํ†ต ๊ณต๊ฐ„ ๋ณต์žก๋„๋Š” ์‹œ๊ฐ„ ๋ณต์žก๋„๋ณด๋‹ค ์ค‘์š”์„ฑ์ด ๋–จ์–ด์ง„๋‹ค. WHY? ์‹œ๊ฐ„์ด ์ ์œผ๋ฉด์„œ ๋ฉ”๋ชจ๋ฆฌ๊นŒ์ง€ ์ง€์†์ ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๊ฑฐ์˜ ์—†๊ธฐ ๋•Œ๋ฌธ์—.. BUT! ๋™์  ๊ณ„ํš๋ฒ•(Dynamic Programming)๊ณผ ๊ฐ™์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‚˜ ํ•˜๋“œ์›จ์–ด ํ™˜๊ฒฝ์ด ๋งค์šฐ ํ•œ์ •๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ..

DEV_IN/Algorithm 2023. 2. 24. 19:48
์•Œ๊ณ ๋ฆฌ์ฆ˜/์‹œ๊ฐ„ ๋ณต์žก๋„

์‹œ๊ฐ„ ๋ณต์žก๋„ (Time Complextity) ์ž…๋ ฅ๊ฐ’์ด ์ปค์ง์— ๋”ฐ๋ผ ์ฆ๊ฐ€ํ•˜๋Š” ์‹œ๊ฐ„์˜ ๋น„์œจ์„ ์ตœ์†Œํ™”ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ž…๋ ฅ์˜ ํฌ๊ธฐ์™€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์˜ ์ƒ๊ด€๊ด€๊ณ„ Big-O ํ‘œ๊ธฐ๋ฒ• ์ฃผ์–ด์ง„ ์‹์„ ๊ฐ’์ด ๊ฐ€์žฅ ํฐ ๋Œ€ํ‘œํ•ญ๋งŒ ๋‚จ๊ฒจ์„œ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐฉ๋ฒ• Big-O(๋น…-์˜ค) ์ตœ์•…์˜ ๊ฒฝ์šฐ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š” ๊ณผ์ •์—์„œ “์ด ์ •๋„ ์‹œ๊ฐ„๊นŒ์ง€ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ๋‹ค”๋ฅผ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค! Big-Ω(๋น…-์˜ค๋ฉ”๊ฐ€) ์ตœ์„ ์˜ ๊ฒฝ์šฐ Big-θ(๋น…-์„ธํƒ€) ์ค‘๊ฐ„(ํ‰๊ท )์˜ ๊ฒฝ์šฐ O(1) constant complexity ์ž…๋ ฅ๊ฐ’์ด ์ฆ๊ฐ€ํ•˜๋”๋ผ๋„ ์‹œ๊ฐ„์ด ๋Š˜์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค. ์ž…๋ ฅ๊ฐ’์˜ ํฌ๊ธฐ์™€ ๊ด€๊ณ„์—†์ด, ์ฆ‰์‹œ ์ถœ๋ ฅ๊ฐ’์„ ์–ป์–ด๋‚ผ ์ˆ˜ ์žˆ๋‹ค. function O_1_algorithm(arr, index) { return arr[index]; } let arr = [1, 2..

DEV_IN/Algorithm 2023. 2. 24. 19:41
์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€?

์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€? ์–ด๋–ค ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ผ๋ จ์˜ ์ ˆ์ฐจ๋ฅผ ์ •์˜ํ•˜๊ณ , ๊ณต์‹ํ™”ํ•œ ํ˜•ํƒœ๋กœ ํ‘œํ˜„ํ•œ ์ผ์ข…์˜ ๋ฌธ์ œ ํ’€์ด ๋ฐฉ๋ฒ• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„ ? input๊ฐ’์„ ํ†ตํ•ด output๊ฐ’์„ ์–ป๊ธฐ ์œ„ํ•œ ๊ณ„์‚ฐ ๊ณผ์ • ์ž…๋ ฅ(Input) ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ถœ๋ ฅ์— ํ•„์š”ํ•œ ์ž๋ฃŒ๋ฅผ ์ž…๋ ฅ๋ฐ›์„ ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (๊ผญ ์ž…๋ ฅ๊ฐ’์ด ์—†์„ ์ˆ˜๋„ ์žˆ์Œ) ์ถœ๋ ฅ(Output) ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์‹คํ–‰์ด ๋˜๋ฉด ์ ์–ด๋„ ํ•œ ๊ฐ€์ง€ ์ด์ƒ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜๋“œ์‹œ ์ถœ๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์œ ํ•œ์„ฑ(Finiteness) ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์œ ํ•œํ•œ ๋ช…๋ น์–ด๋ฅผ ์ˆ˜ํ–‰ํ•œ ํ›„, ์œ ํ•œํ•œ ์‹œ๊ฐ„ ๋‚ด์— ์ข…๋ฃŒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ช…ํ™•์„ฑ(Definiteness) ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ฐ ๋‹จ๊ณ„๋Š” ๋‹จ์ˆœํ•˜๊ณ  ๋ช…ํ™•ํ•ด์•ผ ํ•˜๋ฉฐ, ๋ชจํ˜ธํ•ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค. ํšจ์œจ์„ฑ(Efficiency) ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๊ฐ€๋Šฅํ•œ ํ•œ ํšจ์œจ์ ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (์‹œ๊ฐ„ ๋ณต์žก๋„์™€ ๊ณต๊ฐ„ ๋ณต์žก๋„๊ฐ€ ๋‚ฎ์„์ˆ˜๋ก ..

DEV_IN/Algorithm 2023. 2. 24. 19:28