<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="rss.xsl"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Metin Karakus Blog</title>
        <link>https://m-karakus.github.io/blog</link>
        <description>Metin Karakus Blog</description>
        <lastBuildDate>Fri, 06 Mar 2026 00:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <item>
            <title><![CDATA[AI ile 10x Development — Pratik Rehber]]></title>
            <link>https://m-karakus.github.io/blog/ai-ile-10x-development</link>
            <guid>https://m-karakus.github.io/blog/ai-ile-10x-development</guid>
            <pubDate>Fri, 06 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[GitHub Copilot'tan terminal ajanlarına, prompt mühendisliğinden AI destekli code review'a — AI araçlarını günlük geliştirme iş akışına nasıl entegre edersiniz?]]></description>
            <content:encoded><![CDATA[<p>"10x developer" kavramı yıllardır var. Ama şimdiye kadar bu genellikle doğal yetenek veya yılların deneyimiyle açıklanıyordu. AI araçları bu denklemi değiştirdi: <strong>araç seçimi ve kullanım kalitesi, deneyim kadar belirleyici hale geldi.</strong></p>
<p>Bu yazı "AI iyi bir şey" düzeyinde genel bir övgü değil. Somut araçlar, somut kullanım senaryoları ve gerçekten fark yaratan pratikler.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="önce-dürüst-bir-değerlendirme">Önce Dürüst Bir Değerlendirme<a href="https://m-karakus.github.io/blog/ai-ile-10x-development#%C3%B6nce-d%C3%BCr%C3%BCst-bir-de%C4%9Ferlendirme" class="hash-link" aria-label="Direct link to Önce Dürüst Bir Değerlendirme" title="Direct link to Önce Dürüst Bir Değerlendirme" translate="no">​</a></h2>
<p>AI coding araçları her zaman doğru kod yazmaz. Halüsinasyon yapar, eski API kullanır, bağlamı kaçırır. Bunları görmezden gelen rehberler sizi hayal kırıklığına uğratır.</p>
<p>Gerçekçi beklenti şu:</p>
<ul>
<li class=""><strong>Boilerplate ve tekrar gerektiren kod:</strong> %80-90 verim artışı</li>
<li class=""><strong>Yeni domain / framework keşfi:</strong> %50-70 verim artışı</li>
<li class=""><strong>Karmaşık business logic:</strong> %20-40 verim artışı</li>
<li class=""><strong>Kritik güvenlik / performans kodu:</strong> Dikkatli review şart, kör güven tehlikeli</li>
</ul>
<p>AI bir çarpan. Temel olmadan çarpmak işe yaramaz — ama temel varsa etkisi büyük.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="araç-haritası">Araç Haritası<a href="https://m-karakus.github.io/blog/ai-ile-10x-development#ara%C3%A7-haritas%C4%B1" class="hash-link" aria-label="Direct link to Araç Haritası" title="Direct link to Araç Haritası" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="katman-1-ide-entegrasyonu-her-zaman-açık">Katman 1: IDE Entegrasyonu (Her Zaman Açık)<a href="https://m-karakus.github.io/blog/ai-ile-10x-development#katman-1-ide-entegrasyonu-her-zaman-a%C3%A7%C4%B1k" class="hash-link" aria-label="Direct link to Katman 1: IDE Entegrasyonu (Her Zaman Açık)" title="Direct link to Katman 1: IDE Entegrasyonu (Her Zaman Açık)" translate="no">​</a></h3>
<p>Bunlar background'da çalışan, her tuş vuruşunda devreye giren araçlar:</p>
<table><thead><tr><th>Araç</th><th>Güçlü Yön</th><th>Fiyat</th></tr></thead><tbody><tr><td><strong>GitHub Copilot</strong></td><td>En geniş dil/framework desteği, VS Code entegrasyonu</td><td>$10/ay</td></tr><tr><td><strong>Cursor</strong></td><td>Tam proje bağlamı, multi-file edit, chat</td><td>$20/ay</td></tr><tr><td><strong>Windsurf</strong></td><td>Cascade agenti, codebase-aware</td><td>$15/ay</td></tr><tr><td><strong>Codeium</strong></td><td>Ücretsiz tier güçlü, enterprise seçenek</td><td>Ücretsiz</td></tr></tbody></table>
<p>Bunlardan <strong>birini</strong> seçin ve derinlemesine öğrenin. Hepsini yüzeysel kullanmak hiçbirinden verim almamak demektir.</p>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="katman-2-sohbet--reasoning-zorlu-problemler-i̇çin">Katman 2: Sohbet / Reasoning (Zorlu Problemler İçin)<a href="https://m-karakus.github.io/blog/ai-ile-10x-development#katman-2-sohbet--reasoning-zorlu-problemler-i%CC%87%C3%A7in" class="hash-link" aria-label="Direct link to Katman 2: Sohbet / Reasoning (Zorlu Problemler İçin)" title="Direct link to Katman 2: Sohbet / Reasoning (Zorlu Problemler İçin)" translate="no">​</a></h3>
<p>IDE autocompletion'ın ötesine geçmeniz gerektiğinde:</p>
<table><thead><tr><th>Araç</th><th>Ne Zaman</th></tr></thead><tbody><tr><td><strong>Claude Sonnet/Opus</strong></td><td>Uzun kod analizi, mimari tartışma, dokümantasyon</td></tr><tr><td><strong>ChatGPT o1/o3</strong></td><td>Matematiksel/algoritmik problem çözme</td></tr><tr><td><strong>Gemini 1.5 Pro</strong></td><td>Çok büyük codebase'leri tek seferde analiz (1M token context)</td></tr></tbody></table>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="katman-3-terminal-ajanları-otomasyon">Katman 3: Terminal Ajanları (Otomasyon)<a href="https://m-karakus.github.io/blog/ai-ile-10x-development#katman-3-terminal-ajanlar%C4%B1-otomasyon" class="hash-link" aria-label="Direct link to Katman 3: Terminal Ajanları (Otomasyon)" title="Direct link to Katman 3: Terminal Ajanları (Otomasyon)" translate="no">​</a></h3>
<p>Dosya oluşturma, değiştirme, komut çalıştırma gibi multi-step görevler için:</p>
<ul>
<li class=""><strong>OpenCode</strong> — terminal TUI, model agnostik, açık kaynak</li>
<li class=""><strong>Claude Code</strong> — güçlü ajan yetenekleri, Anthropic ekosistemi</li>
<li class=""><strong>Aider</strong> — git-native, commit mesajlarını da AI yazar</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="pratik-1-completionı-düzgün-kullanmak">Pratik 1: Completion'ı Düzgün Kullanmak<a href="https://m-karakus.github.io/blog/ai-ile-10x-development#pratik-1-completion%C4%B1-d%C3%BCzg%C3%BCn-kullanmak" class="hash-link" aria-label="Direct link to Pratik 1: Completion'ı Düzgün Kullanmak" title="Direct link to Pratik 1: Completion'ı Düzgün Kullanmak" translate="no">​</a></h2>
<p>Çoğu geliştirici Copilot'u açıp önerilen kodu Tab ile kabul ediyor. Bu, aracın %20'sini kullanmak demektir.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="bağlamı-şekillendirin">Bağlamı Şekillendirin<a href="https://m-karakus.github.io/blog/ai-ile-10x-development#ba%C4%9Flam%C4%B1-%C5%9Fekillendirin" class="hash-link" aria-label="Direct link to Bağlamı Şekillendirin" title="Direct link to Bağlamı Şekillendirin" translate="no">​</a></h3>
<p>AI, <strong>dosyanın geri kalanına bakarak</strong> tamamlama üretir. Bunu bilinçli kullanın:</p>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># KÖTÜ: Bağlam yok, genel bir şey üretir</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">def</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">process</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># İYİ: Yorum ile bağlamı açıklayın</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Snowflake'ten müşteri verilerini çekip yaş gruplarına göre segmente et</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Sonucu {segment: [customer_id, ...]} formatında döndür</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">def</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">process_customer_segments</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">:</span><br></span></code></pre></div></div>
<p>İkinci örnekte Copilot çok daha isabetli bir tamamlama üretir.</p>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="çoklu-öneri-görüntüleme">Çoklu Öneri Görüntüleme<a href="https://m-karakus.github.io/blog/ai-ile-10x-development#%C3%A7oklu-%C3%B6neri-g%C3%B6r%C3%BCnt%C3%BCleme" class="hash-link" aria-label="Direct link to Çoklu Öneri Görüntüleme" title="Direct link to Çoklu Öneri Görüntüleme" translate="no">​</a></h3>
<p>Copilot'ta <code>Alt+]</code> / <code>Alt+[</code> ile alternatif önerilere bakın. İlk öneri her zaman en iyisi değildir.</p>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="yorum--kod-patterni">Yorum → Kod Pattern'i<a href="https://m-karakus.github.io/blog/ai-ile-10x-development#yorum--kod-patterni" class="hash-link" aria-label="Direct link to Yorum → Kod Pattern'i" title="Direct link to Yorum → Kod Pattern'i" translate="no">​</a></h3>
<p>Karmaşık bir işlevi yazmadan önce önce yorumları yazın, sonra Copilot'un doldurmasına izin verin:</p>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">def</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">calculate_customer_ltv</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">customer_id</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">str</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> lookback_days</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">int</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">365</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">-</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token builtin">float</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic"># 1. Son lookback_days içindeki tüm siparişleri çek</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic"># 2. İade edilen siparişleri filtrele</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic"># 3. Ağırlıklı ortalama ile LTV hesapla (son 90 gün 2x ağırlık)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic"># 4. Float olarak döndür, müşteri yoksa 0.0</span><br></span></code></pre></div></div>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="pratik-2-chati-doğru-kullanmak">Pratik 2: Chat'i Doğru Kullanmak<a href="https://m-karakus.github.io/blog/ai-ile-10x-development#pratik-2-chati-do%C4%9Fru-kullanmak" class="hash-link" aria-label="Direct link to Pratik 2: Chat'i Doğru Kullanmak" title="Direct link to Pratik 2: Chat'i Doğru Kullanmak" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="kötü-prompt-vs-i̇yi-prompt">Kötü Prompt vs İyi Prompt<a href="https://m-karakus.github.io/blog/ai-ile-10x-development#k%C3%B6t%C3%BC-prompt-vs-i%CC%87yi-prompt" class="hash-link" aria-label="Direct link to Kötü Prompt vs İyi Prompt" title="Direct link to Kötü Prompt vs İyi Prompt" translate="no">​</a></h3>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># KÖTÜ</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">"Bu kodu düzelt"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># İYİ</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">"Aşağıdaki dbt incremental modeli Snowflake'te çalışıyor ama</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">merge strategy'de duplicate row oluşturuyor.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">unique_key 'order_line_sk', incremental_strategy 'merge'.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Sorunun neden kaynaklandığını açıkla ve düzelt:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[kod]"</span><br></span></code></pre></div></div>
<p>Fark: bağlam (Snowflake, dbt, merge), belirti (duplicate), beklenti (açıkla + düzelt).</p>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="rol-atayın">Rol Atayın<a href="https://m-karakus.github.io/blog/ai-ile-10x-development#rol-atay%C4%B1n" class="hash-link" aria-label="Direct link to Rol Atayın" title="Direct link to Rol Atayın" translate="no">​</a></h3>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">"Sen senior bir veri mühendisisin. Bu dbt modelini</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">production'a almadan önce code review yapıyorsun.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Performans, güvenlik ve maintainability açısından</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">potansiyel sorunları listele:"</span><br></span></code></pre></div></div>
<p>Rol atamak, modelin yanıt kalitesini ve odağını belirgin şekilde iyileştirir.</p>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="adım-adım-düşündürün">Adım Adım Düşündürün<a href="https://m-karakus.github.io/blog/ai-ile-10x-development#ad%C4%B1m-ad%C4%B1m-d%C3%BC%C5%9F%C3%BCnd%C3%BCr%C3%BCn" class="hash-link" aria-label="Direct link to Adım Adım Düşündürün" title="Direct link to Adım Adım Düşündürün" translate="no">​</a></h3>
<p>Karmaşık problemlerde doğrudan cevap istemek yerine:</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">"Önce bu problemi çözmek için hangi yaklaşımları</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">kullanabileceğimizi listele. Sonra her birinin</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">avantaj ve dezavantajlarını karşılaştır.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Karar vermeden önce benim onayımı bekle."</span><br></span></code></pre></div></div>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="pratik-3-ai-destekli-code-review">Pratik 3: AI Destekli Code Review<a href="https://m-karakus.github.io/blog/ai-ile-10x-development#pratik-3-ai-destekli-code-review" class="hash-link" aria-label="Direct link to Pratik 3: AI Destekli Code Review" title="Direct link to Pratik 3: AI Destekli Code Review" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="commit-öncesi-otomatik-review">Commit Öncesi Otomatik Review<a href="https://m-karakus.github.io/blog/ai-ile-10x-development#commit-%C3%B6ncesi-otomatik-review" class="hash-link" aria-label="Direct link to Commit Öncesi Otomatik Review" title="Direct link to Commit Öncesi Otomatik Review" translate="no">​</a></h3>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># Son değişiklikleri AI'a review ettir</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">git diff HEAD | opencode "Bu diff'i security, performance</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">ve code style açısından review et. Kritik sorunları önce listele."</span><br></span></code></pre></div></div>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="spesifik-review-türleri">Spesifik Review Türleri<a href="https://m-karakus.github.io/blog/ai-ile-10x-development#spesifik-review-t%C3%BCrleri" class="hash-link" aria-label="Direct link to Spesifik Review Türleri" title="Direct link to Spesifik Review Türleri" translate="no">​</a></h3>
<p>Genel "bu kodu gözden geçir" yerine odaklı sorular:</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">"Bu SQL sorgusunda N+1 problemi var mı?"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">"Bu fonksiyonda race condition oluşabilecek bir senaryo var mı?"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">"Bu Pydantic model, eksik field geldiğinde nasıl davranır?"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">"Bu dbt modeli full refresh yapılırsa ne olur?"</span><br></span></code></pre></div></div>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="pratik-4-dokümantasyon-ve-test">Pratik 4: Dokümantasyon ve Test<a href="https://m-karakus.github.io/blog/ai-ile-10x-development#pratik-4-dok%C3%BCmantasyon-ve-test" class="hash-link" aria-label="Direct link to Pratik 4: Dokümantasyon ve Test" title="Direct link to Pratik 4: Dokümantasyon ve Test" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="dokümantasyonu-aia-bırakın">Dokümantasyonu AI'a Bırakın<a href="https://m-karakus.github.io/blog/ai-ile-10x-development#dok%C3%BCmantasyonu-aia-b%C4%B1rak%C4%B1n" class="hash-link" aria-label="Direct link to Dokümantasyonu AI'a Bırakın" title="Direct link to Dokümantasyonu AI'a Bırakın" translate="no">​</a></h3>
<p>Geliştirme bittikten sonra:</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">"Bu modülün docstring'lerini yaz. Google style.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Her fonksiyon için Args, Returns, Raises ve</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">bir kullanım örneği ekle."</span><br></span></code></pre></div></div>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="test-senaryosu-üretimi">Test Senaryosu Üretimi<a href="https://m-karakus.github.io/blog/ai-ile-10x-development#test-senaryosu-%C3%BCretimi" class="hash-link" aria-label="Direct link to Test Senaryosu Üretimi" title="Direct link to Test Senaryosu Üretimi" translate="no">​</a></h3>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">"Bu fonksiyon için pytest test senaryoları yaz.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Happy path, edge case'ler (boş liste, None, negatif sayı)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">ve bir exception test'i dahil et. Fixture kullan."</span><br></span></code></pre></div></div>
<p>AI'ın ürettiği testleri körü körüne kullanmayın — edge case'leri gözden geçirin, iş mantığına uygun olduğunu doğrulayın.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="pratik-5-veri-mühendisleri-i̇çin-özel-senaryolar">Pratik 5: Veri Mühendisleri İçin Özel Senaryolar<a href="https://m-karakus.github.io/blog/ai-ile-10x-development#pratik-5-veri-m%C3%BChendisleri-i%CC%87%C3%A7in-%C3%B6zel-senaryolar" class="hash-link" aria-label="Direct link to Pratik 5: Veri Mühendisleri İçin Özel Senaryolar" title="Direct link to Pratik 5: Veri Mühendisleri İçin Özel Senaryolar" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="dbt-modeli-hızlandırma">dbt Modeli Hızlandırma<a href="https://m-karakus.github.io/blog/ai-ile-10x-development#dbt-modeli-h%C4%B1zland%C4%B1rma" class="hash-link" aria-label="Direct link to dbt Modeli Hızlandırma" title="Direct link to dbt Modeli Hızlandırma" translate="no">​</a></h3>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">"Bu staging modelini analiz et:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">1. Eksik testleri _schema.yml formatında yaz</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">2. Incremental filter'ı 2-day buffer pattern'ine uygun hale getir</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">3. LowCardinality kullanılabilecek kolonları işaretle</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[model SQL'i]"</span><br></span></code></pre></div></div>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="sql-optimizasyonu">SQL Optimizasyonu<a href="https://m-karakus.github.io/blog/ai-ile-10x-development#sql-optimizasyonu" class="hash-link" aria-label="Direct link to SQL Optimizasyonu" title="Direct link to SQL Optimizasyonu" translate="no">​</a></h3>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">"Bu Snowflake sorgusu 45 saniye çalışıyor.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Execution plan'a bakarak nerede takıldığını tahmin et</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">ve optimize edilmiş versiyonu yaz:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[sorgu]"</span><br></span></code></pre></div></div>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="pipeline-hata-ayıklama">Pipeline Hata Ayıklama<a href="https://m-karakus.github.io/blog/ai-ile-10x-development#pipeline-hata-ay%C4%B1klama" class="hash-link" aria-label="Direct link to Pipeline Hata Ayıklama" title="Direct link to Pipeline Hata Ayıklama" translate="no">​</a></h3>
<p>Airflow veya benzeri bir orkestratörde hata aldığınızda:</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">"Bu Airflow DAG hata log'u:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[log]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">DAG kodu:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[kod]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Hatanın kök nedeni ne? Hangi task'ta, neden oluşuyor?</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Düzeltilmiş versiyonu yaz."</span><br></span></code></pre></div></div>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="dikkat-aiın-kör-noktaları">Dikkat: AI'ın Kör Noktaları<a href="https://m-karakus.github.io/blog/ai-ile-10x-development#dikkat-ai%C4%B1n-k%C3%B6r-noktalar%C4%B1" class="hash-link" aria-label="Direct link to Dikkat: AI'ın Kör Noktaları" title="Direct link to Dikkat: AI'ın Kör Noktaları" translate="no">​</a></h2>
<p>Bunlar için körü körüne güvenmeyin:</p>
<p><strong>Güvenlik:</strong> SQL injection, secret exposure, authentication logic — her zaman kendiniz review edin.</p>
<p><strong>Eski API'lar:</strong> Eğitim tarihinden sonra değişmiş kütüphaneler için hallüsinasyon yapabilir. Özellikle hızlı gelişen ekosistemler (LangChain, dbt yeni versiyonları) için dokümantasyonu kendiniz kontrol edin.</p>
<p><strong>Business logic:</strong> Domain bilgisi gerektiren kural hesaplamalar. "Müşteri LTV" şirket bazlı farklı tanımlar içerir, AI genel formül üretir.</p>
<p><strong>Performance tuning:</strong> Genel öneriler verir ama gerçek execution planı ve data distribution'ı bilemez.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="i̇ş-akışı-önerisi">İş Akışı Önerisi<a href="https://m-karakus.github.io/blog/ai-ile-10x-development#i%CC%87%C5%9F-ak%C4%B1%C5%9F%C4%B1-%C3%B6nerisi" class="hash-link" aria-label="Direct link to İş Akışı Önerisi" title="Direct link to İş Akışı Önerisi" translate="no">​</a></h2>
<p>Günlük geliştirme için önerilen düzen:</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">Sabah planlaması  →  AI ile task breakdown ("Bu feature'ı subtask'lara böl")</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         ↓</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Kod yazma         →  IDE completion (Copilot/Cursor) sürekli açık</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         ↓</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Takıldığında      →  Chat (Claude/ChatGPT) ile derinlemesine analiz</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         ↓</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Bitince           →  AI review ("Bu kodu security açısından gözden geçir")</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         ↓</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Test/Docs         →  AI ile test senaryoları ve docstring üret</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         ↓</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Commit            →  AI ile commit mesajı özeti</span><br></span></code></pre></div></div>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="gerçek-10x-nerede">Gerçek 10x Nerede?<a href="https://m-karakus.github.io/blog/ai-ile-10x-development#ger%C3%A7ek-10x-nerede" class="hash-link" aria-label="Direct link to Gerçek 10x Nerede?" title="Direct link to Gerçek 10x Nerede?" translate="no">​</a></h2>
<p>Araçlardan çok <strong>hangi işleri AI'a devredip hangilerini kendiniz yaptığınıza</strong> bağlı.</p>
<p>AI'a devredin:</p>
<ul>
<li class="">Boilerplate, tekrar eden kod</li>
<li class="">Bilinen pattern'lerin uygulaması</li>
<li class="">Dokümantasyon ve test senaryoları</li>
<li class="">Hata mesajı analizi</li>
<li class="">Format dönüşümleri (JSON → Pydantic model gibi)</li>
</ul>
<p>Kendiniz yapın:</p>
<ul>
<li class="">Sistem tasarımı ve mimari kararlar</li>
<li class="">Business logic'in doğrulanması</li>
<li class="">Güvenlik-kritik kod review'u</li>
<li class="">Performance darboğazlarının gerçek analizi</li>
</ul>
<p>Bu ayrımı doğru yapmak, AI kullanan bir geliştiriciyi sadece AI tab'ı açık tutan birinden ayırır.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="özet">Özet<a href="https://m-karakus.github.io/blog/ai-ile-10x-development#%C3%B6zet" class="hash-link" aria-label="Direct link to Özet" title="Direct link to Özet" translate="no">​</a></h2>
<p>10x development için AI kullanmak üç katmanlı bir pratik:</p>
<ol>
<li class=""><strong>IDE completion</strong> — her zaman açık, bağlamı şekillendirerek kullanın</li>
<li class=""><strong>Chat</strong> — odaklı, rol atanmış, adım adım promptlar</li>
<li class=""><strong>Terminal ajanlar</strong> — multi-file, multi-step görevler için otomasyon</li>
</ol>
<p>Araçlar hızla değişiyor. Ama temel prensipler değişmiyor: <strong>ne istediğinizi net ifade etmek, üretileni eleştirel gözle değerlendirmek ve AI'ı asistan olarak değil ortak olarak kullanmak.</strong></p>]]></content:encoded>
            <category>Artificial Intelligence</category>
            <category>Dev Tools</category>
            <category>Vibe Coding</category>
        </item>
        <item>
            <title><![CDATA[Vibe Coding Nedir? OpenCode ile Terminal'den AI Destekli Geliştirme]]></title>
            <link>https://m-karakus.github.io/blog/vibe-coding-nedir-opencode</link>
            <guid>https://m-karakus.github.io/blog/vibe-coding-nedir-opencode</guid>
            <pubDate>Sun, 01 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Andrej Karpathy'nin popülerleştirdiği "vibe coding" kavramı nedir, OpenCode ile terminal üzerinde nasıl AI destekli kod yazılır?]]></description>
            <content:encoded><![CDATA[<p>2025 yılının başında Andrej Karpathy bir tweet attı: <em>"There's a new kind of coding I call 'vibe coding'."</em> Bu kısa cümle, yazılım geliştirme dünyasında ciddi bir tartışma başlattı. Peki vibe coding gerçekten ne anlama geliyor ve terminal severlerin yeni favorisi OpenCode bu tablonun neresinde?</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="vibe-coding-nedir">Vibe Coding Nedir?<a href="https://m-karakus.github.io/blog/vibe-coding-nedir-opencode#vibe-coding-nedir" class="hash-link" aria-label="Direct link to Vibe Coding Nedir?" title="Direct link to Vibe Coding Nedir?" translate="no">​</a></h2>
<p>Karpathy'nin tanımıyla vibe coding: <strong>kodu anlamadan, sadece ne istediğini AI'ya anlatarak yazılım üretmek</strong>. Detayları takip etmiyorsunuz, hata mesajlarını okumuyorsunuz — AI'a yapıştırıyorsunuz, o düzeltiyor, devam ediyorsunuz.</p>
<blockquote>
<p><em>"I just see stuff, say stuff, run stuff, and copy-paste stuff, and it mostly works."</em> — Andrej Karpathy</p>
</blockquote>
<p>Bu tanım başlangıçta bir şaka gibi geldi. Ama arkasında gerçek bir gözlem var: <strong>AI araçları artık o kadar iyi ki, bir şeyin nasıl çalıştığını tam anlamadan da çalışan kod üretmek mümkün.</strong></p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="vibe-coding-tehlike-mi-fırsat-mı">Vibe Coding: Tehlike mi, Fırsat mı?<a href="https://m-karakus.github.io/blog/vibe-coding-nedir-opencode#vibe-coding-tehlike-mi-f%C4%B1rsat-m%C4%B1" class="hash-link" aria-label="Direct link to Vibe Coding: Tehlike mi, Fırsat mı?" title="Direct link to Vibe Coding: Tehlike mi, Fırsat mı?" translate="no">​</a></h2>
<p>İki keskin yorum var:</p>
<p><strong>Eleştirenler:</strong> "Anlamadığın kodu production'a sokarsın, güvenlik açıkları yaratırsın, debug edemezsin."</p>
<p><strong>Savunanlar:</strong> "Prototype hızı inanılmaz artıyor. Bir fikri saatler içinde ayağa kaldırabiliyorsun. Temel mantığı anlayıp detayları AI'a bırakmak yeni bir beceri."</p>
<p>Gerçek ikisinin arasında bir yerde. Vibe coding <strong>keşif, prototipleme ve tekrarlayan görevler</strong> için güçlü bir yaklaşım. Kritik production sistemlerinde körü körüne uygulamak ise hâlâ riskli.</p>
<p>Önemli olan şu: AI araçlarını pasif kullanmak ile aktif kullanmak arasındaki fark. En iyi geliştiriciler AI'ı bir oracle gibi değil, <strong>hızlı bir çalışma arkadaşı</strong> gibi kullanıyor.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="araç-ekosistemi">Araç Ekosistemi<a href="https://m-karakus.github.io/blog/vibe-coding-nedir-opencode#ara%C3%A7-ekosistemi" class="hash-link" aria-label="Direct link to Araç Ekosistemi" title="Direct link to Araç Ekosistemi" translate="no">​</a></h2>
<p>2025-2026 itibarıyla AI coding araçları iki ana kategoriye ayrıldı:</p>
<table><thead><tr><th>Kategori</th><th>Araçlar</th></tr></thead><tbody><tr><td><strong>IDE entegrasyonu</strong></td><td>GitHub Copilot, Cursor, Windsurf, Codeium</td></tr><tr><td><strong>Terminal / agentic</strong></td><td>Claude Code, OpenCode, Aider, Goose</td></tr></tbody></table>
<p>IDE araçları zaten yaygın. Terminal tabanlı araçlar ise özellikle backend ve veri mühendisleri arasında hızla popülerleşiyor — çünkü IDE açmadan, doğrudan terminalden çalışıyorlar.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="opencode-nedir">OpenCode Nedir?<a href="https://m-karakus.github.io/blog/vibe-coding-nedir-opencode#opencode-nedir" class="hash-link" aria-label="Direct link to OpenCode Nedir?" title="Direct link to OpenCode Nedir?" translate="no">​</a></h2>
<p><a href="https://github.com/sst/opencode" target="_blank" rel="noopener noreferrer" class="">OpenCode</a>, SST ekibi tarafından geliştirilen <strong>terminal tabanlı, açık kaynaklı bir AI coding ajanıdır</strong>. Go ile yazılmıştır, hızlıdır ve terminal içinde tam bir TUI (Text User Interface) sunar.</p>
<p>Neden öne çıkıyor:</p>
<ul>
<li class=""><strong>Model agnostik</strong>: Claude, GPT-4o, Gemini, yerel modeller (Ollama) destekler</li>
<li class=""><strong>Bağlam farkındalığı</strong>: Proje dosyalarını, git history'yi okur</li>
<li class=""><strong>Terminal native</strong>: IDE gerektirmez, SSH üzerinden uzak sunucularda da çalışır</li>
<li class=""><strong>Açık kaynak</strong>: MIT lisansı, kendi modelinizi bağlayabilirsiniz</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="opencode-kurulumu">OpenCode Kurulumu<a href="https://m-karakus.github.io/blog/vibe-coding-nedir-opencode#opencode-kurulumu" class="hash-link" aria-label="Direct link to OpenCode Kurulumu" title="Direct link to OpenCode Kurulumu" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="macos--linux">macOS / Linux<a href="https://m-karakus.github.io/blog/vibe-coding-nedir-opencode#macos--linux" class="hash-link" aria-label="Direct link to macOS / Linux" title="Direct link to macOS / Linux" translate="no">​</a></h3>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">curl -fsSL https://opencode.ai/install | bash</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="npm-ile">npm ile<a href="https://m-karakus.github.io/blog/vibe-coding-nedir-opencode#npm-ile" class="hash-link" aria-label="Direct link to npm ile" title="Direct link to npm ile" translate="no">​</a></h3>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">npm install -g opencode-ai</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="doğrulama">Doğrulama<a href="https://m-karakus.github.io/blog/vibe-coding-nedir-opencode#do%C4%9Frulama" class="hash-link" aria-label="Direct link to Doğrulama" title="Direct link to Doğrulama" translate="no">​</a></h3>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">opencode --version</span><br></span></code></pre></div></div>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="temel-kullanım">Temel Kullanım<a href="https://m-karakus.github.io/blog/vibe-coding-nedir-opencode#temel-kullan%C4%B1m" class="hash-link" aria-label="Direct link to Temel Kullanım" title="Direct link to Temel Kullanım" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="başlatmak">Başlatmak<a href="https://m-karakus.github.io/blog/vibe-coding-nedir-opencode#ba%C5%9Flatmak" class="hash-link" aria-label="Direct link to Başlatmak" title="Direct link to Başlatmak" translate="no">​</a></h3>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># Proje dizininde başlat</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">cd my-project</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">opencode</span><br></span></code></pre></div></div>
<p>TUI açılır. Sol panel dosya ağacı, sağ panel konuşma arayüzü.</p>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="model-seçimi">Model Seçimi<a href="https://m-karakus.github.io/blog/vibe-coding-nedir-opencode#model-se%C3%A7imi" class="hash-link" aria-label="Direct link to Model Seçimi" title="Direct link to Model Seçimi" translate="no">​</a></h3>
<p>İlk kurulumda veya sonradan model seçebilirsiniz:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">opencode --model claude-opus-4-5</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">opencode --model gpt-4o</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">opencode --model ollama/llama3.2  # yerel model</span><br></span></code></pre></div></div>
<p><code>~/.config/opencode/config.json</code> ile varsayılan model kalıcı olarak ayarlanır:</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"model"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"claude-sonnet-4-5"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"providers"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"anthropic"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"apiKey"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"sk-ant-..."</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="pratik-kullanım-senaryoları">Pratik Kullanım Senaryoları<a href="https://m-karakus.github.io/blog/vibe-coding-nedir-opencode#pratik-kullan%C4%B1m-senaryolar%C4%B1" class="hash-link" aria-label="Direct link to Pratik Kullanım Senaryoları" title="Direct link to Pratik Kullanım Senaryoları" translate="no">​</a></h3>
<p><strong>Yeni bir özellik yazmak:</strong></p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">&gt; Bu projedeki fct_orders modelini incele ve customer_lifetime_value </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  hesaplayan yeni bir mart modeli yaz. dbt standartlarına uy.</span><br></span></code></pre></div></div>
<p>OpenCode projeyi tarar, mevcut modelleri okur, bağlama uygun kod yazar.</p>
<hr>
<p><strong>Hata ayıklamak:</strong></p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">&gt; Bu hata mesajını al ve neden oluştuğunu açıkla, düzelt:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  KeyError: 'customer_sk' - line 47 in fct_orders.sql</span><br></span></code></pre></div></div>
<hr>
<p><strong>Refactor:</strong></p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">&gt; stg_crm__orders.sql dosyasındaki tekrar eden CTE'leri bir makroya çıkar</span><br></span></code></pre></div></div>
<hr>
<p><strong>Test yazmak:</strong></p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">&gt; dim_customer modeli için dbt test tanımlarını _schema.yml'e ekle.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  surrogate key, natural key ve email sütunları için.</span><br></span></code></pre></div></div>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="slash-komutları">Slash Komutları<a href="https://m-karakus.github.io/blog/vibe-coding-nedir-opencode#slash-komutlar%C4%B1" class="hash-link" aria-label="Direct link to Slash Komutları" title="Direct link to Slash Komutları" translate="no">​</a></h2>
<p>OpenCode içinde <code>/</code> ile başlayan komutlar:</p>
<table><thead><tr><th>Komut</th><th>Ne Yapar</th></tr></thead><tbody><tr><td><code>/add &lt;dosya&gt;</code></td><td>Belirli dosyayı bağlama ekle</td></tr><tr><td><code>/clear</code></td><td>Konuşma geçmişini temizle</td></tr><tr><td><code>/model</code></td><td>Model değiştir</td></tr><tr><td><code>/diff</code></td><td>Son yapılan değişiklikleri göster</td></tr><tr><td><code>/undo</code></td><td>Son değişikliği geri al</td></tr><tr><td><code>/compact</code></td><td>Uzun konuşmayı özetle (token tasarrufu)</td></tr></tbody></table>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="opencode-vs-cursor-vs-claude-code">OpenCode vs Cursor vs Claude Code<a href="https://m-karakus.github.io/blog/vibe-coding-nedir-opencode#opencode-vs-cursor-vs-claude-code" class="hash-link" aria-label="Direct link to OpenCode vs Cursor vs Claude Code" title="Direct link to OpenCode vs Cursor vs Claude Code" translate="no">​</a></h2>
<table><thead><tr><th></th><th>OpenCode</th><th>Cursor</th><th>Claude Code</th></tr></thead><tbody><tr><td><strong>Arayüz</strong></td><td>Terminal TUI</td><td>IDE (VS Code fork)</td><td>Terminal</td></tr><tr><td><strong>Model seçimi</strong></td><td>Çoklu (agnostik)</td><td>Sınırlı</td><td>Claude only</td></tr><tr><td><strong>Açık kaynak</strong></td><td>Evet</td><td>Hayır</td><td>Hayır</td></tr><tr><td><strong>Fiyat</strong></td><td>Ücretsiz (kendi API key)</td><td>$20/ay</td><td>Kullanım başına</td></tr><tr><td><strong>SSH / uzak</strong></td><td>Evet</td><td>Sınırlı</td><td>Evet</td></tr><tr><td><strong>IDE bağımlılığı</strong></td><td>Yok</td><td>Var</td><td>Yok</td></tr></tbody></table>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="veri-mühendisleri-i̇çin-vibe-coding">Veri Mühendisleri İçin Vibe Coding<a href="https://m-karakus.github.io/blog/vibe-coding-nedir-opencode#veri-m%C3%BChendisleri-i%CC%87%C3%A7in-vibe-coding" class="hash-link" aria-label="Direct link to Veri Mühendisleri İçin Vibe Coding" title="Direct link to Veri Mühendisleri İçin Vibe Coding" translate="no">​</a></h2>
<p>Veri projelerinde vibe coding en çok şu alanlarda verim sağlıyor:</p>
<p><strong>dbt modelleri:</strong> "Bu staging modelini inceleyip fact tablosuna dönüştür" — OpenCode mevcut stili okur, tutarlı kod üretir.</p>
<p><strong>SQL optimizasyonu:</strong> Yavaş bir sorguyu yapıştırıp "Bu sorguyu ClickHouse için optimize et, PREWHERE kullan" demek yeterli.</p>
<p><strong>YAML sıkıcılığı:</strong> dbt <code>_schema.yml</code> dosyaları yazmak zaman alıcı. "Bu SQL modelindeki tüm kolonlar için schema YAML üret" ile saniyeler içinde biter.</p>
<p><strong>Boilerplate:</strong> Pipeline kodu, Airflow DAG iskeletleri, test dosyaları — bunları AI'a bırakmak mantıklı.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="özet">Özet<a href="https://m-karakus.github.io/blog/vibe-coding-nedir-opencode#%C3%B6zet" class="hash-link" aria-label="Direct link to Özet" title="Direct link to Özet" translate="no">​</a></h2>
<p>Vibe coding, "AI'a bırak, sen sadece ne istediğini bil" yaklaşımı. Tehlikeli mi? Yanlış ellerde evet. Güçlü mü? Doğru kullanıldığında kesinlikle.</p>
<p>OpenCode bu yaklaşımın terminal-native, model-agnostik ve açık kaynak versiyonu. IDE açmadan, SSH üzerinden, istediğiniz modelle çalışıyor.</p>
<p><strong>Önerilen başlangıç noktası:</strong> Gerçek bir proje değil, bir side project veya yerel deney ortamında başlayın. Neyi yaptığını anlayın, sonra asıl işinize entegre edin.</p>]]></content:encoded>
            <category>Artificial Intelligence</category>
            <category>Dev Tools</category>
            <category>Vibe Coding</category>
        </item>
        <item>
            <title><![CDATA[Docker Nedir? Konteyner Teknolojisine Giriş]]></title>
            <link>https://m-karakus.github.io/blog/docker-nedir</link>
            <guid>https://m-karakus.github.io/blog/docker-nedir</guid>
            <pubDate>Tue, 10 Feb 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Docker'ın ne olduğunu, neden bu kadar yaygınlaştığını ve temel kavramlarını pratik örneklerle öğrenin.]]></description>
            <content:encoded><![CDATA[<p>Bir uygulamayı geliştirdiniz, kendi makinenizde mükemmel çalışıyor. Sunucuya aldınız — çalışmıyor. Python versiyonu farklı, bir kütüphane eksik, işletim sistemi farklı davranıyor. Docker tam olarak bu problemi çözmek için var.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="temel-sorun-bende-çalışıyor">Temel Sorun: "Bende Çalışıyor"<a href="https://m-karakus.github.io/blog/docker-nedir#temel-sorun-bende-%C3%A7al%C4%B1%C5%9F%C4%B1yor" class="hash-link" aria-label="Direct link to Temel Sorun: &quot;Bende Çalışıyor&quot;" title="Direct link to Temel Sorun: &quot;Bende Çalışıyor&quot;" translate="no">​</a></h2>
<p>Geleneksel yazılım dağıtımında uygulama ve çalışma ortamı birbirinden ayrıdır:</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">Geliştirici makinesi:  Python 3.11, pandas 2.0, libpq-dev kurulu</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Üretim sunucusu:       Python 3.9,  pandas 1.5, libpq-dev yok</span><br></span></code></pre></div></div>
<p>Sonuç: Uygulama geliştirici makinesinde çalışır, sunucuda çalışmaz.</p>
<p>Docker bu sorunu şu şekilde çözer: <strong>uygulamayı ve çalışması için gereken her şeyi birlikte paketler</strong>.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="docker-nedir">Docker Nedir?<a href="https://m-karakus.github.io/blog/docker-nedir#docker-nedir" class="hash-link" aria-label="Direct link to Docker Nedir?" title="Direct link to Docker Nedir?" translate="no">​</a></h2>
<p>Docker, uygulamaları <strong>container</strong> adı verilen izole paketler içinde çalıştırmaya yarayan bir platformdur.</p>
<p>Container; uygulamanın kaynak kodunu, bağımlılıklarını, sistem kütüphanelerini ve çalışma zamanını tek bir birim olarak içerir. Bu container her makinede — geliştirici laptopunda, CI sunucusunda, bulut ortamında — birebir aynı şekilde çalışır.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="container-vs-sanal-makine-vm">Container vs Sanal Makine (VM)<a href="https://m-karakus.github.io/blog/docker-nedir#container-vs-sanal-makine-vm" class="hash-link" aria-label="Direct link to Container vs Sanal Makine (VM)" title="Direct link to Container vs Sanal Makine (VM)" translate="no">​</a></h2>
<p>Container'lar sık sık sanal makinelerle karıştırılır. İkisi de izolasyon sağlar ama çok farklı şekillerde:</p>
<table><thead><tr><th></th><th>Sanal Makine (VM)</th><th>Container</th></tr></thead><tbody><tr><td><strong>İzolasyon</strong></td><td>Tam işletim sistemi</td><td>Süreç seviyesi</td></tr><tr><td><strong>Boyut</strong></td><td>Gigabyte'lar</td><td>Megabyte'lar</td></tr><tr><td><strong>Başlama süresi</strong></td><td>Dakikalar</td><td>Saniyeler (hatta milisaniyeler)</td></tr><tr><td><strong>Kaynak kullanımı</strong></td><td>Yüksek</td><td>Düşük</td></tr><tr><td><strong>Taşınabilirlik</strong></td><td>Zor</td><td>Kolay</td></tr></tbody></table>
<p>VM, gerçek bir bilgisayarın tamamını simüle eder. Container ise host işletim sisteminin çekirdeğini paylaşır ve sadece uygulamanın ihtiyaç duyduğu katmanları izole eder.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="temel-kavramlar">Temel Kavramlar<a href="https://m-karakus.github.io/blog/docker-nedir#temel-kavramlar" class="hash-link" aria-label="Direct link to Temel Kavramlar" title="Direct link to Temel Kavramlar" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="image">Image<a href="https://m-karakus.github.io/blog/docker-nedir#image" class="hash-link" aria-label="Direct link to Image" title="Direct link to Image" translate="no">​</a></h3>
<p>Image, container'ın şablonudur. İçinde uygulamanın çalışması için gereken her şey bulunur: işletim sistemi katmanı, bağımlılıklar, uygulama kodu, başlatma komutu.</p>
<p>Image'lar <code>Dockerfile</code> ile tanımlanır ve değişmezdir (immutable).</p>
<div class="language-dockerfile codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-dockerfile codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># Bu bir Dockerfile — image'ın tarifi</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">FROM python:3.11-slim</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">WORKDIR /app</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">COPY requirements.txt .</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">RUN pip install --no-cache-dir -r requirements.txt</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">COPY . .</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">CMD ["python", "main.py"]</span><br></span></code></pre></div></div>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="container">Container<a href="https://m-karakus.github.io/blog/docker-nedir#container" class="hash-link" aria-label="Direct link to Container" title="Direct link to Container" translate="no">​</a></h3>
<p>Container, çalışan bir image örneğidir. Aynı image'dan istediğiniz kadar container başlatabilirsiniz.</p>
<p>Image → Container ilişkisi, sınıf → nesne (class → instance) ilişkisine benzer.</p>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="registry">Registry<a href="https://m-karakus.github.io/blog/docker-nedir#registry" class="hash-link" aria-label="Direct link to Registry" title="Direct link to Registry" translate="no">​</a></h3>
<p>Image'ların depolandığı ve paylaşıldığı yer. En yaygın registry <a href="https://hub.docker.com/" target="_blank" rel="noopener noreferrer" class="">Docker Hub</a>'dır. Binlerce hazır image barındırır: <code>python</code>, <code>postgres</code>, <code>nginx</code>, <code>clickhouse</code> gibi.</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># Docker Hub'dan resmi Python image'ını indir</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">docker pull python:3.11-slim</span><br></span></code></pre></div></div>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="i̇lk-docker-komutları">İlk Docker Komutları<a href="https://m-karakus.github.io/blog/docker-nedir#i%CC%87lk-docker-komutlar%C4%B1" class="hash-link" aria-label="Direct link to İlk Docker Komutları" title="Direct link to İlk Docker Komutları" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="image-build-etmek">Image Build Etmek<a href="https://m-karakus.github.io/blog/docker-nedir#image-build-etmek" class="hash-link" aria-label="Direct link to Image Build Etmek" title="Direct link to Image Build Etmek" translate="no">​</a></h3>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># Bulunduğunuz dizindeki Dockerfile'dan image oluştur</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">docker build -t benim-uygulama:1.0 .</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="container-başlatmak">Container Başlatmak<a href="https://m-karakus.github.io/blog/docker-nedir#container-ba%C5%9Flatmak" class="hash-link" aria-label="Direct link to Container Başlatmak" title="Direct link to Container Başlatmak" translate="no">​</a></h3>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># Image'dan container başlat</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">docker run benim-uygulama:1.0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># Arka planda (detached) başlat</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">docker run -d benim-uygulama:1.0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># Port yönlendirme ile başlat</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># Host'un 8080 portu → Container'ın 80 portuna</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">docker run -d -p 8080:80 nginx</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="çalışan-containerları-görmek">Çalışan Container'ları Görmek<a href="https://m-karakus.github.io/blog/docker-nedir#%C3%A7al%C4%B1%C5%9Fan-containerlar%C4%B1-g%C3%B6rmek" class="hash-link" aria-label="Direct link to Çalışan Container'ları Görmek" title="Direct link to Çalışan Container'ları Görmek" translate="no">​</a></h3>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">docker ps</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="containera-bağlanmak">Container'a Bağlanmak<a href="https://m-karakus.github.io/blog/docker-nedir#containera-ba%C4%9Flanmak" class="hash-link" aria-label="Direct link to Container'a Bağlanmak" title="Direct link to Container'a Bağlanmak" translate="no">​</a></h3>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">docker exec -it &lt;container_id&gt; bash</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="containerı-durdurmak-ve-silmek">Container'ı Durdurmak ve Silmek<a href="https://m-karakus.github.io/blog/docker-nedir#container%C4%B1-durdurmak-ve-silmek" class="hash-link" aria-label="Direct link to Container'ı Durdurmak ve Silmek" title="Direct link to Container'ı Durdurmak ve Silmek" translate="no">​</a></h3>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">docker stop &lt;container_id&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">docker rm &lt;container_id&gt;</span><br></span></code></pre></div></div>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="dockerfile-yazımı">Dockerfile Yazımı<a href="https://m-karakus.github.io/blog/docker-nedir#dockerfile-yaz%C4%B1m%C4%B1" class="hash-link" aria-label="Direct link to Dockerfile Yazımı" title="Direct link to Dockerfile Yazımı" translate="no">​</a></h2>
<p>Katmanlı yapı Docker'ın en önemli özelliklerinden biridir. Her <code>RUN</code>, <code>COPY</code>, <code>ADD</code> komutu yeni bir katman oluşturur. Docker bu katmanları cache'ler — değişmeyen katmanlar her build'de yeniden oluşturulmaz.</p>
<div class="language-dockerfile codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-dockerfile codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">FROM python:3.11-slim</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># Sistem bağımlılıkları — nadiren değişir, önce koy</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">RUN apt-get update &amp;&amp; apt-get install -y \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    libpq-dev \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    &amp;&amp; rm -rf /var/lib/apt/lists/*</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">WORKDIR /app</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># requirements.txt — uygulama kodundan önce kopyala</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># Böylece sadece bağımlılıklar değiştiğinde pip install çalışır</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">COPY requirements.txt .</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">RUN pip install --no-cache-dir -r requirements.txt</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># Uygulama kodu — en sık değişen katman, en sona koy</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">COPY . .</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">CMD ["python", "main.py"]</span><br></span></code></pre></div></div>
<p><strong>Kötü örnek</strong> — her build'de tüm pip install yeniden çalışır:</p>
<div class="language-dockerfile codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-dockerfile codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># KÖTÜ: Her şeyi kopyala, sonra install et</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">COPY . .</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">RUN pip install -r requirements.txt</span><br></span></code></pre></div></div>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="docker-compose-çoklu-servis">Docker Compose: Çoklu Servis<a href="https://m-karakus.github.io/blog/docker-nedir#docker-compose-%C3%A7oklu-servis" class="hash-link" aria-label="Direct link to Docker Compose: Çoklu Servis" title="Direct link to Docker Compose: Çoklu Servis" translate="no">​</a></h2>
<p>Gerçek projeler genellikle birden fazla servise ihtiyaç duyar: uygulama + veritabanı + cache gibi. <code>docker-compose.yml</code> bu servisleri birlikte tanımlar ve yönetir.</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># docker-compose.yml</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">version</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'3.8'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">services</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">app</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">build</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> .</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">ports</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"8000:8000"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">environment</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> DATABASE_URL=postgresql</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//user</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">pass@db</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">5432/mydb</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">depends_on</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> db</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">db</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">image</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> postgres</span><span class="token punctuation" style="color:#393A34">:</span><span class="token number" style="color:#36acaa">15</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">environment</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">POSTGRES_USER</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> user</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">POSTGRES_PASSWORD</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> pass</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">POSTGRES_DB</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> mydb</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">volumes</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> postgres_data</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">/var/lib/postgresql/data</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">volumes</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  postgres_data</span><span class="token punctuation" style="color:#393A34">:</span><br></span></code></pre></div></div>
<p>Tüm stack'i başlatmak için:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">docker compose up -d</span><br></span></code></pre></div></div>
<p>Durdurmak için:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">docker compose down</span><br></span></code></pre></div></div>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="volume-veriyi-kalıcı-hale-getirmek">Volume: Veriyi Kalıcı Hale Getirmek<a href="https://m-karakus.github.io/blog/docker-nedir#volume-veriyi-kal%C4%B1c%C4%B1-hale-getirmek" class="hash-link" aria-label="Direct link to Volume: Veriyi Kalıcı Hale Getirmek" title="Direct link to Volume: Veriyi Kalıcı Hale Getirmek" translate="no">​</a></h2>
<p>Container'lar stateless'tır — container silindiğinde içindeki veri de gider. Veriyi kalıcı tutmak için <strong>volume</strong> kullanılır.</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># Host dizinini container'a bağla</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">docker run -v /host/data:/container/data postgres:15</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># Docker tarafından yönetilen named volume</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">docker run -v postgres_data:/var/lib/postgresql/data postgres:15</span><br></span></code></pre></div></div>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="veri-mühendisliğinde-docker">Veri Mühendisliğinde Docker<a href="https://m-karakus.github.io/blog/docker-nedir#veri-m%C3%BChendisli%C4%9Finde-docker" class="hash-link" aria-label="Direct link to Veri Mühendisliğinde Docker" title="Direct link to Veri Mühendisliğinde Docker" translate="no">​</a></h2>
<p>Veri projelerinde Docker özellikle şu durumlarda kritik hale gelir:</p>
<ul>
<li class=""><strong>Yerel ClickHouse / PostgreSQL</strong>: Gerçek veritabanını local olarak dakikalar içinde ayağa kaldırın</li>
<li class=""><strong>dbt geliştirme</strong>: Tüm dbt bağımlılıklarını izole tutun</li>
<li class=""><strong>Airflow</strong>: Docker Compose ile tam Airflow stack'i local'de çalıştırın</li>
<li class=""><strong>Spark</strong>: PySpark ortamını versiyonlayın, Java/Scala çakışmalarından kaçının</li>
</ul>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># ClickHouse'u local'de başlat</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">docker run -d \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  --name clickhouse-local \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  -p 8123:8123 \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  -p 9000:9000 \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  clickhouse/clickhouse-server:latest</span><br></span></code></pre></div></div>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="özet">Özet<a href="https://m-karakus.github.io/blog/docker-nedir#%C3%B6zet" class="hash-link" aria-label="Direct link to Özet" title="Direct link to Özet" translate="no">​</a></h2>
<table><thead><tr><th>Kavram</th><th>Açıklama</th></tr></thead><tbody><tr><td><strong>Image</strong></td><td>Uygulamanın çalışma ortamını tanımlayan şablon</td></tr><tr><td><strong>Container</strong></td><td>Çalışan image örneği</td></tr><tr><td><strong>Dockerfile</strong></td><td>Image'ı oluşturan tarif dosyası</td></tr><tr><td><strong>Registry</strong></td><td>Image'ların depolandığı merkez (Docker Hub)</td></tr><tr><td><strong>Volume</strong></td><td>Container dışında tutulan kalıcı veri</td></tr><tr><td><strong>Docker Compose</strong></td><td>Çoklu container'ı birlikte yöneten araç</td></tr></tbody></table>
<p>Docker öğrenmek, modern yazılım geliştirmede artık temel bir beceri haline geldi. Geliştirme ortamı kurulumundan CI/CD pipeline'larına, yerel testlerden üretim dağıtımına kadar her aşamada karşınıza çıkacak.</p>
<p>Bir sonraki adım: <a class="" href="https://m-karakus.github.io/blog/development-containers">Dev Containers ile geliştirme ortamınızı Docker üzerine kurun</a>.</p>]]></content:encoded>
            <category>Docker</category>
            <category>Containers</category>
            <category>Dev Tools</category>
        </item>
        <item>
            <title><![CDATA[Dev Containers ile Tekrarlanabilir Geliştirme Ortamı Nasıl Kurulur?]]></title>
            <link>https://m-karakus.github.io/blog/development-containers</link>
            <guid>https://m-karakus.github.io/blog/development-containers</guid>
            <pubDate>Thu, 29 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[VS Code ve Dev Containers kullanarak her makinede aynı çalışan, izole ve paylaşılabilir bir geliştirme ortamı oluşturun.]]></description>
            <content:encoded><![CDATA[<p>"Bende çalışıyor" problemi yazılım geliştirmenin en klasik sorunlarından biri. Dev Containers bu sorunu ortadan kaldırır: geliştirme ortamının kendisi de kod gibi versiyon kontrolüne girer ve her makinede birebir aynı şekilde ayağa kalkar.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="dev-container-nedir">Dev Container Nedir?<a href="https://m-karakus.github.io/blog/development-containers#dev-container-nedir" class="hash-link" aria-label="Direct link to Dev Container Nedir?" title="Direct link to Dev Container Nedir?" translate="no">​</a></h2>
<p>Dev Container, geliştirme ortamını bir Docker container'ı içinde tanımlayan bir standarttır. Projenin kaynak kodunda <code>.devcontainer/</code> klasörü altında bir <code>devcontainer.json</code> dosyası bulunur. VS Code veya GitHub Codespaces bu dosyayı okuyarak container'ı otomatik olarak oluşturur ve geliştirme oturumunu doğrudan bu container'ın içinde açar.</p>
<p>Sonuç: Python versiyonu, uzantılar, environment variable'lar, port yönlendirmeleri — hepsi kod olarak tanımlı, hepsi takım genelinde aynı.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="neden-dev-container-kullanmalısınız">Neden Dev Container Kullanmalısınız?<a href="https://m-karakus.github.io/blog/development-containers#neden-dev-container-kullanmal%C4%B1s%C4%B1n%C4%B1z" class="hash-link" aria-label="Direct link to Neden Dev Container Kullanmalısınız?" title="Direct link to Neden Dev Container Kullanmalısınız?" translate="no">​</a></h2>
<table><thead><tr><th>Sorun</th><th>Dev Container Çözümü</th></tr></thead><tbody><tr><td>"Bende çalışıyor ama CI'da çalışmıyor"</td><td>Container her yerde aynı</td></tr><tr><td>Yeni geliştirici onboarding'i saatler alıyor</td><td><code>git clone</code> + container aç = hazır</td></tr><tr><td>Farklı projeler çakışan Python/Node versiyonları kullanıyor</td><td>Her proje izole container'da</td></tr><tr><td>"Hangi uzantıyı kurman gerekiyor?" sorusu</td><td>Uzantılar <code>devcontainer.json</code>'da tanımlı</td></tr></tbody></table>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="kurulum">Kurulum<a href="https://m-karakus.github.io/blog/development-containers#kurulum" class="hash-link" aria-label="Direct link to Kurulum" title="Direct link to Kurulum" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="gereksinimler">Gereksinimler<a href="https://m-karakus.github.io/blog/development-containers#gereksinimler" class="hash-link" aria-label="Direct link to Gereksinimler" title="Direct link to Gereksinimler" translate="no">​</a></h3>
<ul>
<li class=""><a href="https://www.docker.com/products/docker-desktop/" target="_blank" rel="noopener noreferrer" class="">Docker Desktop</a> (Windows/macOS) veya Docker Engine (Linux)</li>
<li class=""><a href="https://code.visualstudio.com/" target="_blank" rel="noopener noreferrer" class="">VS Code</a></li>
<li class="">VS Code <strong>Dev Containers</strong> uzantısı (<code>ms-vscode-remote.remote-containers</code>)</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="temel-kullanım">Temel Kullanım<a href="https://m-karakus.github.io/blog/development-containers#temel-kullan%C4%B1m" class="hash-link" aria-label="Direct link to Temel Kullanım" title="Direct link to Temel Kullanım" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="devcontainerdevcontainerjson-oluşturun"><code>.devcontainer/devcontainer.json</code> Oluşturun<a href="https://m-karakus.github.io/blog/development-containers#devcontainerdevcontainerjson-olu%C5%9Fturun" class="hash-link" aria-label="Direct link to devcontainerdevcontainerjson-oluşturun" title="Direct link to devcontainerdevcontainerjson-oluşturun" translate="no">​</a></h3>
<p>Projenizin kök dizinine <code>.devcontainer/devcontainer.json</code> ekleyin:</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"name"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Python Data Project"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"image"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"mcr.microsoft.com/devcontainers/python:3.11"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"customizations"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"vscode"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"extensions"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"ms-python.python"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"ms-python.black-formatter"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"ms-toolsai.jupyter"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"innoverio.vscode-dbt-power-user"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"settings"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token property" style="color:#36acaa">"python.defaultInterpreterPath"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"/usr/local/bin/python"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token property" style="color:#36acaa">"editor.formatOnSave"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"forwardPorts"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">8888</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">8080</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"postCreateCommand"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"pip install -r requirements.txt"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"remoteEnv"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"SNOWFLAKE_ACCOUNT"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"${localEnv:SNOWFLAKE_ACCOUNT}"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"SNOWFLAKE_USER"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"${localEnv:SNOWFLAKE_USER}"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="containerı-açın">Container'ı Açın<a href="https://m-karakus.github.io/blog/development-containers#container%C4%B1-a%C3%A7%C4%B1n" class="hash-link" aria-label="Direct link to Container'ı Açın" title="Direct link to Container'ı Açın" translate="no">​</a></h3>
<ol>
<li class="">VS Code'da projeyi açın</li>
<li class="">Sol alt köşedeki <code>&gt;&lt;</code> ikonuna tıklayın → <strong>Reopen in Container</strong></li>
<li class="">VS Code container'ı build eder ve içinde açar</li>
</ol>
<p>İlk açılış biraz sürebilir çünkü Docker image'ı indirilir. Sonraki açılışlar cache'den gelir ve çok hızlıdır.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="daha-gelişmiş-kullanım-dockerfile-ile">Daha Gelişmiş Kullanım: Dockerfile ile<a href="https://m-karakus.github.io/blog/development-containers#daha-geli%C5%9Fmi%C5%9F-kullan%C4%B1m-dockerfile-ile" class="hash-link" aria-label="Direct link to Daha Gelişmiş Kullanım: Dockerfile ile" title="Direct link to Daha Gelişmiş Kullanım: Dockerfile ile" translate="no">​</a></h2>
<p>Özel kurulum gerektiren projeler için Docker image yerine kendi <code>Dockerfile</code>'ınızı kullanabilirsiniz:</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">.devcontainer/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── devcontainer.json</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">└── Dockerfile</span><br></span></code></pre></div></div>
<div class="language-dockerfile codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-dockerfile codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># .devcontainer/Dockerfile</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">FROM mcr.microsoft.com/devcontainers/python:3.11</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">RUN apt-get update &amp;&amp; apt-get install -y \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    build-essential \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    libpq-dev \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    &amp;&amp; rm -rf /var/lib/apt/lists/*</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">COPY requirements.txt /tmp/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">RUN pip install --no-cache-dir -r /tmp/requirements.txt</span><br></span></code></pre></div></div>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"name"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Custom Python Project"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"build"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"dockerfile"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Dockerfile"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"customizations"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"vscode"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"extensions"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"ms-python.python"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="docker-compose-ile-çoklu-servis">Docker Compose ile Çoklu Servis<a href="https://m-karakus.github.io/blog/development-containers#docker-compose-ile-%C3%A7oklu-servis" class="hash-link" aria-label="Direct link to Docker Compose ile Çoklu Servis" title="Direct link to Docker Compose ile Çoklu Servis" translate="no">​</a></h2>
<p>dbt + ClickHouse gibi birden fazla servise ihtiyaç duyulan projelerde <code>docker-compose.yml</code> ile entegrasyon kurabilirsiniz:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># .devcontainer/docker-compose.yml</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">version</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'3.8'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">services</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">app</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">build</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">context</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> .</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">dockerfile</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> Dockerfile</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">volumes</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> ..</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">/workspace</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">cached</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">command</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> sleep infinity</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">clickhouse</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">image</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> clickhouse/clickhouse</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">server</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">latest</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">ports</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"8123:8123"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"9000:9000"</span><br></span></code></pre></div></div>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"name"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"dbt + ClickHouse"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"dockerComposeFile"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"docker-compose.yml"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"service"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"app"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"workspaceFolder"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"/workspace"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"customizations"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"vscode"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"extensions"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"ms-python.python"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"innoverio.vscode-dbt-power-user"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<p>VS Code <code>app</code> servisinin içinde açılır, ClickHouse ise <code>localhost:8123</code>'ten erişilebilir olur.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="environment-variableları-güvenli-yönetmek">Environment Variable'ları Güvenli Yönetmek<a href="https://m-karakus.github.io/blog/development-containers#environment-variablelar%C4%B1-g%C3%BCvenli-y%C3%B6netmek" class="hash-link" aria-label="Direct link to Environment Variable'ları Güvenli Yönetmek" title="Direct link to Environment Variable'ları Güvenli Yönetmek" translate="no">​</a></h2>
<p>Hassas bilgileri (API key, şifre) <code>devcontainer.json</code>'a yazmayın. Bunun yerine host makinedeki environment variable'lardan okuyun:</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token property" style="color:#36acaa">"remoteEnv"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"SNOWFLAKE_PASSWORD"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"${localEnv:SNOWFLAKE_PASSWORD}"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"DBT_PROFILES_DIR"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"/workspace"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<p>Host makinede <code>.bashrc</code> veya <code>.zshrc</code>'ye export edin:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">export SNOWFLAKE_PASSWORD="your_password_here"</span><br></span></code></pre></div></div>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="github-codespaces-ile-kullanım">GitHub Codespaces ile Kullanım<a href="https://m-karakus.github.io/blog/development-containers#github-codespaces-ile-kullan%C4%B1m" class="hash-link" aria-label="Direct link to GitHub Codespaces ile Kullanım" title="Direct link to GitHub Codespaces ile Kullanım" translate="no">​</a></h2>
<p>Aynı <code>devcontainer.json</code> dosyası GitHub Codespaces'te de çalışır. Repo'yu GitHub'da açın → <strong>Code</strong> → <strong>Codespaces</strong> → <strong>Create codespace</strong>. Sıfırdan tarayıcıda tam geliştirme ortamı, herhangi bir kurulum olmadan.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="özet">Özet<a href="https://m-karakus.github.io/blog/development-containers#%C3%B6zet" class="hash-link" aria-label="Direct link to Özet" title="Direct link to Özet" translate="no">​</a></h2>
<p>Dev Containers ile:</p>
<ul>
<li class="">Geliştirme ortamı kod gibi versiyonlanır</li>
<li class="">Yeni takım üyesi dakikalar içinde çalışmaya başlar</li>
<li class="">"Bende çalışıyor" problemi ortadan kalkar</li>
<li class="">CI/CD ortamıyla geliştirme ortamı aynı base image'ı paylaşabilir</li>
</ul>
<p>Özellikle veri projeleri için — farklı Python versiyonları, ağır bağımlılıklar, yerel veritabanı servisleri — Dev Containers olmazsa olmaz bir araç haline gelmiştir.</p>]]></content:encoded>
            <category>Dev Tools</category>
            <category>Containers</category>
        </item>
        <item>
            <title><![CDATA[Yapay Zeka ile Nasıl Güncel Bir CV Oluşturulur?]]></title>
            <link>https://m-karakus.github.io/blog/ai-ile-cv</link>
            <guid>https://m-karakus.github.io/blog/ai-ile-cv</guid>
            <pubDate>Wed, 29 May 2019 00:00:00 GMT</pubDate>
            <description><![CDATA[Günümüzde iş başvuruları, dijital dönüşümün etkisiyle daha da önem kazanmaktadır. İşverenler, CV'lerde özgün ve etkileyici bir içerik aramaktadır. Bu noktada yapay zeka teknolojileri, CV oluşturma sürecinde önemli bir rol oynamaktadır. Birlikte, yapay zeka kullanarak nasıl güncellenmiş bir CV oluşturulabileceğini inceleyelim.]]></description>
            <content:encoded><![CDATA[<p>Günümüzde iş başvuruları, dijital dönüşümün etkisiyle daha da önem kazanmaktadır. İşverenler, CV'lerde özgün ve etkileyici bir içerik aramaktadır. Bu noktada yapay zeka teknolojileri, CV oluşturma sürecinde önemli bir rol oynamaktadır. Birlikte, yapay zeka kullanarak nasıl güncellenmiş bir CV oluşturulabileceğini inceleyelim.</p>
<iframe width="711" height="533" src="https://www.youtube.com/embed/IYPii6n5SxQ" title="Yapay Zeka ile 20 dk da CV 🚀" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin"></iframe>
<hr>
<p>Öncelikle, bir CV'yi güncellemek için mevcut bir CV'yi kullanabilir veya bir arkadaşınızın CV'sini temel alabilirsiniz. Bu örnekte, bir front-end geliştirici CV'si ele alınacak ve yapay zeka kullanılarak güncellenerek daha etkileyici bir hale getirilecektir.</p>
<p><img decoding="async" loading="lazy" alt="image" src="https://m-karakus.github.io/assets/images/img01-2e1523c78cc550fb508f279d28123b88.png" width="1196" height="1201" class="img_ev3q"></p>
<p>CV'nin başlangıç kısmını ele alalım. Burada, "Özet Profil" veya "Kısa Özgeçmiş" başlığını kullanarak front-end geliştirici için kısa bir özet paragrafı yazmanız gerekmektedir. Yapay zeka, kullanıcının verilerini analiz ederek bu paragrafı otomatik olarak oluşturacaktır. Örneğin, "Metin, yaratıcı çözümler üretme konusunda tutkulu bir front-end geliştiricisidir. Sürekli olarak kendini geliştirerek yenilikçi teknolojileri takip etmekte ve mükemmel web deneyimleri sunma konusunda enerjik ve motive bir şekilde çalışmaktadır."</p>
<p><img decoding="async" loading="lazy" alt="image" src="https://m-karakus.github.io/assets/images/img02-744e4c2b7e4cddef586623d6543f77cd.png" width="1554" height="1172" class="img_ev3q"></p>
<p>Bu paragrafı, üçüncü tekil şahıs olarak yazdırabilen yapay zeka modelleri kullanarak daha etkileyici hale getirebilirsiniz. Örneğin, "Metin, bir front-end geliştiricisi olarak çalışan ve yaratıcı çözümler üreten biridir. HD arkadaşlar, onu yenilikçi teknolojilere uyumlu siteler geliştirebilen ve kullanıcıları etkileme konusunda güçlü becerilere sahip bir model olarak tanır. Ayrıca, trendlere çıkan yenilikçi teknolojileri sürekli olarak takip etme ve kendini geliştirme konusunda da çaba göstermektedir."</p>
<p>Sonraki bölüm, "Beceriler" veya "Yetenekler" başlığı altında front-end geliştiricinin sahip olduğu yazılım dilleri ve araçlarını içermektedir. Yapay zeka, bu bilgileri liste şeklinde düzenleyebilir. Örneğin, yazılım dillerini ve araçları şu şekilde listeleyebilirsiniz:<br>
<!-- -->Yazılım Dilleri:</p>
<ul>
<li class="">HTML</li>
<li class="">CSS</li>
<li class="">JavaScript</li>
</ul>
<p>Frame Geliştirme Araçları:</p>
<ul>
<li class="">React</li>
<li class="">Angular</li>
<li class="">Vue.js</li>
</ul>
<p>Arayüz Geliştirme Araçları:</p>
<ul>
<li class="">Adobe XD</li>
<li class="">Sketch</li>
<li class="">Figma</li>
</ul>
<p>Bu şekilde, front-end geliştiricinin becerilerini açıklayıcı bir şekilde sunabilirsiniz.</p>
<p><img decoding="async" loading="lazy" alt="image" src="https://m-karakus.github.io/assets/images/img03-b294c87a7dba56ba09007316521faea5.png" width="1136" height="490" class="img_ev3q"></p>
<p>"Deneysimler" bölümü, front-end geliştiricinin geçmiş iş deneyimlerini içermektedir. Her bir iş deneyimi için, şirket adını, çalışma pozisyonunu ve yaptığı çalışmaları açıklayan bir paragraf yazmanız gerekmektedir. Örneğin:</p>
<p>Şirket: Aksoy Teknik Hizmetler<br>
<!-- -->Çalışma Pozisyonu: Front-End Geliştirici<br>
<!-- -->Çalışma Yılları: 2021 - Şu Anda<br>
<!-- -->Yaptığı Çalışmalar: Aksoy Teknik Hizmetler şirketinde front-end geliştirici olarak çalışmaktadır. Burada, kullanıcı dostu ve etkileyici web siteleri geliştirme konusunda başarılı projeler gerçekleştirmiştir. Sürekli olarak güncel trendlere ayak uydurma ve kullanıcıları etkileme konusunda öncelikli hedefleri arasında yer almaktadır.</p>
<p>Bu şekilde, front-end geliştiricinin deneyimlerini vurgulayabilirsiniz. Aynı şekilde diğer iş deneyimleri için de benzer paragraflar yazabilirsiniz.</p>
<p>Son olarak, CV'nin son kısmında "Eğitim Bilgileri", "Sertifikalar" ve "Referanslar" gibi bölümleri ekleyebilirsiniz. Bu bölümlerde, ilgili eğitim kurumları, aldığı sertifikalar ve referanslar hakkında bilgi verebilirsiniz.</p>
<p>Yapay zeka ile güncellenen CV'niz, kullanıcılar arama yaptığında veya filtre uyguladığında ön plana çıkacaktır. CV içeriğindeki anahtar kelimeler, yapay zeka tarafından analiz edilecek ve arama sonuçlarında görünmenizi sağlayacaktır.</p>
<p>Sonuç olarak, yapay zeka teknolojileri kullanarak güncellenen bir CV oluşturmak, iş başvurularınızı daha etkileyici hale getirmenize yardımcı olabilir. Özgün ve dikkat çekici bir CV, işverenlerin ilgisini çekmenizde büyük bir rol oynayacaktır. Yapay zekanın sunduğu imkanlardan faydalanarak, CV'nizi başarılı bir şekilde oluşturabilir ve iş arama sürecinde avantaj elde edebilirsiniz.</p>
<p>Güncellenmiş CV'nizi oluştururken yapay zekanın sadece bir araç olduğunu ve kişisel dokunuşunuzun da önemli olduğunu unutmayın. Kendinizi en iyi şekilde ifade etmek için yapay zekayı doğru bir şekilde kullanarak özgün ve dikkat çekici bir CV oluşturabilirsiniz. Başarılar dileriz!</p>]]></content:encoded>
            <category>Artificial Intelligence</category>
        </item>
    </channel>
</rss>