์ฝ˜ํ…์ธ  ๋Œ€ํ‘œ ์ด๋ฏธ์ง€ - ๐Ÿš€ ์›น ๊ฐœ๋ฐœ ๋„๊ตฌ์™€ VS Code ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ ํญ๋ฐœ์‹œํ‚ค๊ธฐ

๐Ÿš€ ์›น ๊ฐœ๋ฐœ ๋„๊ตฌ์™€ VS Code ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ ํญ๋ฐœ์‹œํ‚ค๊ธฐ

ํ˜„๋Œ€ ์›น ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ•„์ˆ˜ ๋„๊ตฌ์™€ ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ ์™„๋ฒฝ ๊ฐ€์ด๋“œ

๐Ÿ’ฌ ์นœ๊ตฌ์•ผ, ์†”์งํžˆ ๋งํ•ด๋ณผ๊ฒŒ.

์ฝ”๋”ฉํ•˜๋‹ค๊ฐ€ "์•„ ์ด๊ฑฐ ์ž๋™์œผ๋กœ ์•ˆ ๋˜๋‚˜?" ํ•˜๊ณ  ์ƒ๊ฐํ•ด๋ณธ ์  ์žˆ์ง€? ๊ฐ™์€ ์ฝ”๋“œ ๋ฐ˜๋ณตํ•ด์„œ ์น˜๊ณ , ์˜คํƒ€ ์ฐพ๋А๋ผ 30๋ถ„ ๋‚ ๋ฆฌ๊ณ , ์ƒ‰์ƒ ์ฝ”๋“œ ์ฐพ์œผ๋ ค๊ณ  ๊ตฌ๊ธ€๋งํ•˜๊ณ ... ๐Ÿ˜ซ

๋‚˜๋„ ๊ทธ๋žฌ์–ด. ๊ทผ๋ฐ ์ œ๋Œ€๋กœ ๋œ ๋„๊ตฌ๋“ค์„ ์•Œ๊ฒŒ ๋˜๋ฉด์„œ ์™„์ „ํžˆ ๋‹ฌ๋ผ์กŒ๊ฑฐ๋“ . ์ง„์งœ๋กœ ๊ฐœ๋ฐœ ์†๋„๊ฐ€ 2~3๋ฐฐ๋Š” ๋นจ๋ผ์ง„ ๊ฒƒ ๊ฐ™์•„. ์˜ค๋Š˜์€ ๋‚ด๊ฐ€ ์‹ค์ œ๋กœ ์“ฐ๋ฉด์„œ "์™€, ์ด๊ฑฐ ์ง„์งœ ๋Œ€๋ฐ•์ด๋‹ค" ์‹ถ์—ˆ๋˜ ๊ฒƒ๋“ค๋งŒ ์ถ”๋ ค์„œ ์•Œ๋ ค์ค„๊ฒŒ! ๐ŸŽฏ

VS Code ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ์˜ ํ•ต์‹ฌ โšก ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ ์ƒ์‚ฐ์„ฑ 200% ํ–ฅ์ƒ ๐ŸŽจ ๊ฐœ๋ฐœ ๋„๊ตฌ ํšจ์œจ์ ์ธ ์›Œํฌํ”Œ๋กœ์šฐ ๐Ÿ› ๏ธ + =

๐ŸŽฏ ์™œ VS Code์ธ๊ฐ€? (๋‹ค๋ฅธ ์—๋””ํ„ฐ๋Š” ์•ˆ ๋˜๋‚˜์š”?)

๋จผ์ € ์ด ์งˆ๋ฌธ๋ถ€ํ„ฐ ๋‹ตํ•ด๋ณผ๊ฒŒ. Sublime Text, Atom, WebStorm ๋“ฑ ์ข‹์€ ์—๋””ํ„ฐ๋“ค์ด ๋งŽ์ž–์•„? ๊ทผ๋ฐ VS Code๊ฐ€ ์••๋„์ ์ธ ์ด์œ ๊ฐ€ ์žˆ์–ด.

2024๋…„ ๊ธฐ์ค€ ๊ฐœ๋ฐœ์ž ์„ค๋ฌธ์กฐ์‚ฌ ๊ฒฐ๊ณผ:
- ์ „ ์„ธ๊ณ„ ๊ฐœ๋ฐœ์ž์˜ 73.7%๊ฐ€ VS Code ์‚ฌ์šฉ
- 2์œ„์ธ Visual Studio๋Š” 31.4%
- 3์œ„ IntelliJ๋Š” 28.6%

์ด๊ฒŒ ๋‹จ์ˆœํžˆ "๋งŽ์ด ์“ฐ๋‹ˆ๊นŒ ์ข‹๋‹ค"๋Š” ๊ฒŒ ์•„๋‹ˆ์•ผ. ์‹ค์ œ๋กœ ์จ๋ณด๋ฉด ์•Œ๊ฒŒ ๋ผ. ๐ŸŽช

โœจ VS Code์˜ ์••๋„์ ์ธ ์žฅ์ ๋“ค

1. ์™„์ „ ๋ฌด๋ฃŒ + ์˜คํ”ˆ์†Œ์Šค ๐Ÿ’ฐ
WebStorm ๊ฐ™์€ ๊ฒฝ์šฐ ์—ฐ๊ฐ„ 13๋งŒ์› ์ •๋„ ๋‚ด์•ผ ํ•˜๋Š”๋ฐ, VS Code๋Š” ์™„์ „ ๊ณต์งœ์•ผ. Microsoft๊ฐ€ ์˜คํ”ˆ์†Œ์Šค๋กœ ๊ณต๊ฐœํ–ˆ๊ฑฐ๋“ . ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ๋“  ํšŒ์‚ฌ ์—…๋ฌด๋“  ๋ผ์ด์„ ์Šค ๊ฑฑ์ • ์ œ๋กœ!

2. ๋ฏธ์นœ ํ™•์žฅ์„ฑ ๐Ÿ”Œ
๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค์— ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ์ด 5๋งŒ ๊ฐœ ์ด์ƒ์ด์•ผ. ๋„ค๊ฐ€ ์ƒ์ƒํ•˜๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ๊ธฐ๋Šฅ์ด ์ด๋ฏธ ๋ˆ„๊ตฐ๊ฐ€ ๋งŒ๋“ค์–ด๋†จ์–ด. Python ๊ฐœ๋ฐœ? ํ™•์žฅ ์„ค์น˜. React ๊ฐœ๋ฐœ? ํ™•์žฅ ์„ค์น˜. ์‹ฌ์ง€์–ด ์ฝ”๋”ฉํ•˜๋ฉด์„œ ์Œ์•… ๋“ฃ๋Š” ํ™•์žฅ๋„ ์žˆ์–ด! ๐ŸŽต

3. ๊ฐ€๋ณ๊ณ  ๋น ๋ฆ„ โšก
Electron ๊ธฐ๋ฐ˜์ด๋ผ ๋ฌด๊ฒ์ง€ ์•Š์„๊นŒ ๊ฑฑ์ •ํ–ˆ๋Š”๋ฐ, ์ตœ์ ํ™”๊ฐ€ ์ •๋ง ์ž˜ ๋ผ์žˆ์–ด. ๋‚ด ๋…ธํŠธ๋ถ(i5, 8GB RAM)์—์„œ๋„ ํ”„๋กœ์ ํŠธ 10๊ฐœ ์—ด์–ด๋†”๋„ ๋ฒ„๋ฒ…์ž„ ์—†์–ด.

4. Git ํ†ตํ•ฉ ๐ŸŒฟ
Git ๋ช…๋ น์–ด ์™ธ์šธ ํ•„์š” ์—†์–ด. UI๋กœ ํด๋ฆญ ๋ช‡ ๋ฒˆ์ด๋ฉด ์ปค๋ฐ‹, ํ‘ธ์‹œ, ํ’€, ๋ธŒ๋žœ์น˜ ๊ด€๋ฆฌ ๋‹ค ๋ผ. ์ถฉ๋Œ ํ•ด๊ฒฐ๋„ ์‹œ๊ฐ์ ์œผ๋กœ ๋ณด์—ฌ์ค˜์„œ ์ดˆ๋ณด์ž๋„ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ์–ด.

5. ํฌ๋กœ์Šค ํ”Œ๋žซํผ ๐Ÿ’ป
Windows, Mac, Linux ๋‹ค ๋ผ. ํšŒ์‚ฌ์—์„œ Mac ์“ฐ๋‹ค๊ฐ€ ์ง‘์—์„œ Windows ์จ๋„ ์„ค์ • ๋™๊ธฐํ™”๋˜๋‹ˆ๊นŒ ํ™˜๊ฒฝ ์ฐจ์ด ๊ฑฑ์ • ์—†์–ด.

๐Ÿ’ก ์‹ค์ œ ๊ฒฝํ—˜๋‹ด: ๋‚˜๋Š” ์˜ˆ์ „์— Sublime Text ์“ฐ๋‹ค๊ฐ€ VS Code๋กœ ๊ฐˆ์•„ํƒ”๋Š”๋ฐ, ์ฒ˜์Œ์—” "๋ญ๊ฐ€ ๋‹ค๋ฅด๊ฒ ์–ด?" ํ–ˆ๊ฑฐ๋“ . ๊ทผ๋ฐ 2์ฃผ ์“ฐ๊ณ  ๋‚˜๋‹ˆ๊นŒ Sublime๋กœ ๋Œ์•„๊ฐˆ ์ˆ˜๊ฐ€ ์—†๋”๋ผ. ํŠนํžˆ IntelliSense(์ž๋™์™„์„ฑ) ๊ธฐ๋Šฅ์ด ์ง„์งœ ๋˜‘๋˜‘ํ•ด์„œ ์˜คํƒ€๊ฐ€ 90% ์ค„์—ˆ์–ด. ๐ŸŽฏ

๐Ÿ› ๏ธ ์›น ๊ฐœ๋ฐœ ํ•„์ˆ˜ ๋„๊ตฌ๋“ค (์ด๊ฒƒ๋งŒ์€ ๊ผญ!)

VS Code ์„ค์น˜ํ–ˆ๋‹ค๊ณ  ๋์ด ์•„๋‹ˆ์•ผ. ์ง„์งœ ํŒŒ์›Œ๋Š” ์—ฌ๊ธฐ์„œ๋ถ€ํ„ฐ ์‹œ์ž‘์ด๊ฑฐ๋“ ! ๋‚ด๊ฐ€ 3๋…„๊ฐ„ ์จ๋ณด๋ฉด์„œ "์ด๊ฑด ์ง„์งœ ํ•„์ˆ˜๋‹ค" ์‹ถ์€ ๊ฒƒ๋“ค๋งŒ ๊ณจ๋ž์–ด. ๐Ÿ˜Ž

๐Ÿ“ฆ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž: npm vs Yarn vs pnpm

๋„๊ตฌ ์†๋„ ๋””์Šคํฌ ์‚ฌ์šฉ ์ถ”์ฒœ ์ƒํ™ฉ
npm ๋ณดํ†ต ๋งŽ์Œ Node.js ๊ธฐ๋ณธ ์ œ๊ณต, ์ดˆ๋ณด์ž ์ถ”์ฒœ
Yarn ๋น ๋ฆ„ ๋ณดํ†ต ์ค‘๋Œ€ํ˜• ํ”„๋กœ์ ํŠธ, ์•ˆ์ •์„ฑ ์ค‘์š”
pnpm ๋งค์šฐ ๋น ๋ฆ„ ์ ์Œ ๋ชจ๋…ธ๋ ˆํฌ, ๋””์Šคํฌ ๊ณต๊ฐ„ ์ ˆ์•ฝ

๐ŸŽ“ ๋‚ด ์ถ”์ฒœ:

์ดˆ๋ณด์ž๋ผ๋ฉด? โ†’ npm ๊ทธ๋Œ€๋กœ ์จ. Node.js ์„ค์น˜ํ•˜๋ฉด ์ž๋™์œผ๋กœ ๊น”๋ฆฌ๋‹ˆ๊นŒ ๋ณ„๋„ ์„ค์น˜ ํ•„์š” ์—†์–ด.

ํ”„๋กœ์ ํŠธ ๋งŽ์ด ํ•˜๋Š” ์ค‘๊ธ‰์ž? โ†’ pnpm ์จ๋ด. ๊ฐ™์€ ํŒจํ‚ค์ง€๋ฅผ ์—ฌ๋Ÿฌ ํ”„๋กœ์ ํŠธ์—์„œ ์“ธ ๋•Œ ๋””์Šคํฌ ๊ณต๊ฐ„ ์—„์ฒญ ์•„๊ปด์ค˜. ๋‚ด ๊ฒฝ์šฐ 50GB โ†’ 15GB๋กœ ์ค„์—ˆ์–ด!

ํšŒ์‚ฌ ํ”„๋กœ์ ํŠธ? โ†’ ํŒ€์—์„œ ์“ฐ๋Š” ๊ฑฐ ๋”ฐ๋ผ๊ฐ€. ๋ณดํ†ต Yarn์ด ๋งŽ๊ธด ํ•ด.

