Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
freem
Search
Search
Appearance
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
Openai/69390b49-f700-800f-82e2-578b4cfb226b
(section)
Add languages
Page
Discussion
English
Read
Edit
Edit source
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
Edit source
View history
General
What links here
Related changes
Special pages
Page information
Appearance
move to sidebar
hide
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
=== User: https://corazzon.github.io/slides/aipydevenv.html ν΄λΉ μ¬μ΄νΈμμ κ²½κ³ κ° λλ μ΄μ λ 무μμΈκ°? === https://corazzon.github.io/slides/ai_py_dev_env.html ν΄λΉ μ¬μ΄νΈμμ κ²½κ³ κ° λλ μ΄μ λ 무μμΈκ°? <!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Pro AI Developer Setup Guide</title> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> <style> :root { --bg-void: #09090b; --text-primary: #f4f4f5; --text-secondary: #a1a1aa; --glass-bg: rgba(24, 24, 27, 0.65); --glass-border: rgba(255, 255, 255, 0.08); --accent-cyan: #22d3ee; --accent-violet: #a78bfa; --accent-rose: #fb7185; --accent-emerald: #34d399; --accent-amber: #fbbf24; --font-mono: 'JetBrains Mono', 'Fira Code', Consolas, monospace; --shadow-glow: 0 0 50px -10px rgba(167, 139, 250, 0.15); } * { box-sizing: border-box; margin: 0; padding: 0; } body { font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; background-color: var(--bg-void); color: var(--text-primary); height: 100vh; overflow: hidden; display: flex; justify-content: center; align-items: center; background-image: radial-gradient(circle at 15% 50%, rgba(34, 211, 238, 0.08), transparent 25%), radial-gradient(circle at 85% 30%, rgba(167, 139, 250, 0.08), transparent 25%); } /'' Progress Bar ''/ .progress-track { position: fixed; top: 0; left: 0; width: 100%; height: 3px; background: rgba(255,255,255,0.05); z-index: 1000; } .progress-fill { height: 100%; background: linear-gradient(90deg, var(--accent-cyan), var(--accent-violet)); width: 0%; transition: width 0.5s ease; box-shadow: 0 0 10px var(--accent-cyan); } /'' Main Container ''/ .viewport { width: 95%; max-width: 1400px; height: 88vh; position: relative; perspective: 1500px; } .slide { position: absolute; width: 100%; height: 100%; opacity: 0; visibility: hidden; transform: scale(0.96) translateY(30px); transition: all 0.7s cubic-bezier(0.2, 0.8, 0.2, 1); display: flex; justify-content: center; align-items: center; } .slide.active { opacity: 1; visibility: visible; transform: scale(1) translateY(0); } /'' Glass Card Design ''/ .glass-panel { background: var(--glass-bg); backdrop-filter: blur(40px); -webkit-backdrop-filter: blur(40px); border: 1px solid var(--glass-border); border-radius: 32px; width: 100%; height: 100%; box-shadow: 0 25px 80px -20px rgba(0, 0, 0, 0.7), var(--shadow-glow); padding: 60px; overflow-y: auto; display: flex; flex-direction: column; } /'' Layout Grid ''/ .grid-container { display: grid; grid-template-columns: 1.3fr 1fr; gap: 60px; height: 100%; } .content-side { display: flex; flex-direction: column; justify-content: center; } .action-side { display: flex; flex-direction: column; justify-content: center; gap: 25px; background: rgba(0,0,0,0.2); padding: 40px; border-radius: 24px; border: 1px solid rgba(255,255,255,0.03); } /'' Typography ''/ .slide-header { display: flex; align-items: center; gap: 20px; margin-bottom: 25px; } .icon-badge { width: 64px; height: 64px; border-radius: 16px; background: rgba(255,255,255,0.05); display: flex; align-items: center; justify-content: center; font-size: 2rem; border: 1px solid rgba(255,255,255,0.1); box-shadow: inset 0 0 15px rgba(255,255,255,0.02); } h2 { font-size: 2.8rem; font-weight: 700; background: linear-gradient(135deg, #fff 0%, #cbd5e1 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; letter-spacing: -0.03em; } .description { font-size: 1.1rem; line-height: 1.7; color: var(--text-secondary); margin-bottom: 40px; } .description strong { color: var(--text-primary); font-weight: 600; } /'' Detail Lists ''/ .detail-group { margin-bottom: 30px; } .detail-title { font-size: 0.9rem; text-transform: uppercase; letter-spacing: 0.05em; color: var(--text-secondary); margin-bottom: 15px; font-weight: 600; display: flex; align-items: center; gap: 8px; } .feature-list { list-style: none; display: flex; flex-direction: column; gap: 12px; } .feature-item { display: flex; align-items: flex-start; gap: 12px; font-size: 1rem; color: #e4e4e7; line-height: 1.5; } .feature-item i { color: var(--accent-cyan); margin-top: 4px; } /'' Alerts & Tips ''/ .alert-box { padding: 20px; border-radius: 12px; margin-top: 20px; background: rgba(255,255,255,0.03); border-left: 3px solid; } .alert-box.warning { border-color: var(--accent-rose); background: rgba(251, 113, 133, 0.08); } .alert-box.tip { border-color: var(--accent-amber); background: rgba(251, 191, 36, 0.08); } .alert-title { font-weight: 700; margin-bottom: 8px; font-size: 0.95rem; display: flex; align-items: center; gap: 8px; } .warning .alert-title { color: var(--accent-rose); } .tip .alert-title { color: var(--accent-amber); } .alert-content { font-size: 0.9rem; color: #d4d4d8; line-height: 1.5; } /'' Terminal & Code ''/ .code-window { background: #121215; border-radius: 12px; border: 1px solid rgba(255,255,255,0.08); overflow: hidden; } .window-header { background: rgba(255,255,255,0.03); padding: 8px 16px; display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid rgba(255,255,255,0.05); } .window-title { font-size: 0.75rem; color: var(--text-secondary); font-family: var(--font-mono); } .copy-btn { background: transparent; border: 1px solid rgba(255,255,255,0.15); color: var(--text-secondary); border-radius: 4px; padding: 4px 8px; font-size: 0.7rem; cursor: pointer; transition: 0.2s; } .copy-btn:hover { background: rgba(255,255,255,0.1); color: white; } .code-content { padding: 16px; font-family: var(--font-mono); font-size: 0.9rem; color: var(--accent-emerald); word-break: break-all; } .comment { color: #52525b; display: block; margin-bottom: 5px; } /'' Buttons ''/ .btn-download { display: flex; align-items: center; justify-content: center; gap: 10px; width: 100%; padding: 18px; background: linear-gradient(135deg, var(--accent-cyan), var(--accent-violet)); color: #000; text-decoration: none; font-weight: 700; border-radius: 12px; font-size: 1rem; transition: transform 0.2s, box-shadow 0.2s; } .btn-download:hover { transform: translateY(-2px); box-shadow: 0 10px 25px -5px rgba(34, 211, 238, 0.4); } /'' Navigation ''/ .nav-dock { position: fixed; bottom: 30px; display: flex; align-items: center; gap: 20px; background: rgba(24, 24, 27, 0.8); backdrop-filter: blur(10px); padding: 10px 20px; border-radius: 100px; border: 1px solid rgba(255,255,255,0.1); z-index: 100; } .nav-arrow { background: none; border: none; color: var(--text-secondary); font-size: 1.2rem; cursor: pointer; transition: 0.2s; } .nav-arrow:hover { color: var(--text-primary); transform: scale(1.1); } .page-counter { font-family: var(--font-mono); font-size: 0.9rem; font-weight: 600; } /'' Summary Slide Specific ''/ .summary-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(350px, 1fr)); gap: 20px; width: 100%; margin-top: 40px; } .check-card { background: rgba(255,255,255,0.03); padding: 20px; border-radius: 12px; border: 1px solid rgba(255,255,255,0.05); display: flex; justify-content: space-between; align-items: center; } .check-cmd { font-family: var(--font-mono); color: var(--accent-cyan); } @media (max-width: 1024px) { .grid-container { grid-template-columns: 1fr; display: block; } .action-side { margin-top: 40px; } .viewport { height: 92vh; } .glass-panel { padding: 30px; overflow-y: auto; } } </style> </head> <body> <div class="progress-track"><div class="progress-fill" id="progressBar"></div></div> <div class="viewport"> <!-- Slide 0: Cover --> <div class="slide active"> <div class="glass-panel" style="justify-content: center; align-items: center; text-align: center; background: radial-gradient(circle at center, rgba(255,255,255,0.03), transparent);"> <div class="icon-badge" style="width: 100px; height: 100px; font-size: 3.5rem; margin-bottom: 30px; border:none; background: transparent;">π</div> <h1 style="font-size: 4rem; font-weight: 800; margin-bottom: 20px; line-height: 1.1; background: linear-gradient(to right, #fff, #94a3b8); -webkit-background-clip: text; -webkit-text-fill-color: transparent;">AI Coding Assistant<br>Dev Environment</h1> <p style="font-size: 1.4rem; color: var(--text-secondary); max-width: 600px; margin-bottom: 50px;"> μμ°μ±μ κ·Ήλννλ AIκΈ°λ° κ°λ° λꡬ μ μ κ°μ΄λ </p> <button class="btn-download" style="width: auto; padding: 15px 50px;" onclick="nextSlide()">κ°μ΄λ μμνκΈ° <i class="fas fa-arrow-right"></i></button> </div> </div> <!-- Slide 1: Roadmap --> <div class="slide"> <div class="glass-panel" style="align-items: center;"> <h2 style="margin-bottom: 10px;">μ€μΉ λ‘λλ§΅</h2> <p class="description" style="text-align: center; margin-bottom: 50px;"> λ€μ 6κ°μ§ λꡬλ νλμ μΈ AI λ° μΉ κ°λ°μ μν νμμ μΈ κΈ°μ μ€νμ λλ€. </p> <div style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 30px; width: 100%; max-width: 1000px;"> <div class="action-side" style="align-items: center; text-align: center; padding: 30px;"> <i class="fas fa-code" style="font-size: 2.5rem; color: var(--accent-cyan); margin-bottom: 15px;"></i> <h3 style="margin-bottom: 10px;">VSCode</h3> <p style="font-size: 0.9rem; color: var(--text-secondary);">ν΅ν© κ°λ° νκ²½ (IDE)</p> </div> <div class="action-side" style="align-items: center; text-align: center; padding: 30px;"> <i class="fab fa-python" style="font-size: 2.5rem; color: var(--accent-amber); margin-bottom: 15px;"></i> <h3 style="margin-bottom: 10px;">Python</h3> <p style="font-size: 0.9rem; color: var(--text-secondary);">AI ν΅μ¬ μΈμ΄</p> </div> <div class="action-side" style="align-items: center; text-align: center; padding: 30px;"> <i class="fas fa-bolt" style="font-size: 2.5rem; color: var(--accent-violet); margin-bottom: 15px;"></i> <h3 style="margin-bottom: 10px;">uv</h3> <p style="font-size: 0.9rem; color: var(--text-secondary);">μ΄κ³ μ ν¨ν€μ§ κ΄λ¦¬</p> </div> <div class="action-side" style="align-items: center; text-align: center; padding: 30px;"> <i class="fab fa-node-js" style="font-size: 2.5rem; color: var(--accent-emerald); margin-bottom: 15px;"></i> <h3 style="margin-bottom: 10px;">Node.js</h3> <p style="font-size: 0.9rem; color: var(--text-secondary);">JS λ°νμ</p> </div> <div class="action-side" style="align-items: center; text-align: center; padding: 30px;"> <i class="fas fa-robot" style="font-size: 2.5rem; color: var(--accent-cyan); margin-bottom: 15px;"></i> <h3 style="margin-bottom: 10px;">Gemini CLI</h3> <p style="font-size: 0.9rem; color: var(--text-secondary);">ν°λ―Έλ AI λΉμ</p> </div> <div class="action-side" style="align-items: center; text-align: center; padding: 30px;"> <i class="fas fa-file-alt" style="font-size: 2.5rem; color: #fff; margin-bottom: 15px;"></i> <h3 style="margin-bottom: 10px;">Pandoc</h3> <p style="font-size: 0.9rem; color: var(--text-secondary);">λ¬Έμ λ³ν λꡬ</p> </div> </div> </div> </div> <!-- Slide 2: VSCode --> <div class="slide"> <div class="glass-panel"> <div class="grid-container"> <div class="content-side"> <div class="slide-header"> <div class="icon-badge" style="color: var(--accent-cyan);"><i class="fas fa-code"></i></div> <h2>Visual Studio Code</h2> </div> <p class="description"> λ¨μν ν μ€νΈ μλν°λ₯Ό λμ΄μ , μ μΈκ³ κ°λ°μμ νμ€ IDEμ λλ€. Microsoftμ κ°λ ₯ν μ§μκ³Ό μλ§ κ°μ νμ₯ νλ‘κ·Έλ¨(Extensions) μνκ³κ° κ²°ν©λμ΄, Python, JavaScript λ± μ΄λ€ μΈμ΄λ μΎμ νκ² κ°λ°ν μ μμ΅λλ€. AI Copilotκ³Όμ μ°λμ±λ κ°μ₯ λ°μ΄λ©λλ€. </p> <div class="detail-group"> <div class="detail-title"><i class="fas fa-star"></i> Key Features</div> <ul class="feature-list"> <li class="feature-item"><i class="fas fa-check"></i><strong>IntelliSense:</strong> μ€λ§νΈν μ½λ μλ μμ± λ° λ¬Έλ² μ€λ₯ μ€μκ° κ°μ§</li> <li class="feature-item"><i class="fas fa-check"></i><strong>Integrated Git:</strong> λ³λ νλ‘κ·Έλ¨ μμ΄ λ³κ²½ μ¬ν μΆμ λ° μ»€λ° κ°λ₯</li> <li class="feature-item"><i class="fas fa-check"></i><strong>Debugging:</strong> λ³μ μνλ₯Ό μ€μκ°μΌλ‘ νμΈνλ©° μ€λ₯ μμ </li> </ul> </div> <div class="alert-box tip"> <div class="alert-title"><i class="fas fa-lightbulb"></i> Windows μ€μΉ ν</div> <div class="alert-content"> μ€μΉ μ΅μ μ€ <strong>"Install for all users"</strong>λ₯Ό μ ννμΈμ. κΆν λ¬Έμ μμ΄ μμ€ν μ 체μμ μ¬μ©ν μ μμΌλ©°, ν₯ν μ λ°μ΄νΈ μμλ κ΄λ¦¬κ° μ©μ΄ν©λλ€. </div> </div> </div> <div class="action-side"> <a href="https://code.visualstudio.com/" target="_blank" class="btn-download">VSCode λ€μ΄λ‘λ <i class="fas fa-external-link-alt"></i></a> <div class="detail-title" style="margin-top: 20px; margin-bottom: 10px;">νμ© μμ: νλ‘μ νΈ μ΄κΈ°</div> <div class="code-window"> <div class="window-header"> <span class="window-title">TERMINAL</span> <button class="copy-btn" onclick="copyText('code .')">Copy</button> </div> <div class="code-content"> <span class="comment"># νμ¬ ν΄λλ₯Ό VSCodeλ‘ μ½λλ€</span> $ code . </div> </div> <div class="code-window" style="margin-top: 10px;"> <div class="window-header"> <span class="window-title">VERIFY INSTALLATION</span> <button class="copy-btn" onclick="copyText('code --version')">Copy</button> </div> <div class="code-content"> $ code --version </div> </div> </div> </div> </div> </div> <!-- Slide 3: Python (Expanded & Fixed) --> <div class="slide"> <div class="glass-panel"> <div class="grid-container"> <div class="content-side"> <div class="slide-header"> <div class="icon-badge" style="color: var(--accent-amber);"><i class="fab fa-python"></i></div> <h2>Python</h2> </div> <p class="description"> AI λ° λ°μ΄ν° κ³Όν λΆμΌμ λ리 μ°μ λλ€. TensorFlow, PyTorchμ κ°μ λ₯λ¬λ νλ μμν¬λΆν° λ°μ΄ν° λΆμ, μΉ μλ² κ΅¬μΆκΉμ§ κ°λ₯ν©λλ€. μΈν°νλ¦¬ν° μΈμ΄λ‘ μ½λλ₯Ό ν μ€μ© μ€ννλ©° κ²°κ³Όλ₯Ό μ¦μ νμΈν μ μμ΄ μμ°μ±μ΄ λμ΅λλ€. </p> <div class="detail-group"> <div class="detail-title"><i class="fas fa-cog"></i> νμ μ€μ (Critical Config)</div> <ul class="feature-list"> <li class="feature-item"><i class="fas fa-check"></i>μ€μΉ νλ©΄ νλ¨ <strong>"Add Python to PATH"</strong> 체ν¬λ°μ€ μ ν νμ</li> <li class="feature-item"><i class="fas fa-check"></i>μ΅μ μμ λ²μ μΈ <strong>3.10 ~</strong> λ²μ μ¬μ© κΆμ₯</li> </ul> </div> <!-- Windows Tip (Highlighted as requested) --> <div class="alert-box tip" style="border-color: var(--accent-cyan); background: rgba(34, 211, 238, 0.1);"> <div class="alert-title" style="color: var(--accent-cyan); font-size: 1.1rem;"><i class="fab fa-windows"></i> Windows μ¬μ©μ νμ μ€μ </div> <div class="alert-content" style="font-size: 1rem;"> μ€μΉ νλ‘κ·Έλ¨ μ€ν μ <strong>"Customize installation"</strong>μ ν΄λ¦νκ³ , Advanced Options λ¨κ³μμ <strong style="color:white; text-decoration: underline;">"Install for all users"</strong> νλͺ©μ λ°λμ 체ν¬νμΈμ.<br><br> <em>μ΄μ : μ΄ μ΅μ μ μ νν΄μΌ Pythonμ΄ <code>C:\Program Files\</code> λ± κ³΅μ© κ²½λ‘μ μ€μΉλμ΄, μ¬μ©μ κΆν λ¬Έμ λ κ°μνκ²½ κ²½λ‘ κΌ¬μ νμμ κ·Όλ³Έμ μΌλ‘ λ°©μ§ν μ μμ΅λλ€.</em> </div> </div> <!-- Mac Warning --> <div class="alert-box warning"> <div class="alert-title"><i class="fab fa-apple"></i> macOS μ¬μ©μ νμ</div> <div class="alert-content"> μ€μΉ ν <code>/Applications/Python 3.x/</code> ν΄λμ <strong>Install Certificates.command</strong> νμΌμ μ€ννμΈμ. (SSL μΈμ¦μ λ―Έμ€μΉ μ pip μ¬μ© λΆκ°) </div> </div> </div> <div class="action-side"> <a href="https://www.python.org/downloads/" target="_blank" class="btn-download">Python λ€μ΄λ‘λ <i class="fas fa-download"></i></a> <div class="detail-title" style="margin-top: 20px; margin-bottom: 10px;">νμ© μμ: λ²μ νμΈ λ° μ€ν</div> <div class="code-window"> <div class="window-header"> <span class="window-title">TERMINAL</span> <button class="copy-btn" onclick="copyText('python --version')">Copy</button> </div> <div class="code-content"> <span class="comment"># λ²μ νμΈ</span> $ python --version <br> <span class="comment"># κ°λ¨ν μΆλ ₯ ν μ€νΈ</span> $ python -c "print('Hello AI')" </div> </div> </div> </div> </div> </div> <!-- Slide 4: uv --> <div class="slide"> <div class="glass-panel"> <div class="grid-container"> <div class="content-side"> <div class="slide-header"> <div class="icon-badge" style="color: var(--accent-violet);"><i class="fas fa-bolt"></i></div> <h2>uv (Astral)</h2> </div> <p class="description"> Rust μΈμ΄λ‘ μμ±λ νμ μ μΈ Python ν¨ν€μ§ κ΄λ¦¬μμ λλ€. κΈ°μ‘΄μ <code>pip</code>λ³΄λ€ μ΅λ 10~100λ°° λΉ λ₯Έ μλλ₯Ό μλν©λλ€. 볡μ‘ν μμ‘΄μ± ν΄κ²°(Dependency Resolution) κ³Όμ μ μμκ°μ μ²λ¦¬νλ©°, νλ‘μ νΈλ³ κ°μνκ²½(venv) κ΄λ¦¬λ₯Ό νκΈ°μ μΌλ‘ λ¨μνν©λλ€. </p> <div class="detail-group"> <div class="detail-title"><i class="fas fa-rocket"></i> Why uv?</div> <ul class="feature-list"> <li class="feature-item"><i class="fas fa-check"></i><strong>Global Cache:</strong> ν λ² λ€μ΄λ‘λν ν¨ν€μ§λ μΊμλμ΄ λμ€ν¬ κ³΅κ° μ μ½</li> <li class="feature-item"><i class="fas fa-check"></i><strong>All-in-One:</strong> pip, pip-tools, virtualenv κΈ°λ₯μ νλμ λκ΅¬λ‘ ν΅ν©</li> <li class="feature-item"><i class="fas fa-check"></i><strong>Compatibility:</strong> κΈ°μ‘΄ requirements.txt λ° pyproject.toml μλ²½ μ§μ</li> </ul> </div> </div> <div class="action-side"> <div class="detail-title">μ€μΉ λͺ λ Ήμ΄ (Windows PowerShell)</div> <div class="code-window"> <div class="window-header"> <span class="window-title">POWERSHELL</span> <button class="copy-btn" onclick="copyText('powershell -c "irm https://astral.sh/uv/install.ps1 | iex"')">Copy</button> </div> <div class="code-content"> powershell -c "irm https://astral.sh/uv/install.ps1 | iex" </div> </div> <div class="detail-title" style="margin-top: 15px;">μ€μΉ λͺ λ Ήμ΄ (macOS / Linux)</div> <div class="code-window"> <div class="window-header"> <span class="window-title">TERMINAL</span> <button class="copy-btn" onclick="copyText('curl -LsSf https://astral.sh/uv/install.sh | sh')">Copy</button> </div> <div class="code-content"> curl -LsSf https://astral.sh/uv/install.sh | sh </div> </div> <div class="detail-title" style="margin-top: 20px; margin-bottom: 10px;">νμ© μμ: ν¨ν€μ§ μ΄κ³ μ μ€μΉ</div> <div class="code-window"> <div class="window-header"> <span class="window-title">USAGE</span> </div> <div class="code-content"> <span class="comment"># κ°μνκ²½ μμ± λ° νμ±ν νμ μμ (μλ μ²λ¦¬)</span> $ uv pip install numpy pandas </div> </div> </div> </div> </div> </div> <!-- Slide 5: Node.js --> <div class="slide"> <div class="glass-panel"> <div class="grid-container"> <div class="content-side"> <div class="slide-header"> <div class="icon-badge" style="color: var(--accent-emerald);"><i class="fab fa-node-js"></i></div> <h2>Node.js</h2> </div> <p class="description"> Chrome V8 μμ§ κΈ°λ°μ JavaScript λ°νμμ λλ€. AI κ°λ°μκ° μ νμν κΉμ? λ°λ‘ μ΅μ AI λꡬ(Gemini CLI λ±)μ νλ‘ νΈμλ μΈν°νμ΄μ€κ° λλΆλΆ Node.js μνκ³(npm) μμμ λμνκΈ° λλ¬Έμ λλ€. μλ² μ¬μ΄λ κ°λ°λΆν° λꡬ μ€νκΉμ§ νλκ² μ¬μ©λ©λλ€. </p> <div class="detail-group"> <div class="detail-title"><i class="fas fa-info-circle"></i> Key Points</div> <ul class="feature-list"> <li class="feature-item"><i class="fas fa-check"></i><strong>LTS (Long Term Support)</strong> λ²μ μ€μΉ κΆμ₯ (μμ μ± μ΅μ°μ )</li> <li class="feature-item"><i class="fas fa-check"></i>μ€μΉ μ <strong>npm</strong> (Node Package Manager)μ΄ μλμΌλ‘ ν¨κ» μ€μΉλ¨</li> </ul> </div> <div class="alert-box tip"> <div class="alert-title"><i class="fas fa-sync-alt"></i> μ€μΉ ν μ¬λΆν </div> <div class="alert-content"> νκ²½ λ³μ μ μ©μ μν΄ μ€μΉ μλ£ ν μ΄λ €μλ λͺ¨λ ν°λ―Έλ(CMD, VSCode ν°λ―Έλ λ±)μ λ«μλ€κ° λ€μ μ€νν΄μΌ ν©λλ€. </div> </div> </div> <div class="action-side"> <a href="https://nodejs.org/ko/download" target="_blank" class="btn-download">Node.js (LTS) λ€μ΄λ‘λ <i class="fas fa-download"></i></a> <div class="detail-title" style="margin-top: 20px; margin-bottom: 10px;">νμ© μμ: JS μ€ν λ° ν¨ν€μ§ κ΄λ¦¬</div> <div class="code-window"> <div class="window-header"> <span class="window-title">TERMINAL</span> <button class="copy-btn" onclick="copyText('node -v && npm -v')">Copy</button> </div> <div class="code-content"> <span class="comment"># λ²μ νμΈ</span> $ node -v <br> <span class="comment"># ν¨ν€μ§ λ§€λμ λ²μ νμΈ</span> $ npm -v </div> </div> </div> </div> </div> </div> <!-- Slide 6: Gemini CLI --> <div class="slide"> <div class="glass-panel"> <div class="grid-container"> <div class="content-side"> <div class="slide-header"> <div class="icon-badge" style="color: var(--accent-cyan);"><i class="fas fa-robot"></i></div> <h2>Gemini CLI</h2> </div> <p class="description"> Googleμ μ΅μ²¨λ¨ μμ±ν AI 'Gemini'λ₯Ό ν°λ―Έλ νκ²½μΌλ‘ κ°μ Έμ΅λλ€. λΈλΌμ°μ λ₯Ό μΌμ§ μκ³ λ μ½λμ λν μ§λ¬Έ, μλ¬ λ‘κ·Έ λΆμ, λ¬Έμ μμ½, μ»€λ° λ©μμ§ μμ± λ±μ λͺ λ Ήμ€μμ μ¦μ μνν μ μμ΄ κ°λ° λͺ°μ λ(Flow)λ₯Ό μ μ§νλ λ° ν° λμμ΄ λ©λλ€. </p> <div class="detail-group"> <div class="detail-title"><i class="fas fa-magic"></i> κ°λ° μμ°μ± νμ </div> <ul class="feature-list"> <li class="feature-item"><i class="fas fa-check"></i><strong>Workflow Integration:</strong> ν°λ―Έλ νμ΄νλΌμΈ(|)μ ν΅ν΄ λ€λ₯Έ λͺ λ Ήμ΄μ μ°λ κ°λ₯</li> <li class="feature-item"><i class="fas fa-check"></i><strong>Direct Code Gen:</strong> μνλ κΈ°λ₯μ λ§νλ©΄ μ½λλ₯Ό μμ±ν΄ μ€λλ€.</li> </ul> </div> </div> <div class="action-side"> <div class="detail-title">μ€μΉ λͺ λ Ήμ΄ (Node.js νμ)</div> <div class="code-window"> <div class="window-header"> <span class="window-title">TERMINAL</span> <button class="copy-btn" onclick="copyText('npm install -g @google/gemini-cli')">Copy</button> </div> <div class="code-content"> <span class="comment"># -g μ΅μ μ μ μ(Global) μ€μΉλ₯Ό μλ―Έν©λλ€</span> $ npm install -g @google/gemini-cli </div> </div> <a href="https://github.com/google-gemini/gemini-cli" target="_blank" class="btn-download" style="background: rgba(255,255,255,0.1); border:1px solid rgba(255,255,255,0.2);">GitHub μ μ₯μ <i class="fab fa-github"></i></a> <div class="detail-title" style="margin-top: 20px; margin-bottom: 10px;">νμ© μμ: AIμκ² μ§λ¬ΈνκΈ°</div> <div class="code-window"> <div class="window-header"> <span class="window-title">USAGE</span> </div> <div class="code-content"> <span class="comment"># ν°λ―Έλμμ λ°λ‘ μ§λ¬Έ</span> $ gemini "PythonμΌλ‘ νΌλ³΄λμΉ μμ΄ μ§μ€" </div> </div> </div> </div> </div> </div> <!-- Slide 7: Pandoc --> <div class="slide"> <div class="glass-panel"> <div class="grid-container"> <div class="content-side"> <div class="slide-header"> <div class="icon-badge" style="color: #fff;"><i class="fas fa-file-alt"></i></div> <h2>Pandoc</h2> </div> <p class="description"> "λ¬Έμ λ³νκ³μ μ€μμ€ μλ―Έ λμ΄ν"μ λλ€. AIκ° μμ±ν Markdown(.md) νμμ λ¬Έμλ₯Ό κΉλν Word(.docx), PDF, HTML λ³΄κ³ μλ‘ μ¦μ λ³νν΄ μ€λλ€. μμ, ν, μΈμ©κ΅¬ λ± λ³΅μ‘ν μμλ μλ²½νκ² μ μ§νλ©° λ³ννλ κ°λ ₯ν κΈ°λ₯μ μ 곡ν©λλ€. </p> <div class="detail-group"> <div class="detail-title"><i class="fas fa-copy"></i> μ£Όμ νμ©</div> <ul class="feature-list"> <li class="feature-item"><i class="fas fa-check"></i>κ°λ° λ¬Έμ(README.md)λ₯Ό κ³ κ°μ© λ§€λ΄μΌ(Word/PDF)λ‘ λ³ν</li> <li class="feature-item"><i class="fas fa-check"></i>Jupyter Notebookμ HTML 리ν¬νΈλ‘ λ³ν</li> </ul> </div> </div> <div class="action-side"> <a href="https://pandoc.org/installing.html" target="_blank" class="btn-download">Pandoc μ€μΉ κ°μ΄λ <i class="fas fa-book"></i></a> <div class="detail-title" style="margin-top: 20px; margin-bottom: 10px;">νμ© μμ: λ¬Έμ λ³ν</div> <div class="code-window"> <div class="window-header"> <span class="window-title">TERMINAL</span> <button class="copy-btn" onclick="copyText('pandoc input.md -o output.docx')">Copy</button> </div> <div class="code-content"> <span class="comment"># λ§ν¬λ€μ΄μ μλ λ¬Έμλ‘ λ³ν</span> $ pandoc input.md -o output.docx </div> </div> <div class="code-window" style="margin-top: 10px;"> <div class="window-header"> <span class="window-title">VERIFY</span> <button class="copy-btn" onclick="copyText('pandoc --version')">Copy</button> </div> <div class="code-content"> $ pandoc --version </div> </div> </div> </div> </div> </div> <!-- Slide 8: Final Check --> <div class="slide"> <div class="glass-panel" style="align-items: center;"> <div class="icon-badge" style="color: var(--accent-emerald); margin-bottom: 20px; width: 80px; height: 80px;"><i class="fas fa-check-double"></i></div> <h2 style="text-align: center;">System Verification</h2> <p class="description" style="text-align: center; max-width: 700px;"> λͺ¨λ μ€μΉκ° μλ£λμμ΅λλ€. ν°λ―Έλ(PowerShell λλ CMD)μ μ΄κ³ μλ λͺ λ Ήμ΄λ₯Ό μμλλ‘ μ λ ₯νμ¬ λͺ¨λ λκ΅¬κ° μ μμ μΌλ‘ μΈμλλμ§ νμΈνμΈμ. </p> <div class="summary-grid"> <div class="check-card"> <span>Visual Studio Code</span> <span class="check-cmd">code --version</span> </div> <div class="check-card"> <span>Python</span> <span class="check-cmd">python --version</span> </div> <div class="check-card"> <span>uv Package Manager</span> <span class="check-cmd">uv --version</span> </div> <div class="check-card"> <span>Node.js</span> <span class="check-cmd">node -v</span> </div> <div class="check-card"> <span>Gemini CLI</span> <span class="check-cmd">gemini --version</span> </div> <div class="check-card"> <span>Pandoc</span> <span class="check-cmd">pandoc --version</span> </div> </div> <button class="btn-download" style="width: auto; padding: 15px 40px; margin-top: 50px; background: rgba(255,255,255,0.1); border: 1px solid rgba(255,255,255,0.2);" onclick="currentSlide=0; updateSlide()"> <i class="fas fa-undo"></i> μ²μμΌλ‘ λμκ°κΈ° </button> </div> </div> </div> <!-- Navigation Dock --> <div class="nav-dock"> <button class="nav-arrow" onclick="prevSlide()"><i class="fas fa-chevron-left"></i></button> <span class="page-counter" id="pageIndicator">1 / 9</span> <button class="nav-arrow" onclick="nextSlide()"><i class="fas fa-chevron-right"></i></button> </div> <script> let currentSlide = 0; const slides = document.querySelectorAll('.slide'); const totalSlides = slides.length; const progressBar = document.getElementById('progressBar'); const pageIndicator = document.getElementById('pageIndicator'); function updateSlide() { slides.forEach((slide, index) => { slide.classList.remove('active'); if (index === currentSlide) { slide.classList.add('active'); } }); // Progress Bar const progress = ((currentSlide + 1) / totalSlides) * 100; progressBar.style.width = ${progress}%; // Page Indicator pageIndicator.textContent = ${currentSlide + 1} / ${totalSlides}; } function nextSlide() { if (currentSlide < totalSlides - 1) { currentSlide++; updateSlide(); } } function prevSlide() { if (currentSlide > 0) { currentSlide--; updateSlide(); } } function copyText(text) { navigator.clipboard.writeText(text).then(() => { // Visual feedback logic could be added here alert('ν΄λ¦½λ³΄λμ 볡μ¬λμμ΅λλ€: ' + text); }); } // Keyboard Navigation document.addEventListener('keydown', (e) => { if (e.key === 'ArrowRight' || e.key === ' ') nextSlide(); if (e.key === 'ArrowLeft') prevSlide(); }); // Initialize updateSlide(); </script> </body> </html>
Summary:
Please note that all contributions to freem are considered to be released under the Creative Commons Attribution-ShareAlike 4.0 (see
Freem:Copyrights
for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource.
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)