[{"data":1,"prerenderedAt":1356},["ShallowReactive",2],{"search-index":3,"article:\u002Fyazilar\u002Fhangi-ai-araci-hangi-is-icin":731,"article-navigation":916},[4,310,447,521,594,661],{"id":5,"title":6,"body":7,"category":294,"cover":295,"date":296,"demo":297,"description":298,"draft":297,"extension":299,"featured":300,"meta":301,"navigation":300,"path":302,"readingTime":303,"seo":304,"stem":305,"tags":306,"updated":296,"__hash__":309},"blog\u002Fyazilar\u002Fhangi-ai-araci-hangi-is-icin.md","Yazılımda Hangi AI Aracı Hangi İşe Uygun?",{"type":8,"value":9,"toc":284},"minimark",[10,18,21,26,29,35,39,161,164,168,190,206,217,221,238,250,254,261,267,274,277],[11,12,13,14],"p",{},"\"Hangi AI daha iyi kod yazıyor?\" sorusuna tek bir isimle cevap vermek kolay, ama çoğu zaman yanıltıcı. Sonuç; verilen bağlama, seçilen modele, aracın dosyalara ve komutlara erişimine, bir de çıktıyı nasıl sınadığına bağlı. Daha yararlı soru şu: ",[15,16,17],"strong",{},"Bu işin hangi aşamasında hangi aracı denemek mantıklı?",[11,19,20],{},"Bu yazı 12 Eylül 2026 itibarıyla altı ürünün resmi belgelerini esas alıyor. Aynı görevlerde yapılmış bir performans testi ya da kişisel verimlilik sıralaması değil. Tablodaki \"uygun iş\" örnekleri, belgelenen özelliklerden çıkardığım kullanım önerileri. Ürün özellikleri, modeller, fiyatlar ve erişim koşulları değişebilir.",[22,23,25],"h2",{"id":24},"önce-aracın-neye-erişeceğini-belirle","Önce aracın neye erişeceğini belirle",[11,27,28],{},"ChatGPT, Claude veya Gemini gibi bir sohbet aracıyla problemi tarif edip olası nedenleri tartışabilirsin. Kod ajanı ise izin verdiğin proje dosyalarını okuyabilir, değişiklik yapabilir ve komut çalıştırabilir. Perplexity gibi araştırma odaklı bir araç kaynak bulma aşamasında işe yarayabilir. Bunlar birbirinin yerine geçen tek tip ürünler değil; aynı görevin farklı basamaklarında kullanılabilirler.",[11,30,31,32],{},"Örneğin \"liste ekranı yavaş\" dediğinde önce hangi ölçümlere ihtiyacın olduğunu sormak yeterli olabilir. Darboğazı gösteren bir ölçüm ve başarısız testin varsa kod ajanına daha somut bir görev verebilirsin. Kullandığın kütüphanenin güncel davranışını bilmiyorsan önce resmi belgeyi araştırman gerekir. ",[15,33,34],{},"Araç seçimini görev, veri sınırı ve doğrulama yöntemi birlikte belirler.",[22,36,38],{"id":37},"altı-araç-altı-başlangıç-noktası","Altı araç, altı başlangıç noktası",[40,41,42,58],"table",{},[43,44,45],"thead",{},[46,47,48,52,55],"tr",{},[49,50,51],"th",{},"Araç",[49,53,54],{},"Belirgin çalışma biçimi",[49,56,57],{},"İlk denemeye uygun iş",[59,60,61,79,94,110,125,146],"tbody",{},[46,62,63,73,76],{},[64,65,66],"td",{},[67,68,72],"a",{"href":69,"rel":70},"https:\u002F\u002Flearn.chatgpt.com\u002Fdocs\u002Fcodex\u002Fcli",[71],"nofollow","Codex CLI",[64,74,75],{},"Yerel depoda inceleme, düzenleme, komut çalıştırma; tekrar edilebilir komut ve CI akışları.",[64,77,78],{},"Testi belli bir hatayı depoda düzeltmek, değişiklikleri yerel olarak gözden geçirmek veya aynı denetimi otomasyona bağlamak.",[46,80,81,88,91],{},[64,82,83],{},[67,84,87],{"href":85,"rel":86},"https:\u002F\u002Fcode.claude.com\u002Fdocs\u002Fen\u002Fhow-claude-code-works",[71],"Claude Code",[64,89,90],{},"Terminal, masaüstü, IDE ve web gibi farklı yüzeylerde aynı kod ajanı; proje dosyaları ve araçlarla çalışma.",[64,92,93],{},"Birden fazla dosyaya yayılan işi, kullandığın editör veya masaüstü akışından ayrılmadan incelemek ve yönlendirmek.",[46,95,96,104,107],{},[64,97,98,103],{},[67,99,102],{"href":100,"rel":101},"https:\u002F\u002Fgeminicli.com\u002Fdocs\u002F",[71],"Gemini CLI"," ve Gemini modelleri",[64,105,106],{},"Terminalde proje bağlamı ve web araçları; uygun model seçildiğinde uzun metin ve çoklu ortam girdileriyle çalışma.",[64,108,109],{},"Büyük belge kümelerini, görsel veya video gibi ek bağlamları inceleyip bulguları kod işiyle ilişkilendirmek.",[46,111,112,119,122],{},[64,113,114],{},[67,115,118],{"href":116,"rel":117},"https:\u002F\u002Fdocs.cursor.com\u002Fchat\u002Foverview",[71],"Cursor Agent",[64,120,121],{},"Editör içinde kod tabanı araması, dosya düzenleme, terminal komutları ve değişiklikleri fark görünümünde inceleme.",[64,123,124],{},"Kod okurken ve düzenlerken editörden ayrılmadan küçük ya da çok dosyalı bir işi yürütmek.",[46,126,127,134,143],{},[64,128,129],{},[67,130,133],{"href":131,"rel":132},"https:\u002F\u002Fdocs.github.com\u002Fen\u002Fcopilot\u002Fget-started\u002Ffeatures",[71],"GitHub Copilot",[64,135,136,137,142],{},"Desteklenen IDE'lerde sohbet ve ajan akışı; GitHub üzerinde bir görevi ",[67,138,141],{"href":139,"rel":140},"https:\u002F\u002Fdocs.github.com\u002Fen\u002Fcopilot\u002Fhow-tos\u002Fcopilot-on-github\u002Fuse-copilot-agents\u002Fkick-off-a-task",[71],"cloud agent'a devredip pull request alma",".",[64,144,145],{},"İyi tanımlanmış bir GitHub issue'sunu incelemeye hazır değişiklik önerisine dönüştürmek.",[46,147,148,155,158],{},[64,149,150],{},[67,151,154],{"href":152,"rel":153},"https:\u002F\u002Fwww.perplexity.ai\u002Fhelp-center\u002Fen\u002Farticles\u002F10352155-what-is-perplexity",[71],"Perplexity",[64,156,157],{},"Web araştırmasını kaynak bağlantılarıyla özetleme ve soruları kaynaklar üzerinden derinleştirme.",[64,159,160],{},"Güncel bir teknik iddianın kaynaklarını bulmak, seçenekleri toplamak ve resmi belgelere ulaşmak.",[11,162,163],{},"Bu tablo bir yetenek sıralaması değil. Codex, Claude Code, Gemini CLI, Cursor ve Copilot'un kodla çalışma alanları kesişiyor. GitHub Copilot'un IDE içindeki kullanımıyla GitHub'da arka planda çalışan ajanı da ayrı akışlar. Perplexity'nin kaynak vermesi ise bir kod ajanının depoda test çalıştırmasının karşılığı değil.",[22,165,167],{"id":166},"kod-değişikliği-için-neye-bakarım","Kod değişikliği için neye bakarım?",[11,169,170,173,174,178,179,183,184,189],{},[15,171,172],{},"Terminalde çalışıyorsam"," Codex CLI, Claude Code veya Gemini CLI ile aynı küçük görevi deneyebilirim. Beklenen davranış ve test komutu açık olduğunda araçlardan önce ilgili dosyaları bulmasını, ardından sınırlı bir değişiklik yapmasını ve test çıktısını göstermesini isterim. Codex'in ",[67,175,177],{"href":69,"rel":176},[71],"CLI belgesi"," otomasyona bağlanan komut kullanımını da anlatıyor. Claude Code'un ",[67,180,182],{"href":85,"rel":181},[71],"çalışma biçimi"," farklı arayüzler arasında seçim olanağı sunuyor. Gemini CLI'ın ",[67,185,188],{"href":186,"rel":187},"https:\u002F\u002Fgeminicli.com\u002Fdocs\u002Freference\u002Ftools\u002F",[71],"araç listesi"," ise hangi dosya, komut ve web işlemlerinin yapılabildiğini gösteriyor. Hangisini seçeceğim, kullandığım ortam ve denemenin sonucu ile netleşir.",[11,191,192,195,196,200,201,205],{},[15,193,194],{},"Editörün içinde kalmak istiyorsam"," Cursor Agent veya GitHub Copilot'un IDE akışı uygun adaylar. Cursor'un ",[67,197,199],{"href":116,"rel":198},[71],"Agent belgesinde"," kod arama, düzenleme, terminal ve değişiklikleri inceleme yüzeyleri açıklanıyor. Copilot'un ",[67,202,204],{"href":131,"rel":203},[71],"özellik belgesi"," desteklenen IDE'lerde sohbet ve ajan kullanımını ayırıyor. İkisinde de önemli kontrol, önerilen farkı okumak ve testleri gerçekten çalıştırmak; editörde görünmesi değişikliği kendiliğinden güvenilir kılmaz.",[11,207,208,211,212,216],{},[15,209,210],{},"İş bir GitHub issue'su olarak tanımlıysa"," Copilot'un cloud agent akışı ayrıca değerlendirilebilir. GitHub'ın ",[67,213,215],{"href":139,"rel":214},[71],"görev başlatma rehberi",", issue'yu ajana atamayı ve ek bağlam vermeyi açıklıyor. Bu, yapılacak işi net yazıp çıkan pull request'i inceleme olanağı sağlar. \"Raporları iyileştir\" gibi belirsiz bir issue yerine beklenen davranışı, kapsam dışını ve doğrulama adımlarını yazmak gerekir.",[22,218,220],{"id":219},"araştırma-ve-uzun-bağlam-için-neye-bakarım","Araştırma ve uzun bağlam için neye bakarım?",[11,222,223,226,227,231,232,237],{},[15,224,225],{},"Güncel bir bilgi arıyorsam"," Perplexity bir başlangıç noktası olabilir. ",[67,228,230],{"href":152,"rel":229},[71],"Ürün açıklamasına"," göre yanıtlar kaynak bağlantıları içeriyor. Bir kütüphanenin son sürümünde değişen davranışı araştırırken bağlantıları toplayabilir, ardından iddiayı kütüphanenin kendi sürüm belgesinde kontrol edebilirim. Perplexity'nin ",[67,233,236],{"href":234,"rel":235},"https:\u002F\u002Fwww.perplexity.ai\u002Fhelp-center\u002Fen\u002Farticles\u002F20260806-understanding-source-labels",[71],"kaynak etiketleri açıklaması"," da etiketin tek bir yazının doğruluğunu garanti etmediğini söylüyor. Kaynaklı cevap, doğrulamanın başlangıcıdır.",[11,239,240,243,244,249],{},[15,241,242],{},"Çok sayıda belge veya görsel bağlam varsa"," Gemini modelleri denenebilir. Google'ın ",[67,245,248],{"href":246,"rel":247},"https:\u002F\u002Fai.google.dev\u002Fgemini-api\u002Fdocs\u002Flong-context",[71],"uzun bağlam belgesi"," büyük girdiler ve çoklu ortam örneklerini açıklıyor. Ancak modelin desteklediği giriş türü ve bağlam sınırı seçime göre değişir; Gemini CLI kullanıyor olmak tek başına her sınırın veya her dosya türünün desteklendiği anlamına gelmez. Önemli bir sonuçta ilgili belge bölümünü ve modelin yorumunu yan yana kontrol ederim.",[22,251,253],{"id":252},"aynı-görevi-nasıl-karşılaştırırım","Aynı görevi nasıl karşılaştırırım?",[11,255,256,257,260],{},"Altı aracı tek bir puanla sıralamak yerine, ",[15,258,259],{},"aynı türden araçları aynı görevde"," denemek daha anlamlı. Kod ajanları için küçük, gizli veri içermeyen bir hata seçilebilir. Görevin metni, değiştirilebilecek dosyalar, beklenen davranış ve test komutu her araçta aynı olmalı:",[262,263,264],"blockquote",{},[11,265,266],{},"Bu depoda örnek liste ekranının filtrelenmesinde şu hata var: boş arama terimi tüm kayıtları göstermeli. Önce ilgili dosyayı ve mevcut testi bul. Yalnızca bu davranışı düzelt; başka dosyaları neden değiştirdiğini açıkla. Sonunda test komutunu çalıştır ve sonucu, çalıştıramadıysan nedenini belirt.",[11,268,269,270,273],{},"Sonra yalnızca cevabın akıcılığına değil, ",[15,271,272],{},"doğru problemi çözüp çözmediğine, gereksiz dosyalara dokunup dokunmadığına, testin gerçekten çalışıp çalışmadığına ve değişikliğin anlaşılabilirliğine"," bakarım. Araştırma araçlarında ise aynı teknik soruya verilen bağlantıların güncelliğini ve iddiayı destekleyip desteklemediğini karşılaştırırım. Perplexity'yi bir kod ajanıyla \"hangisi daha iyi kod yazdı\" diye ölçmek anlamlı olmaz; görevleri farklı.",[11,275,276],{},"İşyerine ait kod, müşteri bilgisi, sağlık veya ödeme verisi ve erişim anahtarları herhangi bir araca verilmeden önce kurumun paylaşım kuralları ile ürünün erişim izinleri incelenmeli. Fiyat ve kullanım sınırları da karar verilecek tarihte ürün sayfalarından ayrıca kontrol edilmeli.",[11,278,279,280,283],{},"Benim seçim ölçütüm araç adına bağlılık değil: ",[15,281,282],{},"Problemi tarif et, uygun çalışma yüzeyini seç, küçük bir deneme yap ve sonucu bağımsız ölçütlerle sına."," Gerekirse sonraki aşamada başka araca geç. Güçlü araç, kendi işinde kanıtlanabilir biçimde işe yarayan araçtır.",{"title":285,"searchDepth":286,"depth":287,"links":288},"",2,3,[289,290,291,292,293],{"id":24,"depth":286,"text":25},{"id":37,"depth":286,"text":38},{"id":166,"depth":286,"text":167},{"id":219,"depth":286,"text":220},{"id":252,"depth":286,"text":253},"AI","\u002Fimages\u002Fblog\u002Fai-araclari.svg","2026-09-12",false,"Codex, Claude Code, Gemini, Cursor, GitHub Copilot ve Perplexity'yi çalışma biçimleri ve doğrulama ihtiyaçları üzerinden karşılaştırma.","md",true,{},"\u002Fyazilar\u002Fhangi-ai-araci-hangi-is-icin",7,{"title":6,"description":298},"yazilar\u002Fhangi-ai-araci-hangi-is-icin",[294,307,308],"Araç Seçimi","Yazılım Geliştirme","jmr7CI9adVj87xQertEER3xbaZiA99WSlH6SeqCpp40",{"id":311,"title":312,"body":313,"category":294,"cover":435,"date":436,"demo":297,"description":437,"draft":297,"extension":299,"featured":300,"meta":438,"navigation":300,"path":439,"readingTime":440,"seo":441,"stem":442,"tags":443,"updated":296,"__hash__":446},"blog\u002Fyazilar\u002Fteknoloji-ve-ai-kararlari.md","Yazılım Sorunlarında AI ile Daha Etkili Çalışmak",{"type":8,"value":314,"toc":428},[315,318,321,325,328,331,335,338,366,369,374,377,381,384,387,391,394,397,401,404,407],[11,316,317],{},"Yapay zekâya bir kod parçasını hızla yazdırmak mümkün. Asıl kazanım, hangi problemi çözdüğünü daha iyi anlamak ve önerilen çözümün hangi varsayımlara dayandığını görebilmek. Bu yüzden AI'ı yalnızca cevap veren bir araç olarak değil, sorumu keskinleştiren ve taslağımı eleştiren bir yardımcı olarak kullanıyorum.",[11,319,320],{},"İyi bir istemin sihirli kelimeleri yok. İşe yarayan şey bağlam, hedef ve doğrulama ölçütü. Soruyu ChatGPT, Claude veya Gemini sohbetinde netleştirebilir; depo üzerinde çalışmak gerektiğinde Codex, Claude Code ya da Gemini CLI gibi bir kod ajanına geçebilirsin. Araç değişse de problemin tanımı ve beklenen sonuç aynı kalmalı.",[22,322,324],{"id":323},"önce-kendi-problem-cümleni-kur","Önce kendi problem cümleni kur",[11,326,327],{},"AI'a gitmeden önce üç satır yazarım: Şu anda ne oluyor? Ne olmasını bekliyorum? Bu farkı nasıl gözlemledim? Ardından sınırları eklerim: teknoloji ve sürüm, değiştiremeyeceğim koşullar, gerçek veri kullanıp kullanamayacağım ve yanlış çözümün maliyeti.",[11,329,330],{},"\"Uygulama yavaş\" yerine \"liste ekranı belirli bir filtreyle belirgin biçimde yavaşlıyor; veritabanı sorgusu mu, ağ mı, arayüz mü bilmiyorum\" demek farklı bir cevap üretir. İkinci cümle AI'a hemen optimizasyon yazdırmak yerine hangi ölçümü isteyeceğini sordurur.",[22,332,334],{"id":333},"i̇stemin-dört-parçası","İstemin dört parçası",[11,336,337],{},"Tek bir kalıp her işe uymaz, ama çoğu teknik soruda şu dört parça yardımcı olur:",[339,340,341,348,354,360],"ol",{},[342,343,344,347],"li",{},[15,345,346],{},"Bağlam:"," Sistem ve gözlenen davranış.",[342,349,350,353],{},[15,351,352],{},"Hedef:"," Hangi sonuca ulaşmak istediğin.",[342,355,356,359],{},[15,357,358],{},"Sınır:"," Değiştirilemeyen koşullar ve paylaşılmaması gereken bilgiler.",[342,361,362,365],{},[15,363,364],{},"Çıktı:"," AI'dan şu anda ne beklediğin: soru listesi, olası nedenler, karşılaştırma veya test planı.",[11,367,368],{},"Örneğin ilk tur şöyle olabilir:",[262,370,371],{},[11,372,373],{},"Bir rapor ekranı beklediğimden yavaş. Elimde henüz ölçüm yok. Çözüm veya kod yazma. Önce sorunu ağ, veritabanı ve arayüz olarak ayırmamı sağlayacak en fazla beş soru sor. Her soru için hangi ölçümü toplamam gerektiğini belirt. Gizli kayıtları paylaşmadan ilerleyebileceğim bir yol öner.",[11,375,376],{},"Bu istemin sonunda doğrudan çözüm çıkmasa da sonraki adım daha güvenilir olur.",[22,378,380],{"id":379},"i̇stemi-aia-da-iyileştirt","İstemi AI'a da iyileştirt",[11,382,383],{},"Ne sormam gerektiğini bilmediğimde kendi taslağımı modele veririm: \"Bu isteği yanıtlamadan önce belirsiz veya çelişkili yerlerini bul. Eksik bağlamı sor. Aynı hedefi koruyarak daha kısa ve net bir istem öner.\" Böylece AI, ilk cevabı üretmeden önce sorunun biçimini iyileştirir.",[11,385,386],{},"Ama bu turda eklenen her varsayımı kabul etmem. \"Kullanıcı sayısı yüksek\" veya \"veritabanı PostgreSQL\" gibi söylenmemiş bilgiler öneriye sızarsa, bunları ya doğrularım ya da çıkarırım.",[22,388,390],{"id":389},"i̇lk-cevabı-son-cevap-sayma","İlk cevabı son cevap sayma",[11,392,393],{},"İkinci turda AI'dan kendi önerisini eleştirmesini isterim: hangi durumda çalışmaz, hangi veri eksik, en küçük doğrulama deneyi ne? Çıkan ölçütleri test ve gözlemle sınarım. Kütüphane, platform veya sağlayıcı davranışı söz konusuysa ilgili sürümün resmi belgesine bakarım. Kaynak bağlantısı istemek yararlıdır; bağlantının iddiayı gerçekten destekleyip desteklemediğini yine benim kontrol etmem gerekir.",[11,395,396],{},"AI'ın makul görünen bir açıklaması, ölçümün yerini tutmaz. Bir hata için üretilen test yalnızca modelin kendi varsayımını tekrar ediyorsa da güven vermez; beklenen sonucu bağımsız olarak tanımlamak gerekir.",[22,398,400],{"id":399},"paylaşılacak-verinin-sınırını-çiz","Paylaşılacak verinin sınırını çiz",[11,402,403],{},"İşyerine ait kod, müşteri bilgisi, sağlık veya ödeme verisi, erişim anahtarı ve iç belgeler bir isteme olduğu gibi yapıştırılmamalı. Çoğu teknik soru, alan adları değiştirilmiş küçük bir örnekle tartışılabilir. Gerçek bağlam zorunluysa kurumun veri paylaşım kuralları ve kullanılan AI hizmetinin ayarları önce incelenmeli.",[11,405,406],{},"AI ile çalışma biçimimin özeti şu: problemi tarif ederim, eksikleri sordururum, seçenekleri karşılaştırırım, kendi kararımı veririm ve sonucu ölçerim. İstemin kalitesi kadar bu son adımın ciddiyeti de önemlidir.",[11,408,409,410,415,416,421,422,427],{},"Bu yaklaşım tek bir sağlayıcıya bağlı değil. ",[67,411,414],{"href":412,"rel":413},"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fprompt-engineering",[71],"OpenAI Docs'un istem rehberi",", ",[67,417,420],{"href":418,"rel":419},"https:\u002F\u002Fcode.claude.com\u002Fdocs\u002Fen\u002Fbest-practices",[71],"Claude Code'un iyi uygulamaları"," ve ",[67,423,426],{"href":424,"rel":425},"https:\u002F\u002Fai.google.dev\u002Fgemini-api\u002Fdocs\u002Fprompting-strategies",[71],"Gemini'nin istem stratejileri"," farklı ürünler için bağlamı açık vermeyi ve çıktıyı yinelemeli olarak sınamayı öneriyor.",{"title":285,"searchDepth":286,"depth":287,"links":429},[430,431,432,433,434],{"id":323,"depth":286,"text":324},{"id":333,"depth":286,"text":334},{"id":379,"depth":286,"text":380},{"id":389,"depth":286,"text":390},{"id":399,"depth":286,"text":400},"\u002Fimages\u002Fblog\u002Fkarar.svg","2026-09-09","Problemi çerçevelemek, iyi istem yazmak, AI'a istemi iyileştirtmek ve çıkan öneriyi doğrulamak için çalışma yöntemi.",{},"\u002Fyazilar\u002Fteknoloji-ve-ai-kararlari",4,{"title":312,"description":437},"yazilar\u002Fteknoloji-ve-ai-kararlari",[294,444,445],"Prompt","Problem Çözme","QobJxDo1B8XzLukOOB7S-Th3UB5WI9vRh_UgIejVjX8",{"id":448,"title":449,"body":450,"category":510,"cover":511,"date":512,"demo":297,"description":513,"draft":297,"extension":299,"featured":300,"meta":514,"navigation":300,"path":515,"readingTime":287,"seo":516,"stem":517,"tags":518,"updated":296,"__hash__":520},"blog\u002Fyazilar\u002Fnuxt-cloudflare-workers-yayinlama.md","Nuxt Dağıtımında AI'a Ne Sormalıyım?",{"type":8,"value":451,"toc":505},[452,455,458,462,465,470,473,477,480,495,499,502],[11,453,454],{},"Bir Nuxt uygulamasını Cloudflare'a taşırken AI'a \"bana deploy dosyalarını yaz\" demek hızlı görünebilir. Fakat Cloudflare Pages ile Workers, build sırasında gereken değerlerle çalışma anındaki secret'lar ve projedeki Nuxt sürümü birbirine karışırsa düzgün görünen bir yapılandırma yanlış hedefe hizmet eder.",[11,456,457],{},"Bu blogun dağıtımını hazırlarken asıl işim bir komut ezberlemek değil, hangi kararın hangi ortamda etkili olduğunu netleştirmekti. AI'ı bu ayrımı sorgulamak için kullanmak daha yararlı.",[22,459,461],{"id":460},"aia-önce-mevcut-durumu-ver","AI'a önce mevcut durumu ver",[11,463,464],{},"İsteme framework adını yazmak yetmez. Hedefin Workers mı Pages mi olduğu, Nuxt ve Wrangler sürümleri, sunucu endpoint'i bulunup bulunmadığı, içeriklerin build sırasında mı yoksa istek anında mı üretildiği belirtilmeli. Gizli anahtarların değerleri ise asla paylaşılmamalı; yalnızca değişken adları yeterli.",[262,466,467],{},[11,468,469],{},"Nuxt uygulamamı Cloudflare Workers üzerinde yayınlamak istiyorum. Projede sunucu endpoint'i ve prerender edilen içerik sayfaları var. Sürümleri ve mevcut yapılandırmayı aşağıda vereceğim. Önce eksik bilgileri sor. Sonra build sırasında gereken değişkenlerle yalnızca Worker çalışırken gereken secret'ları ayrı listele. Her öneri için dayandığın güncel resmi belgeyi göster; emin olmadığın ayarı uydurma.",[11,471,472],{},"Bu istemde hedef, hazır bir dosya almak değil, değişkenlerin yanlış yere konmasını önleyecek bir kontrol listesi çıkarmak.",[22,474,476],{"id":475},"belgeyle-proje-çıktısını-karşılaştır","Belgeyle proje çıktısını karşılaştır",[11,478,479],{},"AI bir ayar önerdiğinde şu üç soruyu ayrı ayrı cevaplamalı: Resmi belgede gerçekten var mı? Bu projenin sürümüne uyuyor mu? Yerel build çıktısında beklenen dosyalar oluşuyor mu? Özellikle platform rehberindeki örnekler yeni projeler için hazırlanmış olabilir; mevcut projedeki content ve API ihtiyaçları ek kontrol gerektirir.",[11,481,482,483,488,489,494],{},"Bu örnekte ",[67,484,487],{"href":485,"rel":486},"https:\u002F\u002Fdevelopers.cloudflare.com\u002Fworkers\u002Fframework-guides\u002Fweb-apps\u002Fmore-web-frameworks\u002Fnuxt\u002F",[71],"Cloudflare'ın Nuxt Workers rehberi"," ile ",[67,490,493],{"href":491,"rel":492},"https:\u002F\u002Fdevelopers.cloudflare.com\u002Fworkers\u002Fconfiguration\u002Fsecrets\u002F",[71],"Workers secret rehberi"," başlangıç kaynaklarıdır. Secret değerinin kaynak koda veya herkese açık yapılandırmaya girmemesi, belgeye bakılarak doğrulanmalıdır.",[22,496,498],{"id":497},"son-kontrolü-çalışma-ortamı-yapar","Son kontrolü çalışma ortamı yapar",[11,500,501],{},"AI'ın \"hazır\" demesi dağıtımın çalıştığını göstermez. Build ve yerel Workers önizlemesinde sayfalar, doğrudan detay bağlantıları ve sunucu endpoint'i kontrol edilmeli. Yayın sonrası domain, RSS, sitemap, 404 ve gerçek e-posta akışı ayrıca sınanmalı. Bir testin neyi kanıtladığını da açıkça yazmak gerekir: başarılı build, DNS veya e-posta teslimini doğrulamaz.",[11,503,504],{},"Platform davranışı ve belge yolları zamanla değişir. Bu yüzden yazı bir yapılandırma reçetesi değil, AI'ın önerilerini mevcut proje ve resmi kaynaklarla karşılaştırma yöntemidir.",{"title":285,"searchDepth":286,"depth":287,"links":506},[507,508,509],{"id":460,"depth":286,"text":461},{"id":475,"depth":286,"text":476},{"id":497,"depth":286,"text":498},"Nuxt","\u002Fimages\u002Fblog\u002Fdeploy.svg","2026-09-05","Cloudflare Workers'a yayın hazırlığında AI'dan yararlanırken sürüm, platform ve secret varsayımlarını nasıl doğrularım?",{},"\u002Fyazilar\u002Fnuxt-cloudflare-workers-yayinlama",{"title":449,"description":513},"yazilar\u002Fnuxt-cloudflare-workers-yayinlama",[294,510,519],"Cloudflare","Ub5EP4EPfUDs2ES4mTk5DIxRnoajm7b6X8OwryGVihI",{"id":522,"title":523,"body":524,"category":583,"cover":584,"date":585,"demo":297,"description":586,"draft":297,"extension":299,"featured":300,"meta":587,"navigation":300,"path":588,"readingTime":287,"seo":589,"stem":590,"tags":591,"updated":296,"__hash__":593},"blog\u002Fyazilar\u002Fayni-metrik-farkli-sayi.md","İki Ekranda Farklı Metrik: AI ile Sorunu Nasıl Daraltırım?",{"type":8,"value":525,"toc":578},[526,529,532,536,539,542,547,550,554,557,560,565,568,572,575],[11,527,528],{},"İki ekranda aynı isimli metrik farklı göründüğünde hemen sorguyu değiştirmek cazip. Oysa önce iki ekranın gerçekten aynı soruyu cevaplayıp cevaplamadığını anlamak gerekir. AI burada hızlı bir kod üreticisinden çok, gözden kaçan varsayımları görünür kılan bir yardımcı olabilir.",[11,530,531],{},"Bu yazıdaki örnekler temsili. Herhangi bir kurumun kayıtları, metrikleri veya iç raporları kullanılmıyor.",[22,533,535],{"id":534},"soruyu-ölçülebilir-hâle-getir","Soruyu ölçülebilir hâle getir",[11,537,538],{},"\"Sayılar neden farklı?\" sorusunda veri kümesi bile belli değildir. İncelemeye başlamadan şu dört bilgiyi yaz: metriğin adı, iki ekrandaki değer, seçili dönem ve her ekranın kullandığı filtreler. Ardından beklediğin davranışı bir cümleyle anlat. Örneğin: \"Aynı tarih aralığı ve aynı filtreler seçildiğinde tamamlanan kayıt sayısı eşit olmalı.\"",[11,540,541],{},"AI'a ilk turda çözüm değil, eksik tanımları sordururum:",[262,543,544],{},[11,545,546],{},"İki raporda aynı adlı metrik farklı çıkıyor. Kayıtların içeriğini paylaşmıyorum. Olası ayrışmaları veri kümesi, tarih alanı, durum tanımı ve filtreler altında grupla. Her olasılık için hangi bilgiyi kontrol etmem gerektiğini yaz. Henüz kod önerme; bilmediğin alanları varsayım olarak işaretle.",[11,548,549],{},"Bu istemin değeri, cevabın tek bir nedene kilitlenmesini önlemesidir. \"Yanlış sorgu\" yalnızca ihtimallerden biridir.",[22,551,553],{"id":552},"hipotezleri-küçük-testlere-çevir","Hipotezleri küçük testlere çevir",[11,555,556],{},"AI'ın verdiği olasılık listesini gerçek kayıtlar üzerinde sırayla sınamak gerekir. İlk iş, iki ekranda ortak görünen kayıtları ve yalnızca birinde görünenleri ayırmaktır. Farkın tümü dönem sınırında mı? Belirli bir durumda mı? Bir filtre yalnızca bir ekranda mı uygulanıyor?",[11,558,559],{},"Burada AI'a ikinci bir görev verilebilir:",[262,561,562],{},[11,563,564],{},"Elimde gerçek verilerden türetilmemiş, tamamen temsili iki küçük kayıt listesi var. Hangi kayıtların yalnızca bir listede kaldığını bulmam için bir karşılaştırma planı hazırla. Her bulguyu bir hipoteze bağla. Veriden çıkmayan bir nedeni kesin sonuç gibi sunma.",[11,566,567],{},"Gerçek kişi, kurum veya iş bilgilerini modele aktarmadan da yöntem tartışılabilir. Sentetik birkaç satır, genel alan adları ve beklenen sonuç çoğu zaman yeterlidir.",[22,569,571],{"id":570},"ai-cevabını-nasıl-doğrularım","AI cevabını nasıl doğrularım?",[11,573,574],{},"Bir açıklamanın makul görünmesi yeterli değil. Seçilen hipotez, farkı oluşturan kayıtları gerçekten açıklamalı. Aynı tanım iki ekrana uygulandığında sonuçlar eşleşmeli; farklı tarih aralıkları ve boş veri gibi sınır durumları da denenmeli. Son olarak metriğin adı, kullandığı kapsamı okura açıkça anlatmalı.",[11,576,577],{},"AI kod da önerebilir, ama karar sırası önemlidir: önce \"neyi sayıyoruz\" sorusunun cevabı, sonra bunu hesaplayan kod. Tanım belirsizken hızla üretilen sorgu, yalnızca belirsizliği otomatikleştirir.",{"title":285,"searchDepth":286,"depth":287,"links":579},[580,581,582],{"id":534,"depth":286,"text":535},{"id":552,"depth":286,"text":553},{"id":570,"depth":286,"text":571},"Analitik","\u002Fimages\u002Fblog\u002Fmetrik-kapsam.svg","2026-09-02","Farklı rapor sayılarını AI ile incelerken tanımı netleştirmek, olası nedenleri ayırmak ve sonucu veriyle doğrulamak.",{},"\u002Fyazilar\u002Fayni-metrik-farkli-sayi",{"title":523,"description":586},"yazilar\u002Fayni-metrik-farkli-sayi",[294,583,592],"Dashboard","RiMXurkQx0lcJ3SPJDWQk4Efg6XrsdzAVlB-SvcctDs",{"id":595,"title":596,"body":597,"category":650,"cover":651,"date":652,"demo":297,"description":653,"draft":297,"extension":299,"featured":300,"meta":654,"navigation":300,"path":655,"readingTime":287,"seo":656,"stem":657,"tags":658,"updated":296,"__hash__":660},"blog\u002Fyazilar\u002Fdis-servis-bildirim-kuyrugu.md","Dış Servis Kesintisini AI ile Nasıl Tasarlarım?",{"type":8,"value":598,"toc":645},[599,602,605,609,612,617,620,624,627,632,635,639,642],[11,600,601],{},"Bir işlem kendi sisteminde tamamlanırken dış servise bildirim gönderilemiyorsa kullanıcıya ne söyleyeceksin? Daha zor soru şu: istek zaman aşımına uğradığında karşı tarafın işlemi alıp almadığını nasıl anlayacaksın?",[11,603,604],{},"AI bu sorular için yararlı bir tartışma ortağı olabilir. Ama servisin gerçek davranışını bilmiyorsa, kulağa doğru gelen bir yeniden deneme önerisi kolayca mükerrer işlem üretebilir.",[22,606,608],{"id":607},"başarılı-akışın-yanına-belirsiz-sonucu-koy","Başarılı akışın yanına belirsiz sonucu koy",[11,610,611],{},"İlk istemde \"bildirim kuyruğu yaz\" demem. Önce durumları ayırmasını isterim:",[262,613,614],{},[11,615,616],{},"Bir kayıt uygulamada oluşuyor ve ardından dış servise bildiriliyor. Dış servis bazen geç yanıt veriyor. Başarılı yanıt, açık hata, zaman aşımı ve sonucun bilinmediği durumlar için ayrı bir durum tablosu hazırla. Kullanıcıya gösterilecek mesajı, sistemde tutulması gereken durumu ve hangi sorunun hâlâ cevapsız olduğunu belirt. Sağlayıcının desteklediği özellikleri varsayma.",[11,618,619],{},"Burada özellikle \"sonuç bilinmiyor\" satırı önemlidir. Yanıt gelmemesi, işlemin kesinlikle başarısız olduğu anlamına gelmez. Bu ayrımı atlayan bir tasarımda tekrar deneme de kullanıcıya verilen bilgi de yanlış olabilir.",[22,621,623],{"id":622},"aidan-ikinci-turda-eleştiri-iste","AI'dan ikinci turda eleştiri iste",[11,625,626],{},"İlk taslak çıktığında bu kez zayıf noktaları ara: Aynı bildirim iki kez gelirse ne olur? Uygulama işlemi kaydettikten sonra süreç durursa bildirim izlenebilir mi? Dış servis uzun süre yoksa bekleyen işler nasıl görünür? İnsan müdahalesi ne zaman gerekir?",[262,628,629],{},[11,630,631],{},"Hazırladığın akışı gözden geçir. Veri kaybına, mükerrer işleme veya yanlış \"başarılı\" mesajına yol açabilecek üç sınır durumu bul. Her biri için doğrulanabilir bir kabul ölçütü yaz. Çözümü tek bir teknolojiye bağlama.",[11,633,634],{},"Bu aşamada AI'dan belirli bir kuyruk ürünü veya kod kalıbı istemek zorunda değilsin. Önce sistemin nasıl davranması gerektiğini netleştirmen, araç seçimini kolaylaştırır.",[22,636,638],{"id":637},"servis-sözleşmesi-son-sözü-söyler","Servis sözleşmesi son sözü söyler",[11,640,641],{},"Hangi yanıtın tekrar denenebileceği, tekilleştirme anahtarının desteklenip desteklenmediği ve durum sorgusu olup olmadığı sağlayıcıya göre değişir. AI'ın bunları genel bilgiyle doldurmasına izin vermem. İlgili API belgesini ve kullandığım sürümü kontrol eder, öneriyi bunlarla karşılaştırırım.",[11,643,644],{},"Doğrulama için en azından başarılı yanıtı, kesin hatayı, zaman aşımını ve yinelenen bildirimi temsili verilerle sınarım. Sonuçların operasyon ekranında anlaşılır olması da testin parçasıdır. Sağlam entegrasyon, yalnızca isteği gönderebilmek değil, belirsiz kaldığında ne olduğunu açıklayabilmektir.",{"title":285,"searchDepth":286,"depth":287,"links":646},[647,648,649],{"id":607,"depth":286,"text":608},{"id":622,"depth":286,"text":623},{"id":637,"depth":286,"text":638},"Entegrasyon","\u002Fimages\u002Fblog\u002Fbildirim-kuyrugu.svg","2026-08-26","Entegrasyonlarda belirsiz sonucu, tekrar denemeyi ve görünürlüğü AI ile tartışmak; önerileri servis sözleşmesiyle sınamak.",{},"\u002Fyazilar\u002Fdis-servis-bildirim-kuyrugu",{"title":596,"description":653},"yazilar\u002Fdis-servis-bildirim-kuyrugu",[294,650,659],"API","PSNB7I7QOSpEPd6YofepljcPUclTVr-N83BTzTFzZbE",{"id":662,"title":663,"body":664,"category":720,"cover":721,"date":722,"demo":297,"description":723,"draft":297,"extension":299,"featured":300,"meta":724,"navigation":300,"path":725,"readingTime":287,"seo":726,"stem":727,"tags":728,"updated":296,"__hash__":730},"blog\u002Fyazilar\u002Fcoklu-veritabani-veri-izolasyonu.md","Veri İzolasyonu Kararında AI'dan Nasıl Yararlanırım?",{"type":8,"value":665,"toc":715},[666,669,672,676,679,682,687,690,694,697,702,705,709,712],[11,667,668],{},"Bir uygulamayı birden fazla kurum kullanacaksa veri sınırını nerede kuracağın önemli bir mimari karardır. Ortak tablolar, ayrı şemalar ve ayrı veritabanları arasında yalnızca birini \"en güvenli\" diye seçmek işe yaramaz. Kurum sayısı, işletim kapasitesi, raporlama ihtiyacı ve veri hassasiyeti kararı değiştirir.",[11,670,671],{},"AI burada karar verici olarak değil, seçeneklerin bedelini daha açık görmek için kullanılabilir.",[22,673,675],{"id":674},"önce-kısıtları-yaz","Önce kısıtları yaz",[11,677,678],{},"\"Çok kiracılı mimari öner\" demek, modeli hayalî bir projeye cevap vermeye iter. Daha iyi başlangıç, elindeki kısıtları ve bilinmeyenleri ayırmaktır: Kaç kurum bekleniyor? Kurumlar arası rapor gerekiyor mu? Yedek ve geri yükleme kurum bazında yapılacak mı? Ekibin kaç ayrı veritabanını işletebilecek kapasitesi var?",[11,680,681],{},"Bu bilgiler yoksa AI'ın ilk görevi soru sormak olmalı:",[262,683,684],{},[11,685,686],{},"Birden fazla kurumun kullandığı web uygulaması için veri izolasyonu seçeneği değerlendiriyorum. Henüz karar verme. Ortak tablo, ayrı şema ve ayrı veritabanı arasında seçim yapabilmek için benden gereken en önemli bilgileri sor. Bilinmeyenleri varsayım olarak açıkça işaretle.",[11,688,689],{},"Bu tur, \"bizim için doğru\" görünen ama aslında varsayımlarla doldurulmuş bir öneriyi erkenden yakalar.",[22,691,693],{"id":692},"seçenekleri-aynı-ölçütlerle-karşılaştır","Seçenekleri aynı ölçütlerle karşılaştır",[11,695,696],{},"Bağlam netleşince AI'dan bir karşılaştırma isteyebilirsin. Çıktıda her seçenek için veri sınırı, işletim yükü, sürüm geçişi, yedekleme ve kurumlar arası raporlama aynı başlıklarla yer almalı. Tek cümlelik \"şunu seç\" yerine, hangi koşul değişirse kararın da değişeceğini görmek daha değerlidir.",[262,698,699],{},[11,700,701],{},"Verdiğim kısıtlara göre üç seçeneği aynı ölçütlerle karşılaştır. Her seçeneğin güçlü yönünü, en önemli işletim riskini ve doğrulanması gereken varsayımını yaz. Sonunda bir öneri ver; önerinin hangi koşulda geçersiz olacağını da belirt.",[11,703,704],{},"Bu, mimari tartışmasını bir teknoloji tercihinden çıkarıp sınanabilir karara dönüştürür.",[22,706,708],{"id":707},"güvenlik-varsayımını-ayrıca-sına","Güvenlik varsayımını ayrıca sına",[11,710,711],{},"Ayrı veritabanı seçmek tek başına güvenlik garantisi vermez; bağlantının yanlış kuruma yönelmesi, yetki veya yedek süreçlerindeki hata hâlâ önemlidir. Ortak tabloda da uygulama filtresine güvenmek yerine veri erişiminin bütün yollarını gözden geçirmek gerekir. AI'dan özellikle sıradan akış dışındaki yolları düşünmesini iste: arka plan işleri, yönetici araçları, dışa aktarma ve geri yükleme.",[11,713,714],{},"Karar sonrası doğrulama sorumlusunun insanda kalması gerekir. Örnek verilerle kurumlar arası erişim testi, sürüm geçişi provası ve geri yükleme denemesi yapılmadan bir karşılaştırma tablosu mimariyi doğrulamış sayılmaz. AI seçenekleri hızla görünür kılar; sınırın gerçekten çalıştığını test gösterir.",{"title":285,"searchDepth":286,"depth":287,"links":716},[717,718,719],{"id":674,"depth":286,"text":675},{"id":692,"depth":286,"text":693},{"id":707,"depth":286,"text":708},"Mimari","\u002Fimages\u002Fblog\u002Fveri-izolasyonu.svg","2026-08-19","Çok kurumlu bir sistemde seçenekleri AI ile karşılaştırmak, eksik varsayımları bulmak ve veri sınırını doğrulamak.",{},"\u002Fyazilar\u002Fcoklu-veritabani-veri-izolasyonu",{"title":663,"description":723},"yazilar\u002Fcoklu-veritabani-veri-izolasyonu",[294,720,729],"Veritabanı","FaEN_667j9OeDDWMbiBE9yBxc_pOliVgPyfqTPjPB_w",{"id":5,"title":6,"body":732,"category":294,"cover":295,"date":296,"demo":297,"description":298,"draft":297,"extension":299,"featured":300,"meta":913,"navigation":300,"path":302,"readingTime":303,"seo":914,"stem":305,"tags":915,"updated":296,"__hash__":309},{"type":8,"value":733,"toc":906},[734,738,740,742,744,748,750,833,835,837,850,860,867,869,879,886,888,892,896,900,902],[11,735,13,736],{},[15,737,17],{},[11,739,20],{},[22,741,25],{"id":24},[11,743,28],{},[11,745,31,746],{},[15,747,34],{},[22,749,38],{"id":37},[40,751,752,762],{},[43,753,754],{},[46,755,756,758,760],{},[49,757,51],{},[49,759,54],{},[49,761,57],{},[59,763,764,775,786,797,808,822],{},[46,765,766,771,773],{},[64,767,768],{},[67,769,72],{"href":69,"rel":770},[71],[64,772,75],{},[64,774,78],{},[46,776,777,782,784],{},[64,778,779],{},[67,780,87],{"href":85,"rel":781},[71],[64,783,90],{},[64,785,93],{},[46,787,788,793,795],{},[64,789,790,103],{},[67,791,102],{"href":100,"rel":792},[71],[64,794,106],{},[64,796,109],{},[46,798,799,804,806],{},[64,800,801],{},[67,802,118],{"href":116,"rel":803},[71],[64,805,121],{},[64,807,124],{},[46,809,810,815,820],{},[64,811,812],{},[67,813,133],{"href":131,"rel":814},[71],[64,816,136,817,142],{},[67,818,141],{"href":139,"rel":819},[71],[64,821,145],{},[46,823,824,829,831],{},[64,825,826],{},[67,827,154],{"href":152,"rel":828},[71],[64,830,157],{},[64,832,160],{},[11,834,163],{},[22,836,167],{"id":166},[11,838,839,173,841,178,844,183,847,189],{},[15,840,172],{},[67,842,177],{"href":69,"rel":843},[71],[67,845,182],{"href":85,"rel":846},[71],[67,848,188],{"href":186,"rel":849},[71],[11,851,852,195,854,200,857,205],{},[15,853,194],{},[67,855,199],{"href":116,"rel":856},[71],[67,858,204],{"href":131,"rel":859},[71],[11,861,862,211,864,216],{},[15,863,210],{},[67,865,215],{"href":139,"rel":866},[71],[22,868,220],{"id":219},[11,870,871,226,873,231,876,237],{},[15,872,225],{},[67,874,230],{"href":152,"rel":875},[71],[67,877,236],{"href":234,"rel":878},[71],[11,880,881,243,883,249],{},[15,882,242],{},[67,884,248],{"href":246,"rel":885},[71],[22,887,253],{"id":252},[11,889,256,890,260],{},[15,891,259],{},[262,893,894],{},[11,895,266],{},[11,897,269,898,273],{},[15,899,272],{},[11,901,276],{},[11,903,279,904,283],{},[15,905,282],{},{"title":285,"searchDepth":286,"depth":287,"links":907},[908,909,910,911,912],{"id":24,"depth":286,"text":25},{"id":37,"depth":286,"text":38},{"id":166,"depth":286,"text":167},{"id":219,"depth":286,"text":220},{"id":252,"depth":286,"text":253},{},{"title":6,"description":298},[294,307,308],[917,1102,1184,1227,1272,1313],{"id":5,"title":6,"body":918,"category":294,"cover":295,"date":296,"demo":297,"description":298,"draft":297,"extension":299,"featured":300,"meta":1099,"navigation":300,"path":302,"readingTime":303,"seo":1100,"stem":305,"tags":1101,"updated":296,"__hash__":309},{"type":8,"value":919,"toc":1092},[920,924,926,928,930,934,936,1019,1021,1023,1036,1046,1053,1055,1065,1072,1074,1078,1082,1086,1088],[11,921,13,922],{},[15,923,17],{},[11,925,20],{},[22,927,25],{"id":24},[11,929,28],{},[11,931,31,932],{},[15,933,34],{},[22,935,38],{"id":37},[40,937,938,948],{},[43,939,940],{},[46,941,942,944,946],{},[49,943,51],{},[49,945,54],{},[49,947,57],{},[59,949,950,961,972,983,994,1008],{},[46,951,952,957,959],{},[64,953,954],{},[67,955,72],{"href":69,"rel":956},[71],[64,958,75],{},[64,960,78],{},[46,962,963,968,970],{},[64,964,965],{},[67,966,87],{"href":85,"rel":967},[71],[64,969,90],{},[64,971,93],{},[46,973,974,979,981],{},[64,975,976,103],{},[67,977,102],{"href":100,"rel":978},[71],[64,980,106],{},[64,982,109],{},[46,984,985,990,992],{},[64,986,987],{},[67,988,118],{"href":116,"rel":989},[71],[64,991,121],{},[64,993,124],{},[46,995,996,1001,1006],{},[64,997,998],{},[67,999,133],{"href":131,"rel":1000},[71],[64,1002,136,1003,142],{},[67,1004,141],{"href":139,"rel":1005},[71],[64,1007,145],{},[46,1009,1010,1015,1017],{},[64,1011,1012],{},[67,1013,154],{"href":152,"rel":1014},[71],[64,1016,157],{},[64,1018,160],{},[11,1020,163],{},[22,1022,167],{"id":166},[11,1024,1025,173,1027,178,1030,183,1033,189],{},[15,1026,172],{},[67,1028,177],{"href":69,"rel":1029},[71],[67,1031,182],{"href":85,"rel":1032},[71],[67,1034,188],{"href":186,"rel":1035},[71],[11,1037,1038,195,1040,200,1043,205],{},[15,1039,194],{},[67,1041,199],{"href":116,"rel":1042},[71],[67,1044,204],{"href":131,"rel":1045},[71],[11,1047,1048,211,1050,216],{},[15,1049,210],{},[67,1051,215],{"href":139,"rel":1052},[71],[22,1054,220],{"id":219},[11,1056,1057,226,1059,231,1062,237],{},[15,1058,225],{},[67,1060,230],{"href":152,"rel":1061},[71],[67,1063,236],{"href":234,"rel":1064},[71],[11,1066,1067,243,1069,249],{},[15,1068,242],{},[67,1070,248],{"href":246,"rel":1071},[71],[22,1073,253],{"id":252},[11,1075,256,1076,260],{},[15,1077,259],{},[262,1079,1080],{},[11,1081,266],{},[11,1083,269,1084,273],{},[15,1085,272],{},[11,1087,276],{},[11,1089,279,1090,283],{},[15,1091,282],{},{"title":285,"searchDepth":286,"depth":287,"links":1093},[1094,1095,1096,1097,1098],{"id":24,"depth":286,"text":25},{"id":37,"depth":286,"text":38},{"id":166,"depth":286,"text":167},{"id":219,"depth":286,"text":220},{"id":252,"depth":286,"text":253},{},{"title":6,"description":298},[294,307,308],{"id":311,"title":312,"body":1103,"category":294,"cover":435,"date":436,"demo":297,"description":437,"draft":297,"extension":299,"featured":300,"meta":1181,"navigation":300,"path":439,"readingTime":440,"seo":1182,"stem":442,"tags":1183,"updated":296,"__hash__":446},{"type":8,"value":1104,"toc":1174},[1105,1107,1109,1111,1113,1115,1117,1119,1137,1139,1143,1145,1147,1149,1151,1153,1155,1157,1159,1161,1163],[11,1106,317],{},[11,1108,320],{},[22,1110,324],{"id":323},[11,1112,327],{},[11,1114,330],{},[22,1116,334],{"id":333},[11,1118,337],{},[339,1120,1121,1125,1129,1133],{},[342,1122,1123,347],{},[15,1124,346],{},[342,1126,1127,353],{},[15,1128,352],{},[342,1130,1131,359],{},[15,1132,358],{},[342,1134,1135,365],{},[15,1136,364],{},[11,1138,368],{},[262,1140,1141],{},[11,1142,373],{},[11,1144,376],{},[22,1146,380],{"id":379},[11,1148,383],{},[11,1150,386],{},[22,1152,390],{"id":389},[11,1154,393],{},[11,1156,396],{},[22,1158,400],{"id":399},[11,1160,403],{},[11,1162,406],{},[11,1164,409,1165,415,1168,421,1171,427],{},[67,1166,414],{"href":412,"rel":1167},[71],[67,1169,420],{"href":418,"rel":1170},[71],[67,1172,426],{"href":424,"rel":1173},[71],{"title":285,"searchDepth":286,"depth":287,"links":1175},[1176,1177,1178,1179,1180],{"id":323,"depth":286,"text":324},{"id":333,"depth":286,"text":334},{"id":379,"depth":286,"text":380},{"id":389,"depth":286,"text":390},{"id":399,"depth":286,"text":400},{},{"title":312,"description":437},[294,444,445],{"id":448,"title":449,"body":1185,"category":510,"cover":511,"date":512,"demo":297,"description":513,"draft":297,"extension":299,"featured":300,"meta":1224,"navigation":300,"path":515,"readingTime":287,"seo":1225,"stem":517,"tags":1226,"updated":296,"__hash__":520},{"type":8,"value":1186,"toc":1219},[1187,1189,1191,1193,1195,1199,1201,1203,1205,1213,1215,1217],[11,1188,454],{},[11,1190,457],{},[22,1192,461],{"id":460},[11,1194,464],{},[262,1196,1197],{},[11,1198,469],{},[11,1200,472],{},[22,1202,476],{"id":475},[11,1204,479],{},[11,1206,482,1207,488,1210,494],{},[67,1208,487],{"href":485,"rel":1209},[71],[67,1211,493],{"href":491,"rel":1212},[71],[22,1214,498],{"id":497},[11,1216,501],{},[11,1218,504],{},{"title":285,"searchDepth":286,"depth":287,"links":1220},[1221,1222,1223],{"id":460,"depth":286,"text":461},{"id":475,"depth":286,"text":476},{"id":497,"depth":286,"text":498},{},{"title":449,"description":513},[294,510,519],{"id":522,"title":523,"body":1228,"category":583,"cover":584,"date":585,"demo":297,"description":586,"draft":297,"extension":299,"featured":300,"meta":1269,"navigation":300,"path":588,"readingTime":287,"seo":1270,"stem":590,"tags":1271,"updated":296,"__hash__":593},{"type":8,"value":1229,"toc":1264},[1230,1232,1234,1236,1238,1240,1244,1246,1248,1250,1252,1256,1258,1260,1262],[11,1231,528],{},[11,1233,531],{},[22,1235,535],{"id":534},[11,1237,538],{},[11,1239,541],{},[262,1241,1242],{},[11,1243,546],{},[11,1245,549],{},[22,1247,553],{"id":552},[11,1249,556],{},[11,1251,559],{},[262,1253,1254],{},[11,1255,564],{},[11,1257,567],{},[22,1259,571],{"id":570},[11,1261,574],{},[11,1263,577],{},{"title":285,"searchDepth":286,"depth":287,"links":1265},[1266,1267,1268],{"id":534,"depth":286,"text":535},{"id":552,"depth":286,"text":553},{"id":570,"depth":286,"text":571},{},{"title":523,"description":586},[294,583,592],{"id":595,"title":596,"body":1273,"category":650,"cover":651,"date":652,"demo":297,"description":653,"draft":297,"extension":299,"featured":300,"meta":1310,"navigation":300,"path":655,"readingTime":287,"seo":1311,"stem":657,"tags":1312,"updated":296,"__hash__":660},{"type":8,"value":1274,"toc":1305},[1275,1277,1279,1281,1283,1287,1289,1291,1293,1297,1299,1301,1303],[11,1276,601],{},[11,1278,604],{},[22,1280,608],{"id":607},[11,1282,611],{},[262,1284,1285],{},[11,1286,616],{},[11,1288,619],{},[22,1290,623],{"id":622},[11,1292,626],{},[262,1294,1295],{},[11,1296,631],{},[11,1298,634],{},[22,1300,638],{"id":637},[11,1302,641],{},[11,1304,644],{},{"title":285,"searchDepth":286,"depth":287,"links":1306},[1307,1308,1309],{"id":607,"depth":286,"text":608},{"id":622,"depth":286,"text":623},{"id":637,"depth":286,"text":638},{},{"title":596,"description":653},[294,650,659],{"id":662,"title":663,"body":1314,"category":720,"cover":721,"date":722,"demo":297,"description":723,"draft":297,"extension":299,"featured":300,"meta":1353,"navigation":300,"path":725,"readingTime":287,"seo":1354,"stem":727,"tags":1355,"updated":296,"__hash__":730},{"type":8,"value":1315,"toc":1348},[1316,1318,1320,1322,1324,1326,1330,1332,1334,1336,1340,1342,1344,1346],[11,1317,668],{},[11,1319,671],{},[22,1321,675],{"id":674},[11,1323,678],{},[11,1325,681],{},[262,1327,1328],{},[11,1329,686],{},[11,1331,689],{},[22,1333,693],{"id":692},[11,1335,696],{},[262,1337,1338],{},[11,1339,701],{},[11,1341,704],{},[22,1343,708],{"id":707},[11,1345,711],{},[11,1347,714],{},{"title":285,"searchDepth":286,"depth":287,"links":1349},[1350,1351,1352],{"id":674,"depth":286,"text":675},{"id":692,"depth":286,"text":693},{"id":707,"depth":286,"text":708},{},{"title":663,"description":723},[294,720,729],1789245112381]