๐ŸŒ ๋ธŒ๋ผ์šฐ์ € ๊ฐœ๋ฐœ์ž ๋„๊ตฌ ๋งˆ์Šคํ„ฐํ•˜๊ธฐ

ํฌ๋กฌ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ(F12) ์ œ๋Œ€๋กœ ์“ธ ์ค„ ์•Œ๋ฉด ๋””๋ฒ„๊น… ์‹œ๊ฐ„์ด 80% ๋‹จ์ถ•๋ผ. ์ง„์งœ์•ผ! ๐Ÿ”ฅ

๐Ÿ” Elements ํƒญ

์‹ค์‹œ๊ฐ„ HTML/CSS ์ˆ˜์ •
์›นํŽ˜์ด์ง€ ์š”์†Œ ํด๋ฆญํ•˜๋ฉด HTML ๊ตฌ์กฐ ๋ณด์—ฌ์ค˜. CSS๋„ ๋ฐ”๋กœ๋ฐ”๋กœ ์ˆ˜์ •ํ•ด์„œ ๊ฒฐ๊ณผ ํ™•์ธ ๊ฐ€๋Šฅ. ๋””์ž์ธ ๋ฏธ์„ธ์กฐ์ •ํ•  ๋•Œ ์™„์ „ ๊ฟ€!

๐Ÿ“Š Console ํƒญ

JavaScript ๋””๋ฒ„๊น…์˜ ํ•ต์‹ฌ
console.log() ์ฐ์–ด์„œ ๋ณ€์ˆ˜ ๊ฐ’ ํ™•์ธํ•˜๊ณ , ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ ๋ณด๊ณ , ์‹ฌ์ง€์–ด ์ฝ˜์†”์—์„œ ์ง์ ‘ ์ฝ”๋“œ ์‹คํ–‰๋„ ๊ฐ€๋Šฅ!

๐ŸŒ Network ํƒญ

API ํ˜ธ์ถœ ๋ชจ๋‹ˆํ„ฐ๋ง
Ajax ์š”์ฒญ ์‹คํŒจํ–ˆ์„ ๋•Œ ์—ฌ๊ธฐ ๋ณด๋ฉด ๋‹ต ๋‚˜์™€. ์š”์ฒญ/์‘๋‹ต ํ—ค๋”, ๋ฐ”๋”” ๋‹ค ๋ณด์—ฌ์ค˜. API ๊ฐœ๋ฐœํ•  ๋•Œ ํ•„์ˆ˜!

โšก Performance ํƒญ

์„ฑ๋Šฅ ์ตœ์ ํ™”
ํŽ˜์ด์ง€ ๋กœ๋”ฉ ๋А๋ฆฐ ์ด์œ  ์ฐพ์„ ๋•Œ ์จ. ์–ด๋–ค ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‹œ๊ฐ„ ์žก์•„๋จน๋Š”์ง€ ํ•œ๋ˆˆ์— ๋ณด์—ฌ์ค˜.

๐Ÿ’ช ์‹ค์ „ ํŒ:

๋ชจ๋ฐ”์ผ ๋ฐ˜์‘ํ˜• ํ…Œ์ŠคํŠธ โ†’ F12 ๋ˆ„๋ฅด๊ณ  Ctrl+Shift+M (Mac์€ Cmd+Shift+M). ๋‹ค์–‘ํ•œ ๊ธฐ๊ธฐ ํ™”๋ฉด ํฌ๊ธฐ๋กœ ๋ฐ”๋กœ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅ!

์ƒ‰์ƒ ์ถ”์ถœ โ†’ Elements ํƒญ์—์„œ ์ƒ‰์ƒ ์ฝ”๋“œ ํด๋ฆญํ•˜๋ฉด ์ปฌ๋Ÿฌ ํ”ผ์ปค ๋‚˜์™€. ์›น์‚ฌ์ดํŠธ ์ƒ‰์ƒ ๋”ฐ์˜ฌ ๋•Œ ๊ฐœ๊ฟ€!

์Šคํฌ๋ฆฐ์ƒท โ†’ Ctrl+Shift+P ๋ˆ„๋ฅด๊ณ  "screenshot" ๊ฒ€์ƒ‰. ์ „์ฒด ํŽ˜์ด์ง€ ์Šคํฌ๋ฆฐ์ƒท๋„ ์ฐ์–ด์ค˜! ๐Ÿ“ธ

๐ŸŽจ ๋””์ž์ธ ๋„๊ตฌ ํ†ตํ•ฉ

์›น ๊ฐœ๋ฐœ์ž๋ผ๊ณ  ๋””์ž์ธ ๋ชฐ๋ผ๋„ ๋œ๋‹ค? ์ฒœ๋งŒ์—! ์š”์ฆ˜์€ ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋””์ž์ธ ๊ฐ๊ฐ๋„ ์žˆ์–ด์•ผ ํ•ด. ๐Ÿ˜Š

Figma โ†’ ์ฝ”๋“œ ๋ณ€ํ™˜

๋””์ž์ด๋„ˆ๊ฐ€ Figma๋กœ ๋””์ž์ธ ๋„˜๊ฒจ์ฃผ๋ฉด, ๊ฑฐ๊ธฐ์„œ CSS ์ฝ”๋“œ ๋ฐ”๋กœ ๋ณต์‚ฌ ๊ฐ€๋Šฅํ•ด.

์‹ค์ œ ์›Œํฌํ”Œ๋กœ์šฐ:
1. Figma์—์„œ ์š”์†Œ ์„ ํƒ
2. ์˜ค๋ฅธ์ชฝ ํŒจ๋„์—์„œ "Code" ํƒญ ํด๋ฆญ
3. CSS ์ฝ”๋“œ ๋ณต์‚ฌ โ†’ VS Code์— ๋ถ™์—ฌ๋„ฃ๊ธฐ
4. ๋! ๐ŸŽ‰

ํฐํŠธ ํฌ๊ธฐ, ์ƒ‰์ƒ, ์—ฌ๋ฐฑ ๋‹ค ์ž๋™์œผ๋กœ ๊ณ„์‚ฐํ•ด์ค˜. ๋””์ž์ธ ์‹œ์•ˆ ๋ณด๊ณ  "์ด๊ฑฐ ๋ช‡ ํ”ฝ์…€์ด์ง€?" ๊ณ ๋ฏผํ•  ํ•„์š” ์—†์–ด!

์ƒ‰์ƒ ํŒ”๋ ˆํŠธ ๋„๊ตฌ

Coolors.co - ์ŠคํŽ˜์ด์Šค๋ฐ”๋งŒ ๋ˆ„๋ฅด๋ฉด ๋žœ๋ค ์ƒ‰์ƒ ์กฐํ•ฉ ์ƒ์„ฑ. ๋งˆ์Œ์— ๋“œ๋Š” ๊ฑฐ ๋‚˜์˜ฌ ๋•Œ๊นŒ์ง€ ๊ณ„์† ๋ˆŒ๋Ÿฌ! ๐ŸŽจ

Adobe Color - ์ƒ‰์ƒ ์ด๋ก  ๊ธฐ๋ฐ˜์œผ๋กœ ์กฐํ™”๋กœ์šด ํŒ”๋ ˆํŠธ ๋งŒ๋“ค์–ด์ค˜. ๋ณด์ƒ‰, ์œ ์‚ฌ์ƒ‰, 3์ƒ‰ ์กฐํ•ฉ ๋“ฑ ์ž๋™ ์ƒ์„ฑ.

๋‚ด๊ฐ€ ์“ฐ๋Š” ๋ฐฉ๋ฒ•: ๋ฉ”์ธ ์ƒ‰์ƒ ํ•˜๋‚˜ ์ •ํ•˜๋ฉด ๋‚˜๋จธ์ง€๋Š” ๋„๊ตฌ๊ฐ€ ์ถ”์ฒœํ•ด์ค˜. ๋””์ž์ธ ๊ฐ๊ฐ ์—†์–ด๋„ ๊ดœ์ฐฎ์€ ์ƒ‰ ์กฐํ•ฉ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด! ๐Ÿ˜Ž

๐Ÿš€ VS Code ํ•„์ˆ˜ ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ TOP 20

์ž, ์ด์ œ ์ง„์งœ ํ•ต์‹ฌ์ด์•ผ! ์ด ํ™•์žฅ๋“ค ์„ค์น˜ํ•˜๋ฉด ๊ฐœ๋ฐœ ์†๋„๊ฐ€ ์ง„์งœ 2๋ฐฐ๋Š” ๋นจ๋ผ์ ธ. ๋‚ด๊ฐ€ ์‹ค์ œ๋กœ ๋งค์ผ ์“ฐ๋Š” ๊ฒƒ๋“ค๋งŒ ์ถ”๋ ธ์–ด. ๐ŸŽฏ

VS Code ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ ์ƒํƒœ๊ณ„ VS Code ์ฝ”๋“œ ํ’ˆ์งˆ ์ƒ์‚ฐ์„ฑ ํ–ฅ์ƒ ๋””๋ฒ„๊น… ๋„๊ตฌ ํ…Œ๋งˆ ์ปค์Šคํ…€ 50,000+ ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ ์ƒํƒœ๊ณ„

๐Ÿ† ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ํ•„์ˆ˜ ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ

1๏ธโƒฃ ์ฝ”๋“œ ์ž‘์„ฑ & ์ž๋™์™„์„ฑ

๐Ÿค– GitHub Copilot AI ์œ ๋ฃŒ

AI๊ฐ€ ์ฝ”๋“œ๋ฅผ ์ž๋™์œผ๋กœ ์ž‘์„ฑํ•ด์ค˜. ์ฃผ์„ ์“ฐ๋ฉด ๊ทธ์— ๋งž๋Š” ์ฝ”๋“œ๋ฅผ ์ œ์•ˆํ•˜๊ณ , ํ•จ์ˆ˜ ์ด๋ฆ„๋งŒ ์“ฐ๋ฉด ๋‚ด์šฉ์„ ์ถ”์ธกํ•ด์„œ ์™„์„ฑํ•ด์ค˜.

์‹ค์ œ ์‚ฌ์šฉ ์˜ˆ์‹œ:

// ์ด๋ฉ”์ผ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ํ•จ์ˆ˜
function validateEmail(email) {
  // ์—ฌ๊ธฐ๊นŒ์ง€๋งŒ ์“ฐ๋ฉด Copilot์ด ๋‚˜๋จธ์ง€๋ฅผ ์ž๋™ ์™„์„ฑ!
  const regex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
  return regex.test(email);
}
๊ฐ€๊ฒฉ: ์›” $10 (ํ•™์ƒ์€ ๋ฌด๋ฃŒ!)
ํšจ๊ณผ: ์ฝ”๋”ฉ ์†๋„ 30~40% ํ–ฅ์ƒ
๋‹จ์ : ๊ฐ€๋” ์ด์ƒํ•œ ์ฝ”๋“œ ์ œ์•ˆํ•จ ๐Ÿ˜… ๋งน์‹ ํ•˜์ง€ ๋ง๊ณ  ๊ฒ€ํ†  ํ•„์ˆ˜!

๐Ÿ“ Tabnine AI ๋ฌด๋ฃŒ/์œ ๋ฃŒ

Copilot์˜ ๋ฌด๋ฃŒ ๋Œ€์•ˆ! ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์€ ๋ฌด๋ฃŒ๋กœ ์“ธ ์ˆ˜ ์žˆ์–ด. ๋‚ด ์ฝ”๋”ฉ ํŒจํ„ด์„ ํ•™์Šตํ•ด์„œ ์ ์  ๋˜‘๋˜‘ํ•ด์ ธ.

์žฅ์ :
- ๋ฌด๋ฃŒ ๋ฒ„์ „๋„ ๊ฝค ์“ธ๋งŒํ•จ
- ํ”„๋ผ์ด๋ฒ„์‹œ ์ค‘์‹œ (๋กœ์ปฌ์—์„œ ํ•™์Šต ๊ฐ€๋Šฅ)
- ๋‹ค์–‘ํ•œ ์–ธ์–ด ์ง€์›

์ถ”์ฒœ ๋Œ€์ƒ: Copilot ๊ตฌ๋… ๋ถ€๋‹ด์Šค๋Ÿฌ์šด ์‚ฌ๋žŒ, ๊ฐœ์ธ์ •๋ณด ๋ฏผ๊ฐํ•œ ํ”„๋กœ์ ํŠธ

๐ŸŽฏ IntelliCode ๋ฌด๋ฃŒ Microsoft

Microsoft๊ฐ€ ๋งŒ๋“  AI ์ž๋™์™„์„ฑ. GitHub์˜ ์ˆ˜๋ฐฑ๋งŒ ์˜คํ”ˆ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํ•™์Šตํ–ˆ์–ด.

ํŠน์ง•:
- ์™„์ „ ๋ฌด๋ฃŒ
- VS Code์™€ ์™„๋ฒฝ ํ†ตํ•ฉ
- ๋งฅ๋ฝ์„ ์ดํ•ดํ•˜๋Š” ๋˜‘๋˜‘ํ•œ ์ž๋™์™„์„ฑ

