๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ384

๐Ÿ“˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ(JavaScript) ๊ธฐ๋ณธ ๋‹ค์ง€๊ธฐ - Part 1 ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ž€ ๋ฌด์—‡์ธ๊ฐ€? ๋ณ€์ˆ˜, ์Šค์ฝ”ํ”„, ํƒ€์ž…, ์กฐ๊ฑด๋ฌธ๊นŒ์ง€ ๊ธฐ์ดˆ ์™„์ „ ์ •๋ณต!โœ… ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ž€ ๋ฌด์—‡์ธ๊ฐ€?์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ(JavaScript, JS)๋Š” ์›นํŽ˜์ด์ง€์— ๋™์ ์ธ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ž…๋‹ˆ๋‹ค.HTML์ด ๊ตฌ์กฐ, CSS๊ฐ€ ์Šคํƒ€์ผ์„ ๋‹ด๋‹นํ•œ๋‹ค๋ฉด, JS๋Š” ๊ธฐ๋Šฅ๊ณผ ์ƒํ˜ธ์ž‘์šฉ์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.๋ฒ„ํŠผ ํด๋ฆญ ์‹œ ํŒ์—… ๋„์šฐ๊ธฐ๋กœ๊ทธ์ธ ํผ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ ๋ฐ›์•„์™€ ํŽ˜์ด์ง€์— ๋ Œ๋”๋ง์• ๋‹ˆ๋ฉ”์ด์…˜ ํšจ๊ณผ ๋“ฑํ˜„์žฌ๋Š” ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋„˜์–ด Node.js ํ™˜๊ฒฝ์—์„œ๋„ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ๊นŒ์ง€ ๊ฐ€๋Šฅํ•  ์ •๋„๋กœ ๋ฒ”์šฉ์„ฑ์ด ๋„“์–ด์š”.// ๊ฐ„๋‹จํ•œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์˜ˆ์‹œconsole.log("Hello, World!"); // ์ฝ˜์†”์— ํ…์ŠคํŠธ ์ถœ๋ ฅdocument.getElementById("demo").innerHTML = "ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค!"; // HTML ์š”์†Œ.. 2025. 4. 24.
๐Ÿš€ Git ์‹œ์ž‘ํ•˜๊ธฐ: ๋ฒ„์ „ ๊ด€๋ฆฌ์˜ ์ฒซ ๊ฑธ์Œ ๊ฐœ๋ฐœ์„ ์ฒ˜์Œ ์‹œ์ž‘ํ•˜๋ฉด, ํŒŒ์ผ์„ ๋ณต์‚ฌํ•ด์„œ "์ตœ์ข…", "์ง„์งœ ์ตœ์ข…", "์ตœ์ตœ์ข…"... ์ด๋Ÿฐ ์‹์œผ๋กœ ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ํ•ด๋ณธ ์  ์žˆ์œผ์‹ค ๊ฒ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํŒ€ ํ”„๋กœ์ ํŠธ๊ฐ€ ์‹œ์ž‘๋˜๋ฉด ์ด์•ผ๊ธฐ๊ฐ€ ๋‹ฌ๋ผ์ง€์ฃ . ์—ฌ๋Ÿฌ ๋ช…์ด ๋™์‹œ์— ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜๊ณ , ๊ธฐ๋Šฅ์„ ๋‚˜๋ˆ ์„œ ๊ฐœ๋ฐœํ•˜๋‹ค ๋ณด๋ฉด ์ฝ”๋“œ ์ถฉ๋Œ์€ ๋ฌผ๋ก ์ด๊ณ  "์–ด๋А ๋ฒ„์ „์ด ์ตœ์‹ ์ด์ง€?"๋ผ๋Š” ํ˜ผ๋ž€์ด ๋Š์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋•Œ ํ•„์š”ํ•œ ๊ฒŒ ๋ฐ”๋กœ ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ(VCS)์ด๊ณ , ๊ทธ์ค‘ ๊ฐ€์žฅ ๋„๋ฆฌ ์“ฐ์ด๋Š” ๋„๊ตฌ๊ฐ€ ๋ฐ”๋กœ Git์ž…๋‹ˆ๋‹ค.๐Ÿ”น Git์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€?Git์€ ๋ถ„์‚ฐํ˜• ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ(Distributed Version Control System, DVCS)์ž…๋‹ˆ๋‹ค.๋ฆฌ๋ˆ„์Šค ํ† ๋ฅด๋ฐœ์ฆˆ(Linus Torvalds)๊ฐ€ ๋ฆฌ๋ˆ…์Šค ์ปค๋„ ๊ฐœ๋ฐœ์„ ์œ„ํ•ด 2005๋…„์— ๋งŒ๋“  ๋„๊ตฌ๋กœ, ํ”„๋กœ์ ํŠธ์˜ ๋ณ€๊ฒฝ ์ด๋ ฅ์„ ์ฒด๊ณ„์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ.. 2025. 4. 24.
์›น ํŽ˜์ด์ง€ ๋ ˆ์ด์•„์›ƒ ์ œ๋Œ€๋กœ ์žก๊ธฐ ์Šคํƒ€์ผ์€ ๋ฉ‹์ง€๊ฒŒ ์ž…ํ˜”๋Š”๋ฐ, ์š”์†Œ๋“ค์˜ ์œ„์น˜๊ฐ€ ์—‰๋ง์ด๋ผ๋ฉด ์‚ฌ์šฉ์ž ์ž…์žฅ์—์„  ๋ถˆํŽธํ•œ UI๊ฐ€ ๋  ์ˆ˜๋ฐ–์— ์—†์ฃ .๊ทธ๋ž˜์„œ ์›น ๊ฐœ๋ฐœ์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•˜๋ฉด์„œ๋„ ํ—ท๊ฐˆ๋ฆฌ๋Š” ๋ถ€๋ถ„์ด ๋ฐ”๋กœ ๋ ˆ์ด์•„์›ƒ ๊ตฌ์„ฑ์ž…๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์‹ค๋ฌด์—์„œ๋„ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๋ ˆ์ด์•„์›ƒ ๊ธฐ๋ฒ•๋“ค์„ ์ •๋ฆฌํ•ด ๋ณผ๊ฒŒ์š”.โœ… Flexbox๋กœ ์š”์†Œ๋ฅผ ์œ ์—ฐํ•˜๊ฒŒ ์ •๋ ฌํ•ด ๋ณด์žFlexbox๋Š” ์ผ๋ ฌ๋กœ ์ •๋ ฌ๋˜๋Š” ์ฝ˜ํ…์ธ ๋ฅผ ๋ฐฐ์น˜ํ•  ๋•Œ ์ •๋ง ์œ ์šฉํ•ด์š”.ํŠนํžˆ ์ •์ค‘์•™ ์ •๋ ฌ, ๊ฐ„๊ฒฉ ์กฐ์ ˆ, ๋ฐ˜์‘ํ˜• ๋ ˆ์ด์•„์›ƒ ๋“ฑ์— ํƒ์›”ํ•˜์ฃ ..container { display: flex; justify-content: center; /* ๊ฐ€๋กœ ์ •๋ ฌ */ align-items: center; /* ์„ธ๋กœ ์ •๋ ฌ */ height: 100vh;} ๐Ÿ“Œ ์ฃผ์š” ์†์„ฑ ์š”์•ฝ์†์„ฑ์„ค๋ช…flex-direction์ฃผ์ถ• ๋ฐฉ.. 2025. 4. 23.
[DevCourse] ์ƒ์„ฑํ˜• AI ํ™œ์šฉ ๋ฐฑ์—”๋“œ ๋ฐ๋ธŒ์ฝ”์Šค 15์ผ์ฐจ ์˜ค๋Š˜์€ ์ฒ˜์Œ์œผ๋กœ TypeScript(ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ)๋ฅผ ์ ‘ํ–ˆ๋‹ค.๊ทธ๋™์•ˆ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ๋งŒ ์ž‘์—…ํ•˜๋ฉด์„œ “ํƒ€์ž…์ด ์—†์–ด์„œ ํŽธํ•˜๋‹ค”๋Š” ์ƒ๊ฐ๋„ ์žˆ์—ˆ์ง€๋งŒ,์‹ค์ œ๋กœ ํ”„๋กœ์ ํŠธ ๊ทœ๋ชจ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ์ฝ”๋“œ์˜ ๊ตฌ์กฐ๋ฅผ ๋ช…ํ™•ํžˆ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฑธ ์˜ค๋Š˜ ์‹ค์Šต์„ ํ†ตํ•ด ์ œ๋Œ€๋กœ ๋А๊ผˆ๋‹ค.๐Ÿ“Œ ์˜ค๋Š˜ ๋ฐฐ์šด ๋‚ด์šฉ ์š”์•ฝ1. TypeScript ๊ฐœ์š”์™€ ๊ธฐ๋ณธ ๋ฌธ๋ฒ•TypeScript๋Š” JavaScript์˜ ์ƒ์œ„ ์ง‘ํ•ฉ(Superset)์œผ๋กœ, ์ •์  ํƒ€์ž…์„ ์ถ”๊ฐ€ํ•ด ์ฝ”๋“œ์˜ ์•ˆ์ •์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋†’์—ฌ์ค€๋‹ค.string, number, boolean ๊ฐ™์€ ๊ธฐ๋ณธ ํƒ€์ž… ์„ ์–ธ ๋ฐฉ์‹๋ถ€ํ„ฐ, "north" | "south"์ฒ˜๋Ÿผ ๋ฆฌํ„ฐ๋Ÿด ํƒ€์ž…, interface๋ฅผ ํ†ตํ•œ ๊ฐ์ฒด ๊ตฌ์กฐ ์ •์˜, ํ•จ์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ฐ ๋ฐ˜ํ™˜๊ฐ’์— ๋ช…ํ™•ํ•˜๊ฒŒ ํƒ€์ž…์„ ์ง€์ •ํ•˜๋Š” ๋ฐฉ์‹๊นŒ์ง€ ์‹ค์Šตํ–ˆ๋‹ค.2. React.. 2025. 4. 23.
[DevCourse] ์ƒ์„ฑํ˜• AI ํ™œ์šฉ ๋ฐฑ์—”๋“œ ๋ฐ๋ธŒ์ฝ”์Šค 14์ผ์ฐจ ์˜ค๋Š˜์€ ๋“œ๋””์–ด React๋กœ ์™ธ๋ถ€ API๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ณ , ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ํ™”๋ฉด์— ์ถœ๋ ฅํ•ด ๋ณด๋Š” ์‹ค์Šต์„ ์ง„ํ–‰ํ–ˆ๋‹ค.๋‰ด์Šค API๋ฅผ ์—ฐ๋™ํ•ด์„œ ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ๋‰ด์Šค๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๋‰ด์Šค ๋ทฐ์–ด ํŽ˜์ด์ง€๋ฅผ ์ง์ ‘ ๋งŒ๋“ค๋ฉด์„œ,๊ทธ๋™์•ˆ ๋ฐฐ์›Œ์™”๋˜ ๊ฐœ๋…๋“ค์ด ์–ด๋–ป๊ฒŒ ์—ฐ๊ฒฐ๋˜๋Š”์ง€๋ฅผ ์‹ค๊ฐํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.๐Ÿ“Œ ์˜ค๋Š˜ ๋ฐฐ์šด ์ฃผ์š” ๋‚ด์šฉ ์ •๋ฆฌ1. ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ์˜ ๊ฐœ๋…๊ณผ ํ๋ฆ„setTimeout์œผ๋กœ ๊ตฌํ˜„๋œ ์ฝœ๋ฐฑ ํŒจํ„ด → Promise → async/await ์ˆœ์œผ๋กœ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์˜ ํ๋ฆ„์„ ์ •๋ฆฌํ–ˆ๋‹ค.async/await๋ฅผ ํ™œ์šฉํ•˜๋ฉด ๋ณต์žกํ•œ ๋น„๋™๊ธฐ ๋กœ์ง๋„ ๋™๊ธฐ ์ฝ”๋“œ์ฒ˜๋Ÿผ ์ฝํžˆ๊ธฐ ์‰ฝ๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์–ด, ์‹ค์ œ๋กœ ์จ๋ณด๋‹ˆ ์ •๋ง ๊น”๋”ํ•˜๋‹ค๋Š” ์ธ์ƒ์„ ๋ฐ›์•˜๋‹ค.2. ๋‰ด์Šค API ์—ฐ๋™ ์‹ค์Šตaxios๋ฅผ ์ด์šฉํ•ด ๋‰ด์Šค ๋ฐ์ดํ„ฐ๋ฅผ ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋ถˆ๋Ÿฌ์˜ค๊ณ ,์นดํ…Œ๊ณ ๋ฆฌ ์„ ํƒ์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ๊ฑด๋ถ€๋กœ ์ถœ๋ ฅํ•˜๋Š” ๋‰ด.. 2025. 4. 22.
[DevCourse] ์ƒ์„ฑํ˜• AI ํ™œ์šฉ ๋ฐฑ์—”๋“œ ๋ฐ๋ธŒ์ฝ”์Šค 13์ผ์ฐจ ์ง€๋‚œ 12์ผ ์ฐจ ์ˆ˜์—…์€ ๊ฑด๊ฐ• ๋ฌธ์ œ๋กœ ์ˆ˜์—…์— ์ฐธ์—ฌํ•˜์ง€ ๋ชปํ–ˆ์ง€๋งŒ,๋‹คํ–‰ํžˆ ์˜ค๋Š˜ ์ˆ˜์—… ์‹œ์ž‘ ์ „ ์ง€๋‚œ ์‹œ๊ฐ„ ๊ฐœ๋…์„ ๋‹ค์‹œ ๋ณต์Šตํ•˜๋Š” ์‹œ๊ฐ„์ด ์žˆ์–ด ํฐ ๋ฌด๋ฆฌ ์—†์ด ๋”ฐ๋ผ๊ฐˆ ์ˆ˜ ์žˆ์—ˆ๋‹ค.React์˜ Hook ๊ฐœ๋…๊ณผ Router ๊ตฌ์กฐ๋ฅผ ๋ฐฐ์šฐ๊ณ , Todo ๋ฆฌ์ŠคํŠธ์™€ SPA๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๋Š” ์‹ค์Šต์„ ํ•˜๋ฉด์„œ์กฐ๊ธˆ์”ฉ React์˜ ์‹ค์ „ ํ™œ์šฉ ๋ฐฉ์‹์ด ๊ฐ ์žกํžˆ๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค.๐Ÿ“Œ ์˜ค๋Š˜ ๋ฐฐ์šด ์ฃผ์š” ๋‚ด์šฉ ์ •๋ฆฌ1. React์˜ ๋‹ค์–‘ํ•œ Hook ํ™œ์šฉ๋ฒ•useState์™€ useEffect๋Š” ์ด์ œ ์ต์ˆ™ํ•ด์กŒ๊ณ ,์˜ค๋Š˜์€ ์—ฌ๊ธฐ์— ๋”ํ•ด useReducer, useMemo, useCallback, useRef ๊ฐ™์€์‹ค์ „์—์„œ์˜ ์ƒํƒœ ๊ด€๋ฆฌ์™€ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•œ ๊ณ ๊ธ‰ Hook์„ ๋ฐฐ์› ๋‹ค.ํŠนํžˆ useReducer๋Š” ์ƒํƒœ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์ด๊ฑฐ๋‚˜ ๋ณต์žกํ•œ ํผ ๋กœ์ง์— ์œ ์šฉํ•˜๋‹ค๋Š” ๊ฑธ,์ง์ ‘ ์˜ˆ์ œ๋ฅผ ๋”ฐ๋ผ .. 2025. 4. 21.
๋ฐ˜์‘ํ˜•