{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "ce3a39d9",
   "metadata": {},
   "source": [
    "# Cursor AI 고급 사용 가이드: AI 개발 환경 최적화\n",
    "\n",
    "**⬅️ 이전 시간: [Part 1: AI 개발 환경 완벽 구축 가이드](part_1_ai_development_environment.md)**\n",
    "**➡️ 다음 시간: [Part 2: 파이썬 핵심 문법](../02_python_core_syntax/part_2_python_core_syntax.md)**\n",
    "\n",
    "---\n",
    "\n",
    "## 1. 학습 목표 (Learning Objectives)\n",
    "\n",
    "이번 시간에는 Cursor AI의 고급 기능들을 활용하여 AI 개발 환경을 최적화하는 방법을 배웁니다. 다음 목표를 달성할 수 있도록 함께 나아갑시다.\n",
    "\n",
    "- **Cursor AI의 핵심 기능과 인터페이스**를 이해하고 효율적으로 활용할 수 있습니다.\n",
    "- **Thinking/Non-Thinking 모델의 차이점**을 파악하고 상황에 맞게 선택할 수 있습니다.\n",
    "- **안전한 코드 수정과 디버깅**을 위한 Cursor의 고급 기능들을 활용할 수 있습니다.\n",
    "- **생산성 향상을 위한 Cursor 설정과 팁**을 적용할 수 있습니다.\n",
    "- **보안과 협업을 위한 Cursor 기능**을 이해하고 활용할 수 있습니다.\n",
    "\n",
    "## 2. 핵심 요약 (Key Summary)\n",
    "\n",
    "Cursor AI는 AI 기반 코드 에디터로, VS Code 기반에 AI 어시스턴트가 통합된 강력한 개발 환경입니다. 이 가이드에서는 Cursor의 12가지 고급 사용 팁을 통해 AI 개발 환경을 최적화하는 방법을 배웁니다.\n",
    "\n",
    "- **핵심 키워드**: `Cursor AI`, `AI 모델 선택`, `Ask 모드`, `TDD 디버깅`, `Cursor Rules`, `컨텍스트 관리`, `Git 연동`, `모듈화`, `Privacy 모드`, `MCP`\n",
    "\n",
    "## 3. Cursor AI 소개 (Introduction)\n",
    "\n",
    "### 3.1. Cursor AI란?\n",
    "\n",
    "Cursor는 **AI-first 코드 에디터**로, VS Code 기반에 AI 어시스턴트가 통합된 개발 환경입니다. 일반적인 코드 에디터와 달리, Cursor는 AI와의 대화를 통해 코드를 작성하고 수정할 수 있어 **AI 개발에 특화된 도구**입니다.\n",
    "\n",
    "### 3.2. Cursor의 장점\n",
    "\n",
    "- **AI 기반 코드 생성**: 자연어로 요구사항을 설명하면 AI가 코드를 생성\n",
    "- **실시간 코드 완성**: 타이핑하면서 AI가 다음 코드를 제안\n",
    "- **디버깅 지원**: 에러 분석과 해결책 제시\n",
    "- **문서화 자동화**: 코드 설명과 문서 자동 생성\n",
    "- **리팩토링 지원**: 코드 개선 제안과 자동 리팩토링\n",
    "\n",
    "## 4. Cursor 설치 및 초기 설정 (Installation & Setup)\n",
    "\n",
    "### 4.1. Cursor 설치\n",
    "\n",
    "1. **공식 웹사이트 방문**: [cursor.sh](https://cursor.sh)에서 운영체제에 맞는 버전 다운로드\n",
    "2. **설치 프로그램 실행**: 다운로드한 파일을 실행하여 설치\n",
    "3. **계정 생성**: 무료 계정 생성 (14일 Pro 플랜 무료 체험 포함)\n",
    "4. **VS Code 설정 가져오기**: 기존 VS Code 사용자의 경우 설정과 확장 프로그램 가져오기 가능\n",
    "\n",
    "### 4.2. 초기 설정\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "34f43f9b",
   "metadata": {},
   "outputs": [],
   "source": [
    "json\n",
    "// settings.json 예시\n",
    "{\n",
    "  \"cursor.chat.defaultModel\": \"claude-3.5-sonnet\",\n",
    "  \"cursor.chat.thinkingModel\": \"claude-3.5-sonnet\",\n",
    "  \"cursor.chat.autoComplete\": true,\n",
    "  \"cursor.chat.autoCompleteDelay\": 1000,\n",
    "  \"cursor.chat.maxTokens\": 4000,\n",
    "  \"cursor.chat.temperature\": 0.7\n",
    "}"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "acd0d358",
   "metadata": {},
   "source": [
    "\n",
    "\n",
    "## 5. Cursor 고급 사용 팁 12가지 (Advanced Tips)\n",
    "\n",
    "### 5.1. 전략적으로 모델을 선택하자 - Thinking/Non-Thinking 모델의 차이점과 활용법\n",
    "\n",
    "#### Thinking 모델 vs Non-Thinking 모델\n",
    "\n",
    "| 구분 | Thinking 모델 | Non-Thinking 모델 |\n",
    "|------|---------------|-------------------|\n",
    "| **속도** | 느림 (더 정확한 분석) | 빠름 (즉시 응답) |\n",
    "| **용도** | 복잡한 문제 해결, 코드 분석 | 간단한 코드 생성, 빠른 수정 |\n",
    "| **토큰 사용량** | 높음 | 낮음 |\n",
    "| **적합한 상황** | 아키텍처 설계, 디버깅, 리팩토링 | 간단한 함수 작성, 주석 추가 |\n",
    "\n",
    "#### 모델 선택 전략\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d6b1e4b7",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Thinking 모델 사용 (복잡한 작업)\n",
    "/thinking \"이 코드의 성능을 분석하고 최적화 방안을 제시해줘\"\n",
    "\n",
    "# Non-Thinking 모델 사용 (간단한 작업)\n",
    "\"이 함수에 타입 힌트를 추가해줘\""
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7aba4a59",
   "metadata": {},
   "source": [
    "\n",
    "\n",
    "### 5.2. 복잡한 앱 수정 시 Ask 모드로 계획을 먼저 세우자 - 안전한 코드 수정 방법\n",
    "\n",
    "#### Ask 모드 활용법\n",
    "\n",
    "1. **계획 수립 단계**\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "66124797",
   "metadata": {},
   "outputs": [],
   "source": [
    "/ask \"이 웹 애플리케이션에 사용자 인증 기능을 추가하려고 합니다. \n",
    "단계별로 어떤 파일들을 수정해야 하고, 어떤 순서로 작업해야 할까요?\""
   ]
  },
  {
   "cell_type": "markdown",
   "id": "901e0ee9",
   "metadata": {},
   "source": [
    "\n",
    "\n",
    "2. **단계별 실행**\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "edcd1b1c",
   "metadata": {},
   "outputs": [],
   "source": [
    "/ask \"1단계: 사용자 모델을 생성해주세요\"\n",
    "/ask \"2단계: 인증 미들웨어를 구현해주세요\"\n",
    "/ask \"3단계: 로그인/회원가입 API를 만들어주세요\""
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3263d82d",
   "metadata": {},
   "source": [
    "\n",
    "\n",
    "3. **검증 단계**\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "4e1289b0",
   "metadata": {},
   "outputs": [],
   "source": [
    "/ask \"구현된 코드가 보안상 안전한지 검토해주세요\""
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fa6d45f7",
   "metadata": {},
   "source": [
    "\n",
    "\n",
    "### 5.3. 디버깅할 때는 TDD 방식으로 접근하자 - 3단계 디버깅 프로세스\n",
    "\n",
    "#### TDD 디버깅 프로세스\n",
    "\n",
    "**1단계: 테스트 작성**\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "18047f31",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 먼저 실패하는 테스트를 작성\n",
    "def test_user_authentication():\n",
    "    user = User(\"test@example.com\", \"password123\")\n",
    "    assert user.authenticate(\"wrong_password\") == False\n",
    "    assert user.authenticate(\"password123\") == True"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0bbbe52f",
   "metadata": {},
   "source": [
    "\n",
    "\n",
    "**2단계: 최소한의 코드로 테스트 통과**\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "fe6dde50",
   "metadata": {},
   "outputs": [],
   "source": [
    "class User:\n",
    "    def __init__(self, email, password):\n",
    "        self.email = email\n",
    "        self.password = password\n",
    "    \n",
    "    def authenticate(self, input_password):\n",
    "        return input_password == self.password"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9329ddff",
   "metadata": {},
   "source": [
    "\n",
    "\n",
    "**3단계: 리팩토링 및 개선**\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5246ff15",
   "metadata": {},
   "outputs": [],
   "source": [
    "class User:\n",
    "    def __init__(self, email, password):\n",
    "        self.email = email\n",
    "        self._hashed_password = self._hash_password(password)\n",
    "    \n",
    "    def authenticate(self, input_password):\n",
    "        return self._hash_password(input_password) == self._hashed_password\n",
    "    \n",
    "    def _hash_password(self, password):\n",
    "        import hashlib\n",
    "        return hashlib.sha256(password.encode()).hexdigest()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "481fc81e",
   "metadata": {},
   "source": [
    "\n",
    "\n",
    "### 5.4. Cursor가 스스로 학습하도록 룰을 관리하자 - /Generate Cursor Rules 활용\n",
    "\n",
    "#### Cursor Rules 생성\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d5ac68b9",
   "metadata": {},
   "outputs": [],
   "source": [
    "/generate cursor rules"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c2e70ea3",
   "metadata": {},
   "source": [
    "\n",
    "\n",
    "**예시 Rules:**\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b36055ed",
   "metadata": {},
   "outputs": [],
   "source": [
    "markdown\n",
    "# AI 개발 프로젝트 규칙\n",
    "\n",
    "## 코드 스타일\n",
    "- Python 코드는 PEP 8 스타일 가이드를 따름\n",
    "- 함수와 클래스에는 docstring 필수\n",
    "- 변수명은 snake_case, 클래스명은 PascalCase 사용\n",
    "\n",
    "## AI 모델 관련\n",
    "- 모델 파일은 models/ 디렉토리에 저장\n",
    "- 모델 설정은 config/ 디렉토리의 YAML 파일로 관리\n",
    "- 학습 스크립트는 scripts/ 디렉토리에 배치\n",
    "\n",
    "## 테스트\n",
    "- 모든 함수에 대한 단위 테스트 작성\n",
    "- 테스트 파일은 test_ 접두사 사용\n",
    "- 테스트 커버리지 80% 이상 유지\n",
    "\n",
    "## 문서화\n",
    "- README.md 파일에 프로젝트 설명 필수\n",
    "- API 문서는 docstring으로 자동 생성\n",
    "- 복잡한 로직은 주석으로 설명"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f159a7be",
   "metadata": {},
   "source": [
    "\n",
    "\n",
    "### 5.5. 다중 탭과 Auto 옵션을 활용해 생산성을 높이자 - 효율적인 작업 환경 구축\n",
    "\n",
    "#### 다중 탭 활용 전략\n",
    "\n",
    "1. **탭 그룹화**\n",
    "   - 관련 파일들을 같은 탭 그룹에 배치\n",
    "   - 예: `models/`, `views/`, `tests/` 그룹별로 분리\n",
    "\n",
    "2. **Auto 옵션 활용**\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "c2015af0",
   "metadata": {},
   "outputs": [],
   "source": [
    "json\n",
    "{\n",
    "  \"cursor.chat.autoComplete\": true,\n",
    "  \"cursor.chat.autoCompleteDelay\": 1000,\n",
    "  \"cursor.chat.autoSuggest\": true\n",
    "}"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "be781ee8",
   "metadata": {},
   "source": [
    "\n",
    "\n",
    "3. **단축키 활용**\n",
    "   - `Ctrl+Tab`: 탭 간 이동\n",
    "   - `Ctrl+Shift+E`: 파일 탐색기\n",
    "   - `Ctrl+Shift+P`: 명령 팔레트\n",
    "\n",
    "### 5.6. 하나의 채팅 세션을 오래 지속하지 말자 - 컨텍스트 관리 전략\n",
    "\n",
    "#### 컨텍스트 관리 전략\n",
    "\n",
    "**문제점:**\n",
    "- 긴 채팅 세션은 토큰 제한에 도달\n",
    "- AI가 이전 대화를 잊어버림\n",
    "- 응답 속도 저하\n",
    "\n",
    "**해결책:**\n",
    "1. **주제별 세션 분리**\n",
    "   "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "4d4f4f4f",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 세션 1: 사용자 인증 구현\n",
    "   /new chat\n",
    "   \n",
    "   # 세션 2: 데이터베이스 설계\n",
    "   /new chat"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "44d34936",
   "metadata": {},
   "source": [
    "\n",
    "\n",
    "2. **중요한 정보 저장**\n",
    "   "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "68f364b6",
   "metadata": {},
   "outputs": [],
   "source": [
    "/save \"사용자 인증 구현 계획\""
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e47ec525",
   "metadata": {},
   "source": [
    "\n",
    "\n",
    "3. **정기적인 세션 리셋**\n",
    "   - 20-30분마다 새로운 세션 시작\n",
    "   - 중요한 정보는 별도 파일로 저장\n",
    "\n",
    "### 5.7. 유의미한 변경이 완료되면 반드시 커밋하자 - Git과의 연동\n",
    "\n",
    "#### Git 연동 설정\n",
    "\n",
    "1. **Cursor에서 Git 사용**\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e2e90004",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 변경사항 스테이징\n",
    "Ctrl+Shift+G\n",
    "\n",
    "# 커밋 메시지 작성\n",
    "/ask \"이 변경사항에 대한 적절한 커밋 메시지를 작성해줘\""
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1e26c2b1",
   "metadata": {},
   "source": [
    "\n",
    "\n",
    "2. **자동 커밋 메시지 생성**\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "37977de9",
   "metadata": {},
   "outputs": [],
   "source": [
    "/ask \"다음 변경사항들을 분석해서 의미있는 커밋 메시지를 작성해줘:\n",
    "- 사용자 인증 기능 추가\n",
    "- 로그인 API 구현\n",
    "- 비밀번호 해싱 로직 추가\""
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e6f33353",
   "metadata": {},
   "source": [
    "\n",
    "\n",
    "3. **브랜치 관리**\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "95c6eab4",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 새로운 기능 브랜치 생성\n",
    "/ask \"새로운 기능을 위한 브랜치명을 제안해줘\""
   ]
  },
  {
   "cell_type": "markdown",
   "id": "96a63024",
   "metadata": {},
   "source": [
    "\n",
    "\n",
    "### 5.8. 코드 구조를 AI에게 알려주고 파일 관리를 최적화하자 - Cursor 내부 Tools 이해\n",
    "\n",
    "#### 프로젝트 구조 설명\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "165118b7",
   "metadata": {},
   "outputs": [],
   "source": [
    "/ask \"현재 프로젝트의 구조를 분석하고 개선 방안을 제시해줘\"\n",
    "\n",
    "# 프로젝트 구조 예시\n",
    "project/\n",
    "├── src/\n",
    "│   ├── models/\n",
    "│   ├── views/\n",
    "│   ├── controllers/\n",
    "│   └── utils/\n",
    "├── tests/\n",
    "├── docs/\n",
    "├── config/\n",
    "└── scripts/"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cf3e76b3",
   "metadata": {},
   "source": [
    "\n",
    "\n",
    "#### 파일 관리 최적화\n",
    "\n",
    "1. **관련 파일 그룹화**\n",
    "2. **일관된 네이밍 컨벤션**\n",
    "3. **적절한 디렉토리 구조**\n",
    "\n",
    "### 5.9. 파일이 길어지면 AI에게 모듈화를 요청하자 - 3단계 모듈화 프로세스\n",
    "\n",
    "#### 모듈화 프로세스\n",
    "\n",
    "**1단계: 분석**\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "808d63b9",
   "metadata": {},
   "outputs": [],
   "source": [
    "/ask \"이 파일이 너무 길어졌습니다. 어떤 부분들을 모듈로 분리할 수 있을까요?\""
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d7fbc190",
   "metadata": {},
   "source": [
    "\n",
    "\n",
    "**2단계: 구조 설계**\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "33678d7b",
   "metadata": {},
   "outputs": [],
   "source": [
    "/ask \"다음과 같이 모듈을 분리하는 것이 좋을까요?\n",
    "- user_models.py: 사용자 관련 모델\n",
    "- auth_utils.py: 인증 관련 유틸리티\n",
    "- api_routes.py: API 라우트\""
   ]
  },
  {
   "cell_type": "markdown",
   "id": "21541e56",
   "metadata": {},
   "source": [
    "\n",
    "\n",
    "**3단계: 실제 분리**\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "438ed805",
   "metadata": {},
   "outputs": [],
   "source": [
    "/ask \"user_models.py 파일을 생성하고 사용자 관련 클래스들을 이동시켜주세요\""
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e3b39191",
   "metadata": {},
   "source": [
    "\n",
    "\n",
    "### 5.10. @을 써서 적극적으로 컨텍스트를 주입하자 - 다양한 컨텍스트 활용법\n",
    "\n",
    "#### @ 컨텍스트 활용법\n",
    "\n",
    "1. **파일 참조**\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "191f8e77",
   "metadata": {},
   "outputs": [],
   "source": [
    "@models/user.py \"이 파일의 User 클래스를 기반으로 인증 로직을 구현해줘\""
   ]
  },
  {
   "cell_type": "markdown",
   "id": "586f2a1c",
   "metadata": {},
   "source": [
    "\n",
    "\n",
    "2. **문서 참조**\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5c7f5a1c",
   "metadata": {},
   "outputs": [],
   "source": [
    "@README.md \"이 프로젝트의 목적에 맞게 새로운 기능을 추가해줘\""
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c098f69d",
   "metadata": {},
   "source": [
    "\n",
    "\n",
    "3. **설정 파일 참조**\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "770d8da8",
   "metadata": {},
   "outputs": [],
   "source": [
    "@config/settings.py \"이 설정을 기반으로 데이터베이스 연결 코드를 작성해줘\""
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f8457d30",
   "metadata": {},
   "source": [
    "\n",
    "\n",
    "4. **테스트 파일 참조**\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "8b155692",
   "metadata": {},
   "outputs": [],
   "source": [
    "@tests/test_user.py \"이 테스트 패턴에 맞춰 새로운 테스트를 작성해줘\""
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b311283f",
   "metadata": {},
   "source": [
    "\n",
    "\n",
    "### 5.11. 보안이 중요하다면 Privacy 모드를 켜자 - 보안 설정\n",
    "\n",
    "#### Privacy 모드 설정\n",
    "\n",
    "1. **Privacy 모드 활성화**\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "3bfc5abc",
   "metadata": {},
   "outputs": [],
   "source": [
    "json\n",
    "{\n",
    "  \"cursor.chat.privacyMode\": true,\n",
    "  \"cursor.chat.localModel\": true\n",
    "}"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c6068f1e",
   "metadata": {},
   "source": [
    "\n",
    "\n",
    "2. **민감한 정보 처리**\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "12ed70f7",
   "metadata": {},
   "outputs": [],
   "source": [
    "# API 키나 비밀번호는 환경변수로 관리\n",
    "/ask \"API 키를 안전하게 관리하는 방법을 알려줘\""
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2fe8f229",
   "metadata": {},
   "source": [
    "\n",
    "\n",
    "3. **코드 검토**\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "7a388002",
   "metadata": {},
   "outputs": [],
   "source": [
    "/ask \"이 코드에 보안 취약점이 있는지 검토해줘\""
   ]
  },
  {
   "cell_type": "markdown",
   "id": "acd5519c",
   "metadata": {},
   "source": [
    "\n",
    "\n",
    "### 5.12. MCP(Model Context Protocol)와 도구들을 활용하자 - 다양한 도구 연동\n",
    "\n",
    "#### MCP 도구 활용\n",
    "\n",
    "1. **Git 연동**\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2977a56b",
   "metadata": {},
   "outputs": [],
   "source": [
    "/ask \"현재 Git 상태를 확인하고 다음 커밋할 파일들을 제안해줘\""
   ]
  },
  {
   "cell_type": "markdown",
   "id": "474090f7",
   "metadata": {},
   "source": [
    "\n",
    "\n",
    "2. **터미널 명령어**\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "002cc84e",
   "metadata": {},
   "outputs": [],
   "source": [
    "/ask \"Python 가상환경을 생성하고 필요한 패키지들을 설치해줘\""
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4e3756ee",
   "metadata": {},
   "source": [
    "\n",
    "\n",
    "3. **파일 시스템**\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "41c44f09",
   "metadata": {},
   "outputs": [],
   "source": [
    "/ask \"프로젝트 구조를 분석하고 개선 방안을 제시해줘\""
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b079fb03",
   "metadata": {},
   "source": [
    "\n",
    "\n",
    "## 6. 실습: AI 개발 환경 구축 (Hands-on Practice)\n",
    "\n",
    "### 6.1. 실습 1: Cursor 설정 최적화\n",
    "\n",
    "1. **Cursor 설치 및 초기 설정**\n",
    "2. **개인화된 Cursor Rules 생성**\n",
    "3. **단축키 및 설정 커스터마이징**\n",
    "\n",
    "### 6.2. 실습 2: AI 프로젝트 구조 설계\n",
    "\n",
    "1. **프로젝트 요구사항 분석**\n",
    "2. **모듈화된 구조 설계**\n",
    "3. **Cursor를 활용한 코드 생성**\n",
    "\n",
    "### 6.3. 실습 3: 협업 환경 구축\n",
    "\n",
    "1. **Git 연동 설정**\n",
    "2. **팀 규칙 설정**\n",
    "3. **코드 리뷰 프로세스**\n",
    "\n",
    "## 7. 문제 해결 (Troubleshooting)\n",
    "\n",
    "### 7.1. 일반적인 문제들\n",
    "\n",
    "| 문제 | 원인 | 해결방법 |\n",
    "|------|------|----------|\n",
    "| AI 응답이 느림 | 모델 선택 문제 | Thinking 모델 대신 Non-Thinking 모델 사용 |\n",
    "| 컨텍스트 손실 | 긴 채팅 세션 | 새로운 세션 시작 및 중요 정보 저장 |\n",
    "| 코드 품질 저하 | 불명확한 요청 | 구체적이고 명확한 프롬프트 작성 |\n",
    "| 보안 우려 | 민감한 정보 노출 | Privacy 모드 활성화 및 환경변수 사용 |\n",
    "\n",
    "### 7.2. 성능 최적화 팁\n",
    "\n",
    "1. **적절한 모델 선택**\n",
    "2. **효율적인 프롬프트 작성**\n",
    "3. **정기적인 세션 관리**\n",
    "4. **도구 연동 활용**\n",
    "\n",
    "## 8. 다음 단계 (Next Steps)\n",
    "\n",
    "이제 Cursor AI의 고급 기능들을 활용하여 효율적인 AI 개발 환경을 구축할 수 있습니다. 다음 단계로는:\n",
    "\n",
    "1. **실제 프로젝트에 적용**: 학습한 팁들을 실제 AI 프로젝트에 적용\n",
    "2. **팀 협업 환경 구축**: 팀원들과 함께 Cursor 활용 방법 공유\n",
    "3. **지속적인 학습**: Cursor의 새로운 기능들 탐색 및 활용\n",
    "\n",
    "## 9. 참고 자료 (References)\n",
    "\n",
    "- [Cursor 공식 문서](https://cursor.sh/docs)\n",
    "- [Cursor 커뮤니티 포럼](https://community.cursor.sh)\n",
    "- [VS Code 설정 가이드](https://code.visualstudio.com/docs/getstarted/settings)\n",
    "- [Git 연동 가이드](https://git-scm.com/book/ko/v2)\n",
    "\n",
    "---\n",
    "\n",
    "**💡 팁**: Cursor AI는 지속적으로 발전하고 있습니다. 새로운 기능들을 정기적으로 확인하고 활용하여 더욱 효율적인 개발 환경을 구축하세요!\n",
    "\n",
    "**🔗 관련 링크**:\n",
    "- [Part 1: AI 개발 환경 완벽 구축 가이드](part_1_ai_development_environment.md)\n",
    "- [Part 2: 파이썬 핵심 문법](../02_python_core_syntax/part_2_python_core_syntax.md)\n",
    "- [용어집](../../glossary.md)\n",
    "- [FAQ](../../FAQ.md) "
   ]
  }
 ],
 "metadata": {},
 "nbformat": 4,
 "nbformat_minor": 5
}