์˜ˆ๋ฅผ ๋“ค์–ด array.map() ์“ธ ๋•Œ ๊ฐ€์žฅ ๋งŽ์ด ์“ฐ๋Š” ํŒจํ„ด์„ ์šฐ์„  ์ œ์•ˆํ•ด์ค˜. โญ ํ‘œ์‹œ๋กœ ์ถ”์ฒœ ํ•ญ๋ชฉ ์•Œ๋ ค์คŒ!

2๏ธโƒฃ ์ฝ”๋“œ ํ’ˆ์งˆ & ๋ฆฐํŒ…

๐Ÿ” ESLint ํ•„์ˆ˜

JavaScript/TypeScript ์ฝ”๋“œ ํ’ˆ์งˆ ๊ฒ€์‚ฌ ๋„๊ตฌ. ์˜คํƒ€, ๋ฌธ๋ฒ• ์˜ค๋ฅ˜, ์•ˆ ์ข‹์€ ์ฝ”๋”ฉ ํŒจํ„ด ๋‹ค ์žก์•„์ค˜.

์„ค์ • ๋ฐฉ๋ฒ•:
1. ํ™•์žฅ ์„ค์น˜
2. ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์— .eslintrc.json ํŒŒ์ผ ์ƒ์„ฑ
3. ๊ทœ์น™ ์„ค์ • (Airbnb, Standard, Google ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ ์ค‘ ์„ ํƒ)

๋‚ด๊ฐ€ ์“ฐ๋Š” ์„ค์ •:

{
  "extends": "airbnb",
  "rules": {
    "no-console": "warn",  // console.log ๊ฒฝ๊ณ 
    "semi": ["error", "always"],  // ์„ธ๋ฏธ์ฝœ๋ก  ํ•„์ˆ˜
    "quotes": ["error", "single"]  // ์ž‘์€๋”ฐ์˜ดํ‘œ ์‚ฌ์šฉ
  }
}
์ €์žฅํ•  ๋•Œ๋งˆ๋‹ค ์ž๋™์œผ๋กœ ๊ฒ€์‚ฌํ•ด์„œ ๋นจ๊ฐ„ ์ค„๋กœ ํ‘œ์‹œํ•ด์ค˜. ํŒ€ ํ”„๋กœ์ ํŠธํ•  ๋•Œ ์ฝ”๋“œ ์Šคํƒ€์ผ ํ†ต์ผํ•˜๋Š” ๋ฐ ์™„์ „ ํ•„์ˆ˜! ๐ŸŽฏ

โœจ Prettier ํ•„์ˆ˜

์ฝ”๋“œ ํฌ๋งทํ„ฐ. ์ €์žฅํ•˜๋ฉด ์ž๋™์œผ๋กœ ์ฝ”๋“œ ์ •๋ฆฌํ•ด์ค˜. ๋“ค์—ฌ์“ฐ๊ธฐ, ์ค„๋ฐ”๊ฟˆ, ๋”ฐ์˜ดํ‘œ ์Šคํƒ€์ผ ๋“ฑ ์ผ๊ด€์„ฑ ์žˆ๊ฒŒ ๋งŒ๋“ค์–ด์คŒ.

ESLint vs Prettier ์ฐจ์ด:
- ESLint: ์ฝ”๋“œ ํ’ˆ์งˆ (๋ฒ„๊ทธ ๊ฐ€๋Šฅ์„ฑ ์žˆ๋Š” ์ฝ”๋“œ ์ฐพ๊ธฐ)
- Prettier: ์ฝ”๋“œ ์Šคํƒ€์ผ (๋ณด๊ธฐ ์ข‹๊ฒŒ ์ •๋ฆฌ)

๊ฟ€ํŒ: ๋‘˜์ด ๊ฐ™์ด ์“ฐ๋ฉด ์‹œ๋„ˆ์ง€ ๋Œ€๋ฐ•! ESLint๋กœ ์˜ค๋ฅ˜ ์žก๊ณ , Prettier๋กœ ์ž๋™ ์ •๋ฆฌ. ์„ค์ • ํ•œ ๋ฒˆ ํ•ด๋†“์œผ๋ฉด ์ฝ”๋“œ ์Šคํƒ€์ผ ๊ณ ๋ฏผ ๋! ๐Ÿ˜Ž

์„ค์ •:
settings.json์— ์ถ”๊ฐ€:

{
  "editor.formatOnSave": true,
  "editor.defaultFormatter": "esbenp.prettier-vscode"
}
์ด์ œ Ctrl+S๋งŒ ๋ˆ„๋ฅด๋ฉด ์ž๋™์œผ๋กœ ์ฝ”๋“œ ์ •๋ฆฌ! ๐ŸŽ‰

3๏ธโƒฃ Git & ๋ฒ„์ „ ๊ด€๋ฆฌ

๐ŸŒฟ GitLens ๋ฌด๋ฃŒ ๊ฐ•์ถ”

Git์„ ์ŠˆํผํŒŒ์›Œ๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š” ํ™•์žฅ! ๊ฐ ์ค„๋งˆ๋‹ค ๋ˆ„๊ฐ€, ์–ธ์ œ, ์™œ ์ˆ˜์ •ํ–ˆ๋Š”์ง€ ๋ณด์—ฌ์ค˜.

์ฃผ์š” ๊ธฐ๋Šฅ:
- Blame Annotations: ์ฝ”๋“œ ๊ฐ ์ค„์— ์ปค๋ฐ‹ ์ •๋ณด ํ‘œ์‹œ
- File History: ํŒŒ์ผ ๋ณ€๊ฒฝ ์ด๋ ฅ ์‹œ๊ฐํ™”
- Compare: ๋ธŒ๋žœ์น˜, ์ปค๋ฐ‹ ๊ฐ„ ๋น„๊ต
- Search: ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€๋กœ ๊ฒ€์ƒ‰

์‹ค์ „ ํ™œ์šฉ:
๋ฒ„๊ทธ ๋ฐœ๊ฒฌํ–ˆ์„ ๋•Œ โ†’ GitLens๋กœ ํ•ด๋‹น ์ฝ”๋“œ ๋ˆ„๊ฐ€ ์ž‘์„ฑํ–ˆ๋Š”์ง€ ํ™•์ธ โ†’ ๊ทธ ์‚ฌ๋žŒํ•œํ…Œ ๋ฌผ์–ด๋ณด๊ธฐ! ํ˜ผ์ž ์‚ฝ์งˆ ์•ˆ ํ•ด๋„ ๋ผ! ๐Ÿ˜„

๐Ÿ”€ Git Graph ๋ฌด๋ฃŒ

Git ๋ธŒ๋žœ์น˜๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ๋ณด์—ฌ์ฃผ๋Š” ํ™•์žฅ. ๋ณต์žกํ•œ ๋ธŒ๋žœ์น˜ ๊ตฌ์กฐ๋„ ํ•œ๋ˆˆ์— ํŒŒ์•… ๊ฐ€๋Šฅ!

์™œ ํ•„์š”ํ•ด?
ํ„ฐ๋ฏธ๋„์—์„œ git log ๋ณด๋ฉด ๋จธ๋ฆฌ ์•„ํ”„์ž–์•„? ์ด๊ฑฐ ์“ฐ๋ฉด ๊ทธ๋ž˜ํ”„๋กœ ์˜ˆ์˜๊ฒŒ ๋ณด์—ฌ์ค˜. ์–ด๋–ค ๋ธŒ๋žœ์น˜๊ฐ€ ์–ด๋””์„œ ๊ฐˆ๋ผ์กŒ๋Š”์ง€, ๋จธ์ง€๋Š” ์–ธ์ œ ํ–ˆ๋Š”์ง€ ์ง๊ด€์ ์œผ๋กœ ์•Œ ์ˆ˜ ์žˆ์–ด! ๐ŸŒณ

4๏ธโƒฃ ์›น ๊ฐœ๋ฐœ ํŠนํ™”

๐ŸŽจ Live Server ํ•„์ˆ˜ ์ดˆ๋ณด์ž ๊ฐ•์ถ”

HTML ํŒŒ์ผ ์ˆ˜์ •ํ•˜๋ฉด ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ž๋™์œผ๋กœ ์ƒˆ๋กœ๊ณ ์นจ! ๊ฐœ๋ฐœ ์„œ๋ฒ„๋ฅผ ๋กœ์ปฌ์—์„œ ๋ฐ”๋กœ ๋„์›Œ์ค˜.

์‚ฌ์šฉ๋ฒ•:
1. HTML ํŒŒ์ผ ์šฐํด๋ฆญ
2. "Open with Live Server" ํด๋ฆญ
3. ๋ธŒ๋ผ์šฐ์ € ์ž๋™์œผ๋กœ ์—ด๋ฆผ
4. ์ฝ”๋“œ ์ˆ˜์ •ํ•˜๋ฉด ์‹ค์‹œ๊ฐ„ ๋ฐ˜์˜! โšก

๋‚ด ๊ฒฝํ—˜: ์˜ˆ์ „์—” ์ฝ”๋“œ ์ˆ˜์ •ํ•˜๊ณ  โ†’ ์ €์žฅํ•˜๊ณ  โ†’ ๋ธŒ๋ผ์šฐ์ € ๊ฐ€์„œ โ†’ F5 ๋ˆ„๋ฅด๊ณ ... ์ด ๊ณผ์ • ๋ฐ˜๋ณตํ–ˆ๋Š”๋ฐ, ์ด์ œ๋Š” ์ €์žฅ๋งŒ ํ•˜๋ฉด ๋! ์‹œ๊ฐ„ ์—„์ฒญ ์•„๊ปด! ๐Ÿš€

๐ŸŒˆ Auto Rename Tag ๋ฌด๋ฃŒ

HTML ํƒœ๊ทธ ํ•˜๋‚˜ ์ˆ˜์ •ํ•˜๋ฉด ์ง๊ฟ ํƒœ๊ทธ๋„ ์ž๋™์œผ๋กœ ์ˆ˜์ •!

์˜ˆ์‹œ:

<div>๋‚ด์šฉ</div>
์—ฌ๊ธฐ์„œ <div>๋ฅผ <section>์œผ๋กœ ๋ฐ”๊พธ๋ฉด ๋‹ซ๋Š” ํƒœ๊ทธ๋„ ์ž๋™์œผ๋กœ </section>์œผ๋กœ ๋ณ€๊ฒฝ! ๊ฐ„๋‹จํ•˜์ง€๋งŒ ์—„์ฒญ ํŽธํ•ด! ๐Ÿ˜Š

๐ŸŽฏ CSS Peek ๋ฌด๋ฃŒ

HTML์—์„œ ํด๋ž˜์Šค ์ด๋ฆ„ ํด๋ฆญํ•˜๋ฉด ํ•ด๋‹น CSS ์ •์˜๋กœ ๋ฐ”๋กœ ์ด๋™! ํŒŒ์ผ ์™”๋‹ค๊ฐ”๋‹ค ์•ˆ ํ•ด๋„ ๋ผ.

๊ธฐ๋Šฅ:
- Ctrl+ํด๋ฆญ: CSS ํŒŒ์ผ๋กœ ์ด๋™
- Hover: CSS ๋‚ด์šฉ ๋ฏธ๋ฆฌ๋ณด๊ธฐ
- ์ •์˜ ์ฐพ๊ธฐ: ํ•ด๋‹น ํด๋ž˜์Šค ์“ฐ๋Š” ๊ณณ ์ „๋ถ€ ์ฐพ๊ธฐ

๋Œ€ํ˜• ํ”„๋กœ์ ํŠธ์—์„œ CSS ํŒŒ์ผ ์—ฌ๋Ÿฌ ๊ฐœ์ผ ๋•Œ ์ง„์งœ ์œ ์šฉํ•ด! ๐Ÿ”

๐Ÿ–ผ๏ธ Image Preview ๋ฌด๋ฃŒ

์ฝ”๋“œ์—์„œ ์ด๋ฏธ์ง€ ๊ฒฝ๋กœ์— ๋งˆ์šฐ์Šค ์˜ฌ๋ฆฌ๋ฉด ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋ณด์—ฌ์ค˜! ์ด๋ฏธ์ง€ ํŒŒ์ผ ์ผ์ผ์ด ์—ด์–ด๋ณผ ํ•„์š” ์—†์–ด.

์ง€์› ํ˜•์‹: jpg, png, gif, svg, webp ๋“ฑ

<img src="./images/logo.png"> ์ด๋Ÿฐ ์ฝ”๋“œ์—์„œ ๊ฒฝ๋กœ์— ๋งˆ์šฐ์Šค๋งŒ ์˜ฌ๋ ค๋„ ์ด๋ฏธ์ง€ ํ™•์ธ ๊ฐ€๋Šฅ! ๐Ÿ‘€

5๏ธโƒฃ ์ƒ์‚ฐ์„ฑ ํญ๋ฐœ ๋„๊ตฌ๋“ค

