Cursor
AI์ฝ๋ฉ๋๊ตฌ
์ฝ๋ํธ์ง๊ธฐ
GPT4
ํ๋ก ํธ์๋
๊ฐ๋ฐํด
AI์๊ฐ๋ฐ
๊ฐ๋ฐ์๊ธฐ๋ก
์ฝ๋ฉ ์ค โ์ด๊ฑฐ ์ด๋ป๊ฒ ์ง์ง?โ ์ถ์ ์๊ฐ,
Tab ํค๋ก Copilot์๊ฒ ๋์๋ฐ๊ฑฐ๋,
๋ธ๋ผ์ฐ์ ๋ฅผ ์ด๊ณ ChatGPT์๊ฒ ๋ฌผ์ด๋ณธ ์ , ๋ค๋ค ์์ ๊ฑฐ๋ค.
๊ทธ๋ฐ๋ฐ ์ด์ ๋ ์์ VSCode ๊ธฐ๋ฐ์ AI ์ฝ๋ ํธ์ง๊ธฐ ์์ฒด๊ฐ ๋์๋ค.
๋ฐ๋ก Cursor๋ผ๋ ์ด๋ฆ์ ๋๊ตฌ๋ค.
์ด๋ฒ ๊ธ์ Cursor๊ฐ ๋ญ๊ณ , ์ด๋ป๊ฒ ์๋ํ๋ฉฐ,
ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ์
์ฅ์์ ์ด๋ป๊ฒ ํ์ฉํ ์ ์์์ง ์ ๋ฆฌํ ๊ธ์ด๋ค.
GPT-4 Turbo ๊ธฐ๋ฐ์ AI ์ฝ๋ฉ IDE
VSCode๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด์ก๊ณ , GPT๋ฅผ ํ์ผ ์์คํ , ์ฝ๋ context-aware๋ก ์ฐ๊ฒฐ์ํจ ๋๊ตฌ๋ค.
๊ฐ๋จํ ๋งํ๋ฉดโฆ
Ask Cursor
, Edit with AI
, Explain Code
, Generate Test
๋ฑ์ ๋ช
๋ น์ด๋ก ๊ธฐ๋ฅ | ์ค๋ช |
---|---|
Ask | ์ ํํ ์ฝ๋ ๋๋ ์ ์ฒด ํ๋ก์ ํธ ๋งฅ๋ฝ์ ๋ฐํ์ผ๋ก GPT์๊ฒ ์ง๋ฌธ |
Edit | ํจ์๋ ์ปดํฌ๋ํธ๋ฅผ ๋๋๊ทธํ ํ ์์ฐ์ด๋ก ์์ ์ง์ |
Explain | ์ดํด ์ ๋๋ ์ฝ๋ ๋ธ๋ญ์ ์ ํ โ GPT๊ฐ ๋ถ์ ์ค๋ช |
Autocomplete | ์ผ๋ฐ์ ์ธ Copilot์ฒ๋ผ Tab ์๋์์ฑ ๊ฐ๋ฅ |
Generate Test | ํ ์คํธ ์ฝ๋ ์๋ ์์ฑ (Jest, Vitest ๋ฑ) |
Refactor | ์์ฐ์ด๋ก โ์ด๊ฑฐ ๋ฆฌํฉํฐ๋ง ํด์คโ ์์ฒญ ๊ฐ๋ฅ |
Commit Message | ์ปค๋ฐ ๋ฉ์์ง๋ ์๋ ์์ฑํด์ค (๐ฅ ์ง์ง ์ค์ฉ์ ์) |
useEffect
์ดํด ์ ๋ ๋ โ Explain
useEffect(() => {
const id = setInterval(() => {
console.log('polling...');
}, 5000);
return () => clearInterval(id);
}, []);
โ์ด ์ฝ๋๊ฐ ์ด๋ค ๊ตฌ์กฐ๋ก ๋์ํ๋์ง ์ค๋ช ํด์คโ
โ Cursor๊ฐ ํ์ด๋ฐ, ์๋, ํด๋ฆฐ์ ์ฒ๋ฆฌ๊น์ง ๊ตฌ์ฒด์ ์ผ๋ก ์ค๋ช ํด์ค
<Button disabled={isLoading || isError} />
โ์ด ๋ฒํผ ์ปดํฌ๋ํธ์์ ๋ก๋ฉ ์ํ์ ์ค๋ฅ ์ํ๋ฅผ ๋ถ๋ฆฌํด์ ๊ด๋ฆฌํ๊ฒ ๋ฆฌํฉํฐ๋งํด์คโ
โ ๋ฒํผ ๋ถ๋ฆฌํ๊ฑฐ๋, ์ํ ํฌํผ ํจ์๋ก ๋ถํดํ๋ ์ฝ๋ ์ ์
โZustand๋ก ์์ฑ๋ ์ด store๋ฅผ Redux Toolkit์ผ๋ก ๋ฐ๊ฟ์คโ
โ ์ง์ง ์ํ ์ ์ฅ ๊ตฌ์กฐ, ์ก์ ๊ตฌ์กฐ๊น์ง ๋ฐ๊ฟ์ค
โ์ด ํจ์์ ๋ํ ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํด์ค (Vitest ๊ธฐ๋ฐ์ผ๋ก)โ
โ ํ ์คํธ ์ฝ๋ + describe / it ๊ตฌ๋ฌธ ํฌํจ์ผ๋ก ์์ฑ๋จ
์ฒ์์ ๊ทธ๋ฅ โGPT ๋ถ์ VSCode๊ฒ ์งโ ์๊ฐํ๋๋ฐ
์ค์ ๋ก ์จ๋ณด๋ฉด ์ฝ๋์ ์ฐ๊ฒฐ๋ ๋งฅ๋ฝ ๊ธฐ๋ฐ ์ง๋ฌธ/์์ ์ด ๊ฐ๋ฅํ ์ ์ด ์ง์ง ๊ฐ๋ ฅํ๋ค.
ํนํ Context-Aware Prompting ๋๋ถ์,
ํ์ผ ์ ์ฒด๋ฅผ ์ดํดํ๊ณ ๋ฆฌํฉํฐ๋ง ํด์ฃผ๋ ๋ฅ๋ ฅ์ ChatGPT ๋จ๋
๋ณด๋ค ํจ์ฌ ์์ฐ์ค๋ฝ๋ค.
์ด์ ๋ ์ฝ๋ฉ ๋์ค, ๊ณ ๋ฏผ๋๋ฉด Ctrl+K๋ฅผ ๋๋ฌ ๋ฐ๋ก Cursor๋ก ๋ฌผ์ด๋ณด๋ ์ต๊ด์ด ์๊ฒผ๋ค.
์ฝ๋ฉ์ ํ๋ฆ์ด ๋๊ธฐ์ง ์์์ ์ ๋ง ์ ์ฉํจ.
๐ค "Cursor๋ ๋จ์ํ ์ฝํ์ผ๋ฟ์ด ์๋๋ผ, ์ฝ๋์ ํจ๊ป ๊ณ ๋ฏผํ๋ AI ๋๋ฃ๋ค."