[{"data":1,"prerenderedAt":809},["ShallowReactive",2],{"post-\u002Ftr\u002Fmutable-ve-immutable-kavrami":3},{"page":4,"translation":639,"nav":656,"related":785,"random":796},{"id":5,"title":6,"body":7,"categories":637,"category":639,"date":640,"description":641,"draft":642,"extension":643,"image":644,"kind":639,"lang":322,"meta":645,"navigation":262,"path":646,"readingTime":266,"seo":647,"slug":648,"stem":649,"tags":650,"translationKey":639,"type":638,"updated":639,"__hash__":655},"postsTr\u002Ftr\u002Fmutable-ve-immutable-kavrami.md","Mutable ve Immutable Kavramları Nedir?",{"type":8,"value":9,"toc":625},"minimark",[10,23,26,92,95,100,103,106,156,159,203,206,208,212,215,298,309,311,315,394,396,400,417,492,499,501,505,513,519,575,582,586,606,610,621],[11,12,13,14,18,19,22],"p",{},"Seçtiğiniz programlama dilinden bağımsız olarak, kod yazarken en sık karşılaşacağınız temel kavramlardan ikisi ",[15,16,17],"strong",{},"Mutable"," (değiştirilebilir) ve ",[15,20,21],{},"Immutable"," (değiştirilemez) yapılardır.",[11,24,25],{},"Hangi dilin hangi veri tipini nasıl ele aldığını bilmek, özellikle performans optimizasyonu yaparken ve beklenmeyen yan etkileri (side-effects) önlemede kritik bir rol oynar.",[27,28,29,35],"blockquote",{},[11,30,31,32],{},"💡 ",[15,33,34],{},"Özet (TL;DR):",[36,37,38,68],"ul",{},[39,40,41,44,45,49,50,53,54,49,57,60,61,49,64,67],"li",{},[15,42,43],{},"Mutable (Değiştirilebilir):"," Nesne oluşturulduktan sonra, bellekteki adresi (pointer) değişmeden değerinin değiştirilebildiği veri tipleridir. (Örn: JavaScript ",[46,47,48],"code",{},"Object","\u002F",[46,51,52],{},"Array",", Python ",[46,55,56],{},"list",[46,58,59],{},"dict",", Go ",[46,62,63],{},"slice",[46,65,66],{},"map",").",[39,69,70,73,74,49,77,53,80,49,83,60,86,49,89,67],{},[15,71,72],{},"Immutable (Değiştirilemez):"," Oluşturulduktan sonra bellekteki değeri doğrudan değiştirilemeyen veri tipleridir. Üzerinde yapılan her değişiklik, bellekte yeni bir adres tahsis edilerek yeni bir kopya oluşturulmasıyla sonuçlanır. (Örn: JavaScript ",[46,75,76],{},"String",[46,78,79],{},"Number",[46,81,82],{},"tuple",[46,84,85],{},"str",[46,87,88],{},"string",[46,90,91],{},"int",[93,94],"hr",{},[96,97,99],"h2",{"id":98},"değiştirilemez-immutable-değerler-nasıl-çalışır","Değiştirilemez (Immutable) Değerler Nasıl Çalışır?",[11,101,102],{},"\"Eğer bir string değiştirilemezse, ben Javascript'te neden bir string değişkenine yeni değer atayabiliyorum?\" sorusu programlamaya yeni başlayanların en çok kafasını karıştıran sorudur.",[11,104,105],{},"Aşağıdaki JavaScript örneğini inceleyelim:",[107,108,113],"pre",{"className":109,"code":110,"language":111,"meta":112,"style":112},"language-javascript shiki shiki-themes github-light github-dark","let text = \"Hello\";\ntext = text + \" World\";\n","javascript","",[46,114,115,138],{"__ignoreMap":112},[116,117,120,124,128,131,135],"span",{"class":118,"line":119},"line",1,[116,121,123],{"class":122},"szBVR","let",[116,125,127],{"class":126},"sVt8B"," text ",[116,129,130],{"class":122},"=",[116,132,134],{"class":133},"sZZnC"," \"Hello\"",[116,136,137],{"class":126},";\n",[116,139,141,144,146,148,151,154],{"class":118,"line":140},2,[116,142,143],{"class":126},"text ",[116,145,130],{"class":122},[116,147,127],{"class":126},[116,149,150],{"class":122},"+",[116,152,153],{"class":133}," \" World\"",[116,155,137],{"class":126},[11,157,158],{},"Bu basit kod çalışırken arka planda şu adımlar gerçekleşir:",[160,161,162,173,182,192,197],"ol",{},[39,163,164,165,168,169,172],{},"Bellekte ",[46,166,167],{},"\"Hello\""," değerini içeren bir alan oluşturulur ve ",[46,170,171],{},"text"," değişkeni bu adresi işaret eder.",[39,174,175,178,179,181],{},[46,176,177],{},"text + \" World\""," işlemi yapıldığında ",[46,180,167],{}," metni yerinde değiştirilmez.",[39,183,164,184,187,188,191],{},[46,185,186],{},"\"Hello World\""," değerine sahip ",[15,189,190],{},"tamamen yeni bir alan"," oluşturulur.",[39,193,194,196],{},[46,195,171],{}," değişkeni artık bu yeni adresi işaret etmeye başlar.",[39,198,199,200,202],{},"Eski ",[46,201,167],{}," değeri ise artık hiçbir değişken tarafından işaret edilmediği için çöp toplayıcı (Garbage Collector) tarafından temizlenmeyi bekler.",[11,204,205],{},"Eğer bir döngü içinde 10.000 kez string birleştirme yapıyorsanız, aslında arka planda Garbage Collector'ın temizlemesi gereken 9.999 adet çöp nesne üretmiş olursunuz. Bu yüzden yüksek döngülü işlemlerde doğrudan string birleştirmek yerine buffer veya array tabanlı birleştirme yöntemleri tercih edilir.",[93,207],{},[96,209,211],{"id":210},"değiştirilebilir-mutable-değerler-ve-yan-etkileri","Değiştirilebilir (Mutable) Değerler ve Yan Etkileri",[11,213,214],{},"Mutable veri tiplerinde değer doğrudan bellekteki adresi üzerinde güncellenir. Bu durum bellek tasarrufu sağlasa da, referans paylaşımlarından dolayı beklenmeyen hatalara yol açabilir:",[107,216,218],{"className":109,"code":217,"language":111,"meta":112,"style":112},"const user1 = { name: \"Evren\" };\nconst user2 = user1; \u002F\u002F Referans kopyalandı, yeni bir nesne oluşmadı.\n\nuser2.name = \"Ahmet\";\n\nconsole.log(user1.name); \u002F\u002F Çıktı: \"Ahmet\"\n",[46,219,220,241,257,264,277,282],{"__ignoreMap":112},[116,221,222,225,229,232,235,238],{"class":118,"line":119},[116,223,224],{"class":122},"const",[116,226,228],{"class":227},"sj4cs"," user1",[116,230,231],{"class":122}," =",[116,233,234],{"class":126}," { name: ",[116,236,237],{"class":133},"\"Evren\"",[116,239,240],{"class":126}," };\n",[116,242,243,245,248,250,253],{"class":118,"line":140},[116,244,224],{"class":122},[116,246,247],{"class":227}," user2",[116,249,231],{"class":122},[116,251,252],{"class":126}," user1; ",[116,254,256],{"class":255},"sJ8bj","\u002F\u002F Referans kopyalandı, yeni bir nesne oluşmadı.\n",[116,258,260],{"class":118,"line":259},3,[116,261,263],{"emptyLinePlaceholder":262},true,"\n",[116,265,267,270,272,275],{"class":118,"line":266},4,[116,268,269],{"class":126},"user2.name ",[116,271,130],{"class":122},[116,273,274],{"class":133}," \"Ahmet\"",[116,276,137],{"class":126},[116,278,280],{"class":118,"line":279},5,[116,281,263],{"emptyLinePlaceholder":262},[116,283,285,288,292,295],{"class":118,"line":284},6,[116,286,287],{"class":126},"console.",[116,289,291],{"class":290},"sScJk","log",[116,293,294],{"class":126},"(user1.name); ",[116,296,297],{"class":255},"\u002F\u002F Çıktı: \"Ahmet\"\n",[11,299,300,301,304,305,308],{},"Yukarıdaki örnekte ",[46,302,303],{},"user2"," üzerinde yaptığımız değişiklik, ",[46,306,307],{},"user1"," nesnesini de doğrudan etkiledi. Çünkü her iki değişken भी bellekte aynı nesne adresini gösteriyordu.",[93,310],{},[96,312,314],{"id":313},"mutable-vs-immutable-karşılaştırması","Mutable vs Immutable Karşılaştırması",[316,317,318,335],"table",{},[319,320,321],"thead",{},[322,323,324,329,332],"tr",{},[325,326,328],"th",{"align":327},"left","Özellik",[325,330,331],{"align":327},"Mutable (Değiştirilebilir)",[325,333,334],{"align":327},"Immutable (Değiştirilemez)",[336,337,338,352,368,381],"tbody",{},[322,339,340,346,349],{},[341,342,343],"td",{"align":327},[15,344,345],{},"Bellek Yönetimi",[341,347,348],{"align":327},"Değer bellekte yerinde değiştirilir (In-place).",[341,350,351],{"align":327},"Her değişiklik yeni bellek tahsisi (Allocation) gerektirir.",[322,353,354,359,362],{},[341,355,356],{"align":327},[15,357,358],{},"İş Parçacığı Güvenliği",[341,360,361],{"align":327},"Güvenli değildir (Race condition riski vardır).",[341,363,364,367],{"align":327},[15,365,366],{},"inherently thread-safe"," (İş parçacığı güvenlidir).",[322,369,370,375,378],{},[341,371,372],{"align":327},[15,373,374],{},"Yan Etki Riskleri",[341,376,377],{"align":327},"Referans paylaşımlarında kazara veri bozulması yaşanabilir.",[341,379,380],{"align":327},"Yan etki (side-effect) barındırmaz, tahmin edilebilirdir.",[322,382,383,388,391],{},[341,384,385],{"align":327},[15,386,387],{},"En İyi Kullanım Senaryosu",[341,389,390],{"align":327},"Yoğun veri modifikasyonu ve döngüsel veri yapıları.",[341,392,393],{"align":327},"Eş zamanlı (concurrency) işlemler, state yönetimi, konfigürasyonlar.",[93,395],{},[96,397,399],{"id":398},"go-golang-dünyasında-mutable-ve-immutable","Go (Golang) Dünyasında Mutable ve Immutable",[11,401,402,403,405,406,408,409,412,413,416],{},"Go dilinde veri yapıları varsayılan olarak değer (value) tipindedir ve fonksiyonlara parametre olarak gönderildiğinde kopyalanırlar. Ancak ",[46,404,63],{},", ",[46,407,66],{}," ve ",[46,410,411],{},"channel"," gibi yapılar arka planda birer pointer barındırdığı için ",[15,414,415],{},"mutable"," gibi davranırlar:",[107,418,422],{"className":419,"code":420,"language":421,"meta":112,"style":112},"language-go shiki shiki-themes github-light github-dark","package main\n\nimport \"fmt\"\n\nfunc updateSlice(s []int) {\n    s[0] = 99 \u002F\u002F Orijinal slice değerini değiştirir!\n}\n\nfunc main() {\n    mySlice := []int{1, 2, 3}\n    updateSlice(mySlice)\n    fmt.Println(mySlice) \u002F\u002F Çıktı: [99, 2, 3]\n}\n","go",[46,423,424,429,433,438,442,447,452,458,463,469,475,481,487],{"__ignoreMap":112},[116,425,426],{"class":118,"line":119},[116,427,428],{},"package main\n",[116,430,431],{"class":118,"line":140},[116,432,263],{"emptyLinePlaceholder":262},[116,434,435],{"class":118,"line":259},[116,436,437],{},"import \"fmt\"\n",[116,439,440],{"class":118,"line":266},[116,441,263],{"emptyLinePlaceholder":262},[116,443,444],{"class":118,"line":279},[116,445,446],{},"func updateSlice(s []int) {\n",[116,448,449],{"class":118,"line":284},[116,450,451],{},"    s[0] = 99 \u002F\u002F Orijinal slice değerini değiştirir!\n",[116,453,455],{"class":118,"line":454},7,[116,456,457],{},"}\n",[116,459,461],{"class":118,"line":460},8,[116,462,263],{"emptyLinePlaceholder":262},[116,464,466],{"class":118,"line":465},9,[116,467,468],{},"func main() {\n",[116,470,472],{"class":118,"line":471},10,[116,473,474],{},"    mySlice := []int{1, 2, 3}\n",[116,476,478],{"class":118,"line":477},11,[116,479,480],{},"    updateSlice(mySlice)\n",[116,482,484],{"class":118,"line":483},12,[116,485,486],{},"    fmt.Println(mySlice) \u002F\u002F Çıktı: [99, 2, 3]\n",[116,488,490],{"class":118,"line":489},13,[116,491,457],{},[11,493,494,495,498],{},"Go'da büyük nesneleri metotlara geçirirken, sürekli kopyalama yapıp Garbage Collector'a yük bindirmemek için nesnelerin kendisi yerine pointer'larını (",[46,496,497],{},"*MyStruct",") parametre olarak geçmek performansı ciddi ölçüde artırır.",[93,500],{},[96,502,504],{"id":503},"sıkça-sorulan-sorular-faq","Sıkça Sorulan Sorular (FAQ)",[506,507,509,510,512],"h3",{"id":508},"javascriptteki-const-anahtar-kelimesi-nesneleri-immutable-yapar-mı","JavaScript'teki ",[46,511,224],{}," anahtar kelimesi nesneleri immutable yapar mı?",[11,514,515,516,518],{},"Hayır. ",[46,517,224],{}," sadece değişkenin referans adresinin yeniden atanmasını (reassignment) engeller. Değişkenin işaret ettiği nesne mutable (Object, Array vb.) ise, nesnenin içeriğini değiştirmeye devam edebilirsiniz:",[107,520,522],{"className":109,"code":521,"language":111,"meta":112,"style":112},"const myArr = [1, 2];\nmyArr.push(3); \u002F\u002F Hata vermez, çalışır!\n\u002F\u002F myArr = [4, 5]; \u002F\u002F Hata verir! (Reassignment engellenir)\n",[46,523,524,547,567],{"__ignoreMap":112},[116,525,526,528,531,533,536,539,541,544],{"class":118,"line":119},[116,527,224],{"class":122},[116,529,530],{"class":227}," myArr",[116,532,231],{"class":122},[116,534,535],{"class":126}," [",[116,537,538],{"class":227},"1",[116,540,405],{"class":126},[116,542,543],{"class":227},"2",[116,545,546],{"class":126},"];\n",[116,548,549,552,555,558,561,564],{"class":118,"line":140},[116,550,551],{"class":126},"myArr.",[116,553,554],{"class":290},"push",[116,556,557],{"class":126},"(",[116,559,560],{"class":227},"3",[116,562,563],{"class":126},"); ",[116,565,566],{"class":255},"\u002F\u002F Hata vermez, çalışır!\n",[116,568,569,572],{"class":118,"line":259},[116,570,571],{"class":255},"\u002F\u002F myArr = [4, 5];",[116,573,574],{"class":255}," \u002F\u002F Hata verir! (Reassignment engellenir)\n",[11,576,577,578,581],{},"Eğer JavaScript'te bir nesneyi tamamen salt-okunur (immutable) yapmak istiyorsanız, sığ düzeyde (shallow) kilitleme sağlayan ",[46,579,580],{},"Object.freeze(obj)"," metodunu kullanmanız gerekir.",[506,583,585],{"id":584},"neden-string-veri-tipi-neredeyse-tüm-dillerde-immutable-tasarlanmıştır","Neden String veri tipi neredeyse tüm dillerde immutable tasarlanmıştır?",[160,587,588,594,600],{},[39,589,590,593],{},[15,591,592],{},"Güvenlik:"," String değerler ağ bağlantılarında, veritabanı bağlantı adreslerinde ve dosya yollarında parametre olarak sıkça kullanılır. String mutable olsaydı, bu kritik veriler süreç içinde değişebilir ve güvenlik açıkları oluşturabilirdi.",[39,595,596,599],{},[15,597,598],{},"Önbellekleme (Interning):"," Diller bellekte aynı değere sahip string nesnelerinden sadece bir adet tutarak bellek tasarrufu yapabilir (String Pool).",[39,601,602,605],{},[15,603,604],{},"Hash Key Tutarlılığı:"," String'ler genellikle map\u002Fsözlük yapılarında anahtar (key) olarak kullanılır. Değer değişirse hash kodu da bozulurdu.",[506,607,609],{"id":608},"modern-state-yönetimlerinde-react-state-redux-neden-immutability-zorunludur","Modern state yönetimlerinde (React State, Redux) neden immutability zorunludur?",[11,611,612,613,616,617,620],{},"Çünkü state'in değişip değişmediğini anlamanın en hızlı yolu, referans adreslerinin değişip değişmediğini kontrol etmektir (",[46,614,615],{},"===","). Eğer state'i mutable olarak güncellerseniz referans adresi aynı kalacağı için arayüz kütüphaneleri durum değişikliğini algılayamaz (React render tetiklenmez). Bu yüzden state her zaman ",[46,618,619],{},"[...prev, newValue]"," şeklinde yeni bir kopya oluşturularak güncellenir.",[622,623,624],"style",{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}",{"title":112,"searchDepth":140,"depth":140,"links":626},[627,628,629,630,631],{"id":98,"depth":140,"text":99},{"id":210,"depth":140,"text":211},{"id":313,"depth":140,"text":314},{"id":398,"depth":140,"text":399},{"id":503,"depth":140,"text":504,"children":632},[633,635,636],{"id":508,"depth":259,"text":634},"JavaScript'teki const anahtar kelimesi nesneleri immutable yapar mı?",{"id":584,"depth":259,"text":585},{"id":608,"depth":259,"text":609},[638],"technical",null,"2021-08-17","Programlamada mutable (değiştirilebilir) ve immutable (değiştirilemez) veri kavramlarını, bellek yönetimini ve JS\u002FGo dillerindeki yansımalarını öğrenin.",false,"md","\u002Fimages\u002Fhero\u002Fmutable-immutable.avif",{},"\u002Ftr\u002Fmutable-ve-immutable-kavrami",{"title":6,"description":641},"mutable-ve-immutable-kavrami","tr\u002Fmutable-ve-immutable-kavrami",[651,652,415,653,111,654],"immutable","ipucu","pointer","golang","LE0s6MXQLi2WfDwaxOi6mMLheOJNa-C7DkQXsC99BNo",{"prev":657,"next":660,"others":663,"lucky":782,"readingTime":266},{"path":658,"title":659},"\u002Ftr\u002Fadapter-tasarim-deseni-nedir","Adapter Tasarım Deseni Nedir?",{"path":661,"title":662},"\u002Ftr\u002Fsingleton-tasarim-deseni-nedir","Singleton Tasarım Deseni Nedir?",[664,667,668,671,674,677,680,683,686,689,692,695,698,701,704,707,710,713,716,719,722,725,728,731,734,737,740,743,746,749,752,755,758,761,764,767,770,773,776,779],{"path":665,"title":666},"\u002Ftr\u002Ftailwind-css-just-in-time-modu","Tailwind CSS Just-in-Time (JIT) Modu Nedir?",{"path":661,"title":662},{"path":669,"title":670},"\u002Ftr\u002Frestful-api-bilesenleri","RESTful API Bileşenleri",{"path":672,"title":673},"\u002Ftr\u002Ffacade-tasarim-deseni-nedir","Facade Tasarım Deseni Nedir?",{"path":675,"title":676},"\u002Ftr\u002Fes12-nedir-ecmascript-2021-nedir","ES12 Nedir? ECMAScript 2021 Nedir?",{"path":678,"title":679},"\u002Ftr\u002Fgo-programlama-dilinin-ozellikleri","Go Programlama Dilinin Özellikleri",{"path":681,"title":682},"\u002Ftr\u002Fnostalji-ibibik-online","Nostalji: İbibik Online (1998'den Bir Web Macerası)",{"path":684,"title":685},"\u002Ftr\u002Fwordpress-yonetici-sifresini-wp-cli-kullanarak-sifirlama","WordPress Yönetici Şifresini WP-CLI Kullanarak Sıfırlama",{"path":687,"title":688},"\u002Ftr\u002Ffull-stack-proje-agaci","Full-Stack Proje Yol Haritası ve İçindekiler",{"path":690,"title":691},"\u002Ftr\u002Ftailwind-css-nerede-kullanilir-tailwind-css-nerede-kullanilmaz","Tailwind CSS Nerede Kullanılır? Tailwind CSS Nerede Kullanılmaz?",{"path":693,"title":694},"\u002Ftr\u002Fcomposite-tasarim-deseni-nedir","Composite Tasarım Deseni Nedir?",{"path":696,"title":697},"\u002Ftr\u002Fearly-return-erken-donus-nedir","Early Return \u002F Erken Dönüş nedir?",{"path":699,"title":700},"\u002Ftr\u002Fdecorator-tasarim-deseni-nedir","Decorator Tasarım Deseni Nedir?",{"path":702,"title":703},"\u002Ftr\u002Fes14-nedir-ecmascript-2023-nedir","ES14 nedir? ECMAScript 2023 nedir?",{"path":705,"title":706},"\u002Ftr\u002Fgo-ile-websockets-websocket-upgrader-nedir","Go ile WebSockets: Upgrader Nedir?",{"path":708,"title":709},"\u002Ftr\u002Fdocker-ile-mongodb-kurulumu","Docker ile MongoDB Kurulumu",{"path":711,"title":712},"\u002Ftr\u002Frabbitmq-nedir","RabbitMQ Nedir?",{"path":714,"title":715},"\u002Ftr\u002Fvite-nedir","Vite Nedir? Modern Web Geliştirme ve Paketleme Aracı",{"path":717,"title":718},"\u002Ftr\u002Fiterator-tasarim-deseni-nedir","Iterator Tasarım Deseni Nedir?",{"path":720,"title":721},"\u002Ftr\u002Fes9-nedir-ecmascript-2018-nedir","ES9 Nedir? ECMAScript 2018 Nedir?",{"path":723,"title":724},"\u002Ftr\u002Fes17-nedir-ecmascript-2026-nedir","ES17 nedir? ECMAScript 2026 nedir?",{"path":726,"title":727},"\u002Ftr\u002Fmemento-tasarim-deseni-nedir","Memento Tasarım Deseni Nedir?",{"path":729,"title":730},"\u002Ftr\u002Fdocker-ile-rabbitmq-kurulumu","Docker ile RabbitMQ Kurulumu",{"path":732,"title":733},"\u002Ftr\u002Fgo-slice-veri-tipi","Go Veri Tipleri: Slice",{"path":735,"title":736},"\u002Ftr\u002Fdesign-patterns-tasarim-desenleri-nedir","Design Patterns \u002F Tasarım Desenleri nedir?",{"path":738,"title":739},"\u002Ftr\u002Ftricolor-garbage-collection-algoritmasi-nedir","Tricolor Garbage Collection Algoritması Nedir?",{"path":741,"title":742},"\u002Ftr\u002Flinuxda-golang-kurulumu","Linux'ta Golang Kurulumu",{"path":744,"title":745},"\u002Ftr\u002Fopenlitespeed-ve-litespeed-enterprisei-reverse-proxy-olarak-kullanmak","OpenLiteSpeed ve LiteSpeed Enterprise Sunucularını Reverse Proxy Olarak Kullanmak",{"path":747,"title":748},"\u002Ftr\u002Fekran-filtresi-mavi-isik-filtresi-flux","Gözlere dost, mavi ışığa düşman ekran filtresi f.lux",{"path":750,"title":751},"\u002Ftr\u002Flitespeed-web-server-performans-artisi","Konfor Alanından Çıkıp, Konforlu Bir VPS'e Geçmek: LiteSpeed Web Server",{"path":753,"title":754},"\u002Ftr\u002Fubuntu-20-04-composer-kurulumu","Ubuntu 20.04 - Composer Kurulumu",{"path":756,"title":757},"\u002Ftr\u002Frest-api-dokumantasyonu-nasil-yapilir","REST Api Dokümantasyonu Nasıl Oluşturulur?",{"path":759,"title":760},"\u002Ftr\u002Fgoda-iota-nedir-iota-ne-zaman-ve-nerede-kullanilir","Go'da iota Nedir? iota Ne Zaman ve Nerede Kullanılır?",{"path":762,"title":763},"\u002Ftr\u002Fproxy-tasarim-deseni-nedir","Proxy Tasarım Deseni Nedir?",{"path":765,"title":766},"\u002Ftr\u002Fprototype-tasarim-deseni-nedir","Prototype Tasarım Deseni Nedir?",{"path":768,"title":769},"\u002Ftr\u002Fwsl-2-kurulumu-6-kolay-adim","WSL 2 Kurulumu - 6 kolay adım",{"path":771,"title":772},"\u002Ftr\u002Fprogralama-ipucu-yoda-gosterimi","Yoda Koşulları (Yoda Conditions) Nedir? Programlama İpucu",{"path":774,"title":775},"\u002Ftr\u002Ftemiz-moduler-ve-yeniden-kullanilabilir-php-kodu-yazma-rehberi","PHP'de Temiz, Modüler ve Yeniden Kullanılabilir Kod Yazma Rehberi",{"path":777,"title":778},"\u002Ftr\u002Fflyweight-tasarim-deseni-nedir","Flyweight Tasarım Deseni Nedir?",{"path":780,"title":781},"\u002Ftr\u002Fes6-nedir-ecmascript-2015-nedir","ES6 Nedir? ECMAScript 2015 Nedir?",{"path":783,"title":784},"\u002Ftr\u002Fstrategy-tasarim-deseni-nedir","Strategy Tasarım Deseni Nedir?",[786,788,790,792],{"path":696,"title":697,"date":787},"2021-09-11",{"path":771,"title":772,"date":789},"2021-07-23",{"path":714,"title":715,"date":791},"2026-06-21",{"path":793,"title":794,"date":795},"\u002Ftr\u002Fes13-nedir-ecmascript-2022-nedir","ES13 nedir? ECMAScript 2022 nedir?","2026-06-20",[797,801,805],{"path":798,"title":799,"date":800},"\u002Ftr\u002Fdocker-ve-portainer-kurulumu","Docker ve Portainer Kurulumu","2021-02-21",{"path":802,"title":803,"date":804},"\u002Ftr\u002Faws-ec2-uzerinde-docker-ve-full-stack-web-performansi","AWS EC2 Üzerinde Docker ve Full Stack Web Performansı","2021-02-01",{"path":806,"title":807,"date":808},"\u002Ftr\u002Fgarbage-collection-ve-golang","Garbage Collection ve Go (Golang)","2021-10-01",1782142117420]