โšก Path Intellisense ๋ฌด๋ฃŒ ํ•„์ˆ˜

ํŒŒ์ผ ๊ฒฝ๋กœ ์ž๋™์™„์„ฑ! ๋” ์ด์ƒ ๊ฒฝ๋กœ ์˜คํƒ€๋กœ ๊ณ ์ƒํ•˜์ง€ ๋งˆ!

์ž‘๋™ ๋ฐฉ์‹:
import Header from './components/' ์—ฌ๊ธฐ๊นŒ์ง€ ์น˜๋ฉด components ํด๋” ์•ˆ์˜ ํŒŒ์ผ ๋ชฉ๋ก์ด ์ž๋™์œผ๋กœ ๋‚˜์™€. ํ™”์‚ดํ‘œ ํ‚ค๋กœ ์„ ํƒํ•˜๊ณ  ์—”ํ„ฐ! ๋! ๐ŸŽฏ

ํŠนํžˆ React, Vue ๊ฐ™์€ ํ”„๋ ˆ์ž„์›Œํฌ ์“ธ ๋•Œ import ๋ฌธ ์ž‘์„ฑํ•  ๋•Œ ์™„์ „ ๊ฟ€!

๐Ÿ“ฆ npm Intellisense ๋ฌด๋ฃŒ

npm ํŒจํ‚ค์ง€ importํ•  ๋•Œ ์ž๋™์™„์„ฑ ์ง€์›!

import React from 're' ์—ฌ๊ธฐ๊นŒ์ง€๋งŒ ์ณ๋„ 'react' ์ž๋™์™„์„ฑ ์ œ์•ˆ! ํŒจํ‚ค์ง€ ์ด๋ฆ„ ์ •ํ™•ํžˆ ๊ธฐ์–ต ์•ˆ ๋‚˜๋„ ๊ดœ์ฐฎ์•„! ๐Ÿ˜Ž

๐Ÿ”– Bookmarks ๋ฌด๋ฃŒ

์ฝ”๋“œ์— ๋ถ๋งˆํฌ ์„ค์ •ํ•ด์„œ ์ค‘์š”ํ•œ ๋ถ€๋ถ„ ๋น ๋ฅด๊ฒŒ ์ด๋™!

์‚ฌ์šฉ๋ฒ•:
- Ctrl+Alt+K: ๋ถ๋งˆํฌ ํ† ๊ธ€
- Ctrl+Alt+J: ์ด์ „ ๋ถ๋งˆํฌ๋กœ ์ด๋™
- Ctrl+Alt+L: ๋‹ค์Œ ๋ถ๋งˆํฌ๋กœ ์ด๋™

ํฐ ํŒŒ์ผ์—์„œ ์—ฌ๋Ÿฌ ๋ถ€๋ถ„ ์ˆ˜์ •ํ•  ๋•Œ ์™„์ „ ์œ ์šฉ! ์Šคํฌ๋กค ์‚ฝ์งˆ ์•ˆ ํ•ด๋„ ๋ผ! ๐Ÿ“

๐ŸŽจ Color Highlight ๋ฌด๋ฃŒ

CSS ์ƒ‰์ƒ ์ฝ”๋“œ์— ์‹ค์ œ ์ƒ‰์ƒ ํ‘œ์‹œ!

color: #667eea; ์ด๋ ‡๊ฒŒ ์“ฐ๋ฉด ์ฝ”๋“œ ๋ฐฐ๊ฒฝ์ด ์‹ค์ œ ๊ทธ ์ƒ‰์œผ๋กœ ํ‘œ์‹œ๋ผ. ์ƒ‰์ƒ ์ฝ”๋“œ๋งŒ ๋ด๋„ ์–ด๋–ค ์ƒ‰์ธ์ง€ ๋ฐ”๋กœ ์•Œ ์ˆ˜ ์žˆ์–ด! ๐ŸŒˆ

๐Ÿ“ Indent Rainbow ๋ฌด๋ฃŒ

๋“ค์—ฌ์“ฐ๊ธฐ ๋ ˆ๋ฒจ๋งˆ๋‹ค ๋‹ค๋ฅธ ์ƒ‰์œผ๋กœ ํ‘œ์‹œ! ์ฝ”๋“œ ๊ตฌ์กฐ ํŒŒ์•…์ด ํ›จ์”ฌ ์‰ฌ์›Œ์ ธ.

ํŠนํžˆ Python, YAML ๊ฐ™์ด ๋“ค์—ฌ์“ฐ๊ธฐ๊ฐ€ ์ค‘์š”ํ•œ ์–ธ์–ด ์“ธ ๋•Œ ์™„์ „ ํ•„์ˆ˜! ์ค‘์ฒฉ๋œ ์ฝ”๋“œ ๋ธ”๋ก ๊ตฌ๋ถ„ํ•˜๊ธฐ ์‰ฌ์›Œ! ๐ŸŽจ

6๏ธโƒฃ ํ…Œ๋งˆ & ์•„์ด์ฝ˜

๐ŸŒ™ One Dark Pro ๋ฌด๋ฃŒ ์ธ๊ธฐ

Atom ์—๋””ํ„ฐ์˜ ์œ ๋ช…ํ•œ ๋‹คํฌ ํ…Œ๋งˆ๋ฅผ VS Code๋กœ! ๋ˆˆ์ด ํŽธํ•˜๊ณ  ์ƒ‰์ƒ ๋Œ€๋น„๊ฐ€ ์ข‹์•„์„œ ์ฝ”๋“œ ๊ฐ€๋…์„ฑ ์ตœ๊ณ !

๋‹ค์šด๋กœ๋“œ: 500๋งŒ+ (๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” ํ…Œ๋งˆ ์ค‘ ํ•˜๋‚˜)
ํŠน์ง•: ๋ถ€๋“œ๋Ÿฌ์šด ์ƒ‰์ƒ, ๋ˆˆ์˜ ํ”ผ๋กœ ์ตœ์†Œํ™”

๐ŸŽจ Material Icon Theme ๋ฌด๋ฃŒ

ํŒŒ์ผ ํƒ€์ž…๋ณ„๋กœ ์˜ˆ์œ ์•„์ด์ฝ˜ ํ‘œ์‹œ! ํŒŒ์ผ ์ฐพ๊ธฐ๊ฐ€ ํ›จ์”ฌ ์‰ฌ์›Œ์ ธ.

์ง€์› ํŒŒ์ผ:
- .js โ†’ JavaScript ์•„์ด์ฝ˜
- .css โ†’ CSS ์•„์ด์ฝ˜
- .html โ†’ HTML ์•„์ด์ฝ˜
- .json โ†’ JSON ์•„์ด์ฝ˜
- ๋“ฑ๋“ฑ ์ˆ˜๋ฐฑ ๊ฐ€์ง€ ํŒŒ์ผ ํƒ€์ž… ์ง€์›!

ํด๋”๋„ ํƒ€์ž…๋ณ„๋กœ ๋‹ค๋ฅธ ์•„์ด์ฝ˜! components ํด๋”๋Š” ์ปดํฌ๋„ŒํŠธ ์•„์ด์ฝ˜, styles ํด๋”๋Š” ํŽ˜์ธํŠธ ์•„์ด์ฝ˜ ์ด๋Ÿฐ ์‹! ๐Ÿ‘€

7๏ธโƒฃ ํ”„๋ ˆ์ž„์›Œํฌ๋ณ„ ํ•„์ˆ˜ ํ™•์žฅ

โš›๏ธ React

ES7+ React/Redux/React-Native snippets

React ์ฝ”๋“œ ์Šค๋‹ˆํŽซ ๋ชจ์Œ!

rafce ์น˜๊ณ  ํƒญ โ†’ ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ ์ž๋™ ์ƒ์„ฑ!
useState ์น˜๊ณ  ํƒญ โ†’ useState ํ›… ์ž๋™ ์™„์„ฑ!

๐Ÿ’š Vue

Vetur

Vue ๊ฐœ๋ฐœ ํ•„์ˆ˜ ํ™•์žฅ!

- ๋ฌธ๋ฒ• ํ•˜์ด๋ผ์ดํŒ…
- ์ž๋™์™„์„ฑ
- ๋ฆฐํŒ…
- ํฌ๋งทํŒ…
๋ชจ๋‘ ์ง€์›!

๐Ÿ…ฐ๏ธ Angular

Angular Language Service

Angular ๊ณต์‹ ํ™•์žฅ!

- ํ…œํ”Œ๋ฆฟ ์ž๋™์™„์„ฑ
- ์˜ค๋ฅ˜ ๊ฒ€์‚ฌ
- ์ •์˜๋กœ ์ด๋™
์™„๋ฒฝ ์ง€์›!

๐Ÿ”ท TypeScript

TypeScript Hero

import ๋ฌธ ์ž๋™ ์ •๋ฆฌ!

- ์‚ฌ์šฉ ์•ˆ ํ•˜๋Š” import ์‚ญ์ œ
- import ์ž๋™ ์ถ”๊ฐ€
- ์•ŒํŒŒ๋ฒณ ์ˆœ ์ •๋ ฌ

โš™๏ธ VS Code ์ƒ์‚ฐ์„ฑ ๊ทน๋Œ€ํ™” ์„ค์ •

ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ๋งŒ ์„ค์น˜ํ•œ๋‹ค๊ณ  ๋์ด ์•„๋‹ˆ์•ผ! ์„ค์ •์„ ์ œ๋Œ€๋กœ ํ•ด์•ผ ์ง„์งœ ํŒŒ์›Œ๋ฅผ ๋ฐœํœ˜ํ•ด. ๋‚ด๊ฐ€ 3๋…„๊ฐ„ ์ตœ์ ํ™”ํ•œ ์„ค์ • ๊ณต์œ ํ• ๊ฒŒ! ๐Ÿ”ง

๐ŸŽฏ settings.json ํ•„์ˆ˜ ์„ค์ •

settings.json ์—ฌ๋Š” ๋ฒ•:
Ctrl+Shift+P (Mac: Cmd+Shift+P) โ†’ "Preferences: Open Settings (JSON)" ๊ฒ€์ƒ‰ โ†’ ์—”ํ„ฐ!

๋‚ด๊ฐ€ ์“ฐ๋Š” ์ตœ์ ํ™” ์„ค์ • (๋ณต๋ถ™ ๊ฐ€๋Šฅ!)

{
  // ์—๋””ํ„ฐ ๊ธฐ๋ณธ ์„ค์ •
  "editor.fontSize": 14,
  "editor.fontFamily": "Fira Code, Consolas, monospace",
  "editor.fontLigatures": true,  // ์ฝ”๋“œ ๋ฆฌ๊ฐ€์ฒ˜ (์˜ˆ์œ ๊ธฐํ˜ธ)
  "editor.lineHeight": 22,
  "editor.tabSize": 2,
  "editor.wordWrap": "on",  // ์ž๋™ ์ค„๋ฐ”๊ฟˆ
  
  // ์ž๋™ ์ €์žฅ & ํฌ๋งทํŒ…
  "files.autoSave": "onFocusChange",  // ํฌ์ปค์Šค ์ด๋™์‹œ ์ž๋™ ์ €์žฅ
  "editor.formatOnSave": true,  // ์ €์žฅ์‹œ ์ž๋™ ํฌ๋งท
  "editor.formatOnPaste": true,  // ๋ถ™์—ฌ๋„ฃ๊ธฐ์‹œ ์ž๋™ ํฌ๋งท
  
  // ์ฝ”๋“œ ์ œ์•ˆ & ์ž๋™์™„์„ฑ
  "editor.suggestSelection": "first",
  "editor.quickSuggestions": {
    "strings": true  // ๋ฌธ์ž์—ด ์•ˆ์—์„œ๋„ ์ž๋™์™„์„ฑ
  },
  "editor.acceptSuggestionOnEnter": "smart",
  
  // ๋ฏธ๋‹ˆ๋งต & UI
  "editor.minimap.enabled": true,
  "editor.minimap.maxColumn": 80,
  "workbench.colorTheme": "One Dark Pro",
  "workbench.iconTheme": "material-icon-theme",
  
  // ํŒŒ์ผ ํƒ์ƒ‰๊ธฐ
  "explorer.confirmDelete": false,  // ์‚ญ์ œ ํ™•์ธ ์•ˆ ํ•จ
  "explorer.confirmDragAndDrop": false,  // ๋“œ๋ž˜๊ทธ ํ™•์ธ ์•ˆ ํ•จ
  
  // Git
  "git.autofetch": true,  // ์ž๋™์œผ๋กœ ์›๊ฒฉ ๋ณ€๊ฒฝ์‚ฌํ•ญ ๊ฐ€์ ธ์˜ค๊ธฐ
  "git.confirmSync": false,  // ๋™๊ธฐํ™” ํ™•์ธ ์•ˆ ํ•จ
  
  // ํ„ฐ๋ฏธ๋„
  "terminal.integrated.fontSize": 13,
  "terminal.integrated.fontFamily": "Fira Code",
  
  // ESLint & Prettier
  "eslint.validate": [
    "javascript",
    "javascriptreact",
    "typescript",
    "typescriptreact"
  ],
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": true  // ์ €์žฅ์‹œ ESLint ์ž๋™ ์ˆ˜์ •
  },
  
  // ํŒŒ์ผ ์—ฐ๊ฒฐ
  "files.associations": {
    "*.jsx": "javascriptreact",
    "*.tsx": "typescriptreact"
  },
  
  // ์„ฑ๋Šฅ ์ตœ์ ํ™”
  "files.exclude": {
    "**/node_modules": true,
    "**/.git": true,
    "**/dist": true,
    "**/build": true
  },
  "search.exclude": {
    "**/node_modules": true,
    "**/dist": true
  }
}

