====== ๐ป Cursor AI ๊ฐ๋ฐ ๋๊ตฌ ์์ ๊ฐ์ด๋ ======
Cursor๋ AI ๊ธฐ๋ฐ ์ฝ๋ฉ ์ด์์คํดํธ๋ก, ๊ฐ๋ฐ์์ ์์ฐ์ฑ์ ํ์ ์ ์ผ๋ก ํฅ์์ํค๋ ๋๊ตฌ์
๋๋ค. VS Code ๊ธฐ๋ฐ์ ๊ฐ๋ ฅํ AI ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
===== ๐ Cursor ์ฃผ์ ํน์ง ๋น๊ต =====
^ ๊ธฐ๋ฅ ^ Cursor ^ VS Code ^ GitHub Copilot ^
| **AI ์ฝ๋ ์์ฑ** | โญโญโญโญโญ | โญโญ | โญโญโญโญ |
| **์ค์๊ฐ ๋๋ฒ๊น
** | โญโญโญโญโญ | โญโญโญ | โญโญโญ |
| **์ฝ๋ ๋ฆฌํฉํ ๋ง** | โญโญโญโญโญ | โญโญ | โญโญโญโญ |
| **๋ฌธ์ํ** | โญโญโญโญ | โญโญโญ | โญโญโญ |
| **๋ฉํฐ ์ธ์ด ์ง์** | โญโญโญโญโญ | โญโญโญโญ | โญโญโญโญ |
| **์ปจํ
์คํธ ์ดํด** | โญโญโญโญโญ | โญโญ | โญโญโญ |
===== ๐ฏ ๋ชจ๋ธ๋ณ ์ฑ๋ฅ ๋น๊ต =====
^ ํ๊ฐ ํญ๋ชฉ ^ GPT-4o ^ Claude 3.5 ^ Gemini 2.0 ^
| **์ฝ๋ ์์ฑ ํ์ง** | โญโญโญโญโญ | โญโญโญโญ | โญโญโญโญ |
| **๋๋ฒ๊น
๋ฅ๋ ฅ** | โญโญโญโญโญ | โญโญโญโญโญ | โญโญโญโญ |
| **์๋ต ์๋** | โญโญโญโญ | โญโญโญโญ | โญโญโญโญโญ |
| **์ปจํ
์คํธ ์ดํด** | โญโญโญโญโญ | โญโญโญโญโญ | โญโญโญโญ |
| **๋น์ฉ ํจ์จ์ฑ** | โญโญโญ | โญโญโญโญ | โญโญโญโญโญ |
===== ๐ง ํต์ฌ ๊ธฐ๋ฅ =====
===== AI ์ฝ๋ ์์ฑ ====
**์ค์๊ฐ ์ฝ๋ ์์ฑ**
* ์์ฐ์ด ์ค๋ช
์ผ๋ก ์ฝ๋ ์๋ ์์ฑ
* ํ๋ก์ ํธ ์ปจํ
์คํธ๋ฅผ ๊ณ ๋ คํ ์ค๋งํธ ์ ์
* ํจ์, ํด๋์ค, ์ ์ฒด ์ ํ๋ฆฌ์ผ์ด์
์์ฑ
* ์ฃผ์๊ณผ ๋ฌธ์ํ ์๋ ํฌํจ
**์ค์ ์ฌ์ฉ ์์:**
ํ๋กฌํํธ: "์ฌ์ฉ์ ์ธ์ฆ์ ์ํ React ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค์ด์ค"
Cursor ์๋ต:
```jsx
import React, { useState } from 'react';
import './AuthForm.css';
const AuthForm = ({ onLogin }) => {
const [formData, setFormData] = useState({
email: '',
password: ''
});
const [isLoading, setIsLoading] = useState(false);
const handleSubmit = async (e) => {
e.preventDefault();
setIsLoading(true);
try {
const response = await fetch('/api/auth/login', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(formData)
});
if (response.ok) {
const userData = await response.json();
onLogin(userData);
}
} catch (error) {
console.error('Login failed:', error);
} finally {
setIsLoading(false);
}
};
return (
);
};
export default AuthForm;
```
===== AI ๋๋ฒ๊น
====
**์ค๋งํธ ์ค๋ฅ ๋ถ์**
* ์ค๋ฅ ๋ฉ์์ง ์๋ ๋ถ์ ๋ฐ ํด๊ฒฐ์ฑ
์ ์
* ์ฝ๋ ์คํ ํ๋ฆ ์ถ์
* ์ฑ๋ฅ ๋ณ๋ชฉ ์ง์ ์๋ณ
* ๋ณด์ ์ทจ์ฝ์ ๊ฒํ
**๋๋ฒ๊น
์์:**
์ค๋ฅ: "TypeError: Cannot read property 'name' of undefined"
Cursor ๋ถ์:
์ด ์ค๋ฅ๋ user ๊ฐ์ฒด๊ฐ undefined์ผ ๋ ๋ฐ์ํฉ๋๋ค.
ํด๊ฒฐ์ฑ
: ์ต์
๋ ์ฒด์ด๋ ๋๋ ๊ธฐ๋ณธ๊ฐ ์ค์
์์ ๋ ์ฝ๋:
```javascript
// ๊ธฐ์กด ์ฝ๋
const userName = user.name;
// ์์ ๋ ์ฝ๋
const userName = user?.name || 'Unknown User';
```
===== AI ์ฝ๋ ๋ฆฌํฉํ ๋ง ====
**์๋ ์ฝ๋ ๊ฐ์ **
* ์ฝ๋ ํ์ง ์๋ ๋ถ์
* ์ฑ๋ฅ ์ต์ ํ ์ ์
* ๊ฐ๋
์ฑ ํฅ์
* ์ํคํ
์ฒ ๊ฐ์
**๋ฆฌํฉํ ๋ง ์์:**
๊ธฐ์กด ์ฝ๋:
```javascript
function processData(data) {
let result = [];
for (let i = 0; i < data.length; i++) {
if (data[i].active) {
result.push(data[i].name);
}
}
return result;
}
```
Cursor ๋ฆฌํฉํ ๋ง:
```javascript
function processData(data) {
return data
.filter(item => item.active)
.map(item => item.name);
}
```
===== ๐ฐ ๊ฐ๊ฒฉ ์ ์ฑ
=====
^ ํ๋ ^ ๊ฐ๊ฒฉ ^ ์ฃผ์ ๊ธฐ๋ฅ ^
| **Free** | $0 | ๊ธฐ๋ณธ AI ๊ธฐ๋ฅ, ์ ํ๋ ์ฌ์ฉ๋ |
| **Pro** | $20/์ | ๋ฌด์ ํ ์ฌ์ฉ, ๊ณ ๊ธ ๊ธฐ๋ฅ |
| **Team** | $25/์/์ฌ์ฉ์ | ํ ํ์
, ๊ณต์ ์ค์ |
| **Enterprise** | ๋ง์ถคํ | ๊ธฐ์
์ ์ฉ, ๋ณด์ ๊ฐํ |
===== ๐ ํ์ฉ ์๋๋ฆฌ์ค =====
^ ๊ฐ๋ฐ ์์ญ ^ Cursor ํ์ฉ ^ ๊ธฐ๋ ํจ๊ณผ ^
| **์น ๊ฐ๋ฐ** | React/Vue ์ปดํฌ๋ํธ ์๋ ์์ฑ | ๊ฐ๋ฐ ์๋ 3๋ฐฐ ํฅ์ |
| **๋ฐฑ์๋ ๊ฐ๋ฐ** | API ์๋ํฌ์ธํธ ์๋ ์์ฑ | ์๋ฒ ๊ฐ๋ฐ ์๊ฐ ๋จ์ถ |
| **๋ชจ๋ฐ์ผ ๊ฐ๋ฐ** | React Native/Flutter ์ฝ๋ | ํฌ๋ก์ค ํ๋ซํผ ๊ฐ๋ฐ |
| **๋ฐ์ดํฐ ๊ณผํ** | Python ๋ถ์ ์คํฌ๋ฆฝํธ | ๋ฐ์ดํฐ ๋ถ์ ์๋ํ |
===== ๐ง ์ค์ ๋ฐ ์ต์ ํ =====
^ ์ค์ ์์ญ ^ ์ต์ ํ ๋ฐฉ๋ฒ ^
| **ํ๋ก์ ํธ ์ค์ ** | .cursorrules ํ์ผ๋ก ์ฝ๋ฉ ์คํ์ผ ์ ์ |
| **ํ๋กฌํํธ ์ต์ ํ** | ๊ตฌ์ฒด์ ์ด๊ณ ๋ช
ํํ ์๊ตฌ์ฌํญ ์์ฑ |
| **๋ชจ๋ธ ์ ํ** | ํ๋ก์ ํธ ํน์ฑ์ ๋ง๋ AI ๋ชจ๋ธ ์ ํ |
| **ํ ํ์
** | ๊ณตํต ์ค์ ๋ฐ ์ฝ๋ ๋ฆฌ๋ทฐ ์ํฌํ๋ก์ฐ |
===== ๐ ๋ณด์ ๋ฐ ๊ฐ์ธ์ ๋ณด =====
^ ๋ณด์ ์์ญ ^ Cursor ์ ์ฑ
^
| **๋ฐ์ดํฐ ์ํธํ** | ์๋ํฌ์๋ ์ํธํ๋ก ์ฝ๋ ๋ณดํธ |
| **๊ฐ์ธ์ ๋ณด ๋ณดํธ** | ์ฌ์ฉ์ ๋ฐ์ดํฐ ์ต์ํ ๋ฐ ์๋ ์ญ์ |
| **์ ๊ทผ ์ ์ด** | ์ญํ ๊ธฐ๋ฐ ๊ถํ ๊ด๋ฆฌ ์์คํ
|
| **๊ฐ์ฌ ๋ก๊ทธ** | ๋ชจ๋ ํ๋ ๊ธฐ๋ก ๋ฐ ์ถ์ |
===== ๐ฎ ํฅํ ์ ๋ง =====
^ ๋ฐ์ ๋ฐฉํฅ ^ Cursor 2.0 ^ ์
๊ณ ์ํฅ ^
| **AI ๋ชจ๋ธ** | ๋ ์ ํํ ์ฝ๋ ์์ฑ | ๊ฐ๋ฐ์ ์์ฐ์ฑ ํ์ |
| **ํ์
๊ธฐ๋ฅ** | ์ค์๊ฐ ํ์
| ํ ๊ฐ๋ฐ ํจ์จ์ฑ ์ฆ๋ |
| **๋ฉํฐ๋ชจ๋ฌ** | ์ด๋ฏธ์ง/์์ฑ ๊ธฐ๋ฐ ์ฝ๋ฉ | ์๋ก์ด ๊ฐ๋ฐ ํจ๋ฌ๋ค์ |
| **๊ฐ์ธํ** | ์ฌ์ฉ์ ๋ง์ถค AI | ๊ฐ์ธํ๋ ๊ฐ๋ฐ ๊ฒฝํ |
----
===== ๐ ๊ด๋ จ ๋งํฌ =====
* [[wiki:it:ai:start|AI ๊ธฐ์ ๊ฐ์ด๋ ๋ฉ์ธ]]
* [[wiki:it:ai:services:start|AI ์๋น์ค ๋ฐ ํ๋ซํผ]]
* [[wiki:it:ai:models:gpt|OpenAI GPT ๋ชจ๋ธ]]
* [[wiki:it:ai:models:claude|Anthropic Claude ๋ชจ๋ธ]]
* [[wiki:it:ai:models:gemini|Google Gemini ๋ชจ๋ธ]]