๐ŸŽ“ ์„ค์ • ์„ค๋ช…:

Fira Code ํฐํŠธ: ์ฝ”๋”ฉ ์ „์šฉ ํฐํŠธ! !=๋ฅผ โ‰ ๋กœ, =>๋ฅผ โ‡’๋กœ ์˜ˆ์˜๊ฒŒ ํ‘œ์‹œํ•ด์ค˜. ๋ฌด๋ฃŒ ๋‹ค์šด๋กœ๋“œ ๊ฐ€๋Šฅ!

์ž๋™ ์ €์žฅ: ๋‹ค๋ฅธ ์ฐฝ ํด๋ฆญํ•˜๋ฉด ์ž๋™ ์ €์žฅ! Ctrl+S ๋ˆ„๋ฅผ ํ•„์š” ์—†์–ด. ์Šต๊ด€ ๋“ค์ด๋ฉด ์™„์ „ ํŽธํ•ด!

ํŒŒ์ผ ์ œ์™ธ: node_modules ๊ฐ™์€ ํฐ ํด๋”๋Š” ๊ฒ€์ƒ‰์—์„œ ์ œ์™ธ! ๊ฒ€์ƒ‰ ์†๋„ ์—„์ฒญ ๋นจ๋ผ์ ธ! โšก

โŒจ๏ธ ํ‚ค๋ณด๋“œ ๋‹จ์ถ•ํ‚ค ๋งˆ์Šคํ„ฐํ•˜๊ธฐ

๋งˆ์šฐ์Šค ์“ฐ๋Š” ์‹œ๊ฐ„ ์ค„์ด๋ฉด ๊ฐœ๋ฐœ ์†๋„ 2๋ฐฐ! ๋‚ด๊ฐ€ ๋งค์ผ ์“ฐ๋Š” ๋‹จ์ถ•ํ‚ค๋“ค ์•Œ๋ ค์ค„๊ฒŒ. ๐Ÿ˜Ž

๊ธฐ๋Šฅ Windows/Linux Mac ์„ค๋ช…
๋ช…๋ น ํŒ”๋ ˆํŠธ Ctrl+Shift+P Cmd+Shift+P ๋ชจ๋“  ๋ช…๋ น์–ด ๊ฒ€์ƒ‰
ํŒŒ์ผ ๋น ๋ฅธ ์—ด๊ธฐ Ctrl+P Cmd+P ํŒŒ์ผ๋ช…์œผ๋กœ ๊ฒ€์ƒ‰
๋ฉ€ํ‹ฐ ์ปค์„œ Alt+ํด๋ฆญ Option+ํด๋ฆญ ์—ฌ๋Ÿฌ ๊ณณ ๋™์‹œ ํŽธ์ง‘
์ค„ ๋ณต์‚ฌ Shift+Alt+โ†“ Shift+Option+โ†“ ํ˜„์žฌ ์ค„ ์•„๋ž˜๋กœ ๋ณต์‚ฌ
์ค„ ์ด๋™ Alt+โ†‘/โ†“ Option+โ†‘/โ†“ ์ค„ ์œ„์•„๋ž˜ ์ด๋™
์ค„ ์‚ญ์ œ Ctrl+Shift+K Cmd+Shift+K ํ˜„์žฌ ์ค„ ์‚ญ์ œ
์ฃผ์„ ํ† ๊ธ€ Ctrl+/ Cmd+/ ์ฃผ์„ ์ถ”๊ฐ€/์ œ๊ฑฐ
๋ธ”๋ก ์ฃผ์„ Shift+Alt+A Shift+Option+A /* */ ์ฃผ์„
์ „์ฒด ๊ฒ€์ƒ‰ Ctrl+Shift+F Cmd+Shift+F ํ”„๋กœ์ ํŠธ ์ „์ฒด ๊ฒ€์ƒ‰
์ „์ฒด ๋ฐ”๊พธ๊ธฐ Ctrl+Shift+H Cmd+Shift+H ํ”„๋กœ์ ํŠธ ์ „์ฒด ๋ฐ”๊พธ๊ธฐ
์ •์˜๋กœ ์ด๋™ F12 F12 ํ•จ์ˆ˜/๋ณ€์ˆ˜ ์ •์˜ ์œ„์น˜
์ฐธ์กฐ ์ฐพ๊ธฐ Shift+F12 Shift+F12 ์‚ฌ์šฉ๋˜๋Š” ๋ชจ๋“  ๊ณณ
์ด๋ฆ„ ๋ฐ”๊พธ๊ธฐ F2 F2 ๋ณ€์ˆ˜๋ช… ์ผ๊ด„ ๋ณ€๊ฒฝ
ํ„ฐ๋ฏธ๋„ ์—ด๊ธฐ Ctrl+` Cmd+` ํ†ตํ•ฉ ํ„ฐ๋ฏธ๋„
์‚ฌ์ด๋“œ๋ฐ” ํ† ๊ธ€ Ctrl+B Cmd+B ํŒŒ์ผ ํƒ์ƒ‰๊ธฐ ์ˆจ๊ธฐ๊ธฐ

๐Ÿ’ช ์‹ค์ „ ํ™œ์šฉ ํŒ:

๋ฉ€ํ‹ฐ ์ปค์„œ ํ™œ์šฉ:
๊ฐ™์€ ๋ณ€์ˆ˜๋ช… ์—ฌ๋Ÿฌ ๊ฐœ ๋™์‹œ ์ˆ˜์ •ํ•  ๋•Œ ์™„์ „ ๊ฟ€!
1. ๋ณ€์ˆ˜๋ช… ์„ ํƒ
2. Ctrl+D (Mac: Cmd+D) ์—ฌ๋Ÿฌ ๋ฒˆ ๋ˆŒ๋Ÿฌ์„œ ๊ฐ™์€ ๋‹จ์–ด ์„ ํƒ
3. ํ•œ ๋ฒˆ์— ์ˆ˜์ •! ๐ŸŽฏ

ํŒŒ์ผ ๋น ๋ฅธ ์—ด๊ธฐ:
Ctrl+P ๋ˆ„๋ฅด๊ณ  ํŒŒ์ผ๋ช… ์ผ๋ถ€๋งŒ ์ณ๋„ ์ฐพ์•„์ค˜!
์˜ˆ: "header" ์น˜๋ฉด Header.jsx, header.css ๋“ฑ ๋‹ค ๋‚˜์™€!

์ค„ ์ด๋™:
์ฝ”๋“œ ์ˆœ์„œ ๋ฐ”๊ฟ€ ๋•Œ ๋ณต์‚ฌ-๋ถ™์—ฌ๋„ฃ๊ธฐ ์•ˆ ํ•ด๋„ ๋ผ!
Alt+โ†‘/โ†“๋กœ ์ค„ ํ†ต์งธ๋กœ ์ด๋™! ์™„์ „ ํŽธํ•ด! ๐Ÿ˜Ž

๐ŸŽจ ์›Œํฌ์ŠคํŽ˜์ด์Šค ์„ค์ • (ํ”„๋กœ์ ํŠธ๋ณ„ ์„ค์ •)

ํ”„๋กœ์ ํŠธ๋งˆ๋‹ค ๋‹ค๋ฅธ ์„ค์ • ํ•„์š”ํ•  ๋•Œ ์žˆ์ž–์•„? ํšŒ์‚ฌ ํ”„๋กœ์ ํŠธ๋Š” ํƒญ 4์นธ, ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ๋Š” 2์นธ ์ด๋Ÿฐ ์‹์œผ๋กœ!

์›Œํฌ์ŠคํŽ˜์ด์Šค ์„ค์ • ๋ฐฉ๋ฒ•:
1. ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์— .vscode ํด๋” ์ƒ์„ฑ
2. ๊ทธ ์•ˆ์— settings.json ํŒŒ์ผ ์ƒ์„ฑ
3. ํ”„๋กœ์ ํŠธ๋ณ„ ์„ค์ • ์ž‘์„ฑ!

์˜ˆ์‹œ - React ํ”„๋กœ์ ํŠธ ์„ค์ •:

{
  "editor.tabSize": 2,
  "editor.defaultFormatter": "esbenp.prettier-vscode",
  "eslint.workingDirectories": ["./src"],
  "files.exclude": {
    "node_modules": true,
    "build": true
  }
}
์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ด ํ”„๋กœ์ ํŠธ ์—ด ๋•Œ๋งŒ ํ•ด๋‹น ์„ค์ • ์ ์šฉ! ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์—๋Š” ์˜ํ–ฅ ์—†์–ด! ๐ŸŽฏ

๐Ÿš€ ๊ณ ๊ธ‰ ์ƒ์‚ฐ์„ฑ ํŒ & ํŠธ๋ฆญ

์ด์ œ ์ง„์งœ ๊ณ ์ˆ˜ ๋˜๋Š” ๋ฒ• ์•Œ๋ ค์ค„๊ฒŒ! ์ด๊ฒƒ๋งŒ ์•Œ์•„๋„ ์ฃผ๋ณ€์—์„œ "์™€ ๋„ˆ VS Code ์ง„์งœ ์ž˜ ์“ด๋‹ค" ์†Œ๋ฆฌ ๋“ค์„๊ฑธ? ๐Ÿ˜Ž

๐ŸŽฏ ์Šค๋‹ˆํŽซ ๋งŒ๋“ค๊ธฐ (๋‚˜๋งŒ์˜ ์ฝ”๋“œ ํ…œํ”Œ๋ฆฟ)

์ž์ฃผ ์“ฐ๋Š” ์ฝ”๋“œ ํŒจํ„ด ์žˆ์œผ๋ฉด ์Šค๋‹ˆํŽซ์œผ๋กœ ๋งŒ๋“ค์–ด! ๋ช‡ ๊ธ€์ž๋งŒ ์น˜๋ฉด ์ „์ฒด ์ฝ”๋“œ ์ž๋™ ์™„์„ฑ!

์Šค๋‹ˆํŽซ ๋งŒ๋“œ๋Š” ๋ฒ•:
1. Ctrl+Shift+P โ†’ "Configure User Snippets"
2. ์–ธ์–ด ์„ ํƒ (์˜ˆ: JavaScript)
3. JSON ํ˜•์‹์œผ๋กœ ์Šค๋‹ˆํŽซ ์ž‘์„ฑ

์˜ˆ์‹œ - React ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ ์Šค๋‹ˆํŽซ:

{
  "React Functional Component": {
    "prefix": "rfc",
    "body": [
      "import React from 'react';",
      "",
      "const ${1:ComponentName} = () => {",
      "  return (",
      "    <div>",
      "      $0",
      "    </div>",
      "  );",
      "};",
      "",
      "export default ${1:ComponentName};"
    ],
    "description": "React ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ ํ…œํ”Œ๋ฆฟ"
  }
}
์ด์ œ rfc ์น˜๊ณ  ํƒญ ๋ˆ„๋ฅด๋ฉด ์ „์ฒด ์ปดํฌ๋„ŒํŠธ ๊ตฌ์กฐ ์ž๋™ ์ƒ์„ฑ! ์ปดํฌ๋„ŒํŠธ ์ด๋ฆ„๋งŒ ๋ฐ”๊พธ๋ฉด ๋! ๐ŸŽ‰

${1:ComponentName}: ์ฒซ ๋ฒˆ์งธ ํƒญ ์œ„์น˜, ๊ธฐ๋ณธ๊ฐ’์€ ComponentName
$0: ์ตœ์ข… ์ปค์„œ ์œ„์น˜

๋‚ด๊ฐ€ ๋งŒ๋“  ์œ ์šฉํ•œ ์Šค๋‹ˆํŽซ๋“ค:
- cl โ†’ console.log()
- imp โ†’ import ๋ฌธ
- afe โ†’ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜
- trycatch โ†’ try-catch ๋ธ”๋ก

์Šค๋‹ˆํŽซ ํ•œ ๋ฒˆ ๋งŒ๋“ค์–ด๋†“์œผ๋ฉด ํ‰์ƒ ์จ๋จน์–ด! ์‹œ๊ฐ„ ์—„์ฒญ ์•„๊ปด! โฐ

๐Ÿ” ์ •๊ทœํ‘œํ˜„์‹ ๊ฒ€์ƒ‰ & ๋ฐ”๊พธ๊ธฐ

๋Œ€๋Ÿ‰์˜ ์ฝ”๋“œ ์ˆ˜์ •ํ•  ๋•Œ ์ •๊ทœํ‘œํ˜„์‹ ์“ฐ๋ฉด ์™„์ „ ์‹ ์„ธ๊ณ„!

์‚ฌ์šฉ๋ฒ•:
1. Ctrl+H (๋ฐ”๊พธ๊ธฐ ์ฐฝ ์—ด๊ธฐ)
2. ์ •๊ทœํ‘œํ˜„์‹ ๋ฒ„ํŠผ ํด๋ฆญ (.*)
3. ํŒจํ„ด ์ž…๋ ฅ!

์‹ค์ „ ์˜ˆ์‹œ:

์˜ˆ์‹œ 1: ๋ชจ๋“  console.log ์ œ๊ฑฐ
์ฐพ๊ธฐ: console\.log\(.*\);
๋ฐ”๊พธ๊ธฐ: (๋น„์›Œ๋‘๊ธฐ)
โ†’ ๋ชจ๋“  console.log ํ•œ ๋ฒˆ์— ์‚ญ์ œ! ๐Ÿ—‘๏ธ

์˜ˆ์‹œ 2: ํด๋ž˜์Šค๋ช… ์ผ๊ด„ ๋ณ€๊ฒฝ
์ฐพ๊ธฐ: class="btn-(\w+)"
๋ฐ”๊พธ๊ธฐ: class="button-$1"
โ†’ btn-primary โ†’ button-primary ์ž๋™ ๋ณ€ํ™˜!

์˜ˆ์‹œ 3: ๋‚ ์งœ ํ˜•์‹ ๋ณ€๊ฒฝ
์ฐพ๊ธฐ: (\d{4})-(\d{2})-(\d{2})
๋ฐ”๊พธ๊ธฐ: $3/$2/$1
โ†’ 2024-01-15 โ†’ 15/01/2024 ๋ณ€ํ™˜!

์ •๊ทœํ‘œํ˜„์‹ ์–ด๋ ต๋‹ค๊ณ ? ์ฒ˜์Œ์—” ๋‹ค๋“ค ๊ทธ๋ž˜. ๊ทผ๋ฐ ๋ช‡ ๋ฒˆ ์จ๋ณด๋ฉด ๊ธˆ๋ฐฉ ์ต์ˆ™ํ•ด์ ธ! ๐Ÿ’ช

๐ŸŽจ Emmet ๋งˆ์Šคํ„ฐํ•˜๊ธฐ

HTML/CSS ๋น ๋ฅด๊ฒŒ ์ž‘์„ฑํ•˜๋Š” ๋น„๋ฒ•! Emmet์€ VS Code์— ๊ธฐ๋ณธ ๋‚ด์žฅ๋ผ์žˆ์–ด.

HTML ์ž‘์„ฑ ์˜ˆ์‹œ:

1. ๊ธฐ๋ณธ ๊ตฌ์กฐ:
! ์น˜๊ณ  ํƒญ โ†’ HTML5 ๊ธฐ๋ณธ ๊ตฌ์กฐ ์ƒ์„ฑ!

2. ์ค‘์ฒฉ ๊ตฌ์กฐ:
div>ul>li*3 ์น˜๊ณ  ํƒญ โ†’

<div>
  <ul>
    <li></li>
    <li></li>
    <li></li>
  </ul>
</div>
3. ํด๋ž˜์Šค์™€ ID:
div.container#main โ†’
<div class="container" id="main"></div>

4. ํ˜•์ œ ์š”์†Œ:
header+main+footer โ†’
<header></header>
<main></main>
<footer></footer>
5. ํ…์ŠคํŠธ ํฌํ•จ:
a{ํด๋ฆญํ•˜์„ธ์š”} โ†’
<a href="">ํด๋ฆญํ•˜์„ธ์š”</a>

6. ๋ฒˆํ˜ธ ๋งค๊ธฐ๊ธฐ:
ul>li.item$*3 โ†’
<ul>
  <li class="item1"></li>
  <li class="item2"></li>
  <li class="item3"></li>
</ul>
CSS ์ž‘์„ฑ ์˜ˆ์‹œ:
m10 โ†’ margin: 10px;
p20 โ†’ padding: 20px;
w100p โ†’ width: 100%;
df โ†’ display: flex;

Emmet ์ต์ˆ™ํ•ด์ง€๋ฉด HTML ์ž‘์„ฑ ์†๋„ 5๋ฐฐ๋Š” ๋นจ๋ผ์ ธ! ์ง„์งœ์•ผ! ๐Ÿš€

๐Ÿ”„ ๋ฆฌํŒฉํ† ๋ง ๋„๊ตฌ ํ™œ์šฉ

VS Code์˜ ๋‚ด์žฅ ๋ฆฌํŒฉํ† ๋ง ๊ธฐ๋Šฅ ์ œ๋Œ€๋กœ ์“ฐ๋ฉด ์ฝ”๋“œ ์ •๋ฆฌ๊ฐ€ ์™„์ „ ์‰ฌ์›Œ์ ธ!

1. ๋ณ€์ˆ˜ ์ถ”์ถœ (Extract Variable)
๋ณต์žกํ•œ ํ‘œํ˜„์‹์„ ๋ณ€์ˆ˜๋กœ ๋ถ„๋ฆฌ!

// ์ „
return user.profile.settings.theme.color;
ํ‘œํ˜„์‹ ์„ ํƒ โ†’ ์šฐํด๋ฆญ โ†’ "Extract to constant" โ†’
// ํ›„
const themeColor = user.profile.settings.theme.color;
return themeColor;
2. ํ•จ์ˆ˜ ์ถ”์ถœ (Extract Function)
๋ฐ˜๋ณต๋˜๋Š” ์ฝ”๋“œ๋ฅผ ํ•จ์ˆ˜๋กœ!

์ฝ”๋“œ ๋ธ”๋ก ์„ ํƒ โ†’ ์šฐํด๋ฆญ โ†’ "Extract to function" โ†’ ํ•จ์ˆ˜๋ช… ์ž…๋ ฅ!

3. ์ด๋ฆ„ ๋ฐ”๊พธ๊ธฐ (Rename Symbol)
๋ณ€์ˆ˜/ํ•จ์ˆ˜๋ช… ๋ณ€๊ฒฝํ•  ๋•Œ F2 ๋ˆ„๋ฅด๋ฉด ์‚ฌ์šฉ๋˜๋Š” ๋ชจ๋“  ๊ณณ ํ•œ ๋ฒˆ์— ๋ณ€๊ฒฝ!

4. Import ์ •๋ฆฌ
Shift+Alt+O (Mac: Shift+Option+O) โ†’ ์‚ฌ์šฉ ์•ˆ ํ•˜๋Š” import ์ž๋™ ์‚ญ์ œ!

์ด๋Ÿฐ ๊ธฐ๋Šฅ๋“ค ์“ฐ๋ฉด ์ˆ˜๋™์œผ๋กœ ์ฐพ์•„์„œ ๋ฐ”๊ฟ€ ํ•„์š” ์—†์–ด! ์‹ค์ˆ˜๋„ ์ค„๊ณ  ์‹œ๊ฐ„๋„ ์•„๊ปด! ๐Ÿ˜Ž

๐ŸŽ“ ํ”„๋กœ์ ํŠธ ํƒ€์ž…๋ณ„ ์ถ”์ฒœ ํ™•์žฅ ์กฐํ•ฉ

ํ”„๋กœ์ ํŠธ ์ข…๋ฅ˜์— ๋”ฐ๋ผ ํ•„์š”ํ•œ ํ™•์žฅ์ด ๋‹ค๋ฅด์ž–์•„? ๊ฐ ์ƒํ™ฉ๋ณ„๋กœ ์ตœ์ ์˜ ์กฐํ•ฉ ์•Œ๋ ค์ค„๊ฒŒ! ๐ŸŽฏ

โš›๏ธ React ํ”„๋กœ์ ํŠธ

ํ•„์ˆ˜ ํ™•์žฅ ์„ธํŠธ:

1. ES7+ React/Redux/React-Native snippets - ์ฝ”๋“œ ์Šค๋‹ˆํŽซ
2. ESLint - ์ฝ”๋“œ ํ’ˆ์งˆ
3. Prettier - ์ฝ”๋“œ ํฌ๋งทํŒ…
4. Auto Import - import ์ž๋™ ์ถ”๊ฐ€
5. Bracket Pair Colorizer - ๊ด„ํ˜ธ ์ƒ‰์ƒ ๊ตฌ๋ถ„
6. GitLens - Git ํ†ตํ•ฉ
7. npm Intellisense - ํŒจํ‚ค์ง€ ์ž๋™์™„์„ฑ
8. Path Intellisense - ๊ฒฝ๋กœ ์ž๋™์™„์„ฑ

์„ ํƒ ํ™•์žฅ:
- React DevTools - ์ปดํฌ๋„ŒํŠธ ๋””๋ฒ„๊น…
- Redux DevTools - ์ƒํƒœ ๊ด€๋ฆฌ ๋””๋ฒ„๊น…
- Styled Components - CSS-in-JS ์ง€์›

์ถ”์ฒœ ์„ค์ •:

{
  "emmet.includeLanguages": {
    "javascript": "javascriptreact"
  },
  "emmet.triggerExpansionOnTab": true,
  "editor.formatOnSave": true,
  "eslint.validate": ["javascript", "javascriptreact"]
}

๐Ÿ’š Vue.js ํ”„๋กœ์ ํŠธ

ํ•„์ˆ˜ ํ™•์žฅ ์„ธํŠธ:

1. Vetur - Vue ๊ณต์‹ ํ™•์žฅ
2. Vue VSCode Snippets - Vue ์Šค๋‹ˆํŽซ
3. ESLint - ์ฝ”๋“œ ํ’ˆ์งˆ
4. Prettier - ์ฝ”๋“œ ํฌ๋งทํŒ…
5. Auto Close Tag - ํƒœ๊ทธ ์ž๋™ ๋‹ซ๊ธฐ
6. Auto Rename Tag - ํƒœ๊ทธ ์ž๋™ ์ˆ˜์ •

Vue 3 ์‚ฌ์šฉ์‹œ ์ถ”๊ฐ€:
- Volar - Vue 3 ์ตœ์ ํ™” ํ™•์žฅ (Vetur ๋Œ€์ฒด)

์ถ”์ฒœ ์„ค์ •:

{
  "vetur.validation.template": true,
  "vetur.format.defaultFormatter.html": "prettier",
  "vetur.format.defaultFormatter.js": "prettier-eslint"
}

๐Ÿ…ฐ๏ธ Angular ํ”„๋กœ์ ํŠธ

ํ•„์ˆ˜ ํ™•์žฅ ์„ธํŠธ:

1. Angular Language Service - Angular ๊ณต์‹
2. Angular Snippets - ์ฝ”๋“œ ์Šค๋‹ˆํŽซ
3. TSLint - TypeScript ๋ฆฐํŒ…
4. Prettier - ์ฝ”๋“œ ํฌ๋งทํŒ…
5. Path Intellisense - ๊ฒฝ๋กœ ์ž๋™์™„์„ฑ

Angular๋Š” TypeScript ๊ธฐ๋ฐ˜์ด๋ผ TS ๊ด€๋ จ ํ™•์žฅ๋„ ์ค‘์š”ํ•ด!

๐ŸŽจ ์ˆœ์ˆ˜ HTML/CSS/JS ํ”„๋กœ์ ํŠธ

ํ•„์ˆ˜ ํ™•์žฅ ์„ธํŠธ:

1. Live Server - ์‹ค์‹œ๊ฐ„ ๋ฏธ๋ฆฌ๋ณด๊ธฐ
2. HTML CSS Support - CSS ์ž๋™์™„์„ฑ
3. IntelliSense for CSS - CSS ํด๋ž˜์Šค ์ž๋™์™„์„ฑ
4. Auto Close Tag - ํƒœ๊ทธ ์ž๋™ ๋‹ซ๊ธฐ
5. Auto Rename Tag - ํƒœ๊ทธ ์ž๋™ ์ˆ˜์ •
6. Color Highlight - ์ƒ‰์ƒ ์‹œ๊ฐํ™”
7. Image Preview - ์ด๋ฏธ์ง€ ๋ฏธ๋ฆฌ๋ณด๊ธฐ

์ดˆ๋ณด์žํ•œํ…Œ ๊ฐ€์žฅ ์ถ”์ฒœํ•˜๋Š” ์กฐํ•ฉ! ์„ค์ • ๋ณต์žกํ•˜์ง€ ์•Š๊ณ  ๋ฐ”๋กœ ์“ธ ์ˆ˜ ์žˆ์–ด! ๐Ÿ˜Š

๐Ÿ”ท TypeScript ํ”„๋กœ์ ํŠธ

ํ•„์ˆ˜ ํ™•์žฅ ์„ธํŠธ:

1. TypeScript Hero - import ์ž๋™ ์ •๋ฆฌ
2. ESLint - ์ฝ”๋“œ ํ’ˆ์งˆ
3. Prettier - ์ฝ”๋“œ ํฌ๋งทํŒ…
4. Path Intellisense - ๊ฒฝ๋กœ ์ž๋™์™„์„ฑ
5. Error Lens - ์—๋Ÿฌ ์ธ๋ผ์ธ ํ‘œ์‹œ

์ถ”์ฒœ ์„ค์ •:

{
  "typescript.updateImportsOnFileMove.enabled": "always",
  "typescript.preferences.importModuleSpecifier": "relative",
  "typescript.suggest.autoImports": true
}
TypeScript๋Š” ํƒ€์ž… ์ฒดํฌ๊ฐ€ ์ค‘์š”ํ•˜๋‹ˆ๊นŒ ์—๋Ÿฌ ํ‘œ์‹œ ํ™•์žฅ ํ•„์ˆ˜! ๐ŸŽฏ

โš ๏ธ ํ”ํ•œ ์‹ค์ˆ˜ & ํ•ด๊ฒฐ๋ฒ•

VS Code ์“ฐ๋‹ค๊ฐ€ ๋‹ค๋“ค ํ•œ ๋ฒˆ์”ฉ ๊ฒช๋Š” ๋ฌธ์ œ๋“ค! ๋ฏธ๋ฆฌ ์•Œ์•„๋‘๋ฉด ์‚ฝ์งˆ ์•ˆ ํ•ด๋„ ๋ผ! ๐Ÿ˜…

๐Ÿ› ๋ฌธ์ œ 1: ํ™•์žฅ ๋„ˆ๋ฌด ๋งŽ์ด ์„ค์น˜ํ•ด์„œ ๋А๋ ค์ง

์ฆ์ƒ: VS Code ์‹คํ–‰์ด ๋А๋ ค์ง€๊ณ , ํŒŒ์ผ ์—ด ๋•Œ ๋ฒ„๋ฒ…์ž„

์›์ธ: ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ ๊ณผ๋‹ค ์„ค์น˜! ํŠนํžˆ ๋ฌด๊ฑฐ์šด ํ™•์žฅ๋“ค์ด ๋ฌธ์ œ.

ํ•ด๊ฒฐ๋ฒ•:
1. Ctrl+Shift+P โ†’ "Extensions: Show Running Extensions"
2. ํ™œ์„ฑํ™” ์‹œ๊ฐ„ ํ™•์ธ (Activation Time)
3. ๋А๋ฆฐ ํ™•์žฅ ๋น„ํ™œ์„ฑํ™” ๋˜๋Š” ์‚ญ์ œ

๋‚ด ๊ธฐ์ค€:
- ํ™œ์„ฑํ™” ์‹œ๊ฐ„ 500ms ์ด์ƒ โ†’ ์˜์‹ฌ
- 1000ms ์ด์ƒ โ†’ ์‚ญ์ œ ๊ณ ๋ ค

ํŒ: ์›Œํฌ์ŠคํŽ˜์ด์Šค๋ณ„๋กœ ํ•„์š”ํ•œ ํ™•์žฅ๋งŒ ํ™œ์„ฑํ™”! ์ „์—ญ์œผ๋กœ ๋‹ค ์ผœ๋†“์ง€ ๋งˆ! ๐ŸŽฏ

๐Ÿ› ๋ฌธ์ œ 2: ESLint/Prettier ์ถฉ๋Œ

์ฆ์ƒ: ์ €์žฅํ•˜๋ฉด ์ฝ”๋“œ๊ฐ€ ์™”๋‹ค๊ฐ”๋‹ค ๋ฐ”๋€œ. ESLint ์—๋Ÿฌ ๊ณ„์† ๋œธ.

์›์ธ: ESLint์™€ Prettier ๊ทœ์น™์ด ์ถฉ๋Œ!

ํ•ด๊ฒฐ๋ฒ•:
1. eslint-config-prettier ์„ค์น˜

npm install --save-dev eslint-config-prettier
2. .eslintrc.json์— ์ถ”๊ฐ€
{
  "extends": [
    "airbnb",
    "prettier"  // ๋งจ ๋งˆ์ง€๋ง‰์— ์ถ”๊ฐ€!
  ]
}
์ด๋Ÿฌ๋ฉด Prettier์™€ ์ถฉ๋Œํ•˜๋Š” ESLint ๊ทœ์น™ ์ž๋™์œผ๋กœ ๊บผ์ ธ! ๐Ÿ˜Š

๐Ÿ› ๋ฌธ์ œ 3: Git ์ธ์ฆ ๋ฌธ์ œ

์ฆ์ƒ: Push/Pull ํ•  ๋•Œ ๊ณ„์† ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ฌผ์–ด๋ด„

ํ•ด๊ฒฐ๋ฒ•:
1. Git Credential Manager ์„ค์น˜
2. ๋˜๋Š” SSH ํ‚ค ์‚ฌ์šฉ

SSH ํ‚ค ์„ค์ •:

# SSH ํ‚ค ์ƒ์„ฑ
ssh-keygen -t ed25519 -C "your_email@example.com"

# ๊ณต๊ฐœํ‚ค ๋ณต์‚ฌ
cat ~/.ssh/id_ed25519.pub

# GitHub ์„ค์ • โ†’ SSH Keys์— ์ถ”๊ฐ€
์ด์ œ ๋น„๋ฐ€๋ฒˆํ˜ธ ์•ˆ ๋ฌผ์–ด๋ด! ๐ŸŽ‰

๐Ÿ› ๋ฌธ์ œ 4: ์ž๋™์™„์„ฑ ์•ˆ ๋จ

์ฆ์ƒ: IntelliSense๊ฐ€ ์ž‘๋™ ์•ˆ ํ•จ

์›์ธ: ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๊ฐ€๋Šฅ

ํ•ด๊ฒฐ๋ฒ• ์ฒดํฌ๋ฆฌ์ŠคํŠธ:
1. jsconfig.json ๋˜๋Š” tsconfig.json ์žˆ๋Š”์ง€ ํ™•์ธ
2. node_modules ์„ค์น˜ ํ™•์ธ (npm install)
3. VS Code ์žฌ์‹œ์ž‘
4. ํ™•์žฅ ์ถฉ๋Œ ํ™•์ธ (๋‹ค๋ฅธ ํ™•์žฅ ๋น„ํ™œ์„ฑํ™” ํ…Œ์ŠคํŠธ)
5. ์บ์‹œ ์‚ญ์ œ: Ctrl+Shift+P โ†’ "Reload Window"

๋Œ€๋ถ€๋ถ„ ์žฌ์‹œ์ž‘ํ•˜๋ฉด ํ•ด๊ฒฐ๋ผ! ๐Ÿ˜…

๐Ÿ› ๋ฌธ์ œ 5: ํ„ฐ๋ฏธ๋„ ํ•œ๊ธ€ ๊นจ์ง

์ฆ์ƒ: ํ†ตํ•ฉ ํ„ฐ๋ฏธ๋„์—์„œ ํ•œ๊ธ€์ด ๊นจ์ ธ ๋ณด์ž„

ํ•ด๊ฒฐ๋ฒ• (Windows):

# PowerShell์—์„œ
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8

# ๋˜๋Š” settings.json์—
"terminal.integrated.shellArgs.windows": ["-NoExit", "-Command", "chcp 65001"]
ํ•ด๊ฒฐ๋ฒ• (Mac/Linux):
๋ณดํ†ต ๋ฌธ์ œ ์—†๋Š”๋ฐ, ์žˆ์œผ๋ฉด ~/.zshrc๋‚˜ ~/.bashrc์—
export LANG=ko_KR.UTF-8
์ถ”๊ฐ€!

๐ŸŒŸ ์žฌ๋Šฅ๋„ท์—์„œ ์›น ๊ฐœ๋ฐœ ๋ฐฐ์šฐ๊ธฐ

์—ฌ๊ธฐ๊นŒ์ง€ ์ฝ์—ˆ์œผ๋ฉด VS Code ๋งˆ์Šคํ„ฐ ๊ฑฐ์˜ ๋‹ค ๋œ ๊ฑฐ์•ผ! ๊ทผ๋ฐ ํ˜ผ์ž ๊ณต๋ถ€ํ•˜๊ธฐ ๋ง‰๋ง‰ํ•˜๋‹ค๋ฉด? ๐Ÿค”

์žฌ๋Šฅ๋„ท์—์„œ ์›น ๊ฐœ๋ฐœ ์ „๋ฌธ๊ฐ€๋“คํ•œํ…Œ ์ง์ ‘ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์–ด! ์ผ๋Œ€์ผ ๋ฉ˜ํ† ๋ง๋ถ€ํ„ฐ ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ ๋ฆฌ๋ทฐ๊นŒ์ง€ ๋‹ค์–‘ํ•œ ์„œ๋น„์Šค๊ฐ€ ์žˆ๊ฑฐ๋“ .

์žฌ๋Šฅ๋„ท ํ™œ์šฉ ํŒ:
- ์ดˆ๋ณด์ž: HTML/CSS/JavaScript ๊ธฐ์ดˆ ๊ฐ•์˜ ์ฐพ๊ธฐ
- ์ค‘๊ธ‰์ž: React, Vue ๊ฐ™์€ ํ”„๋ ˆ์ž„์›Œํฌ ๋ฉ˜ํ† ๋ง
- ๊ณ ๊ธ‰์ž: ํฌํŠธํด๋ฆฌ์˜ค ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๋ฐ›๊ธฐ

ํŠนํžˆ VS Code ์„ค์ •์ด๋‚˜ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์ถ• ๋ง‰๋ง‰ํ•  ๋•Œ, ์ „๋ฌธ๊ฐ€ํ•œํ…Œ 1์‹œ๊ฐ„๋งŒ ๋ฐฐ์›Œ๋„ ํ˜ผ์ž ๋ฉฐ์น  ์‚ฝ์งˆํ•œ ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ํšจ์œจ์ ์ด์•ผ! ๐Ÿ’ช

๋‚ด ๊ฒฝํ—˜์ƒ ์ข‹์€ ๋ฉ˜ํ†  ๋งŒ๋‚˜๋ฉด ๊ฐœ๋ฐœ ์‹ค๋ ฅ์ด ์ •๋ง ๋น ๋ฅด๊ฒŒ ๋Š˜์–ด. ํ˜ผ์ž ์ฑ… ๋ณด๊ณ  ์œ ํŠœ๋ธŒ ๋ณด๋Š” ๊ฒƒ๋„ ์ข‹์ง€๋งŒ, ์‹ค๋ฌด ๊ฒฝํ—˜ ์žˆ๋Š” ์‚ฌ๋žŒํ•œํ…Œ ์ง์ ‘ ํ”ผ๋“œ๋ฐฑ ๋ฐ›๋Š” ๊ฒŒ ์ตœ๊ณ ์•ผ! ๐ŸŽฏ

๐ŸŽฏ ๋งˆ๋ฌด๋ฆฌ: ์ƒ์‚ฐ์„ฑ ํ–ฅ์ƒ ๋กœ๋“œ๋งต

์ž, ์—ฌ๊ธฐ๊นŒ์ง€ ์—„์ฒญ ๋งŽ์€ ๋‚ด์šฉ ๋‹ค๋ค˜์ง€? ํ•œ ๋ฒˆ์— ๋‹ค ์ ์šฉํ•˜๋ ค๋ฉด ๋จธ๋ฆฌ ์•„ํ”Œ ๊ฑฐ์•ผ. ๋‹จ๊ณ„๋ณ„๋กœ ์ฒœ์ฒœํžˆ ์ตํ˜€๊ฐ€์ž! ๐Ÿ˜Š

์ƒ์‚ฐ์„ฑ ํ–ฅ์ƒ 4์ฃผ ๋กœ๋“œ๋งต 1์ฃผ์ฐจ ๊ธฐ๋ณธ ์„ค์ • ํ…Œ๋งˆ, ํฐํŠธ, ๋‹จ์ถ•ํ‚ค 2์ฃผ์ฐจ ํ•„์ˆ˜ ํ™•์žฅ ESLint, Prettier, GitLens 3์ฃผ์ฐจ ์ƒ์‚ฐ์„ฑ ๋„๊ตฌ ์Šค๋‹ˆํŽซ, Emmet, ๋ฆฌํŒฉํ† ๋ง 4์ฃผ์ฐจ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ ๋””๋ฒ„๊น…, ์›Œํฌ์ŠคํŽ˜์ด์Šค ์™„์„ฑ ๋‚˜๋งŒ์˜ ํ™˜๊ฒฝ ์ตœ์ ํ™” ์™„๋ฃŒ! ํ•ต์‹ฌ ํฌ์ธํŠธ ํ•œ ๋ฒˆ์— ๋‹ค ํ•˜๋ ค ํ•˜์ง€ ๋ง๊ธฐ ๋งค์ผ ์กฐ๊ธˆ์”ฉ ์ต์ˆ™ํ•ด์ง€๊ธฐ ํ•„์š”ํ•œ ๊ฒƒ๋ถ€ํ„ฐ ์šฐ์„ ์ˆœ์œ„๋กœ ๋‹จ์ถ•ํ‚ค๋Š” ๋ฐ˜๋ณต์ด ๋‹ต ํ™•์žฅ์€ ํ•„์š”ํ•œ ๊ฒƒ๋งŒ ์„ค์ •์€ ํ”„๋กœ์ ํŠธ๋ณ„๋กœ

๐Ÿ“… 4์ฃผ ์™„์„ฑ ํ”Œ๋žœ

1๏ธโƒฃ 1์ฃผ์ฐจ: ๊ธฐ๋ณธ ๋‹ค์ง€๊ธฐ

๋ชฉํ‘œ: VS Code ์ต์ˆ™ํ•ด์ง€๊ธฐ

โœ… ํ…Œ๋งˆ ์„ค์ • (One Dark Pro ์ถ”์ฒœ)
โœ… ํฐํŠธ ์„ค์ • (Fira Code ์ถ”์ฒœ)
โœ… ๊ธฐ๋ณธ ๋‹จ์ถ•ํ‚ค 5๊ฐœ ์™ธ์šฐ๊ธฐ
โœ… ํŒŒ์ผ ํƒ์ƒ‰๊ธฐ ์‚ฌ์šฉ๋ฒ•
โœ… ํ†ตํ•ฉ ํ„ฐ๋ฏธ๋„ ์‚ฌ์šฉ๋ฒ•

์‹œ๊ฐ„: ํ•˜๋ฃจ 30๋ถ„์”ฉ

2๏ธโƒฃ 2์ฃผ์ฐจ: ํ•„์ˆ˜ ํ™•์žฅ ์„ค์น˜

๋ชฉํ‘œ: ์ฝ”๋“œ ํ’ˆ์งˆ ํ–ฅ์ƒ

โœ… ESLint ์„ค์น˜ & ์„ค์ •
โœ… Prettier ์„ค์น˜ & ์„ค์ •
โœ… GitLens ์„ค์น˜
โœ… Live Server ์„ค์น˜
โœ… Auto Rename Tag ์„ค์น˜

์‹œ๊ฐ„: ํ•˜๋ฃจ 30๋ถ„์”ฉ

3๏ธโƒฃ 3์ฃผ์ฐจ: ์ƒ์‚ฐ์„ฑ ๋„๊ตฌ

๋ชฉํ‘œ: ์ž‘์—… ์†๋„ 2๋ฐฐ ํ–ฅ์ƒ

โœ… ์Šค๋‹ˆํŽซ 3๊ฐœ ๋งŒ๋“ค๊ธฐ
โœ… Emmet ๊ธฐ๋ณธ ๋ฌธ๋ฒ• ์ตํžˆ๊ธฐ
โœ… ๋ฉ€ํ‹ฐ ์ปค์„œ ํ™œ์šฉ๋ฒ•
โœ… ์ •๊ทœํ‘œํ˜„์‹ ๊ธฐ์ดˆ
โœ… ๋ฆฌํŒฉํ† ๋ง ๋„๊ตฌ ์‚ฌ์šฉ

์‹œ๊ฐ„: ํ•˜๋ฃจ 40๋ถ„์”ฉ

4๏ธโƒฃ 4์ฃผ์ฐจ: ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ

๋ชฉํ‘œ: ์ „๋ฌธ๊ฐ€ ๋˜๊ธฐ

โœ… ๋””๋ฒ„๊ฑฐ ์‚ฌ์šฉ๋ฒ•
โœ… ์›Œํฌ์ŠคํŽ˜์ด์Šค ์„ค์ •
โœ… ํƒœ์Šคํฌ ์ž๋™ํ™”
โœ… ๋‚˜๋งŒ์˜ ์„ค์ • ์™„์„ฑ
โœ… ํ”„๋กœ์ ํŠธ๋ณ„ ์ตœ์ ํ™”

์‹œ๊ฐ„: ํ•˜๋ฃจ 1์‹œ๊ฐ„์”ฉ

๐ŸŽ‰ 4์ฃผ ํ›„ ๋‹น์‹ ์˜ ๋ชจ์Šต:

โœจ ์ฝ”๋”ฉ ์†๋„ 2~3๋ฐฐ ํ–ฅ์ƒ
โœจ ์˜คํƒ€์™€ ๋ฒ„๊ทธ 80% ๊ฐ์†Œ
โœจ ์ฝ”๋“œ ํ’ˆ์งˆ ๋Œ€ํญ ๊ฐœ์„ 
โœจ Git ์‚ฌ์šฉ ๋Šฅ์ˆ™
โœจ ํŒ€ ํ”„๋กœ์ ํŠธ ํ˜‘์—… ์ˆ˜์›”
โœจ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์ž์œ ์ž์žฌ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•

์ง„์งœ์•ผ! ๋‚˜๋„ ์ด๋ ‡๊ฒŒ ํ•ด์„œ ์™„์ „ ๋‹ฌ๋ผ์กŒ์–ด! ๐Ÿ’ช

๐Ÿ’ก ๋งˆ์ง€๋ง‰ ์กฐ์–ธ

์™„๋ฒฝ์ฃผ์˜ ๋ฒ„๋ ค!

์ฒ˜์Œ๋ถ€ํ„ฐ ๋ชจ๋“  ๊ฑธ ์™„๋ฒฝํ•˜๊ฒŒ ์„ค์ •ํ•˜๋ ค๊ณ  ํ•˜์ง€ ๋งˆ. ๋‚˜๋„ ์ฒ˜์Œ์—” ์„ค์ •๋งŒ 2์ฃผ ๋™์•ˆ ๋งŒ์ง€์ž‘๊ฑฐ๋ ธ๋Š”๋ฐ, ๊ทธ๊ฒŒ ์‹œ๊ฐ„ ๋‚ญ๋น„๋”๋ผ๊ณ . ๐Ÿ˜…

์ผ๋‹จ ์‹œ์ž‘ํ•ด! ๊ธฐ๋ณธ ์„ค์ •์œผ๋กœ ์ฝ”๋”ฉํ•˜๋‹ค๊ฐ€ "์•„ ์ด๊ฑฐ ๋ถˆํŽธํ•˜๋„ค" ์‹ถ์„ ๋•Œ ํ•˜๋‚˜์”ฉ ๊ฐœ์„ ํ•ด๋‚˜๊ฐ€๋Š” ๊ฒŒ ํ›จ์”ฌ ํšจ์œจ์ ์ด์•ผ.

๋‚จ์˜ ์„ค์ • ๋งน์‹  ๊ธˆ์ง€! ๋‚ด๊ฐ€ ์ถ”์ฒœํ•œ ์„ค์ •๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์•ผ. ๋„ˆํ•œํ…Œ ์•ˆ ๋งž์„ ์ˆ˜ ์žˆ์–ด. ์ง์ ‘ ์จ๋ณด๊ณ  ๋„ค ์Šคํƒ€์ผ์— ๋งž๊ฒŒ ์กฐ์ •ํ•ด!

๊พธ์ค€ํ•จ์ด ๋‹ต! ํ•˜๋ฃจ์— ๋‹จ์ถ•ํ‚ค ํ•˜๋‚˜์”ฉ๋งŒ ์ตํ˜€๋„ ํ•œ ๋‹ฌ์ด๋ฉด 30๊ฐœ์•ผ. ๊ทธ๋Ÿผ ์ด๋ฏธ ๊ณ ์ˆ˜! ๐Ÿš€

๐ŸŽฌ ๊ฒฐ๋ก 

์™€... ์—ฌ๊ธฐ๊นŒ์ง€ ์ฝ์—ˆ๋‹ค๋ฉด ์ง„์งœ ๋Œ€๋‹จํ•ด! ๐Ÿ‘

VS Code์™€ ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ๋“ค์€ ๊ทธ๋ƒฅ ๋„๊ตฌ์•ผ. ์ค‘์š”ํ•œ ๊ฑด ์–ด๋–ป๊ฒŒ ํ™œ์šฉํ•˜๋А๋ƒ์ง€. ๋น„์‹ผ ๋„๊ตฌ ๋งŽ์ด ์‚ฐ๋‹ค๊ณ  ์š”๋ฆฌ๋ฅผ ์ž˜ํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ์ž–์•„? ๋งˆ์ฐฌ๊ฐ€์ง€์•ผ!

ํ•ต์‹ฌ ์ •๋ฆฌ:

๐ŸŽฏ VS Code๋Š” ๋ฌด๋ฃŒ์ง€๋งŒ ๊ฐ•๋ ฅํ•ด - ์ „ ์„ธ๊ณ„ ๊ฐœ๋ฐœ์ž์˜ 73%๊ฐ€ ์“ฐ๋Š” ๋ฐ๋Š” ์ด์œ ๊ฐ€ ์žˆ์–ด

โšก ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ์ด ์ง„์งœ ํŒŒ์›Œ - ํ•„์š”ํ•œ ๊ฒƒ๋งŒ ๊ณจ๋ผ์„œ ์„ค์น˜ํ•˜๋ฉด ์ƒ์‚ฐ์„ฑ ํญ๋ฐœ

๐Ÿ› ๏ธ ์„ค์ •์ด ์ค‘์š”ํ•ด - ํ•œ ๋ฒˆ ์ œ๋Œ€๋กœ ์„ค์ •ํ•ด๋†“์œผ๋ฉด ํ‰์ƒ ํŽธํ•ด

โŒจ๏ธ ๋‹จ์ถ•ํ‚ค๋Š” ํ•„์ˆ˜ - ๋งˆ์šฐ์Šค ์“ฐ๋Š” ์‹œ๊ฐ„ ์ค„์ด๋ฉด ๊ฐœ๋ฐœ ์†๋„ 2๋ฐฐ

๐Ÿ“š ๊พธ์ค€ํžˆ ๋ฐฐ์›Œ - VS Code๋Š” ๊ณ„์† ์—…๋ฐ์ดํŠธ๋ผ. ์ƒˆ ๊ธฐ๋Šฅ ๋‚˜์˜ค๋ฉด ๋ฐฐ์›Œ๋ด

๐Ÿค ์ปค๋ฎค๋‹ˆํ‹ฐ ํ™œ์šฉํ•ด - ๋ง‰ํžˆ๋ฉด ๋ฌผ์–ด๋ด. ์žฌ๋Šฅ๋„ท ๊ฐ™์€ ๊ณณ์—์„œ ์ „๋ฌธ๊ฐ€ ๋„์›€ ๋ฐ›๋Š” ๊ฒƒ๋„ ์ข‹์•„

์ด์ œ ๋„ˆ๋„ VS Code ๋งˆ์Šคํ„ฐ ๋  ์ค€๋น„ ๋๋‚ฌ์–ด! ์˜ค๋Š˜๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ์ ์šฉํ•ด๋ด. ํ•œ ๋‹ฌ ํ›„๋ฉด ์™„์ „ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ๋˜์–ด์žˆ์„ ๊ฑฐ์•ผ! ๐Ÿ˜Ž

ํ™”์ดํŒ…! ๐Ÿš€

๊ถ๊ธˆํ•œ ๊ฑฐ ์žˆ์œผ๋ฉด ๋Œ“๊ธ€ ๋‚จ๊ฒจ์ค˜. ๋‚ด๊ฐ€ ์•„๋Š” ์„ ์—์„œ ๋‹ค ์•Œ๋ ค์ค„๊ฒŒ! ๊ทธ๋ฆฌ๊ณ  ์ด ๊ธ€์ด ๋„์›€๋๋‹ค๋ฉด ์ฃผ๋ณ€ ๊ฐœ๋ฐœ์ž ์นœ๊ตฌ๋“คํ•œํ…Œ๋„ ๊ณต์œ ํ•ด์ค˜! ๋‹ค๊ฐ™์ด ์ž˜๋˜์ž! ๐Ÿ’ช

๐ŸŽ“ ๋” ๋ฐฐ์šฐ๊ณ  ์‹ถ๋‹ค๋ฉด?

์žฌ๋Šฅ๋„ท์—์„œ ์›น ๊ฐœ๋ฐœ ์ „๋ฌธ๊ฐ€๋“ค์˜ ๋ฉ˜ํ† ๋ง์„ ๋ฐ›์•„๋ณด์„ธ์š”!
์ผ๋Œ€์ผ ์ฝ”์นญ๋ถ€ํ„ฐ ํ”„๋กœ์ ํŠธ ๋ฆฌ๋ทฐ๊นŒ์ง€, ๋‹น์‹ ์˜ ์„ฑ์žฅ์„ ๋„์™€๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๐Ÿš€

๋Œ“๊ธ€ ์ž‘์„ฑ

์ด ๊ธ€์— ๋Œ€ํ•œ ์—ฌ๋Ÿฌ๋ถ„์˜ ์ƒ๊ฐ์„ ๋“ค๋ ค์ฃผ์„ธ์š”

๋Œ“๊ธ€ 0