<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Hüseyin Küçük's hkucuk Blog RSS Feed]]></title><description><![CDATA[Hüseyin Küçük's hkucuk Blog RSS Feed]]></description><link>https://blog.hkucuk.com</link><generator>GatsbyJS</generator><lastBuildDate>Fri, 03 Apr 2026 09:32:35 GMT</lastBuildDate><item><title><![CDATA[Şef Olmayan Müzisyen, Yapay Zeka Çağında Kaybolur]]></title><description><![CDATA[Yazılım geliştirme uzun yıllar boyunca büyük ölçüde kodlama ile özdeşleşti. Sprint planlamaları kodlama görevleri etrafında şekillendi, ekip büyüklükleri kod üretim kapasitesine göre hesaplandı, kariyer yolları çoğunlukla "daha iyi kod yazan mühendis" hedefiyle çizildi. Oysa yazılım geliştirme hiçbir zaman salt kodlamadan ibaret değildi. Analiz, mimari tasarım, test, devreye alma. Bunlar aynı döngünün eşit derecede kritik parçalarıydı.]]></description><link>https://blog.hkucuk.com/2026/yapay-zeka-kodu-yaziyor-peki-siz-ne-yapiyorsunuz/</link><guid isPermaLink="false">https://blog.hkucuk.com/2026/yapay-zeka-kodu-yaziyor-peki-siz-ne-yapiyorsunuz/</guid><pubDate>Thu, 02 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Yazılım geliştirme uzun yıllar boyunca büyük ölçüde &lt;strong&gt;kodlama&lt;/strong&gt; ile özdeşleşti. Sprint planlamaları kodlama görevleri etrafında şekillendi, ekip büyüklükleri kod üretim kapasitesine göre hesaplandı, kariyer yolları çoğunlukla “daha iyi kod yazan mühendis” hedefiyle çizildi. Oysa yazılım geliştirme hiçbir zaman salt kodlamadan ibaret değildi. Analiz, mimari tasarım, test, devreye alma. Bunlar aynı döngünün eşit derecede kritik parçalarıydı.&lt;/p&gt;
&lt;p&gt;Ama bunu söylemek kolaydı, kabul ettirmek zordu. Çünkü yıllarca kodlama, bu döngünün en görünür ve en ölçülebilir parçasıydı. Kaç satır yazıldı, kaç ticket kapandı, sprint velocity ne oldu. Sistemin geri kalanı; problemi doğru tanımlamak, mimariyi doğru kurmak, kısıtları baştan belirlemek, hep &lt;strong&gt;arka planda olan şeyler&lt;/strong&gt; sayıldı.&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;“Programcı mı, mühendis mi?” diye sorardım. İkisi aynı şey değil. Hiçbir zaman olmadı.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;p&gt;Ben bu sektörde on yedi yıldır, yapay zeka bu kadar gündemde değilken, çok önce, her fırsatta aynı şeyi söyledim: Sadece kod yazan biri olmayın. İyi analiz yapın, analizinize uygun mimariyi tasarlayın, problemi doğru tanımlamadan önce klavyeye dokunmayın. Gerçek bir mühendis olun.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/f44681812c20c309c3b06668f8b019a7/2bef9/Orchestrator.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 54.72972972972974%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAACf0lEQVR42hWS6U/acABAfxyWu2CxpdBCaYVylFKgUCjjKIhDVEAO8UAFOcZUlEm2uC8mWzZ1WZZs+xO2v3Ts88v78vKAWm8DeptKa1aZURXixtIVT7luYHgdI2g9vNoZVDv8plAaydYMoTSEUWt2UrVmVq0Z/4vAuAG7GTPLr7O8jWaRqBxpHuHJopEv0FLuctR3xnOGzD45+mDnkrggx17J+g0CWAmV2QGQcMrFx+2ZvNTrJbIp6ybnSeXsgTggeamQ/XZ7QiVykC8eUiphMRXOK4M3xygbMXo4NCoD5nDm6Y4j0/vjxTxRLoar+5GzKbHbRirt7M5W/7wrz+7hZKnWbi7HnUa3Ov94k7m+d/bnZO8amDd5EJBdrWHm80/24UlaPgrjhbc9EA8vXo+my18/Go/PwsXcu3fKZfOtyfDP35fJ4gLIDSRZBHqUsAWioUYr/uk7OZhjxboxJOFhQdmpzF6ej68mbqmE85LBy1NiZjhqvZ3Wg2IcOIOQwwssdJDJl2+WlwdfnrnRwt8a4rWTZDGfKilsYbs+mURq7dJuKbmldK7GR9eXiYMuIpXscsVOeQHE57W0YEltZYdTpX8a22sK7X5gp0kXtpnD6eDh/eRh2ZmNq539xPiOHbwTu6cWhoN9q5wSsHlZA0oAhFxnAtVaIaXkvGI63j1XJlflr7/Pn16at3f5bo9KF4T2GS5X3GLaiGAanNmIpYFGZ1pNokOcqC+0yfMOitKhpIXmYF521XpktYPGsgQv6gm/I5LE/ZyVCgII1tmd7mgUAMi8juEuxmewoQBoNSZEA6Maq0NtQoDWAFSQ2oJpbE4tjK0Q0OhXI2G+oBFGCJr+Bx9mhaBeVO51AAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Orchestrator&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/f44681812c20c309c3b06668f8b019a7/fcda8/Orchestrator.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/f44681812c20c309c3b06668f8b019a7/12f09/Orchestrator.png 148w,https://blog.hkucuk.com/static/f44681812c20c309c3b06668f8b019a7/e4a3f/Orchestrator.png 295w,https://blog.hkucuk.com/static/f44681812c20c309c3b06668f8b019a7/fcda8/Orchestrator.png 590w,https://blog.hkucuk.com/static/f44681812c20c309c3b06668f8b019a7/efc66/Orchestrator.png 885w,https://blog.hkucuk.com/static/f44681812c20c309c3b06668f8b019a7/2bef9/Orchestrator.png 1024w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kodlamanın-hızlanması-neyi-değiştiriyor&quot;&gt;&lt;a href=&quot;#kodlaman%C4%B1n-h%C4%B1zlanmas%C4%B1-neyi-de%C4%9Fi%C5%9Ftiriyor&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kodlamanın hızlanması neyi değiştiriyor?&lt;/h2&gt;
&lt;p&gt;Yapay zeka destekli araçlarla birlikte kodlama süreleri dramatik biçimde kısalıyor. Eskiden bir ekibin haftalar harcadığı bir modülün iskeleti artık saatler içinde çıkabiliyor. Bu hız artışı, yazılım geliştirme döngüsünün geri kalan aşamalarını daha görünür, daha belirleyici kılıyor.&lt;/p&gt;
&lt;p&gt;Şöyle düşünün: Bir bina inşa ediyorsunuz. Eskiden tuğla örme en uzun aşamaydı. Bir makine geldi ve tuğlaları sizin yerinize çok hızlı örüyor. Ama temel yanlış atılmışsa, statik hesaplar tutarsızsa, makine yanlış yere çok hızlı tuğla örüyor demektir. Hız, yönün yerini alamaz.&lt;/p&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;strong&gt;Gerçek hayattan örnek&lt;/strong&gt;&lt;br/&gt;
Bir e-ticaret şirketinde yeni bir ödeme akışı geliştiriliyor. Ekip gereksinim analizini yüzeysel bırakıp hızlıca kodlamaya geçiyor, yapay zeka da bu süreci hızlandırıyor. Altı hafta sonra ortaya çıkan sistem çalışıyor ama yanlış problemi çözüyor. Kullanıcıların asıl sorunu ödeme adımı değil, sepet yönetimi ekranındaki karmaşa. Hız burada düşmanınız oldu, daha hızlı yanlış üretti.
&lt;/div&gt;
&lt;p&gt;Doğru analiz başta yapılsaydı, yapay zeka o doğru mimariyi de aynı hızda kodlayabilirdi. Sonuç hem doğru hem de hızlı olurdu.&lt;/p&gt;
&lt;h2 id=&quot;değer-nereye-kayıyor&quot;&gt;&lt;a href=&quot;#de%C4%9Fer-nereye-kay%C4%B1yor&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Değer nereye kayıyor?&lt;/h2&gt;
&lt;p&gt;Yazılım ekonomisinde değer, kodlama kapasitesinden analiz ve mimari yetkinliğine doğru kayıyor. Bu kayış kademeli değil, yapısal. Daha az mühendisle daha fazla ürün çıkarmak artık mümkün. Ama bu “daha az mühendis” ifadesi yanıltıcı. &lt;strong&gt;Aslında daha az kod yazma görevi var, daha fazla doğru şeyi inşa etme sorumluluğu var.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Doğru problemi tanımlamak, doğru teknolojiyi seçmek, sistemin nasıl ölçekleneceğini, nerede kırılacağını, hangi kısıtlar altında çalışacağını baştan belirlemek, bunlar her zaman asıl işin özüydü. Fark şu ki, artık bu adımları atlamanın bedeli çok daha hızlı ve çok daha ağır biçimde ortaya çıkıyor.&lt;/p&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;strong&gt;Mimari kararın ağırlığı&lt;/strong&gt;&lt;br/&gt;
Bir startup, erken aşamada veri mimarisini monolitik kurdu. İlk iki yıl sorun olmadı. Ancak kullanıcı sayısı belirli bir eşiği geçince sistem çöktü ve servis dönüşümü için altı aylık bir teknik borç temizleme süreci başladı. Bu süreçte ürün geliştirme tamamen durdu, iki kritik müşteri ayrıldı.
&lt;/div&gt;
&lt;p&gt;Başta otuz dakika ayrılıp “bu sistem 100 bin kullanıcıda nasıl davranır?” sorusu sorulsaydı, mimari farklı kurulur, o altı ay kazanılırdı. Yapay zeka kodu hızla yazmış olabilirdi ama yanlış kararı daha hızlı yazmak sorunu çözmez, büyütür.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;mühendis-artık-bir-orkestra-şefi&quot;&gt;&lt;a href=&quot;#m%C3%BChendis-art%C4%B1k-bir-orkestra-%C5%9Fefi&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Mühendis artık bir orkestra şefi&lt;/h2&gt;
&lt;p&gt;İşte bu noktada yeni bir rol ortaya çıkıyor ve bu rol, benim on yıllardır tanımlamaya çalıştığım “gerçek mühendis” kavramıyla büyük ölçüde örtüşüyor. Artık mühendis, kodu bizzat yazan kişi değil; yapay zekayı yönlendiren, koordine eden ve çıktılarını değerlendiren kişi. Bir orkestra şefi gibi.&lt;/p&gt;
&lt;p&gt;Orkestra şefi keman çalmak zorunda değildir. Ama hangi partinin ne zaman gireceğini, seslerin birbiriyle nasıl uyum içinde çalacağını, nerede tempo değişeceğini, bütünün nasıl bir anlam taşıyacağını bilmek zorundadır. Yapay zeka güçlü bir enstrüman. Ama enstrüman şefin olmadığı yerde gürültü üretir.&lt;/p&gt;
&lt;div class=&quot;workflow-card&quot;&gt;
  &lt;div class=&quot;workflow-header&quot;&gt;ORKESTRATÖR OLARAK MÜHENDİS - YENİ İŞ AKIŞI&lt;/div&gt;
  
  &lt;div class=&quot;workflow-step&quot;&gt;
    &lt;div class=&quot;step-number&quot;&gt;1&lt;/div&gt;
    &lt;div class=&quot;step-content&quot;&gt;
      &lt;h4&gt;Problemi tanımla ve sınırla&lt;/h4&gt;
      &lt;p&gt;Ne inşa edilecek, neden inşa edilecek, hangi kısıtlar geçerli? Bu adım tamamen insana ait.&lt;/p&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;workflow-step&quot;&gt;
    &lt;div class=&quot;step-number&quot;&gt;2&lt;/div&gt;
    &lt;div class=&quot;step-content&quot;&gt;
      &lt;h4&gt;Mimariyi kur, kararları ver&lt;/h4&gt;
      &lt;p&gt;Hangi servis, hangi veri modeli, hangi teknoloji yığını? Büyük kararlar burada alınır. Yapay zeka alternatifleri değerlendirmede yardımcı olabilir ama kararı veren mühendistir.&lt;/p&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;workflow-step&quot;&gt;
    &lt;div class=&quot;step-number&quot;&gt;3&lt;/div&gt;
    &lt;div class=&quot;step-content&quot;&gt;
      &lt;h4&gt;Yapay zekayı yönlendir&lt;/h4&gt;
      &lt;p&gt;Doğru bağlamı, doğru kısıtları, doğru çıktı formatını tanımla. Belirsiz prompt, belirsiz kod üretir. Bu aşama bir mühendislik disiplini gerektiriyor.&lt;/p&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;workflow-step&quot;&gt;
    &lt;div class=&quot;step-number&quot;&gt;4&lt;/div&gt;
    &lt;div class=&quot;step-content&quot;&gt;
      &lt;h4&gt;Çıktıyı değerlendir ve doğrula&lt;/h4&gt;
      &lt;p&gt;Üretilen kodu kör kabul etme. Mimariyle tutarlı mı? Edge case&apos;ler ele alınmış mı? Güvenlik açığı var mı? Bu değerlendirme derin teknik bilgi olmadan yapılamaz.&lt;/p&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;workflow-step&quot;&gt;
    &lt;div class=&quot;step-number&quot;&gt;5&lt;/div&gt;
    &lt;div class=&quot;step-content&quot;&gt;
      &lt;h4&gt;İterasyonu yönet&lt;/h4&gt;
      &lt;p&gt;Yapay zekayla çalışmak doğrusal değil döngüsel. Hangi parçanın yeniden üretilmesi, hangi kararın revize edilmesi gerektiğini görmek orkestratörün asıl işidir.&lt;/p&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;strong&gt;Orkestrasyon farkı&lt;/strong&gt;&lt;br/&gt;
İki senior mühendis aynı yapay zeka aracıyla çalışıyor. Biri araca &quot;kullanıcı kimlik doğrulama sistemi yaz&quot; diyor. Diğeri şunu söylüyor: &quot;Çok kiracılı SaaS mimarisi için JWT tabanlı bir kimlik doğrulama sistemi tasarla. Her kiracının izolasyonu kritik, audit log zorunlu, ileride SSO entegrasyonu ekleneceğini varsay.&quot; İkinci mühendis daha değerli ve daha kullanılabilir bir çıktı alıyor. Aradaki fark kodlama becerisi değil, analiz ve mimari netliği.
&lt;/div&gt;
&lt;hr&gt;
&lt;h2 id=&quot;i̇letişim-artık-bir-mühendislik-becerisi&quot;&gt;&lt;a href=&quot;#i%CC%87leti%C5%9Fim-art%C4%B1k-bir-m%C3%BChendislik-becerisi&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;İletişim artık bir mühendislik becerisi&lt;/h2&gt;
&lt;p&gt;Hem yapay zekayı yönlendirmek hem de organizasyon içinde değer üretmek için başka bir beceri çok daha kritik hale geliyor, iletişim. Ve bunu &lt;strong&gt;sunum yapmak&lt;/strong&gt; veya &lt;strong&gt;mail yazmak&lt;/strong&gt; gibi dar anlamda ele almıyorum.&lt;/p&gt;
&lt;p&gt;Bir ihtiyacı gerçekten anlamak için doğru soruları sorabilmek, paydaşların söylediklerinin arkasındaki asıl problemi çıkarabilmek, kurduğunuz mimariyi teknik olmayan bir yöneticiye de teknik bir ekibe de net biçimde aktarabilmek ve yapay zekaya vereceğiniz bağlamı tam, eksiksiz ve doğru biçimde ifade edebilmek. Bunlar artık &lt;strong&gt;olsa iyi olur&lt;/strong&gt; değil, mühendisliğin olmazsa olmaz parçaları.&lt;/p&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;strong&gt;İletişimin teknik sonucu&lt;/strong&gt;&lt;br/&gt;
Bir ekip, müşteri taleplerini işleyen yeni bir iş akışı geliştiriyor. Ürün müdürü &quot;bildirimleri daha akıllı yapalım&quot; diyor. İletişim becerisi zayıf mühendis bunu anlık bildirim optimizasyonu olarak yorumluyor ve bir hafta çalışıyor. İletişim becerisi güçlü mühendis ise üç soru soruyor: &quot;Hangi kullanıcı segmenti için? Hangi kanalda? Başarı kriteri ne?&quot; ve ortaya tamamen farklı bir spesifikasyon çıkıyor. İki yaklaşım arasındaki fark teknik değil, analitik ve iletişimsel.
&lt;/div&gt;
&lt;h2 id=&quot;uzun-yılların-gözlemi-değişmedi&quot;&gt;&lt;a href=&quot;#uzun-y%C4%B1llar%C4%B1n-g%C3%B6zlemi-de%C4%9Fi%C5%9Fmedi&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Uzun yılların gözlemi değişmedi&lt;/h2&gt;
&lt;p&gt;Kariyerini yalnızca kod yazmak üzerine kurmuş mühendisler bu dönüşümü sancılı hissedebilir. Bu his anlaşılır ama yanlış bir yere odaklanıyor. Tehdit, yapay zekadan gelmiyor. Tehdit, yıllarca ertelenen dönüşümü artık erteleyemeyeceğimiz gerçeğinden geliyor.&lt;/p&gt;
&lt;p&gt;Sistematik düşünme, problem analizi, mimari tasarım ve bunları net biçimde ifade edebilme yetkinliğiniz varsa bu dönem sizin için bir tehdit değil, değerinizin nihayet hak ettiği yere yükseldiği bir dönem. Yapay zeka iyi mühendisleri daha da güçlü kılıyor. Kötü mühendisleri ise yanlışta daha da hızlı yapıyor.&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Yapay zeka kod yazmayı öğrendi. Ama neyi, neden, nasıl inşa edeceğini bilmek ve bu bilgiyi bir araca aktarabilecek netlikte ifade etmek hâlâ insanın işi.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;p&gt;Orkestra şefi olmak için önce müziği derinlemesine anlamak gerekir. Sistemi kim tasarlayacak, yapay zekayı kim yönlendirecek, çıktıyı kim değerlendirecek? Analiz yapabilen, mimari düşünebilen, iletişim kurabilen ve tüm bunları orkestre edebilen mühendis.&lt;/p&gt;
&lt;p&gt;Ben bunu çok uzun zamandır söylüyordum. Şimdi söylememe gerek yok, yapay zekanın kendisi kanıtlıyor.&lt;/p&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2026/yapay-zeka-kodu-yaziyor-peki-siz-ne-yapiyorsunuz/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Çipler, Tartışmalar ve Minsky: AI'nın Perde Arkası]]></title><description><![CDATA[Bugün yapay zeka, silikon vadilerinden cebimizdeki en küçük devreye kadar dünyayı kuşatmış durumda. Ancak bu hegemonya, 1970'lerde yaşanan ve Yapay Zeka Kışı olarak adlandırılan karanlık bir duraklama döneminin küllerinden doğdu. Bir teknoloji stratejisti perspektifiyle bakıldığında, 1970'lerdeki bu çöküş sadece bir şanssızlık değil, Marvin Minsky ve Seymour Papert gibi devlerin başını çektiği bir tür entelektüel ambargo sonucuydu.]]></description><link>https://blog.hkucuk.com/2026/cipler-tartismalar-ve-minsky-ainin-perde-arkasi/</link><guid isPermaLink="false">https://blog.hkucuk.com/2026/cipler-tartismalar-ve-minsky-ainin-perde-arkasi/</guid><pubDate>Mon, 05 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;entelektüel-ambargo-ve-donanımın-i̇deolojik-kökenleri&quot;&gt;&lt;a href=&quot;#entelekt%C3%BCel-ambargo-ve-donan%C4%B1m%C4%B1n-i%CC%87deolojik-k%C3%B6kenleri&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Entelektüel Ambargo ve Donanımın İdeolojik Kökenleri&lt;/h2&gt;
&lt;p&gt;Bugün yapay zeka, silikon vadilerinden cebimizdeki en küçük devreye kadar dünyayı kuşatmış durumda. Ancak bu hegemonya, 1970’lerde yaşanan ve &lt;strong&gt;Yapay Zeka Kışı&lt;/strong&gt; olarak adlandırılan karanlık bir duraklama döneminin küllerinden doğdu. Bir teknoloji stratejisti perspektifiyle bakıldığında, 1970’lerdeki bu çöküş sadece bir &lt;strong&gt;şanssızlık&lt;/strong&gt; değil, Marvin Minsky ve Seymour Papert gibi devlerin başını çektiği bir tür &lt;strong&gt;entelektüel ambargo&lt;/strong&gt; sonucuydu. Günümüzde teknik birer kısaltma olarak kanıksadığımız CPU, GPU ve TPU terimleri, aslında on yıllar süren bu fikir savaşlarının, fon kesintilerinin ve mimari dogmaların somutlaşmış birer ürünüdür. Modern yapay zekayı anlamak için, sadece bugünün işlem güçlerine değil, bu güçlerin neden yarım asır boyunca baskılandığına bakmamız gerekiyor.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/45b55db7de1241ee721ac75b6e2eb7b5/99f37/image.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 56.08108108108109%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAAChklEQVR42iWS20/aABjF+6LABIvSUnrBQimX0aqggoAgFGZlMIWJgAiCoE5RcBM3nbehZDpnTFwc2fTBJdvMMneJS3zZX7K/Z0WTk5OT8/Z95weIVMY7iVGTSJCQb70JopoU2mZIJ4LpZqWhCaZltE3Zw5PcOO4eQwMZ0DoMiFQmMXr/HsFKcEaMMQ0XGoxBbGHSl8J8KbA3JKX65CYX5IqRw4W+8oEuugQPFeQDcUBh5eUMJ6VsMtoBshzIcK0GFx1a8FbOnE/r7JNDmEtrJ9d146sIN0WG5qFATsMXEG8a9iSBjkBON7qIelJtljDiSsCOmDmz5V3/xK1d9JdOzPkaFlnWL73Vpzc0I0U0XJQ7Y5A3DfmzED8L2MunzNRrfWbfPHOMBctUYiN0+pfbvRrc/GqvnLOLJ6aVD3Tp1PD83Dh/DA8tIJFV5chKu3NS4c4B5uKZcaZuWf9l3bnWFOqDhzepn/+c1WtP7Y9n/4bduGSqP7SLH7WVz1juGH28jY/vYbEaFq3i0Srg3/02/Oa3MbtPjK5q4tvWZ3Xn7pW19N66XGeL70yVs87ad2brwvTqsnvni3pij5o+oGaO2hwZhTsPQPZRZX8E903g/ikikCX4PJ3ZgdzJducY8iCPRUpUbpPMbumLR+Qj4eYlVXCOTLxUx14Q8TWgwz8hpewStUWqs7do+1r1zsbDLUFZN69wJ1XRZXgorwpOqyJlJZdVBXLYw1mMy6CBacSfBQQAJLi5hegUFpbgrAQzN2YnLTLGJ+8JQYNJ0DbSQtslRJeU9eNc2jhXJfic3BEDBxJAAyzEIBYIu0MNMTRou23usGsEJS30EnWXmOoFbeF2Cw974rLOwH+Pd6KWBoa/+QAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;AI&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/45b55db7de1241ee721ac75b6e2eb7b5/fcda8/image.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/45b55db7de1241ee721ac75b6e2eb7b5/12f09/image.png 148w,https://blog.hkucuk.com/static/45b55db7de1241ee721ac75b6e2eb7b5/e4a3f/image.png 295w,https://blog.hkucuk.com/static/45b55db7de1241ee721ac75b6e2eb7b5/fcda8/image.png 590w,https://blog.hkucuk.com/static/45b55db7de1241ee721ac75b6e2eb7b5/efc66/image.png 885w,https://blog.hkucuk.com/static/45b55db7de1241ee721ac75b6e2eb7b5/99f37/image.png 1100w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;h2 id=&quot;yapay-zekanın-darth-vaderı-marvin-minsky&quot;&gt;&lt;a href=&quot;#yapay-zekan%C4%B1n-darth-vader%C4%B1-marvin-minsky&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Yapay Zekanın Darth Vader’ı: Marvin Minsky&lt;/h2&gt;
&lt;p&gt;Marvin Minsky, teknoloji tarihinde genellikle &lt;strong&gt;yapay zeka kışını başlatan adam&lt;/strong&gt; olarak, hatta bir tür &lt;strong&gt;Şeytan&lt;/strong&gt; figürü gibi anılır. Robert Hecht-Nielsen’ın deyimiyle Minsky’nin kariyeri Darth Vader’a benzer; önce nöral ağların en büyük öncülerinden biri olarak başlamış, sonra &lt;strong&gt;gücün karanlık tarafına&lt;/strong&gt; (Sembolik AI) geçerek kendi yarattığı topluluğun en amansız düşmanı olmuştur.
İronik olan şudur ki; Minsky, 1951 yılında dünyanın ilk nörobilgisayarı olan SNARC’ı inşa eden kişidir. Vakum tüplerinden oluşan bu makine hakkında Minsky şöyle der:&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Bu çılgın rastgele tasarım sayesinde, nasıl inşa ederseniz edin çalışacağından neredeyse emindik… O zamanlar yirmi tüplü bir radyo bile sık sık bozulurdu; biz makinemizi hiçbir zaman tam olarak hata ayıklamadık ama bu önemli değildi. (Bernstein, 1981)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;p&gt;Ancak Minsky zamanla &lt;strong&gt;brüt kuvvet&lt;/strong&gt; (brute force) olarak gördüğü rastgele ağlardan uzaklaştı. Onun &lt;strong&gt;Society of Mind&lt;/strong&gt; (Zihin Toplumu) felsefesi, zekanın devasa ve homojen bir ağ yerine, binlerce uzmanlaşmış &lt;strong&gt;ajandan&lt;/strong&gt; oluşması gerektiğini savunuyordu. 2006 yılındaki &lt;strong&gt;AI@50&lt;/strong&gt; konferansında Terry Sejnowski’nin “Siz nöral ağ kışından sorumlu olan şeytan mısınız?” sorusuna, önce ağların matematiksel sınırlamaları üzerine bir tirat atarak direnmiş, ardından tarihe geçecek o itirafı bağırmıştır: “Evet, ben şeytanım!”&lt;/p&gt;
&lt;h2 id=&quot;xor-problemi-bir-küçük-mantık-kapısının-ardındaki-büyük-yanılgı&quot;&gt;&lt;a href=&quot;#xor-problemi-bir-k%C3%BC%C3%A7%C3%BCk-mant%C4%B1k-kap%C4%B1s%C4%B1n%C4%B1n-ard%C4%B1ndaki-b%C3%BCy%C3%BCk-yan%C4%B1lg%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;XOR Problemi: Bir Küçük Mantık Kapısının Ardındaki Büyük Yanılgı&lt;/h2&gt;
&lt;p&gt;1960’ların sonunda nöral ağ araştırmalarını durduran olay, basit bir &lt;strong&gt;XOR&lt;/strong&gt; (Özel VEYA) mantık kapısıydı. Yaygın bilinenin aksine Minsky ve Papert, 1969 tarihli Perceptrons kitabında çok katmanlı ağların (MLP) bu problemi çözemeyeceğini iddia etmediler; onlar sadece tek katmanlı ağların (perceptron) matematiksel sınırlarını kesin çizgilerle belirlediler.
Asıl sorun teknik bir imkansızlık değil, epistemolojik bir boşluktu. 1960’lardaki &lt;strong&gt;Bağlantıcı&lt;/strong&gt; (Connectionist) kampının önündeki engeller şunlardı:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Backpropagation Eksikliği:&lt;/strong&gt; Çok katmanlı ağları eğitecek geriye yayılım algoritması henüz keşfedilmemiş veya ölçeklenememişti.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Türevlenebilir Fonksiyonlar:&lt;/strong&gt; O dönemde &lt;strong&gt;0-1&lt;/strong&gt; tipi basamak fonksiyonları kullanılıyordu; oysa gradient descent için türevlenebilir aktivasyon fonksiyonları gerekiyordu.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Minsky’nin Matematiksel Kesinlik Tutkusu:&lt;/strong&gt; Minsky, teorik temeli olmayan &lt;strong&gt;teorisiz veri&lt;/strong&gt; ile yapılan deneyleri küçümsüyor, matematiksel olarak ispatlanamayan hiçbir mimariye fon verilmesini istemiyordu.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;donanım-savaşları-davulcular-askerler-ve-dallanma-maliyeti&quot;&gt;&lt;a href=&quot;#donan%C4%B1m-sava%C5%9Flar%C4%B1-davulcular-askerler-ve-dallanma-maliyeti&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Donanım Savaşları: Davulcular, Askerler ve Dallanma Maliyeti&lt;/h2&gt;
&lt;p&gt;Stratejik açıdan donanım, sadece bir araç değil; fikirlerin hayatta kalmasını sağlayan bir ekosistemdir. CPU, GPU ve TPU arasındaki farkı bir orkestra metaforuyla analiz edebiliriz:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CPU (Merkezi İşlem Birimi):&lt;/strong&gt; İnanılmaz hızlı, her türlü karmaşık notayı çalabilen bir solo davulcu gibidir. En büyük yeteneği &lt;strong&gt;dallanma&lt;/strong&gt; (branching - if/else) kapasitesidir. Bilgisayarın &lt;strong&gt;beyni&lt;/strong&gt; olarak kalmasının sebebi, karmaşık karar mekanizmalarını yönetebilmesidir.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GPU (Grafik İşlem Birimi):&lt;/strong&gt; Bir askeri yürüyüşteki yüzlerce davulcu gibidir. Tek bir davulcu (çekirdek) CPU kadar zeki değildir ancak hepsi aynı anda aynı vuruşu yapar (SIMD - Tek Talimat Çoklu Veri). GPU’larda &lt;strong&gt;dallanma&lt;/strong&gt; (if-else) yapmak çok pahalıdır; bu yüzden koşulsuz aritmetik ve matris çarpımlarında (derin öğrenme gibi) devleşirler.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TPU (Tensör İşlem Birimi):&lt;/strong&gt; Google tarafından sadece matris matematiği (tensörler) için tasarlanmış özel bir donanımdır. Dallanma yeteneği neredeyse hiç yoktur, ancak matris işlemlerini GPU’dan bile daha verimli yönetir.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;ölçeklenme-hipotezi-brüt-kuvvetin-zaferi&quot;&gt;&lt;a href=&quot;#%C3%B6l%C3%A7eklenme-hipotezi-br%C3%BCt-kuvvetin-zaferi&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Ölçeklenme Hipotezi: Brüt Kuvvetin Zaferi&lt;/h2&gt;
&lt;p&gt;Minsky ve Papert, nöral ağların asla büyük ölçekli problemleri çözemeyeceğini, &lt;strong&gt;homojen&lt;/strong&gt; mimarilerin karmaşık dünyayı anlayamayacağını savundular. Papert’in &lt;strong&gt;epistemolojik çoğulculuk&lt;/strong&gt; inancı, tüm bilgiyi aynı potada eriten tek tip (uniform) mimarilere karşı felsefi bir nefret beslemesine neden oluyordu. Onlara göre bu &lt;strong&gt;hegemonic bir evrenselcilik&lt;/strong&gt;ti.&lt;/p&gt;
&lt;p&gt;Tarih, bu iki dâhiyi en çok küçümsedikleri noktada haksız çıkardı: Brüt Kuvvet. Minsky’nin &lt;strong&gt;teorisiz veri&lt;/strong&gt; olarak görüp dışladığı yöntemler, bugünün Transformer modellerinin kalbini oluşturuyor. Modern AI, Minsky’nin öngördüğü gibi zarif sembolik kurallarla değil; devasa verinin ve hesaplama gücünün (compute) yarattığı istatistiksel baskıyla kazandı.&lt;/p&gt;
&lt;h2 id=&quot;makine-öğrenmesi-mi-derin-öğrenme-mi&quot;&gt;&lt;a href=&quot;#makine-%C3%B6%C4%9Frenmesi-mi-derin-%C3%B6%C4%9Frenme-mi&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Makine Öğrenmesi mi, Derin Öğrenme mi?&lt;/h2&gt;
&lt;p&gt;Zekros Mühendislik kaynaklarına ve endüstriyel uygulama verilerine göre, her yapay zeka problemi bir GPU canavarı gerektirmez. Stratejik seçim, verinin doğasında gizlidir:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Özellik&lt;/th&gt;
&lt;th&gt;Makine Öğrenmesi (ML)&lt;/th&gt;
&lt;th&gt;Derin Öğrenme (DL)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Veri İhtiyacı&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Daha az (Tablosal veriler)&lt;/td&gt;
&lt;td&gt;Çok fazla (Görüntü, Ses, Metin)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Özellik Çıkarımı&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;İnsan eliyle (Feature Eng.)&lt;/td&gt;
&lt;td&gt;Otomatik (Nöral Ağlarca)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;İşlem Gücü&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Orta (CPU genellikle yeterli)&lt;/td&gt;
&lt;td&gt;Yüksek (GPU/TPU zorunlu)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Kullanım Alanı&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Kredi riski, Spam filtreleme&lt;/td&gt;
&lt;td&gt;Otonom araçlar, Chatbotlar&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Stratejik Not: Model başarısını ölçerken sadece Accuracy (Doğruluk) yeterli değildir. Yanlış alarm maliyetinin yüksek olduğu endüstriyel otomasyonda Precision (Kesinlik), bir siber saldırıyı kaçırmamanın kritik olduğu güvenlikte ise Recall (Duyarlılık) metriği hayati önem taşır.&lt;/p&gt;
&lt;h2 id=&quot;sonuç-zihin-toplumu-yaşıyor-mu&quot;&gt;&lt;a href=&quot;#sonu%C3%A7-zihin-toplumu-ya%C5%9F%C4%B1yor-mu&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Sonuç: Zihin Toplumu Yaşıyor mu?&lt;/h2&gt;
&lt;p&gt;Yapay zeka tarihi, fikirlerin donanımla imtihanıdır. Minsky’nin 1960’larda &lt;strong&gt;ölçeklenemez&lt;/strong&gt; dediği bağlantıcı modeller, bugün milyarlarca parametreyle dünyayı simüle ediyor. Ancak burada bir ironi daha gizli: Minsky’nin &lt;strong&gt;Society of Mind&lt;/strong&gt; (Zihin Toplumu) fikri, belki de bugün devasa homojen ağların içinde, farklı görevlerde uzmanlaşmış nöron grupları (MoE - Mixture of Experts gibi) şeklinde gizlice hayat buluyor.&lt;/p&gt;
&lt;p&gt;Kapanışta kendimize şu vakur soruyu sormalıyız: Yapay zeka, evrenin karmaşık sembolik kurallarını gerçekten kendi kendine mi öğreniyor, yoksa biz sadece devasa bir hesap makinesinin sunduğu istatistiksel yansımalara mı hayran kalıyoruz? Belki de Minsky haklıydı; belki de biz sadece &lt;strong&gt;uygulamalarla&lt;/strong&gt; uğraşıyoruz ve gerçek genel zekanın kapısı hala kilitli bekliyor.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://arxiv.org/abs/2212.11279&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://arxiv.org/abs/2212.11279&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://dergipark.org.tr/tr/pub/emobd/article/1338066&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://dergipark.org.tr/tr/pub/emobd/article/1338066&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.researchgate.net/publication/374723059_Artificial_Neural_Networks_History_and_State_of_the_Art&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.researchgate.net/publication/374723059_Artificial_Neural_Networks_History_and_State_of_the_Art&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.scribd.com/document/816933635/Deep-Learning-Has-Evolved-Significantly-Since-Its-Inception-in-the-1940s&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.scribd.com/document/816933635/Deep-Learning-Has-Evolved-Significantly-Since-Its-Inception-in-the-1940s&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://otusem.ostimteknik.edu.tr/blog/yapay-zeka-yeni-cagin-teknolojisi&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://otusem.ostimteknik.edu.tr/blog/yapay-zeka-yeni-cagin-teknolojisi&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2026/cipler-tartismalar-ve-minsky-ainin-perde-arkasi/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[QUIC Protokolü ve HTTP/3: Taşıma Katmanında Devrim ve Uygulama Rehberi]]></title><description><![CDATA[QUIC, UDP üzerinde çalışan, TLS 1.3 ile entegre, çok akışlı (multiplexed) ve göç edebilir (connection migration) bir taşıma protokolüdür. HTTP/3 doğrudan QUIC üzerinde çalışır. QUIC; TCP+TLS’in el sıkışma gecikmesini azaltır, HTTP/2’nin TCP-temelli head-of-line blocking sorununu ortadan kaldırır, adres doğrulama ve anti-amplification gibi güvenlik önlemlerini çekirdek tasarımına gömer ve uzantılarla düşük gecikimli uygulamalara kapı açar.]]></description><link>https://blog.hkucuk.com/2025/quic-protokolu-ve-http-3-tasima-katmaninda-devrim-ve-uygulama-rehberi/</link><guid isPermaLink="false">https://blog.hkucuk.com/2025/quic-protokolu-ve-http-3-tasima-katmaninda-devrim-ve-uygulama-rehberi/</guid><pubDate>Sat, 04 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/QUIC&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;QUIC&lt;/a&gt;, &lt;a href=&quot;https://tr.wikipedia.org/wiki/UDP&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;UDP&lt;/a&gt; üzerinde çalışan, &lt;a href=&quot;https://tr.wikipedia.org/wiki/Transport_Layer_Security&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;TLS 1.3&lt;/a&gt; ile entegre, çok akışlı (multiplexed) ve göç edebilir (connection migration) bir taşıma protokolüdür. &lt;a href=&quot;https://en.wikipedia.org/wiki/HTTP/3&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;HTTP/3&lt;/a&gt; doğrudan QUIC üzerinde çalışır. QUIC; &lt;a href=&quot;https://en.wikipedia.org/wiki/Transmission_Control_Protocol&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;TCP&lt;/a&gt;+&lt;a href=&quot;https://tr.wikipedia.org/wiki/Transport_Layer_Security&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;TLS&lt;/a&gt;’in el sıkışma gecikmesini azaltır, &lt;a href=&quot;https://en.wikipedia.org/wiki/HTTP/2&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;HTTP/2&lt;/a&gt;’nin TCP-temelli head-of-line blocking sorununu ortadan kaldırır, adres doğrulama ve anti-amplification gibi güvenlik önlemlerini çekirdek tasarımına gömer ve uzantılarla düşük gecikimli uygulamalara kapı açar. Bu makalede QUIC’in motivasyonu, çalışma ilkeleri, kabiliyetleri, HTTP/3 ile ilişkisi, yönetilebilirlik ve ölçülebilirlik boyutu, avantaj/dezavantajları, TCP/HTTP2/SCTP gibi alternatiflerle karşılaştırması ve GoLang ile pratik kod örnekleri yer almaktadır.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/7aebf95fb66cf8d94fefd40fc688f9bb/c1b63/image.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 58.10810810810811%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAIAAADtbgqsAAAACXBIWXMAAAsTAAALEwEAmpwYAAACQElEQVR42j1SXXOaQBTlh+clM3nOTGbynNem0/ahT22npiooIiooaMWoSAD5XBBEvj+2FzPpYXbZe+9ehnPOJe7v7x8fH5+enm5ubuL4gjFumgZ/oEhjx9KRbZR5+p4xTVOW5aqq4EyIoihJEsdx+70McZomSRzizKsTBxenOvM8Y4f01zrxcO7hxCK7v798/abrel3XRHA6HY/GQhDKMo8vZwjPSI0CVMQRUg+BaZ0QQqGvm5rrOmkcicKCpKjhkPY9n1BVVdq8Ctz8uOCV1ZxfCH/Xa3mvOrKufHv2f/5Qph3WIsnlr5epuNhb8/mcJMl+n4RvEsCBZdmDrPhu6DpIvSIIAqAgLpcMw0xYlh4OV6tVWZWQ1DRtvV5vNq+Xy4WoPtDKUxTlFdV1z/M8TdPoDAiTJKmqsijytlq19ZbzeDymaZqiqN1uB/1QgGzdNHWD4YXbB18taEPYYdX1+5WGeHh4uL29vbu7G9H0f5+aOsd11uAqjtF2Nd5vuOyCcF3gJp9N2NFoBM2tVfA/hmmCSGmWQXwOgwgpVWTHnm6OOm6/4ymqPhruxVloK/XZoHovn54/8zwHjYTtOJbt8LNZijRH26uabpmq+WY46umNY7fs9/WRkdgOUl1DtbOoEARxMBj86XYd1yWAKjUY7jY7bbk7SNJkMuX4+WErI81FHuKP+lLbOp7dY5dvB61KCxgqmh4xzNj3fQLBCBkmeANSpVn+DhATKHDTWa9LscyM7PUZlgUpQUZwKAQEATjzD3e2gik8hpJ2AAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;QUIC&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/7aebf95fb66cf8d94fefd40fc688f9bb/fcda8/image.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/7aebf95fb66cf8d94fefd40fc688f9bb/12f09/image.png 148w,https://blog.hkucuk.com/static/7aebf95fb66cf8d94fefd40fc688f9bb/e4a3f/image.png 295w,https://blog.hkucuk.com/static/7aebf95fb66cf8d94fefd40fc688f9bb/fcda8/image.png 590w,https://blog.hkucuk.com/static/7aebf95fb66cf8d94fefd40fc688f9bb/efc66/image.png 885w,https://blog.hkucuk.com/static/7aebf95fb66cf8d94fefd40fc688f9bb/c83ae/image.png 1180w,https://blog.hkucuk.com/static/7aebf95fb66cf8d94fefd40fc688f9bb/c1b63/image.png 1200w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;1-neden-quic&quot;&gt;&lt;a href=&quot;#1-neden-quic&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;1. Neden QUIC?&lt;/h2&gt;
&lt;p&gt;TCP + TLS + HTTP/2’nin bedeli:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;El sıkışma gecikmesi:&lt;/strong&gt; TCP üç yönlü el sıkışma + TLS el sıkışması tipik olarak 1–2 RTT gecikme ekler. QUIC, TLS 1.3’ü taşıma katına entegre ederek ilk bağlantıyı çoğu durumda tek RTT’de tamamlar; yeniden bağlantıda 0-RTT ile uygulama verisini hemen gönderebilir.  ￼&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HOL Blocking:&lt;/strong&gt; HTTP/2 birden fazla isteği tek bir TCP akışında çoklar; tek bir TCP segmentindeki kayıp, o TCP akışındaki tüm HTTP/2 akışlarını bekletir. QUIC’te her uygulama akışı (stream) bağımsızdır; tek akıştaki kayıp diğerlerini durdurmaz.  ￼&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Orta nokta sertleşmesi (ossification):&lt;/strong&gt; TCP’nin açık tel görüntüsü (wire image) ağ cihazlarının, yeni özellikleri zorlaştıran kestirimci davranışlar geliştirmesine yol açtı. QUIC; sürümlemenin kendisini ve sürüm-bağımsız invariyantları tanımlayarak değişime alan bırakır; ayrıca QUIC v2 neredeyse v1 ile aynı olup sadece “fiziksel görünüş” değişiklikleriyle ağdaki sertleşmeye karşı alıştırma yapar.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Operasyonel gereksinimler: Şifrelemenin varsayılan oluşu, bağlantı göçü, path doğrulaması, NAT yeniden bağlama dayanıklılığı ve genişletilebilirlik modern web ve mobil uygulamaların gereksinimlerini karşılar.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/a23bec1d7cf34b964ab71b25163f314f/2bef9/image3.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 44.5945945945946%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAAAsTAAALEwEAmpwYAAABZklEQVR42k1RS26DMBDNvaseor1DD9AeoKsuuummakgiJVECJgZMMP7bgKEPElUd2aPx5817M7Pqui6EMAzDuBgC73HROeeqihVFYa3Fset6GDxWWM6wlfd+miZKaZIk+/2+Kqsu9PRC1+tEKx08QINShmQ5yQghs9fSxCHOYKQBGDzGGMTIZU3gjcjzQgqNOMaBUZkdr/mJ52eeHWtGFTTOYGyA4cuyZIxBs3fzkkJBgrM+xpifZXrUu02xS2ieWZppMKOKOxgR51wIEXwwxmPxRqJYBOMYyUmSVL+9bJ4ePp4fP99fDzNf+Ce7Xcw5D1oQCiEDmN3MXJeqKvRhy36+LttvRk58miC7v4NRKnqGhmhtUCc6VJW1swgsPmllnQt1fW2aBuNYMo6z7D8wHqSUDt9sgKQeI/HzhNpWKKVRPy7hcYkPAN+7DWEYZpqmYDZgth6ybx4l8KaVUt1quT8Zh/kh0y8E5/7/Z19IPQAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Zero RTT&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/a23bec1d7cf34b964ab71b25163f314f/fcda8/image3.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/a23bec1d7cf34b964ab71b25163f314f/12f09/image3.png 148w,https://blog.hkucuk.com/static/a23bec1d7cf34b964ab71b25163f314f/e4a3f/image3.png 295w,https://blog.hkucuk.com/static/a23bec1d7cf34b964ab71b25163f314f/fcda8/image3.png 590w,https://blog.hkucuk.com/static/a23bec1d7cf34b964ab71b25163f314f/efc66/image3.png 885w,https://blog.hkucuk.com/static/a23bec1d7cf34b964ab71b25163f314f/2bef9/image3.png 1024w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;h2 id=&quot;2-mimari-öz-udp-üzerinde-güvenli-çok-akışlı-sürümlemeli&quot;&gt;&lt;a href=&quot;#2-mimari-%C3%B6z-udp-%C3%BCzerinde-g%C3%BCvenli-%C3%A7ok-ak%C4%B1%C5%9Fl%C4%B1-s%C3%BCr%C3%BCmlemeli&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;2. Mimari Öz: UDP Üzerinde Güvenli, Çok Akışlı, Sürümlemeli&lt;/h2&gt;
&lt;p&gt;QUIC, UDP üzerinde çalışan bir &lt;strong&gt;taşıma protokolüdür&lt;/strong&gt;; paket başlıkları ve çerçevelemeyi kendi tanımlar, &lt;strong&gt;kayıp tespiti&lt;/strong&gt; ve &lt;strong&gt;tıkanıklık kontrolü&lt;/strong&gt; gibi TCP’de çekirdekte olan işlevleri kullanıcı alanına taşır. Bu mimari, protokol evrimini hızlandırır (güncelleme/deploy kolaylığı) ve &lt;strong&gt;Connection ID (CID)&lt;/strong&gt; kullanımı sayesinde NAT arkasında veya IP/port değişimlerinde &lt;strong&gt;bağlantı göçünü&lt;/strong&gt; mümkün kılar. CID’ler, akışları uçtan uca korurken orta noktalarda yük dengelemeyi de kolaylaştırır; tel görüntüsünde yalnızca gerekli minimum sinyaller görünür, geri kalanı şifrelenir.&lt;/p&gt;
&lt;p&gt;TLS 1.3, QUIC’in içine entegredir; el sıkışma, kimlik doğrulama ve anahtar üretimi &lt;strong&gt;taşıma katmanının&lt;/strong&gt; parçası olarak gerçekleşir. İlk kurulum genellikle 1-RTT’de tamamlanır; oturum yeniden başlatmada 0-RTT ile (yeniden oynatma riskleri gözetilerek) uygulama verisine erken başlanabilir. Sunucu, &lt;strong&gt;anti-amplification&lt;/strong&gt; ve &lt;strong&gt;Retry&lt;/strong&gt; gibi mekanizmalarla istemci adresini doğrular; uzun ömürlü oturumlarda &lt;strong&gt;anahtar güncelleme&lt;/strong&gt; akışı gizliliği güçlendirir. Uygulama protokolleri, &lt;code class=&quot;language-text&quot;&gt;ALPN&lt;/code&gt; üzerinden QUIC üzerinde hangi protokolün (örn. h3) konuşulacağını ilan eder.&lt;/p&gt;
&lt;p&gt;Veri taşıma akış (stream) soyutlamasıyla yapılır: &lt;strong&gt;çift yönlü&lt;/strong&gt; veya &lt;strong&gt;tek yönlü&lt;/strong&gt; akışlar, hem &lt;strong&gt;akış düzeyi&lt;/strong&gt; hem de &lt;strong&gt;bağlantı düzeyi&lt;/strong&gt; akış kontrolüne tabidir. Her akış &lt;strong&gt;bağımsız&lt;/strong&gt; ilerlediğinden tek bir kayıp diğer akışları durdurmaz; bu, HTTP/2’nin TCP kaynaklı &lt;strong&gt;head-of-line blocking&lt;/strong&gt; sorununu ortadan kaldırır. Güvenilir aktarım gerektiren içerikler akışlarla taşınırken, &lt;code class=&quot;language-text&quot;&gt;QUIC DATAGRAM&lt;/code&gt; çerçevesi güvenilmez ama şifreli ve tıkanıklık kontrolüne tabi en iyi çaba (best-effort) iletim sağlar; medya/telemetri gibi gecikmeye duyarlı uygulamalar için uygundur.&lt;/p&gt;
&lt;p&gt;Paket düzeyinde QUIC, Initial, Handshake, 0-RTT ve 1-RTT gibi farklı paket türleri ve bunlara karşılık gelen &lt;strong&gt;ayrı paket numarası uzayları&lt;/strong&gt; kullanır; her uzayın ACK’leri ve zamanlayıcıları bağımsızdır. Bu ayrım, el sıkışma/kriptografik aşamaların uygulama verisinden izolasyonunu sağlar ve kayıp tespitini sadeleştirir. Sürüm müzakeresi, uçların ortak QUIC sürümünü &lt;strong&gt;ek RTT ödemeden seçmesine&lt;/strong&gt; izin verir; QUIC v2 ise esasen v1’in işlevsel eşleniği olup tel görünüşünü farklılaştırarak orta nokta sertleşmesine karşı çeşitlilik yaratır ve gelecekteki protokol evrimine alan açar.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;UDP taşıyıcı, QUIC taşıma:&lt;/strong&gt; QUIC, UDP datagramlarına kendi başlık ve çerçevelemelerini koyar; kayıp tespiti ve tıkanıklık kontrolü QUIC katmanındadır.  ￼&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TLS 1.3 entegre:&lt;/strong&gt; El sıkışma, kimlik doğrulama ve anahtar üretimi QUIC içinde gerçekleşir; 1-RTT (ilk kurulum), 0-RTT (yeniden başlatma) desteklenir.  ￼&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Akışlar (Streams):&lt;/strong&gt; İki yönlü/tek yönlü akışlar, akış ve bağlantı düzeyi akış kontrolü ile yönetilir. Bir akıştaki yeniden iletim diğer akışları bekletmez.  ￼&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Paket türleri ve numara alanları:&lt;/strong&gt; Initial, Handshake, 0-RTT ve 1-RTT paketleri; packet number space’leri ayrıdır.  ￼&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sürüm Müzakeresi ve QUIC v2:&lt;/strong&gt; Uyumlu sürüm müzakeresi ile ekstra RTT ödenmeden tarafların ortak sürümü seçmeleri mümkün; QUIC v2 “görünüş” farklılıklarıyla çalışır.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;3-bağlantı-yaşam-döngüsü-güvenlik-ve-anti-amplification&quot;&gt;&lt;a href=&quot;#3-ba%C4%9Flant%C4%B1-ya%C5%9Fam-d%C3%B6ng%C3%BCs%C3%BC-g%C3%BCvenlik-ve-anti-amplification&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;3. Bağlantı Yaşam Döngüsü, Güvenlik ve Anti-Amplification&lt;/h2&gt;
&lt;p&gt;El sıkışma, QUIC’te TLS 1.3 ile bütünleşiktir: ilk bağlantı genellikle 1-RTT’de tamamlanır; yeniden bağlanmada 0-RTT “erken veri” ile uygulama yükünü el sıkışma bitmeden göndermeye izin verir. 0-RTT yalnızca önceki bir oturumdan alınan bilet/ticket ve parametrelerle mümkündür ve &lt;strong&gt;yeniden oynatma (replay)&lt;/strong&gt; riskleri nedeniyle sunucu tarafında politika kısıtlarına tabidir (ör. idempotent GET dışındaki işlemleri reddetmek, kota koymak, belirli süre pencereleri uygulamak). El sıkışma sırasında &lt;code class=&quot;language-text&quot;&gt;ALPN&lt;/code&gt; ile üst protokol (ör. h3) seçilir; Handshake tamamlandığında 1-RTT anahtarları devreye girer ve veri akışı tam güvenli moda geçer.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Adres doğrulama&lt;/strong&gt; ve &lt;strong&gt;anti-amplification&lt;/strong&gt; ilkesi, yansıma/güçlendirme saldırılarına karşı çekirdek güvenlik önlemidir: sunucu, istemcinin adresi doğrulanana kadar aldığının &lt;em&gt;en fazla 3 katı bayt&lt;/em&gt; gönderebilir. Adres doğrulaması iki şekilde yapılır: (i) daha önce doğrulanmış bir oturumda verilmiş &lt;code class=&quot;language-text&quot;&gt;NEW_TOKEN&lt;/code&gt; kullanımıyla sıfır ek gecikme; (ii) ilk kez bağlanan istemci için Retry paketi ile token temelli doğrulama (çoğu durumda &lt;strong&gt;+1 RTT&lt;/strong&gt; maliyet). Bu aşamada büyük sertifika zincirleri veya gereksiz büyük ilk yanıtlar amplifikasyon sınırına takılabileceğinden, zinciri ve ilk veri boyutlarını optimize etmek pratikte önemlidir.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bağlantı göçü (connection migration)&lt;/strong&gt;, &lt;strong&gt;Connection ID (CID)&lt;/strong&gt;’ler sayesinde IP/port değiştiğinde dahi akışların sürmesini sağlar; mobil cihazın Wi-Fi → hücresel geçişinde uygulama kesilmez. Yeni yola geçildiğinde uç, &lt;code class=&quot;language-text&quot;&gt;PATH_CHALLENGE&lt;/code&gt; / &lt;code class=&quot;language-text&quot;&gt;PATH_RESPONSE&lt;/code&gt; ile yolun ulaşılabilirliğini doğrular; genellikle yeni yol için RTT/cwnd ölçümleri sıfırlanır ve güvenli başlangıç yapılır. &lt;code class=&quot;language-text&quot;&gt;NAT rebinding&lt;/code&gt; gibi kısa süreli uç değişimleri de bu mekanizmalarla tolere edilir. Hata durumunda, karşı tarafın sessizce yok olduğu senaryolarda Stateless Reset hızlı kapanmayı mümkün kılar; &lt;strong&gt;idle timeout&lt;/strong&gt; ve &lt;strong&gt;draining&lt;/strong&gt; durumları bağlantı yaşam döngüsünün diğer kapanış aşamalarıdır.&lt;/p&gt;
&lt;p&gt;Uzun ömürlü akışlarda &lt;strong&gt;anahtar güncelleme (key update)&lt;/strong&gt; periyodik olarak yapılabilir: uçlar, belirli miktar veri/packet sonrası yeni 1-RTT anahtarlarına geçerek kriptografik gizliliği güçlendirir ve olası anahtar sızması etkisini sınırlar. Standartlaştırma ekosisteminde &lt;code class=&quot;language-text&quot;&gt;Extended Key Update&lt;/code&gt; gibi öneriler, güncelleme davranışını daha incelikli hâle getirerek büyük veri akışlarında performans–güvenlik dengesini korumayı amaçlar. Böylece QUIC’in bağlantı yaşam döngüsü; hızlı el sıkışma, kontrollü amplifikasyon, yol doğrulaması ve düzenli anahtar yenilemeleri üzerinden hem güçlü güvenlik hem de &lt;strong&gt;pratik dayanıklılık&lt;/strong&gt; sunar.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;El sıkışma ve 0-RTT:&lt;/strong&gt; İlk bağlantı genellikle 1-RTT’de tamamlanır; yeniden bağlanmada 0-RTT ile uygulama verisi el sıkışma tamamlanmadan gönderilebilir. 0-RTT’nin yeniden oynatma (replay) riskleri vardır; kimlik doğrulaması sonlamadan hassas işlem yapmayın.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Adres doğrulama ve anti-amplification limiti:&lt;/strong&gt; Sunucu, istemci adresi doğrulanana kadar aldığı baytın en fazla 3 katı veri gönderebilir; bu, yansıma (reflection) ve güçlendirme saldırılarını sınırlar. Gerekirse Retry paketi ile token tabanlı doğrulama ister; bu ek RTT getirebilir.  ￼&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bağlantı göçü ve path doğrulaması:&lt;/strong&gt; Bağlantı kimlikleri (CIDs) sayesinde IP/port değişse de akışlar devam eder; yeni yol PATH_CHALLENGE/RESPONSE ile doğrulanır. ￼&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Anahtar güncelleme:&lt;/strong&gt; Uzun ömürlü bağlantılar için anahtar güncellemesi ve yeni “Extended Key Update” taslakları gündemdedir.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/59c0c5f39dc676fb92375843efdd66a4/c1b63/image2.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 158.78378378378378%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAgCAIAAACdAM/hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAEC0lEQVR42qVUaU/jSBD1//8tSOTDCGYXciAggQDKQeIczuncFz7a7sttZ1/bBJgVI400pVKrr1ddXfWqjGKxeHt722w2z87OLi4uKpUKluVy+aHycFO6gTw/P5+fn9/d3eE0l8vl8/nsQrVaNbBbKpUAvr+/73Q6o9EIAGzCKMYMDACWl5eXwBcKBYCxU6vVjONJlFL1eq1SLmNy/DPRYEJIt9MZDod1s1trmYSygLGAMpIq5VwIHgkhOY+jaLVcwsHBYCCl1GDOeaPRgOdSyDg5BkISIbORcOlzcaB8R/me8i0T5mTebrXapul5nhGG4XK5tG2727c2joM3XcpdJk76y9yXqjscIzrlcgXRMfb7PRzGy+OpfQjwHo0kFcwXzBNUq+RhLFksqZLsmIhBz7y6urq+zlvWwHAcZzKZWJYFN+zpdGBZ49GIMxZF+JTQykPBAkFJOvq7tb1crhbzhe/5RnISfN6ezV6bzXa7LYT4Nry4FcfJZ7Sj7IlUYpwkSZyKjCIu3vch8qQfAqCR2tPGIqXyhULu/PymVPp5eYkofhz9xotEg33fB12QvelqY292W8cdz5c71yNc+IwHjMMz7Z6U8Gg2myG6pmnqPMMAY6zb6yF1cAZLKiOmYoxBmm3keRvyVcDWAVuGvD1ddAHtdpEmw3O9KWQy7fStxdubT0OHUiekLkXC9egzEYoItjDK+NgfDIvFAsoBJNN5HgyGzy8vs8XCC0POgoj7ipNIBBgVxzJUeu5j/yiDYa9VKAJbAjsMfBixWa1Wvu+FxEMMBaecEljRIzR0OdkzsmNkT/2Nd1j7JAQKf/ysqhhvbYeCbHmwE+GboI4IHQmGCXBOKC2xRDgY/8zzB0lwSBlXCvXDhGaVVk59Hjo8eONkw8maOnPqrHSeUkZ8qecIL63A4ThiCTTmiXpXBWJHoJACocDcX+r5gwxmq/nPz4uX56duF7nrD0ejvmVhgh++fy2OUb/fg+fzeeXh4fX1FeB+vw/aWFa/1+tNU0Hl/I9zRsbkNB4q+zyWiDnYmg4qIz+IlDFMnQRzIzvOeliz0ag+Pi7m84AQ13XhLV4LggCT1I4CHqjMfyy127CKPO/2+3zpJvfjh9m3ZsvVfLHYbbfr9dp1nO1mAxhcgtOwpy/vdvrlDFx9egLJqPYsoZGChpEiQgVSEZA8Uh7X/YxFsTWxG/V6q9WiITVw33Fd1AqaCfuSBh2b05j1iihOEOje2H7UUh2PxwYcQFpq9fpisUS1gLZNhLvVQpDRUtBY0KeyIGdxHg5HV/9e5/MFVIRxOByQT9xHhaCZYQITID0Mwxfs2KlgB30WYLyBFCKXm81GtyHk/SNJv2sa2bMZi78nyZ9I8kWM41/IX4H/A+GF/qk79BAjAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Zero RTT&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/59c0c5f39dc676fb92375843efdd66a4/fcda8/image2.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/59c0c5f39dc676fb92375843efdd66a4/12f09/image2.png 148w,https://blog.hkucuk.com/static/59c0c5f39dc676fb92375843efdd66a4/e4a3f/image2.png 295w,https://blog.hkucuk.com/static/59c0c5f39dc676fb92375843efdd66a4/fcda8/image2.png 590w,https://blog.hkucuk.com/static/59c0c5f39dc676fb92375843efdd66a4/efc66/image2.png 885w,https://blog.hkucuk.com/static/59c0c5f39dc676fb92375843efdd66a4/c83ae/image2.png 1180w,https://blog.hkucuk.com/static/59c0c5f39dc676fb92375843efdd66a4/c1b63/image2.png 1200w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;h2 id=&quot;4-kayıp-tespiti-ve-tıkanıklık-kontrolü-rfc-9002&quot;&gt;&lt;a href=&quot;#4-kay%C4%B1p-tespiti-ve-t%C4%B1kan%C4%B1kl%C4%B1k-kontrol%C3%BC-rfc-9002&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;4. Kayıp Tespiti ve Tıkanıklık Kontrolü (RFC 9002)&lt;/h2&gt;
&lt;p&gt;QUIC’in kayıp tespiti, TCP’deki klasik RTO yaklaşımını modernize ederek &lt;code class=&quot;language-text&quot;&gt;Probe Timeout (PTO)&lt;/code&gt;, &lt;code class=&quot;language-text&quot;&gt;ACK aralıkları (ACK ranges)&lt;/code&gt; ve &lt;code class=&quot;language-text&quot;&gt;gecikmeli ACK (ACK delay)&lt;/code&gt; kavramlarını bir araya getirir. Her paket ayrı bir packet number space (Initial/Handshake/1-RTT) içinde izlenir; böylece el sıkışma aşamasındaki belirsizlikler uygulama verisinden izole edilir. Alıcı, Selective ACK’e benzer biçimde hangi paket aralıklarını gördüğünü bildirir ve ölçtüğü &lt;strong&gt;ACK gecikmesini&lt;/strong&gt; de raporlar; gönderen bu bilgiyi RTT kestirimi ve zamanlayıcılarını ayarlamak için kullanır. PTO, “zamanında yanıt gelmedi, ağ sessiz olabilir” sinyalidir; gönderene ek &lt;strong&gt;prob (araştırma) paketleri&lt;/strong&gt; yollatır ve böylece gereksiz tam zaman aşımı beklemeleri azaltılır.&lt;/p&gt;
&lt;p&gt;Kayıp kararı iki ana sezgiye dayanır: &lt;strong&gt;paket-eşiği&lt;/strong&gt; (daha yeni N paket onaylandıysa eskisi muhtemelen kayıptır) ve &lt;strong&gt;zaman-eşiği&lt;/strong&gt; (tahmini RTT penceresi aşıldıysa kayıp varsayılır). Bu ikili yaklaşım, hem yeniden sıralanma (reordering) hem de değişken gecikim koşullarında yanlış kayıp saptamalarını sınırlamayı hedefler. Uzun süreli kötüleşmeler için QUIC, &lt;strong&gt;kalıcı tıkanıklık (persistent congestion)&lt;/strong&gt; durumunu tanımlar: belirli bir süre (PTO tabanlı bir eşik) boyunca gönderilen tüm “ACK uyandırıcı” paketler kayıp sayılırsa, tıkanıklığın ciddi olduğu kabul edilip daha agresif çakışma azaltma uygulanır.&lt;/p&gt;
&lt;p&gt;Tıkanıklık kontrolü pluggable tasarlanmıştır; RFC 9002 algoritma seçimini dikte etmez, ancak pencereli algoritmalar için rehber metrikleri (örn. bytes-in-flight, pacing) ve başlangıç davranışlarını çizer. Pratikte başlangıç &lt;strong&gt;congestion window&lt;/strong&gt; yaklaşık 10 paket mertebesindedir ve gönderenin pacing yapması (ani patlamaları önlemek için aralıklı gönderim) tavsiye edilir. Kaybın sinyali (ya da ECN işaretleri) alındığında &lt;strong&gt;yavaş başlatma&lt;/strong&gt; dışına çıkılır ve &lt;strong&gt;congestion avoidance&lt;/strong&gt; evresine geçilir; pencere büyümesi yavaşlatılır veya düşürülür. Bu sayede QUIC; yüksek bant genişlikli, yüksek gecikimli hatlarda dahi gereksiz dalgalanmayı sınırlarken iyi hatlarda hızla “açılabilir”.&lt;/p&gt;
&lt;p&gt;Algoritma tarafında &lt;code class=&quot;language-text&quot;&gt;NewReno&lt;/code&gt; ve &lt;code class=&quot;language-text&quot;&gt;CUBIC&lt;/code&gt; en yaygın uygulanımlardır; &lt;code class=&quot;language-text&quot;&gt;BBR&lt;/code&gt; gibi akış-temelli yaklaşımlar da kullanıcı alanında rahatça denenebilir. Ayrıca QUIC, ağ destekliyorsa ECN sinyallerini tıkanıklık göstergesi olarak kullanabilir; bu, yalnızca kayba güvenmekten daha nazik bir tepkisellik sağlar. Uygulama açısından bakarsak: gecikmeye duyarlı medya/oyun trafiği için &lt;strong&gt;QUIC DATAGRAM&lt;/strong&gt; + pacing iyi sonuç verirken; güvenilir aktarım gereken dosya/HTTP içerikleri akış (stream) üzerinde, seçilen tıkanıklık kontrolüyle tahmin edilebilir ve kararlı bir performans elde eder.&lt;/p&gt;
&lt;h2 id=&quot;5-http3-quic-üzerinde-http&quot;&gt;&lt;a href=&quot;#5-http3-quic-%C3%BCzerinde-http&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;5. HTTP/3: QUIC Üzerinde HTTP&lt;/h2&gt;
&lt;p&gt;HTTP/3, HTTP semantiğini doğrudan &lt;strong&gt;QUIC akışlarına&lt;/strong&gt; yerleştirir: her istek–yanıt çifti tek bir çift yönlü akış üzerinde taşınır; akışlar birbirinden bağımsız ilerlediği için tek bir kayıp ya da yeniden iletim diğer istekleri bekletmez. HTTP/3 ayrıca &lt;strong&gt;denetim (control) akışları&lt;/strong&gt; kullanır: SETTINGS, GOAWAY ve benzeri çerçeveler bu tek yönlü kontrol akışlarında taşınır; istek akışlarının üzerine karışmaz. Bu yapı, HTTP/2’de TCP’nin tek bayt akışına bindirilmiş çoklamanın tetiklediği &lt;strong&gt;TCP kaynaklı head-of-line blocking&lt;/strong&gt; sorununu kökten kaldırır.&lt;/p&gt;
&lt;p&gt;Başlık sıkıştırması HTTP/3’te &lt;code class=&quot;language-text&quot;&gt;QPACK&lt;/code&gt; ile yapılır. QPACK, HTTP/2’deki HPACK’in “tek TCP akışında dinamik tablo güncellemesi → global HOL” problemine karşı tasarlanmıştır. Dinamik tablo güncellemeleri ve başlık başvuruları, ayrı &lt;strong&gt;encoder/decoder tek yönlü akışlarında&lt;/strong&gt; mübadele edilir; istek akışları bu akışlardan bağımsız ilerler. Aynı zamanda “gerekli ekleme sayısı” gibi kısıtlayıcı işaretler sayesinde alıcı, henüz görmediği bir dinamik tablo girdisine takılıp bloklanmaz; pratikte yüksek kayıp ve yeniden sıralama içeren mobil ağlarda dahi başlık kod çözme akış bazında ilerler.&lt;/p&gt;
&lt;p&gt;Önceliklendirme ve akış kontrolü, QUIC’in doğal yetenekleriyle birleşir. Uygulama; büyük gövdeli indirmeleri düşük, etkileşimli istekleri yüksek öncelikli işaretleyebilir; QUIC’in &lt;strong&gt;stream-level&lt;/strong&gt; ve &lt;strong&gt;connection-level&lt;/strong&gt; akış kontrolü, adil ve tahmin edilebilir kaynak kullanımını sağlar. Güvenilir veri (HEADERS/DATA) akışlar üzerinden giderken, &lt;code class=&quot;language-text&quot;&gt;HTTP Datagrams (H3 DATAGRAM)&lt;/code&gt; seçeneği, QUIC’in güvenilmez ama şifreli &lt;code class=&quot;language-text&quot;&gt;DATAGRAM&lt;/code&gt; çerçevesine bağlanır; medya, oyun telemetrisi veya tünelleme (ör. MASQUE/WebTransport tabanlı senaryolar) gibi kayıp-toleranslı trafiğe düşük gecikim sunar.&lt;/p&gt;
&lt;p&gt;Dağıtım tarafında HTTP/3, &lt;strong&gt;Alt-Svc&lt;/strong&gt; ile uçlara ilan edilerek kademeli benimsenir; istemci, aynı origin için h2/h1’e gerektiğinde geri dönebilir. QUIC’in &lt;strong&gt;0-RTT&lt;/strong&gt; özelliği, idempotent GET gibi güvenli işlemlerde el sıkışma tamamlanmadan isteğe başlama olanağı verir (yeniden oynatma riskleri nedeniyle sunucu politikalarıyla sınırlandırılır). “Server push” yeteneği standartta bulunsa da pratikte tarayıcı desteği ve kullanım kalıpları sınırlıdır; çoğu dağıtım, &lt;strong&gt;103 Early Hints&lt;/strong&gt; ve preload gibi mekanizmalarla benzer kazanımları elde eder. Böylece HTTP/3; bağımsız akışlar, QPACK ve QUIC’in modern taşıma özellikleriyle, web trafiğini daha &lt;strong&gt;tepki-hızlı&lt;/strong&gt;, &lt;strong&gt;kararlı&lt;/strong&gt; ve &lt;strong&gt;güçlü ağlarda ölçeklenir&lt;/strong&gt; hale getirir.&lt;/p&gt;
&lt;h2 id=&quot;6-ölçülebilirlik-ve-yönetilebilirlik-spin-bit-invariants&quot;&gt;&lt;a href=&quot;#6-%C3%B6l%C3%A7%C3%BClebilirlik-ve-y%C3%B6netilebilirlik-spin-bit-invariants&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;6. Ölçülebilirlik ve Yönetilebilirlik: Spin Bit, Invariants&lt;/h2&gt;
&lt;p&gt;QUIC’in &lt;strong&gt;tel görüntüsü (wire image)&lt;/strong&gt; büyük ölçüde şifrelenir; bu nedenle ara cihazların (NAT, yönlendirici, ölçüm kutuları) paket içeriklerinden ayrıntılı bilgi çıkarması amaçlı olarak zorlaştırılmıştır. Buna karşılık, protokolün &lt;strong&gt;invariants&lt;/strong&gt; olarak adlandırılan ve sürümler arasında değişmeyecek şekilde tanımlanan bazı alanları (örn. “long/short header” ayrımı, sürüm alanının konumu, bağlantı kimliklerinin varlığı) görünür bırakılır. Bu sayede ağlar, &lt;strong&gt;bağlantı kimliği (CID)&lt;/strong&gt; üzerinden yük dengeleme ya da akış yapışkanlığı gibi temel işlemleri, uçtan uca şifrelemeyi bozmayacak biçimde gerçekleştirebilir; aynı zamanda protokol evrimini engelleyen “orta nokta sertleşmesi”nin önüne geçilir.&lt;/p&gt;
&lt;p&gt;Spin bit, uçların her RTT’de bir kez bit değerini “çevirerek” (toggle) gönderdiği, yalnızca &lt;strong&gt;yaklaşık RTT kestirimi&lt;/strong&gt; için tasarlanmış, isteğe bağlı bir görünen alandır. Bir gözlem noktası, ardışık paketlerdeki bit değişimlerini izleyerek &lt;strong&gt;uçtan uca&lt;/strong&gt; veya &lt;strong&gt;yön başına&lt;/strong&gt; gecikim hakkında kaba bir tahmin yapabilir. Ancak spin bit, aktif veri akışı yokken, yoğun paket yeniden sıralaması/kaybı altında ya da bağlantı göçü sonrasında güvenilir ölçüm vermez; bant genişliği, kayıp oranı, uygulama seviyesi gecikim gibi metrikleri doğrudan vermez. Bu nedenle gizlilik ve parmak izi çıkarma risklerini azaltmak için uygulamalar &lt;strong&gt;spin bit’i örnekleme (sampling)&lt;/strong&gt; ile açıp kapatabilir veya belirli oranlarda tamamen devre dışı bırakabilir.&lt;/p&gt;
&lt;p&gt;Yönetilebilirlik açısından RFC 9312, pasif ölçümün sınırlı kaldığı ortamlarda &lt;strong&gt;uç iş birliğine dayalı&lt;/strong&gt; yöntemleri önerir: örneğin qlog ile ayrıntılı olay kaydı, uçların sağladığı sayaç/metrik arabirimleri, ECN sayaçlarının raporlanması ve kontrol kanallarında asgari görünür sinyallerin korunması. Operasyon ekipleri için pratik hedef; “paket içeriğini görmeden” bile &lt;strong&gt;RTT eğilimleri&lt;/strong&gt;, &lt;strong&gt;tıkanıklık belirtileri&lt;/strong&gt; ve &lt;strong&gt;ulaşılabilirlik sorunları&lt;/strong&gt; hakkında yeterli gözlem elde etmek, bunu da gizlilik ilkeleriyle dengede tutmaktır. Ayrıca &lt;strong&gt;CID rotasyonu ve bağlantı göçü&lt;/strong&gt; gibi QUIC özelliklerinin, pasif korelasyonu zorlaştıracağı unutulmamalıdır; yük dengeleyicilerde CID tabanlı eşlemenin doğru yapılandırılması yönetimsel istikrar için kritik önemdedir.&lt;/p&gt;
&lt;p&gt;Saha pratiği olarak: (i) Spin bit’i yalnızca &lt;strong&gt;tanılama/sorun giderme&lt;/strong&gt; dönemlerinde veya &lt;strong&gt;istatistiksel örnekleme&lt;/strong&gt; ile açmak; (ii) Kalıcı telemetri için qlog ve uç metrikleri gibi iş birliği gerektiren yöntemleri tercih etmek; (iii) Ölçümlerin &lt;strong&gt;yol değişimi&lt;/strong&gt;, &lt;strong&gt;NAT yeniden bağlama&lt;/strong&gt; ve &lt;strong&gt;farklı RTT’li çoklu erişim&lt;/strong&gt; senaryolarında anlamını yitirebileceğini hesaba katmak önerilir. Böylece QUIC, hem gizliliği önceleyen tasarımını korur hem de işletmecilere yeterli &lt;strong&gt;gözlemlenebilirlik&lt;/strong&gt; sağlayacak, sınırlı ama işe yarar araçlar sunar.&lt;/p&gt;
&lt;h2 id=&quot;7-quicin-avantajları&quot;&gt;&lt;a href=&quot;#7-quicin-avantajlar%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;7. QUIC’in Avantajları&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Düşük el sıkışma gecikmesi:&lt;/strong&gt; 1-RTT kurulum, 0-RTT yeniden başlatma.  ￼&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Akış bazında HOL Blocking yok:&lt;/strong&gt; HTTP/3’te tek akıştaki kayıp diğer akışları durdurmaz.  ￼&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bağlantı göçü:&lt;/strong&gt; Mobil senaryolarda IP/port değişse de bağlantı sürer.  ￼&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Genişletilebilirlik:&lt;/strong&gt; DATAGRAM, sürüm müzakeresi, QUIC v2.  ￼&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Güvenlik varsayılan:&lt;/strong&gt; TLS 1.3 zorunlu; anahtar güncelleme, anti-amplification, adres doğrulama. &lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;8-zorluklar-ve-dezavantajlar&quot;&gt;&lt;a href=&quot;#8-zorluklar-ve-dezavantajlar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;8. Zorluklar ve Dezavantajlar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;UDP engelleri / QoS:&lt;/strong&gt; Bazı ağlar UDP’yi sınırlayabilir; firewall/NAT zaman aşımı ve MTU konuları dikkat ister.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Operasyonel görünürlük:&lt;/strong&gt; Şifreli tel görüntüsü tanılama/ölçüm araçlarını zorlar; spin bit isteğe bağlıdır.  ￼&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CPU maliyeti:&lt;/strong&gt; Kullanıcı alanı tıkanıklık kontrolü ve AEAD şifreleme CPU’yu artırabilir; ancak modern uygulamalarda maliyet/performans dengesi genellikle olumludur.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Anti-amplification ve sertifika boyutu:&lt;/strong&gt; 3× limiti ve büyük sertifika zincirleri ilk RTT’yi uzatabilir; zinciri optimize etmek önemlidir. &lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;9-diğer-protokollerle-karşılaştırma&quot;&gt;&lt;a href=&quot;#9-di%C4%9Fer-protokollerle-kar%C5%9F%C4%B1la%C5%9Ft%C4%B1rma&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;9. Diğer Protokollerle Karşılaştırma&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;TCP + TLS + HTTP/2:&lt;/strong&gt; Geniş dağıtım olgunluğu yüksek; fakat HOL Blocking, yavaş başlatma ve çok akışı tek bytestream üzerinde taşımanın bedeli var. QUIC/HTTP/3 bu sınırlamaları hedefler.  ￼&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SCTP (+ DTLS):&lt;/strong&gt; Akış kavramı QUIC’e benzer; ancak dağıtım ve orta nokta uyumluluğu TCP kadar yaygın değildir. QUIC, UDP üzerinden, tarayıcı desteği ve HTTP/3 ile pratikte daha geniş ekosistem buldu.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MPTCP:&lt;/strong&gt; Çok yol desteğini TCP düzeyinde sunar; QUIC’te bağlantı göçü yerleşik, multipath QUIC ise aktif standartlaşma alanıdır (taslak).  &lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;10-go-ile-quic-quic-go-ile-ham-quic-ve-http3&quot;&gt;&lt;a href=&quot;#10-go-ile-quic-quic-go-ile-ham-quic-ve-http3&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;10. Go ile QUIC: quic-go ile “Ham” QUIC ve HTTP/3&lt;/h2&gt;
&lt;p&gt;Aşağıdaki örnekler quic-go API’sına uygundur. HTTP/3 için quic-go/http3 paketindeki ListenAndServeQUIC ve http3.Transport kullanılır. QUIC DATAGRAM API’sı EnableDatagram, SendDatagram ve ReceiveDatagram ile etkinleştirilir.&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Not: Örnekler yerel geliştirme içindir. Sertifika üretimi için openssl veya mkcert ile server.crt/server.key hazırlayınız. Yerel denemede istemcide TLS doğrulamasını basitleştirmek için InsecureSkipVerify kullanılmıştır; production’da kullanmayınız.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;101-minimal-quic-echo-sunucu-streams&quot;&gt;&lt;a href=&quot;#101-minimal-quic-echo-sunucu-streams&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;10.1. Minimal QUIC Echo Sunucu (Streams)&lt;/h3&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;go&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;mod
&lt;span class=&quot;token comment&quot;&gt;// module example.com/quic-echo&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// go 1.22&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// require github.com/quic-go/quic-go v0.55.0&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// server.go&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;context&quot;&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;crypto/tls&quot;&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;fmt&quot;&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;io&quot;&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;log&quot;&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;os&quot;&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;os/signal&quot;&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;syscall&quot;&lt;/span&gt;

	&lt;span class=&quot;token string&quot;&gt;&quot;github.com/quic-go/quic-go&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token comment&quot;&gt;// Load TLS certificate and key. For local testing, generate a self-signed cert.&lt;/span&gt;
	tlsConf&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;tlsConfig&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;server.crt&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;server.key&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;nil&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		log&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Fatalf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;failed to load TLS config: %v&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; err&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	&lt;span class=&quot;token comment&quot;&gt;// Enable QUIC DATAGRAMs (optional) and allow 0-RTT resumption (server-side).&lt;/span&gt;
	quicConf &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;quic&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Config&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		EnableDatagram&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
		Allow0RTT&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;      &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	addr &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;localhost:4242&quot;&lt;/span&gt;
	ln&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; quic&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;ListenAddr&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;addr&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; tlsConf&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; quicConf&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;nil&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		log&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Fatalf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;listen failed: %v&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; err&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	log&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;QUIC echo server listening on %s&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; addr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

	&lt;span class=&quot;token comment&quot;&gt;// Graceful shutdown on Ctrl+C.&lt;/span&gt;
	ctx&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; stop &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; signal&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;NotifyContext&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Background&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; os&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Interrupt&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; syscall&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;SIGTERM&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;defer&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;stop&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;go&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token operator&quot;&gt;&amp;lt;-&lt;/span&gt;ctx&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Done&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
		ln&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Close&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// closes the listener (accepted connections remain until closed)&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		conn&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; ln&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Accept&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Background&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;nil&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; ctx&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Err&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;nil&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
				log&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;shutting down listener...&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
				&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt;
			&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
			log&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;accept error: %v&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; err&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
			&lt;span class=&quot;token keyword&quot;&gt;continue&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
		log&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;accepted new QUIC connection from %s&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; conn&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;RemoteAddr&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;go&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;handleConn&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;conn&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;handleConn&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;conn quic&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Connection&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;defer&lt;/span&gt; conn&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;CloseWithError&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;bye&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

	&lt;span class=&quot;token comment&quot;&gt;// Optionally check whether DATAGRAMs were negotiated.&lt;/span&gt;
	cs &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; conn&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;ConnectionState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	log&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;0-RTT used? %v, DATAGRAM supported? %v&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; cs&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Used0RTT&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; cs&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;SupportsDatagrams&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

	&lt;span class=&quot;token comment&quot;&gt;// Accept streams in a loop. Each stream is independent.&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		str&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; conn&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;AcceptStream&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Background&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;nil&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			log&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;accept stream: %v&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; err&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
			&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;go&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;echo&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;str&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;echo&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s quic&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Stream&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;defer&lt;/span&gt; s&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Close&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	buf &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;byte&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;32&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1024&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		n&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; s&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Read&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;buf&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; n &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			&lt;span class=&quot;token comment&quot;&gt;// Echo back the same payload.&lt;/span&gt;
			&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; werr &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; s&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Write&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;buf&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;n&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; werr &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;nil&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
				log&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;write error: %v&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; werr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
				&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt;
			&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; io&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;EOF &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;nil&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			log&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;read error: %v&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; err&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
			&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;tlsConfig&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;certFile&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; keyFile &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;tls&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Config&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;error&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	cert&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; tls&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;LoadX509KeyPair&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;certFile&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; keyFile&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;nil&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;nil&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; err
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token comment&quot;&gt;// Configure ALPN for your application if needed (e.g., &quot;hq-interop&quot;).&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;tls&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Config&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		Certificates&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;tls&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Certificate&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;cert&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
		&lt;span class=&quot;token comment&quot;&gt;// NextProtos can be customized. For raw-QUIC apps, pick an ALPN token.&lt;/span&gt;
		NextProtos&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;hq-example&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;nil&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;// client.go&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;context&quot;&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;crypto/tls&quot;&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;fmt&quot;&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;io&quot;&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;log&quot;&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;time&quot;&lt;/span&gt;

	&lt;span class=&quot;token string&quot;&gt;&quot;github.com/quic-go/quic-go&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token comment&quot;&gt;// WARNING: InsecureSkipVerify is ONLY for local testing!&lt;/span&gt;
	tlsConf &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;tls&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Config&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		InsecureSkipVerify&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
		NextProtos&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;         &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;hq-example&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	quicConf &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;quic&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Config&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		EnableDatagram&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	ctx&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; cancel &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;WithTimeout&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Background&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;time&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Second&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;defer&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;cancel&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

	addr &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;localhost:4242&quot;&lt;/span&gt;
	conn&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; quic&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;DialAddr&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;ctx&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; addr&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; tlsConf&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; quicConf&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;nil&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		log&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Fatalf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;dial failed: %v&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; err&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;defer&lt;/span&gt; conn&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;CloseWithError&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;client done&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

	&lt;span class=&quot;token comment&quot;&gt;// Open a bidirectional stream and send a message.&lt;/span&gt;
	stream&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; conn&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;OpenStream&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;nil&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		log&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Fatalf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;open stream: %v&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; err&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;defer&lt;/span&gt; stream&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Close&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

	msg &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;byte&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;hello over QUIC streams&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; stream&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Write&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;msg&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;nil&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		log&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Fatalf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;write: %v&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; err&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	&lt;span class=&quot;token comment&quot;&gt;// Read echo.&lt;/span&gt;
	reply &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;byte&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;msg&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; io&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;ReadFull&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;stream&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; reply&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;nil&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		log&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Fatalf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;read: %v&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; err&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;echo reply: %q\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;reply&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

	&lt;span class=&quot;token comment&quot;&gt;// Optionally try a DATAGRAM (best-effort, not retransmitted).&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; conn&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;SendDatagram&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;byte&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;ping-dgram&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;nil&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token comment&quot;&gt;// ReceiveDatagram blocks; in real apps, run this in a goroutine.&lt;/span&gt;
		ctx2&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; cancel2 &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;WithTimeout&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Background&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; time&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Second&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;defer&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;cancel2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; dg&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; conn&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;ReceiveDatagram&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;ctx2&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;nil&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;received datagram: %q\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;dg&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;EnableDatagram ile RFC 9221 DATAGRAM uzantısı müzakere edilir (karşı taraf da desteklemeli). SendDatagram/ReceiveDatagram ile gönderilen veriler şifreli ve tıkanıklık kontrolüne tabi, ancak yeniden iletilmez.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;102-minimal-http3-sunucu-ve-i̇stemci&quot;&gt;&lt;a href=&quot;#102-minimal-http3-sunucu-ve-i%CC%87stemci&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;10.2. Minimal HTTP/3 Sunucu ve İstemci&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Sunucu:&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;// go.mod&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// module example.com/h3&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// go 1.22&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// require github.com/quic-go/quic-go v0.55.0&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;crypto/tls&quot;&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;fmt&quot;&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;log&quot;&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;net/http&quot;&lt;/span&gt;

	&lt;span class=&quot;token string&quot;&gt;&quot;github.com/quic-go/quic-go&quot;&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;github.com/quic-go/quic-go/http3&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	mux &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; http&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;NewServeMux&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	mux&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;HandleFunc&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;/hello&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;w http&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ResponseWriter&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; r &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;http&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Request&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token comment&quot;&gt;// You can detect 0-RTT by checking r.TLS.HandshakeComplete (server might have accepted request early).&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;TLS &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;nil&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;TLS&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;HandshakeComplete &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			w&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Header&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Set&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;x-served-in-0rtt&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;true&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
		fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Fprintln&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;w&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Hello over HTTP/3&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

	server &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;http3&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Server&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		Handler&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; mux&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
		Addr&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;    &lt;span class=&quot;token string&quot;&gt;&quot;:4433&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
		&lt;span class=&quot;token comment&quot;&gt;// Configure ALPN to &quot;h3&quot; and set QUIC options.&lt;/span&gt;
		TLSConfig&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;  http3&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;ConfigureTLSConfig&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;tls&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Config&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;Certificates&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;loadCert&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
		QUICConfig&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;quic&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Config&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;EnableDatagram&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; Allow0RTT&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	log&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;HTTP/3 server on https://localhost:4433/hello&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	log&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Fatal&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;server&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;ListenAndServe&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;loadCert&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;tls&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Certificate &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	cert&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; tls&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;LoadX509KeyPair&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;server.crt&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;server.key&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;nil&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token function&quot;&gt;panic&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;err&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;tls&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Certificate&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;cert&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;İstemci:&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;crypto/tls&quot;&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;fmt&quot;&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;io&quot;&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;log&quot;&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;net/http&quot;&lt;/span&gt;

	&lt;span class=&quot;token string&quot;&gt;&quot;github.com/quic-go/quic-go/http3&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token comment&quot;&gt;// http3.Transport implements http.RoundTripper for HTTP/3.&lt;/span&gt;
	tr &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;http3&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Transport&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		TLSClientConfig&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;tls&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Config&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			InsecureSkipVerify&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;                &lt;span class=&quot;token comment&quot;&gt;// For local testing only&lt;/span&gt;
			NextProtos&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;         &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;http3&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;NextProtoH3&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Set ALPN to &quot;h3&quot;&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;defer&lt;/span&gt; tr&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Close&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

	c &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;http&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Client&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;Transport&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; tr&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	resp&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; c&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Get&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;https://localhost:4433/hello&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;nil&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		log&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Fatal&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;err&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;defer&lt;/span&gt; resp&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Body&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Close&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	b&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;_&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; io&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;ReadAll&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;resp&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Body&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;status=%s body=%q\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; resp&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Status&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;ListenAndServeQUIC / http3.Server ve istemci tarafında http3.Transport resmi dokümantasyonda bu şekilde kullanılır; TLSConfig için sunucuda http3.ConfigureTLSConfig kullanmak doğru ALPN’yi (h3) otomatik yerleştirir.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&quot;11-uygulama-i̇puçları-ve-en-i̇yi-pratikler&quot;&gt;&lt;a href=&quot;#11-uygulama-i%CC%87pu%C3%A7lar%C4%B1-ve-en-i%CC%87yi-pratikler&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;11. Uygulama İpuçları ve En İyi Pratikler&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Sertifika zinciri boyutunu optimize edin:&lt;/strong&gt; Anti-amplification nedeniyle ilk cevap boyutu 3× sınırına tabidir; büyük zincirler ek RTT doğurabilir.  ￼&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ALPN ve QUIC sürüm desteği:&lt;/strong&gt; HTTP/3 için h3 ALPN’si; sürüm müzakeresi için RFC 9368 desteği.  ￼&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Datagram vs. Stream seçimi:&lt;/strong&gt; Kayba toleranslı, düşük gecikim odaklı telemetri/oyun/medya için DATAGRAM; güvenilirlik şartsa stream.  ￼&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bağlantı göçü testleri:&lt;/strong&gt; NAT rebinding / arayüz değişimlerini (Wi-Fi→LTE) sahada test edin; path doğrulaması ve CID rotasyonu önemlidir.  ￼&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gözlemlenebilirlik:&lt;/strong&gt; qlog etkinleştirin; ops ekipleri için RFC 9312 rehberini izleyin.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El sıkışma uçuşunu küçük tutmak üretimde fark yaratır. &lt;strong&gt;Sertifika zinciri&lt;/strong&gt;ni mümkün olduğunca kısaltın: gereksiz ara sertifikaları atın, aynı CA’nın birden çok zincirinden yalnızca en kısa olanı gönderin, &lt;strong&gt;OCSP stapling&lt;/strong&gt; ve (mümkünse) &lt;strong&gt;TLS certificate compression&lt;/strong&gt; kullanın. Büyük RSA zincirleri yerine eşdeğer güvenlikte &lt;strong&gt;ECDSA&lt;/strong&gt; tercih etmek tipik olarak byte sayısını ciddi azaltır. Bu iyileştirmeler, sunucunun istemci doğrulanana kadar &lt;strong&gt;yalnızca aldığı baytın 3 katını&lt;/strong&gt; gönderebildiği &lt;strong&gt;anti-amplification&lt;/strong&gt; rejiminde ekstra RTT ödenmesini önler. İlk temasın hafiflemesi için &lt;strong&gt;session resumption&lt;/strong&gt;, &lt;strong&gt;NEW_TOKEN&lt;/strong&gt; dağıtımı ve Retry gereksinimini minimize eden topolojiler de pratikte etkilidir.&lt;/p&gt;
&lt;p&gt;Protokol pazarlığı tarafında &lt;code class=&quot;language-text&quot;&gt;ALPN&lt;/code&gt; ve sürüm desteği uyumlu ilerlemeli. HTTP için h3’ü ilan ederken, istemcinin ve ara cihazların olgunluğu nedeniyle &lt;strong&gt;h2 geri dönüş&lt;/strong&gt; yolunu açık tutun. Taşıma katında &lt;strong&gt;uyumlu sürüm müzakeresi&lt;/strong&gt; desteği ve &lt;strong&gt;QUIC v1 + v2&lt;/strong&gt;’yi birlikte sunmak, orta nokta sertleşmesine karşı dayanıklılığı artırır. Bu esnada yük dengeleyicilerin &lt;strong&gt;Connection ID (CID)&lt;/strong&gt; temelli eşlemesi tutarlı olmalı; farklı uçlarda aynı origin için aynı TLS/QUIC parametreleri (idle timeout, max datagram size, TLS grupları) taşınmazsa sürüm/ALPN pazarlıklarında sürpriz uyumsuzluklar doğar.&lt;/p&gt;
&lt;p&gt;Uygulama veri taşımasını doğru &lt;strong&gt;taşıma soyutlaması&lt;/strong&gt; ile eşleyin: &lt;strong&gt;Stream&lt;/strong&gt;’ler güvenilir, sıralı (ve gerektiğinde akış-bazlı akış kontrolüyle) içerikler için idealdir; tipik HTTP gövdeleri, API yanıtları, dosya parçaları burada taşınmalı. &lt;strong&gt;DATAGRAM&lt;/strong&gt;, yeniden iletilmeyen ama şifreli ve tıkanıklık kontrolüne tabi “en iyi çaba” trafiğe uygundur: oyun telemetrisi, düşük gecikimli denetim mesajları, bazı medya/tünelleme senaryoları. Eğer uygulamanız DATAGRAM üzerinde “biraz güvenilirlik” istiyorsa, bunu &lt;strong&gt;uygulama katında hafif onaylama/yeniden gönderme&lt;/strong&gt; ile yapın; aksi halde gereksinimleriniz aslında stream’e işaret ediyordur. Her iki durumda da &lt;strong&gt;MTU farkındalığı&lt;/strong&gt;na dikkat edin (DPLPMTUD varsa etkinleştirin); parçalanma, jitter ve kaybı büyütür.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bağlantı göçü&lt;/strong&gt; ve &lt;strong&gt;NAT rebinding&lt;/strong&gt; sahada mutlaka test edilmeli. Cihazların Wi-Fi↔LTE geçişlerinde &lt;strong&gt;PATH_CHALLENGE/RESPONSE&lt;/strong&gt;’un devreye girip akışların kesintisiz sürdüğünü, yeni yolda pencere/RTT’nin güvenli biçimde yeniden öğrenildiğini doğrulayın; düzenli &lt;strong&gt;CID rotasyonu&lt;/strong&gt; yapılandırmasını ve yük dengeleyiciyle uyumunu kontrol edin. &lt;strong&gt;Gözlemlenebilirlik&lt;/strong&gt; için üretimde &lt;strong&gt;qlog&lt;/strong&gt;’u örnekleme (sampling) ile açın; &lt;strong&gt;PTO sayısı&lt;/strong&gt;, &lt;strong&gt;0-RTT kabul oranı&lt;/strong&gt;, &lt;strong&gt;handshake başarısı&lt;/strong&gt;, &lt;strong&gt;ortalama/percentile RTT&lt;/strong&gt;, &lt;strong&gt;kayıp ve ECN/CE oranları&lt;/strong&gt; gibi metrikleri izleyin. Sorun giderirken &lt;strong&gt;spin bit&lt;/strong&gt;’i geçici ve sınırlı oranlarda kullanın; kalıcı telemetriyi ise qlog ve uç-taraf metrik arayüzleriyle sağlayın. Bu pratiklerle QUIC dağıtımınız hem hızlı açılır hem de operasyonel olarak öngörülebilir kalır.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;QUIC, modern internet uygulamalarının beklentilerine uygun düşük gecikmeli, güvenli ve esnek bir taşıma katmanı sunar. HTTP/3’ün başarısı, QUIC’in akış izolasyonu, 0-RTT, bağlantı göçü ve genişletilebilirlik tasarımlarıyla yakından ilişkilidir. Operasyonel tarafta şifreli tel görüntüsü yeni ölçüm pratiklerini gerektirirken, standarta eklenen spin bit ve yönetilebilirlik rehberleri bu boşluğu doldurmaya çalışır. QUIC v2 ve sürüm müzakeresi, uzun vadede ossification’ı kırmayı hedefler. Uygulama geliştiricisi için quic-go gibi olgun kütüphanelerle ham QUIC ve HTTP/3 uygulamak artık oldukça erişilebilir durumdadır. &lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/QUIC&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/QUIC&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.f5.com/glossary/quic-http3&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.f5.com/glossary/quic-http3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.chromium.org/quic/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.chromium.org/quic/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://datatracker.ietf.org/doc/rfc9000/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://datatracker.ietf.org/doc/rfc9000/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://datatracker.ietf.org/doc/html/rfc9001&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://datatracker.ietf.org/doc/html/rfc9001&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://datatracker.ietf.org/doc/html/rfc9002&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://datatracker.ietf.org/doc/html/rfc9002&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://quic-go.net/docs/http3/server/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://quic-go.net/docs/http3/server/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://edgecast.medium.com/how-quic-speeds-up-all-web-applications-62964aadb3d1&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://edgecast.medium.com/how-quic-speeds-up-all-web-applications-62964aadb3d1&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2025/quic-protokolu-ve-http-3-tasima-katmaninda-devrim-ve-uygulama-rehberi/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Raft Algoritması: Dağıtık Sistemlerde Basit ve Güvenilir Konsensus]]></title><description><![CDATA[Dağıtık sistemler, modern yazılım mimarisinin temelini oluşturur. Ancak birden fazla sunucunun aynı anda çalışması, veri tutarlılığını ve sistemin hata toleransını sağlamak gibi karmaşık zorlukları da beraberinde getirir. Bu zorlukların merkezinde 'konsensus' problemi yatar: bir grup sunucunun, ağ kesintileri veya sunucu arızaları gibi aksaklıklara rağmen tek bir değer veya eylem üzerinde anlaşmaya varması.]]></description><link>https://blog.hkucuk.com/2025/raft-algoritmasi-dagitik-sistemlerde-basit-ve-guvenilir-konsensus/</link><guid isPermaLink="false">https://blog.hkucuk.com/2025/raft-algoritmasi-dagitik-sistemlerde-basit-ve-guvenilir-konsensus/</guid><pubDate>Fri, 02 May 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Dağıtık sistemler, modern yazılım mimarisinin temelini oluşturur. Ancak birden fazla sunucunun aynı anda çalışması, veri tutarlılığını ve sistemin hata toleransını sağlamak gibi karmaşık zorlukları da beraberinde getirir. Bu zorlukların merkezinde “konsensus” problemi yatar: bir grup sunucunun, ağ kesintileri veya sunucu arızaları gibi aksaklıklara rağmen tek bir değer veya eylem üzerinde anlaşmaya varması. Bu makale, dağıtık sistemlerde konsensus sağlamak için tasarlanmış, basitliği ve güvenilirliğiyle öne çıkan Raft algoritmasını derinlemesine inceleyecektir.&lt;/p&gt;
&lt;h2 id=&quot;paxos-neden-karmaşıktı&quot;&gt;&lt;a href=&quot;#paxos-neden-karma%C5%9F%C4%B1kt%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Paxos Neden Karmaşıktı?&lt;/h2&gt;
&lt;p&gt;Raft’tan önce, dağıtık konsensus için fiili standart &lt;a href=&quot;./paxos-algoritmasi-dagitik-sistemlerde-konsensus-saglama&quot;&gt;Paxos&lt;/a&gt; algoritmasıydı. Leslie Lamport tarafından 1970’lerde tanımlanan &lt;a href=&quot;./paxos-algoritmasi-dagitik-sistemlerde-konsensus-saglama&quot;&gt;Paxos&lt;/a&gt;, teorik olarak sağlam ve hataya dayanıklı bir çözüm sunuyordu. Ancak, Paxos’un en büyük eleştirisi, anlaşılmasının ve doğru bir şekilde uygulanmasının son derece zor olmasıydı. Karmaşıklığı, geliştiricilerin onu benimsemesini ve genişletmesini engelliyordu, bu da alternatif arayışlarını tetikledi.&lt;/p&gt;
&lt;h2 id=&quot;raftın-temel-prensipleri-ve-tasarım-felsefesi&quot;&gt;&lt;a href=&quot;#raft%C4%B1n-temel-prensipleri-ve-tasar%C4%B1m-felsefesi&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Raft’ın Temel Prensipleri ve Tasarım Felsefesi&lt;/h2&gt;
&lt;p&gt;Diego Ongaro ve John Ousterhout tarafından 2013 yılında tanıtılan Raft, Paxos’a daha anlaşılır bir alternatif olarak tasarlandı. Raft’ın birincil hedefi, mantığı ayırarak ve sunucuların tutarsız olabileceği yolları azaltarak anlaşılabilirliği artırmaktı.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Raft_(algorithm)&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Raft&lt;/a&gt;, “çoğaltılmış durum makineleri” (replicated state machines) kavramı üzerine kuruludur. Temel fikir, ayrı sunucuların belirli bir “şey” üzerinde, özellikle de bir log üzerinde anlaşmasını sağlamaktır. Bu log, sistemin durumunu değiştiren komutların bir kaydıdır. Tüm sunucular aynı komut dizisini aynı sırayla uyguladığında, hepsi aynı duruma ulaşır ve sistem tutarlı kalır.&lt;/p&gt;
&lt;p&gt;Raft, konsensus problemini üç bağımsız alt probleme ayırarak bu anlaşılabilirliği sağlar:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Lider Seçimi (Leader Election):&lt;/strong&gt; Mevcut liderin başarısız olması durumunda yeni bir liderin nasıl seçileceği.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Log Çoğaltma (Log Replication):&lt;/strong&gt; Liderin istemci isteklerini nasıl kabul edeceği ve bunları diğer sunuculara nasıl çoğaltacağı.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Güvenlik (Safety):&lt;/strong&gt; Sistemin hiçbir zaman tutarsız bir duruma düşmemesini sağlayan mekanizmalar.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Raft, bu alt problemlerin her birini açık ve ayrı kurallarla ele alarak, Paxos’un aksine “lider tabanlı” bir yaklaşım benimser. Kümede yalnızca bir lider seçilir ve bu lider, log çoğaltmayı yönetmekten tamamen sorumludur.&lt;/p&gt;
&lt;h2 id=&quot;raftın-bileşenleri-ve-durumları&quot;&gt;&lt;a href=&quot;#raft%C4%B1n-bile%C5%9Fenleri-ve-durumlar%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Raft’ın Bileşenleri ve Durumları&lt;/h2&gt;
&lt;p&gt;Raft kümesindeki her sunucu, herhangi bir zamanda üç durumdan birinde bulunur:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Lider (Leader):&lt;/strong&gt; İstemci isteklerini kabul eden, log girişlerini yöneten ve bunları takipçilere çoğaltan merkezi otoritedir. Normal çalışmada kümede tam olarak bir lider bulunur.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Takipçi (Follower):&lt;/strong&gt; Liderin log girişlerini çoğaltan ve liderden gelen isteklere yanıt veren pasif düğümlerdir.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Aday (Candidate):&lt;/strong&gt; Liderin belirli bir süre içinde yanıt vermemesi durumunda liderlik için aday olan düğümlerdir.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/5ecddf0dad9a4881b5e5e2c0891473b1/a878e/image.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 100%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsTAAALEwEAmpwYAAAyg3RFWHRSYXcACmdlbmVyaWMgcHJvZmlsZQogICAgNjQ1MAo0OTQ5MmEwMDA4MDAwMDAwMDMwMDEyMDEwMzAwMDEwMDAwMDAwMTAwMDAwMDMxMDEwMjAwMDcwMDAwMDAzMjAwMDAwMDY5ODcwNDAwMDEwMDAwMDAzYTAwMDAwMGM4MDAwMDAwNTA2OTYzNjE3MzYxMDAwMDA2MDAwMDkwMDcwMDA0MDAwMDAwMzAzMjMyMzAwMWEwMDMwMDAxMDAwMDAwMDEwMDAwMDAwMmEwMDQwMDAxMDAwMDAwMDAwODAwMDAwM2EwMDQwMDAxMDAwMDAwMDAwODAwMDAwNWEwMDQwMDAxMDAwMDAwYWEwMDAwMDAyMGE0MDIwMDIxMDAwMDAwODgwMDAwMDAwMDAwMDAwMDM2NjYzMDMxMzYzNDM5MzczMjY2MzUzNzM4MzUzNzMxMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAwMDAwMDIwMDAxMDAwMjAwMDQwMDAwMDA1MjM5MzgwMDAyMDAwNzAwMDQwMDAwMDAzMDMxMzAzMDAwMDAwMDAwMDYwMDAzMDEwMzAwMDEwMDAwMDAwNjAwMDAwMDFhMDEwNTAwMDEwMDAwMDAxNjAxMDAwMDFiMDEwNTAwMDEwMDAwMDAxZTAxMDAwMDI4MDEwMzAwMDEwMDAwMDAwMjAwMDAwMDAxMDIwNDAwMDEwMDAwMDAyNjAxMDAwMDAyMDIwNDAwMDEwMDAwMDAwYzE4MDAwMDAwMDAwMDAwNDgwMDAwMDAwMTAwMDAwMDQ4MDAwMDAwMDEwMDAwMDBmZmQ4ZmZlMDAwMTA0YTQ2NDk0NjAwMDEwMTAwMDAwMTAwMDEwMDAwZmZkYjAwNDMwMDA1MDMwNDA0MDQwMzA1MDQwNDA0MDUwNTA1MDYwNzBjMDgwNzA3MDcwNzBmMGIwYjA5MGMxMTBmMTIxMjExMGYxMTExMTMxNjFjMTcxMzE0MWExNTExMTExODIxMTgxYTFkMWQxZjFmMWYxMzE3MjIyNDIyMWUyNDFjMWUxZjFlZmZkYjAwNDMwMTA1MDUwNTA3MDYwNzBlMDgwODBlMWUxNDExMTQxZTFlMWUxZTFlMWUxZTFlMWUxZTFlMWUxZTFlMWUxZTFlMWUxZTFlMWUxZTFlMWUxZTFlMWUxZTFlMWUxZTFlMWUxZTFlMWUxZTFlMWUxZTFlMWUxZTFlMWUxZTFlMWUxZTFlZmZjMDAwMTEwODAwYTAwMGEwMDMwMTIyMDAwMjExMDEwMzExMDFmZmM0MDAxYzAwMDAwMjAzMDEwMTAxMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDA1MDEwNDA2MDMwNzAyMDhmZmM0MDA0YzEwMDAwMTAzMDMwMzAxMDQwNDA5MDcwOTA2MDcwMDAwMDAwMTAyMDMwNDAwMDUxMTA2MTIyMTMxMTMyMjQxNTEwNzE0NjE3MTE1MzIzNTczODE5MTkzYjJkMTE2MjM0MjU1YTFiMWQyMTcyNDI1MzQ1NDYyNzQ5NGMxMjY0NDYzNjRiM2MzMzMzNjUyODI4Mzg0OTJmZmM0MDAxYTAxMDEwMDAzMDEwMTAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDIwMzA0MDUwNmZmYzQwMDI5MTEwMDAyMDIwMTAyMDQwNjAyMDMwMDAwMDAwMDAwMDAwMDAwMDEwMjAzMTEwNDEyMTMyMTMxNDExNDMyNTE2MTgxZjAwNTQyMTU1MjkxZmZkYTAwMGMwMzAxMDAwMjExMDMxMTAwM2YwMGZkOTU0NTE0NTAwNTE0NTA2ODA4YTBlM2M2YTc4MTQ4YjUzYzBiYjQ4NzU4OTU2YTliZWFlYjYxMGJlZWFkZTUyNWI1Mjg5NDYwYTkyMzg1MDAwMmJhZjlkMDBmMzAzY2FhM2U4YWYzOTRkZGY1MmE3NmUzNTdlOWI3OTFiMDc3ODk0ODUyOTU5ZTc5MDMxODAzYzg3M2NmNDM4MjFjZTlhYmUyZGI3MjUzOTdlZDQxNjk3MGI4NTNkOGI2YzQ4NDk0YjYwNjQxZjAwNzllMGY4ZmVjYTAyZDZhYmQ2MzAzNGVjYjY2MmM4ODkzNjRiY2ViNjVjYzQ3NmMxZGE5MDcxOTI0OTFlM2ZiYTkzMGY0YTM2YmZkNGQ3OWZiMTRmZjAwMTUyM2JkNmE0YjE2YTVkNDI2NTU4MmVkMTZlMmMzMTE4YjBmMmQ4NWVlMDg3MTJmMjgxNDlmMjNjMWFjZmVhNmJhY2ViNmJiMTBjNDhkZGJiNGIyYTJmYWI2MTU2YzQ4MjgxOWUwZTdhMjhmNDBhM2M3NGViNWI0NmI0ZDY1OTk0YTZkM2MxYmNmZTU0NmQ3ZmE5YWYzZjYyOWZlMmEzZjk1MWI1ZmVhNWJjZmQ4YTNmOGFiY2Q2Y2ZhOGFlOTNlZThkOTcyZGMyM2MwNzEwYmMyOTViYjdlZTQ4NTFjOGUzMTgyMDc0MzRmYWQ5M2M0ZTY5NGI0YjRlYjI1MjUzOTRhYzgyNzk0ODUwM2MxMjNhMWE5ZTFjNDhkZWNmNTRkMmY3ZDg3YTg2ZDg2NzQzNmRmNmQyOTcxNGQyZGI3OTFiNTY4NTBjNzA3ZTgyMGU0NzgxYTZhMzFlNDJiMGJlOGZhZjE2YTg1MGVlMmNjY2I4YzY2MWRmNWUyYWQ4ZTM4MTI3MDVhNmI5YThiODRmN2M1YzlmN2FkNWFiYWRlY2IyZWJhYTU5MGY0OWVkNzY4ZGFkZTEyOTRhYjIxMjM3MDcwZjFlNjNkZDU4Yzk2MWUwZDUzY2FjOWJiYzBhMzhhYzFkYWE3ZWIwOTcyMTQ4NjJmN2E3YTczODgwNTZiNjk4NTAxYjUyNDEwM2MwOWY4ZDgyMGY5MDUwM2M5MDQ2YzJjNmQ0ZTY2ZDMxOWFiOWJlMWY5ODg0MDBmM2EzMWRmNTc5ZjAwN2VlYTgyNGI5NDcxNTNkNjhlMjgwM2U4YTI4YzUxNDAxNTFkNmE2ODI2ODA4M2U1NTIzOGE4YTA1MDA2MzM1NWVlN2YyN2M5Zjk5NWZkZDM1NjMzY2Q1N2I5ZmM5ZDI3ZTY1N2Y3NGQwMWYxNjVmOTFlMTcyN2ZhYmI3ZTNmZGQxNTZjMGY2OWZhZWFhNTk3ZTQ3ODQ3ZmU1ZGJmYmEyYWRlNGQwMTgyZDc5YTc2ZjkzMmVlYzQ5YjJiNGM4NjA0NjJkYjg5NDg0MDIxNWJjYWIzODI0MGU3M2Q3Y2ViMzMxYjQ1NmFhNDJjOTdkMTcxNzkwNDcwMTMzOTI4YzFmN2VmMzVlYzY0ZDA3MzU3NTYzNGIwNTFjMTM3OTNjOWUzNThhZjg1NmY0MDRkYWU0Mzg1YTQ4MGUxNzI1YjZhMjQyODEyMzkyYWU2YjliM2E0NzUyYzM2N2IyYjdkYThhNzI0MTUyYTQ0OTRiOTkwMDAwMDdjNzA3ODAwNTZjZWU2ZjVkOThiYjRjNWRhOTkwZTI5NmUzMGRiYjk0ODNiMTBhNDExZGE3MjQ2NDI0ZjI0Nzg4Y2QzMGQzNzMyZTEzMWViODNiMjViNzkxMWJiNjFlYTgxZTYzYjM1NmNkYTBlN2RhMzNkM2M3OGU3YWUyYTc4YjIxYzM0NTJmNDc5NmNiYTViMmQxMjUxNzY2OWE2YTQzZDI5NGVlZDZkNTkwMTNiMTA5MTllNGYzZGQzZTI2YjRkZjQ5ZmFlOGNmMTQwZjZkNTFiY2JjOTY0YjAyYTFmZjliN2FmZmI4NzlmZmM0YTZhNzM0YTczZmVkNzcxZmQ4M2ZlZTUzNmNlMDU0MTI0ZjRhOGM1MDNkYjQ2NzM0MDE0NTE5YTljZjE0MDE0NzRhZTMzODNlNjFiZGVhYTQwN2ZiMzU3NjdkM2UzNjM4ZmRiOGFjNjQ4OTFlOTJlM2FlNDA2NjA1YTI2MDAxMjU5M2JiNmVlM2I1MzkwNzJhMTgxOTBhZjNlYjlmNjUwMWI5ZjdkMWQ2YjBlZTNiZTkyMTk5NmU3NjUxYWRkMjliNTI4NjNiNDRhNTA4NGE3MjRmNzQwNWU0OWMxMDM5ZjJjZjg2MGY2NmE0N2E0MTM2ZTk2ZjJhMGRiNTEzM2I1MWVhZWNhYjA1MWQ5ODRhYmE5MGJmOGM0ZWRmNjdmYTAxYjJlMDU1N2I5N2M5ZDI0ZmYwMGMxNWZkZDM1OTQ1YzlmNDg0YjcxMjA1YmFkODk0YTQyOTRhZWY2MzcxMGFlMTIwZWYzYzExZTYzYTkzZTQwOWY5NGJmYWUxZDkwYTE3NTg3MDYzZGJkMjk3OGI4YThlNDEyNTNkOWFiNjgyNGFiM2Q0OGU0MGVhM2MwNzUwMWEzM2E4MmQ3NmM4NTAyMmNlN2Q0Y2I4YThjZDI5Mzk0MTIwODI4M2M4Yzc1Zjg4NDFmMjI0Nzk4YWZiOGZhYmFjNTI2MzNjZjQ0OTY2NDE2MDI1NGUzNGRhMDk3MTI5MmJkYTE1YjRlMGUzM2NlN2NiMDdjNDU1MjYyYzkyZWUxNmI4NGE5OWYwMzQ4Mjk4ODk2ZDBhNzIwYWNhODIwODQ5MjMzZGE3ODk0YTRmZDAyYmE3ZTRjMjgzMzIxOWVjNmM2MWE5MzhlZDkwOTgyYjAxNzgzOTE5MWRhNzlkMDFmN2E4ZWZkMmUwNWQxMTA2MjQ1NjFjY2IxZGIyOTZlYjhhMWZhNDUzODAwMGY2NTJmZmNhN2JjZjRmNTJiNzdkYWI5Zjg1MjI3MWFkNGFkNWZkZjQ2YTY5OTZhOTRmOTYwOThjYTgxMWQ2ZDI1MmNmNmNhZGExN2JkNDcyYjAzMTkyMzAzZDllMzQ4YWU1NmRkNDg5N2U2YmI2ZmI4YTcxMjlmNWVkNDM4ZTFjMzRkZWQwMTM4Y2U0MGZkMmM4NDgwNzI1MjcyNzA2YjgyZWJlNzFiMWM1MzNkM2EzNGY1Y2FhNTI2YjJjZDBkYjFlOWQ2ZmQ0Zjc4ZDQwZDM1MWQ3MjZlYTk2MTJmMzZiOTJlOTZkYmVjOTI1MjM2MjcxODQ5MzllNzFkNzAyOWM4ZDRmNzlmZWM3NmVmYjU3M2YwYWYzYjZlMTZiYThlYzIxMGNkYzYwMmY2ZTA2MWVlZjY0NzVlMGVkY2U3YzA5MzljZTc4ZTk0ZGI0ZjQ2ZDQyY2M4N2Q3N2E5ZWM0ODZjOGMzNDk2OWI0YTQ2NzcyYjI0ZjhlMzFiNzFmNGU2YjM3YThiMTdlYzZhYjRiNGJmZDRmNDBiNTZhNTRiOTY5OTUzYWU4ZDIyMzI2MzRhMTFkNmI2ZDQ1NDhlNTI4MjE0NzIwMTAzYmUwMWY3NTMzODM3MzYyNjQ5ZjU3NDM2ZmExN2VhY2RjOGZjZTM3YjQ2ZDVlNzAzZGUzMWM4ZjBhY2FlOTZiNzQ4Yjg0M2JiYjA2NTMxZWE4ZTRjZGFiNjFkOGE5NzUyYWZjY2I1ZDcyN2RkYzUzODg5YTdlNTQ0OTJiOTRjZGM1ODEyMTY5Mjk1M2M2MTBkZTUyNTY1N2I3M2JiYTZlNTEzZjRkN2ExNWI3MjgyNmNmMmVkOGE4Y2RhNDViZTlhYjdmZjAwYTFmZjAwNzI5YjcxZDZiMzZjNDY5ODc1MmM4OGYyYTc5NzRiOTZkZGE5NzFiNjgzNGE0NjVjMjMyMDgyNzllOWY1NTJiNzZkMWFmZjAwYjIwNWJiZmM1MGUwNGVlM2M3Nzc3OTA3NzAwMGE3M2I0Njc4YzlmMmYyZTZlNjY2ZGY4MzQ2NDc0YWNlNGQ4MWE5Yzg5YzYwZGM5YTYxYzcxNjg1MzJhNWFiN2E3ODY0YTU0MzY5MTg0MDJiZGE3MDA5ZjEzZWNhYTQ2ZGRhZjE1ZDlmZjRkYzBjYTEzOTU2NWFlZWFkNjE0MDhlMDAwNDI0OGMwMjMyN2Y0YjllNDYwMGQ4ZDE5YWNiNTllZGJhYjkxNzk2MWZiYjVlMjNjOTg2ZGY2YTRhMWE0ZWNjZTQ2MTM5MThlNzFlZjE4MjBmNWNmMWE4ZjY1MDEzNTFkNmE0Zjk1MWMwYTAyMGQwMzM1M2VkYThlYjQwMWQ2YWFkZDhlMmQ3MmJlNjE3Zjc0ZDViMjZhYTVkYmU0Yjk1ZjMwYmZiYTY4MDJjZGYyNDQzZjk4NmZlZThhYjVjOWFhYjY2ZjkyNjFmY2MzN2Y3NDU1YWNkMDA5MmY3YTdkMTcyOWM4OTg5OTZmNDc3OTJkNzY0NzZhMTJhMGE0ZWVkYzM4NTBlMGU0OWFhM2Y5MjRiZmQ3MTIzZWMxYmZjMmI0NzIyNWM0OGM1Mjk5MTI1ODY0YWI5MDFjNzAyNzNmNWQ3MmY4NTJkOWZhYzYxZmRiYTdmMWFjZTU1YzFiY2I0NjkxYmFjOGFjMjY2NDViYjE4NDVjYTYzMTJhZmNhNjliNjUyODUyNGFkOTY5M2MxNDkyYTI3MjNjMzhmNzU1ZDZmNGMyMWM3OWM2OWJiZjNhYjcxYTIwMzg4NGI0ZDEyODI0NjQwMjMxYzcwNDFmNzFhNTg1ZjhkN2NkNjU3YjgzNzE0MzcxNjA0MjVjMzdlMWNjMTMxMDUzMmQ1YjE3YmQxYjdmZjAwNDhmOGFhMTllNDFhN2Q2MDhmNjRiM2JkMzFmNmVmMjg3OWY5YWI0YmIyMTZlY2I0YTgyOWMwOWRhNTQwMTNkZGNlM2E3YjgwZTA1NDcwNmJmNDQ1YmM0NWJmZDk5N2I0ZmRhNTE2NzhlZjM0ODdkZDdkNGYzYzVlNWFkNjAwZTc2YTUzYzAxYzAxODQ4YTY2MDFhZjg4ZWZiMTIxYmVkMTg3OWI3OTE5YzZlNDI4Mjg3ZWNhZmJlYjVhMjQ5MmMyMzI2ZGI3OTYyOTRlNGVhZTUxZmYwMDkwMWZmNTRkMzZlNzE0ODY3Y2Q4ZDZmZDQ0ZjRiOTRiZDhjYjc2ZjQ5MjQyNGE4OWNiYTQwMDAwZTQ5MjQ4MDAwZWE0ZDIwZDRmZTkxYTFjMmI2YzU5NzY4NDM1MzE0ZWJjYjZkYzZkYzUwNDM4ZDk0ZjE4MjgyNDI4MDI3OGRmY2E1MzhjOWE5MjBkZThhMzkzNDg2MDZhZWIyY2NiOTM3NmU2ZTRlNjQyODIzOTQ4ZGVkODVhOTNiODIzNzhlZTkzOGNlMGY0MzgyMDFjOGM1M2VjZDAwMTNlNTUzZDI4YzgxNDUwMDFhZjk1OTRhMTI1NmIyMDI0MGM5MjdjMmJlYWEzYWQwMTU5MzcwODBiMDBhNjZjNzIwYTkyOTA3YjQxYzk1MDA1MjNkZTQyODYzZGUyYmJmNmFkNjA2MWM0Nzc4NjQ3Nzg3MjNjZWIyMzIzZDFkNjllN2QxYjFjMTI0YTcyNDgxYmMxMjkzYmIyMzA0OGM4YzBlZTgxZDAwMDMxYzhjZDc1OTdhMDJjMTI5OThhZGJhODdmZjliMzY5NjkwNTJiMDkzYjQwNThjNzAzZmJlNGYxZTM0MDY5ZDJmYjBhNWE1MjFkNDI4YTgxNTBjMjg3MjM4ZmM0N2Q3NTUyZTcyNjNhZTI0YThjODdkYjUzZGVhYWI3MzYwNTAyYWRiODIzNzYzY2IzNTlmMWU4ZWY0ZmE5YzcxNmVmYWQyZDRlYWY3YWYwZTA0NmVlMTIwOGMyNDAwMTI0MjcxODE4MDAxMjA2MmJhNWI3NDhkYWI0ZTQ0OWYyNmRlYTdjYWQ3MDk0ZDJiYjQyOTNjMDA0ZTc4MDBlNDlmYTNjODBjOWEwM2VhNzVkMmYzNmU4NzZjNDViZWQ0YTljY2FlMmExNGI1MDRhYmYzN2I0MGRjMDkwMDllNDI4NjMwMDllZWFiODNkMmFhYjFhOWY1MTNkMTJlMjFlZDMxMmExM2FjNDc1M2FjYjlkOTJkZTBiNTZlYzI1MDEwMDBkYzcxOGM5MDcwM2RkY2QzNWI1NjljYjExYjZjNTU5YjVjNmRjNTk0MTI3NmZmNzQ1NTgxYTZlYzQzOWY4MmUzN2ZmMDA5YTAxMjVjY2I3MjJmMjg5MTI5YjYxNmExNmM0Mjk2NDIzNzI0MTBiNTZlMDMyMzNkNzNlZGFjZmFiNTM1ODk5NmUzYWE2YzMxMWQ3MjViMGViMGRhNTg0YmNhNWEwZTM2OWVlNjcwNDgzOWMxZTc4M2U1NGM2MjY5N2IyZTkxYmI0ODE2MGIwYjkwZTJjYzZjYmFlOTg5MWRjNzQyZGUyZWE5NGEyYWM2NDgzZGVjZjNlN2M1N2QyMjFkYWRiNTZlNmY0ZjNjODU3M2M4YjQzODBmMjcyN2Y0MmJlNjc1ZjRjZTVhOTkzZGFkYWU1ZDE3YjFkOTU0OTI4MmU2MjQ1ZWIyZDM1ZWIwYTY5MzE4MmM2MTBhNmQ2MjM4MDFjNDJiNmY3YzY0NzA4MWI4Nzc4ZDU5YjZlYThkMzU3MGI5Mzc2ZjhlZDFlZDlkNTA0YjdiYTFlMDI4ZTM5ZTcxYzAwNzgyNGUzOWFiYTk4ZDY1NWI4ZTMwOWIwYjhhNTIxNDE2ZTI3ZTA4NzBlMDllODRmNzJiYjMxMWFkY2MyZDBiNjJjNTI5YTViN2YxMTQ4YjUzYTBhN2RjNzY3YjRkNzIzZDNjYjFlNDk3ZGY4MzRkY2JkNTBhNjY1ZTZkZWNjZTdmNGMzMGVjYThkNzM5NTNmZDY1ODJkNDM3Y2IxYjUwYzM2NGVmNWI2ODI5M2U3YjMyMDljNzg3MDQzNmI0MjVmOGQyYWRkMjI0ZGQyNWE1MTE5ZjdkZDdhMzM3MWE1Mzg4NzNiNGRkOGMxNTI0MWMyNzIzMDkyMDgxYzllYjhjNjgzNDgyNWQ0YjU3MDcxYzYxZjY0M2IzMzcyMDNhZGE5YjI1M2Q5MzYzMzgyMDFjNjQxMWY0NTNkY2YxOWM5YWZhOWQyMjZhODgyN2U4OGUyYjNjY2NjMGVhZTkzMTJlOGVjYjhjODRiOGFlZGUyMzJjMjQzYWQzOGRlZDUyYTQ3MGIxOTAwOTI5YzE1N2ZlZGY2ZDdjYmYxYWQ5YTQzNDY0MzdhZDUwODc2NjY0YzQ2NWE4ZjE5MDQ5N2YyZjAwOWM2NDAzYmQ0MGYyNTQ3MDNkYzI5YjZhNTgwZWRjYWVkMjE5NjU2ODQzYzg4MmRiY2M5NTljMjQyZDBmMTUwYzlmMDA3MTgyN2M4OWFhOWE3ZjViNWJhNGM0MDRjYTQyNDgyOWRjODkwZWUxZDA0YWIyYjI3M2Q0MDQ5MThjNzA3Y2Y5MTVkMDUwYTMzZWM3MDZkYmE4ZWQzN2Q5MTBhMjdjMjIxYzY5MTIwYTM3MTJhZWQxNjQxNTY3MDAxZDhiNTI3NmY4OTE5Y2Y4NjNkMGMwYzU2MGUyZGQ1YWQ0ZmE5MTliN2M1OTY5NzFhOGNhNGNhOTQ1MGEyNWIyMTBhY2EwMjAxZjEyNGEwOWMxMzgwM2RhMmI3ODMzZTM0MDRlMjhmNzU0MWU2YTdhNTAwNTQ2NmE2OGM1MDA1NDY3MzUzZWRhZTUyZGY2NjJjNTc2NGJlYjBkYjRkMjBhZDZhM2QxMjkwMzI0ZDAxZDA5YWE5NzgxZmQxNTJmZTYxY2ZiYTZiY2RlZWY3N2Q1OWE4YTdjNGJhZTlmNmE2YzJiNmRiOWU1MmRjNmQwNDYyNWE0NjQ5NGFiYmM5MDcwNTE4MjA2NzA0OTE5YzllMzU5NjZkNDRjZWExZDNiNzA1ZjYyYThmMmEzYjRlMjI0MzJhMzlkYTc2YTg3MDdjYjIwOGU0MDIwYTQ4M2QyODA3YjY4ZjkyYTI3Y2MyM2VlOGFiNTlhY2ZjZmI4Y2ViNzY5Y2I3YmQwMjA5OWFlMmQyZGI1ZDlhNDEyNDE1MjMwOTNjNzg2ZWRiOTNlMDA5M2UxNGJlZDdhYzJlNTMyZWNkYzM3MzRkNGE2MWE3NGUxMGZhOTQ3MDA2MGU0OWNhNDc4OGU4MzllMGZiMzIwNmMwODFlNTlhMzhjN2M1ZmQ5NWU3MTJlNWM5YmM0YjhjZWRjNWI1YjRiZjU0NTJiYjM0MmRjNmQzYzNlYjQ4NTg0ZTQxZWYyNDI0ZjM1YzFlNGRiZGE3NGI0ZWJhYjQyODM2NWQyMTUyOWMxODQwMzgyYTI3NzYzMTlhYmE4NjU2NGEzOWUxOGQ1ZjkzMjZlZmFjYWY3NjdiNTJlNjQzN2VkZWE4OGE5NmUyZGI1MzZkYmNjYmFkYWIyOTZkN2ZhNGFlM2FmZTg5MWNmNWU3NGQ2MjYyN2IyNjYzOTNiMzg3ZGYwZjM0OGVkOTRlNzY2MGExMjBhMzkxYzAwYTBhYzAxYzczNWU3Y2YzOTY0OGVhNDA3NjUzNjg1M2NlMDZkMjdkNzU3OTUyYjE5YzdjN2YwMWNmM2QwNTU4NjU4ODJmMjRhOTk3MTRlODFjMTI4OTZlMjgwZjFmMDVkNGYwZDhlMjFlOTljNTFkNmIzMWExZGMyY2RiNmU5OTUzYWI0MzEzMTViMTI1NjU0NDI3YjE2ZDU4MDU0N2NjOWZhZWFkNThmNTIzMzc0NzIxMzYyMzk2OTUyYTNiYWVmMmUyNGVjNTM2YjRhNTQ4MjM4MjU0Mzc3ODBjNzFkNmE4ZDYxZTBiMjc5M2IwMTlkNWFiMDdhMWI3OGZmYWE2YWViNzZkYjczNTE5MTE1MTA2MmExODZjOTI4NmQyY2E3NmE0OTM5ZTA2MzAzOTI0ZDUzMDQwZDVhYjI0ZjAyMDBjOWZmZTQzNGM1YjkzMTljNGI2YjQ0ODY5Njk3N2ZmMDAwY2E1NjA4NWZiYmNlYTA5M2U1MTEyMmE2NTk5Njk4Y2NhNjQxNDA2Y2JhMTAwMmY2MGU4OWNmNWM3YjJiYmU3Y2E4YTllOWU3NDAwNDgxNDY2YTEyNDI4NjQxY2Y4NzE1MDk1YTE2OWRjODUwNTAzZTIwZTQ1MDFmNTUxOGNkNGQ0MTNjZDAwMWE1N2FiMjBiZDcwZDM5M2ExYzcyN2I2NzFhM2IwMDM4Y2E4MTA0MGNmODY3MThmYTY5YTY3OGEzYWY1YTAzY2IyYzc3ZGQzYjJmNGQ0MDgxNzQ3ZTZiNDJkNmYxNWJiMWQ5NGE4YjcyOGE0MmMwNDM5ODRmNzgwMjAxMjgzOGMyODI0MWNlMzk2OWU4ZTUxZjBjNWQyZjc3ZDA4ZGIwNjVhZDRjYTFiY2U0MmI5ZWY3NGYyMDA2N2M4YTg4Y2Y3NDkzYTc2NzRiZTlkNjkyOTRiNzY0ODAwMjE2YTVhNDk2MTI0ZTQ5YzkzOTNlZGFiZDZjYjc0MGI1YjBhNjJkZjE1YThjZDI5YzUzODUwZGE3MDM3MmJhOWM1MDE0OTFhN2UzYjY4NGExMTNlZWM5NGE0NjEyMDRlNzM4MDNlOWE5ZjgwOTlmZDYzNzdmZjAwM2VlN2UzNGRiZGE2OGU0ZDAxODBiZmIwYzViZjUzNmQ1NGI3ZDQxNzA1MjQyYTU0OTJhZThlMmI4MDU0NjkzNWU2MDU5ZWViYjg0Yjk4OWRhYTY0YjJiNGEyNGE0MDVhNzcwNTYwOGY2MjgwM2Y4OGFmNTI5NTFhMzQ5MDkxMjIzYjRmNmRlOWJkMDE1OGY3NjZiOGZjMTU2Y2YxYjc0M2ZiMDRmZTE1YTI5ZTE2MGEzODY1ZTRmMWU1NjkwZDI4NGJkZGEzYTE0OTdiMWJjN2FlMjcwNDAxODAzZDgwNzgwZmY0ZTI5ZGRhMjNkYTJkMzBmZDUyMGJmMTliNjc3YTk3OGVkOTFmMTk0NzI0ZDZhNTQ4YjE0MGJkZGM1NTM2MzQyNjliMjg2YjY2NjNhNGU3MDg1MTNkMDc1YzczOGY2NTMzODhkNThlNTQ5OTUxZDg4MzE4YmIxNTYxMGVhNTUxNDI0YTQ5MTkxOGNhNzkwN2NjNzE1M2M0ZjYyMzY3Yjg4YjQ2NDMxMzliYjliY2Q1YzY1YjQ4MzM3NmVkNjFkNGVjM2Y5OTZiOWU4NjlkMzdhNzk5NjhiNjViYjg0ZTQxNmMxNGI3YjRhMDZjMDdhODE4NDcwM2RkNGQ1ODYxYThlZDg2ZDg2OWI2OTAzYTI1MDkwOTFmNTBhZTgzOWFjZGJjYmM5NzRiMDg1NmQ1OTVhNGFhNGFkYzk3MmRmNzFmNjBiMDU0ZjM4MTViNTI3M2QwMDAzY2U5MDQ5ZjQ3YjAxZWQ4OTZlZTUzZDk0MzQ4MDk2NTI4NThlZTYwMjQ3NWVhN2UyZmQ0NTQzYzZiNjc5YTA5ZjZkNDEyNjM5OWQwNTE1YTk2ZGM4Zjg2YWYwZTI1MGUyNTVkOGI5MjU0NWJjMjQ4M2I3MTllODcxODM5Y2U0NjczZDczNTNmOTA1MTkyYTc4Yjc3NmI4YTQzYzkwOTIwYjliYjZmNzcwNGE3Mjc4MjRmODhmMDJhMWQwZDZjMDY3YzY4YzkzNDA2Mzk1YTA2Mjk0YjY5NGRlNmVjOTA4M2I4MDBmOWMwMzg1MDI0NzhlNzk0Zjg5Zjg4M2RiOWQxZDhhZGFkZGEyY2YxYWRhZDJmN2ExODQ2ZDBhZGExMzllNDllODM4MWQ3YTU1ZTI2OGYwYTAyNjhlOTQ1NjI1ZmJmZWI1OGNiNTA3MzQ5MDkwOWVjZDBhNDE2NWZjZTU0NzE5MWQzOGM3ZWNjZjhlMGQwMWI2ZjZkMWVjYWMzYWVmZjAwYWQ5OTkyNDJiNGIyMjQyMTQ4NDEwOTZkNmE0ZjY3OTIzMzk1MWY4ZDgwNzA0MDFkNDc5NjZhYzM3N2RkNWNhODEyYTRmZTRjMGRlODczMGNiMGE1OTRhZDQ4MDkzZGUyNzkxOTJhMDM4MWY4NTAxYjBlMDUxYzc1YWM2MmY1MDZhZGVkMWJkOWE0OTY1MjA2ZTcwMDc3MDc4ZGQ5NDAyNDYwOWUwNzNjMDNiODYzYTFhZWI2ZmJmZWE1NWNhNzE1NzRkM2JlYTMxNTg2MWU3MWM1MDczN2VlMjllODAyYjAwMGU4N2RmOTFlNDY4MGQzNGU5YjE2MWI2OTcyNWJjOTY1MGEyNDA1MmJhNjQwMmFmZGMwZDU3NjJmNzY2N2RlNGIwY2RkMjEyZGQ1NjAyNTAxZjRlZTM5Y2UwNjMzZDdiYWFlM2Q4Njk2NGY2YWUzNzliNzIxOTk5NjI4NGViMGIyODc3NjliOGE4NzIwODUwZThkZjk4ZmE3OTE0YWUzZTk0NGIxM2EzY2Q2ZjRlYzMwZmM3NTg3MWI1MWJhMmNlMDgxODFkNWJmMDE4MDNkODA1MDBlNWZkNTc2NzZkNDg0YjZlM2YyMTRhMGEzODY1ODUyOGE3NmE4YTRlNzhlMzkwNDU3M2ZjYWViNjlmZjAwNzdiOGZmMDA5NTU1NjFlMWI3N2I4ZjcyOTRkZGU2Y2YxMmRlZWE1YTc1NmMzNTFhN2FhNDk3OTA1ZjU5MGI1MTUyMTNiNTRhZjIxOTFjZmQxNDk5YmQ1Y2YyNGIwYzJlZGFhOTcyMWQ2OGJhN2Q1YjdhNTBkZjA0OTQyOGE5M2YxODYxNDM4ZjEwMDcxOWFmMjc1MWFlYjZiYjVjMjI5NzIzZDBhNzRiNWNlYjUyOTM3Y2NkNDM1NzFmNWJkNWY3ODkzNzk2MWU3YWNlNTUwZGViNWExYjg2YjRiYWRiYWRhNTViZDRiMjBmM2M5MTgxOGYzY2U2OWRkOWVmMzYzYjVhNWUxMWQ5YmMyZDRmYWMzOGVhZGQ2NTZiMmE1NjAwY2YzZDM4MDM4MWM3MTVlNjg5ZDZkMjRiY2UyNTU2Njc1MGRmNmM4NGExNGFkZGMyNzIwMmIzODFjYWYwNGY3NDc0ZGE3OTM4ZTZlZDg3NTViOTc0OWVjNDY1NTllNGM3NDNmYjk0ODcxNGFlMTI5MDg0YWIyYTA0MGU0OTI0NzE5ZTMwN2M3OGM1ZmU0NzUwOTY3NmFmYmYyNmFiNDU0YmVlZmVmYzFlYWYwZjUxNWFhNGM1MzI3ZDYwYjI5MTIwNDZkYWYyMGExNWRhOTAwODQ4MDdhOTIwODNjN2ZhMWFiMTEyZjE2Yjk4ZjM2YzQ1OWQxZGQ1Yjg5NTI5YjA5NWU3NzA0YThhNTQ0NzllMDgyM2U4YWM2NTlhMGNiYjljMGI5YzM0NDM0MzkxODVjNTJlNmYxMzNiMTVlZTBkMzVjMGVlMjg4Zjc4MjBmOTYyOWFkYjJjZjc1ODEzZDMzMTExN2I2NTI1MmVhNTI4NzZlOWI5MDllZDFjMmUyODgxZDhmMDcyN2FmOTAwM2MyYmQ3YTI2ZWNhZTMyN2RkMWU3NWIxNTA5YjhhZWM3N2Y0OTNhYTE1YTQ3NGNiOTc3NGMyNWNhMjk1ODQ2MDA1MTRhMzIwOTJhNTZkMDRlMDAxZjQ5Yzc0ZWI1ZTcyZjZiZmQ2NTc3Yjk1ODZmMTY3YjM1Y2RiYjNmNjY5NTRlNjliNjEwYTBlMjgxMmE3MDIzNzkwYTU4ZGI4MWQwNmRjMTNjZDNkZjRhOTcxOTUyZGFiNjU5MmUxMTAzMTFkZmJiNDc2ZTVhNWE5MjE0OTc1YjI5NTJjMjRhODg0ODAwYTkzY2U3OGUyYjRkN2Y4NTczNzI0ZDljNTkyMTQyOTBjOTJlZmFjYmYyMWMwMWI0MjRiM2I0MjhhMTIzMmU2N2E2MDYzZGUwNTZhNjYyNmY0NjdlOTBlNDZhZmJlNWNlZGVlZDlkYzhhZDQ2NTJmYjM3NDI1NzgwMTJhMDAyNTdiODAxYjg4MjBmMWVkMThlMzI3ZDBiMzhlMmJjZjYyMzVmMDc3YTUzOGE1ODcwMzhmNWMyM2JhZGNlNzEwYTRlZDc4YjY5MDQyYjZhN2UyZWQ1MGRhMDFjOTE5ZTQ5YWY0MTAyODA5YTNhZDQ3NWE5YTAwYThlYmUxNTNlMzQxZTI4MDhlOTQwYTlhOGUwZDAwNTUxZDQyN2ZhMGE3ZmYwMDg1NzdlZTFhYmQ5YWEzYTg3ZTQxYjg3Zjg1NzdlZTFhMDNiZGJiZmE4NDdmOWE0N2RkMTVkY2U0ZDU3ODBhNDg4MzFjMTUwMWY5YTRmNTNlYzE1ZGQ2YjQyMTBhNWFkNDEyOTQ4YzkyNGUwMDE0MDY1MzU0NWFlZTRmZGU5YjliMGEyYTY0MzY2Mjg2NDgwZjI1MDUyNDJjYWJmNGJjMzA2OTc5YjY1ZmZjNmQ2YjNlZjk2ZGZlMzViOTcxZTY1YTZjMzhlM2E4NDIwZjQ1Mjk0MDAzZjRkNzJmNWY4NWZkYWUzZmRhYTdmMWFlM2I3NDE0ZGIzNzM5NzU2NzRkN2FiYjJiOGVkOGY0MzBhZDQ1YmRiYjJkZjhjOWI1YmE1YzYwMjc3ZmYzYTZmMTg1MDM4YzczZWNhZWM2ZDc3ZjIzMWYwNTJjODNlMWViNGRmZTM1Y2E0NDk0NWZiNTlkZWVkN2Y5YzgwZDViY2M0NzA0YjViODgyZDRkNDJkMGJkZWQyNzBhY2Y0MTgyNGY0MzgyMmI0YmE3ZDJkNDFmNWQ3NjRjZmI3YTk3MzI0MDkwYTRiNGFkYTEwYTJkYTEyYTE5MmEzOWU1MzljZjFkN2E1NjdmYzY1MWU4ZmZkMmZlM2VlM2U3NDY0MTliMDIxY2NmNWQ2NTJjYWRmOTQ1ZDRhMDJjMjg4NGY2Njg0ZjI0NzE5Y2E0ZmVjYTdiOTNkNjg0MjkwYjQwNWE0ODUyNDhjODIwZTQxYTllMGYxOGFlZGFlMGExMTUxNWQxMWNiMzkzOTQ5YzlmNzMwZGFlYWNlMmY5NmZkNGIwZDMxNTcyNjQyNjJiMGVjNjQyMzFiYmI1NGE1NjUzOGM5MDNkOThlMzIwOTFlMzQ4YWRjOWY0YjcxNmRhZDQ2NWMzODkyOTRiNmYyYTcxNzIxM2I5Mzk0MDRlZDI3N2EwODI5ZWJjMDI3M2UyYWFmNDE4MWM2YTRiYTdjZDQ3ZmRjYmE2ZGM1NWNhOTgzZjQ3MzY5YmZiN2E4MmYxNzNkNTUxOTIyNzAyODYyMmJjZGFjMjliNTM0NDAyYWRiZDA5MjQ4MTkyNDBmMDFlMDQ5ZGRmNWEzODNlMTQ2NjgwMDlhOTFjNTFkMjhhMDBhMzE0NTFkNjgwOGM1NGYxNTE1MjI4MDMwMmFhNWRkODcyNGRhYTVjNzY4MDJlM2FjMmQwOWM5YzBjOTQ5MDNmN2Q1YWU0ZDE0MDY0YWY1NmU5Mzc2ODUwZDg3ZWQ1NzM4ZWI4ZTMwNTRjYmNjZTU0MzY4MDUyNzJhZTliODIxNWU3OTQwYTU5MGY0Y2NkOGFmYzk3OTk2ZWYwMTRmYjBlMzViMTRhNjE0ZGE1NGJjNjU3YjBiOWI1NThjMGMwMzljMDA5MWUxY2ZhMDUxOGEwM2NhZTJjODlkNzA5ODg4Nzc4ZDMxMjJkMDg4MTFjYjExOWE5NmUzNGU4NzUwOTcwYTQzYzkwOTUyYjY4NTA0OGUxNTgzZmJjZDNiZjVjZWQzNjY3ZDQ4OTU2ZjhjYTQ4OGRkYjIwMjFhNDZmNzBmNjgxMWI1MjMxY2Y1YzkzZTAzOTM1ZTg5N2ZiMGJiNzA5OGRjYjhkMzUzMTlkNGI2NWE1ODViM2RhMjU0OWNlNDc4ODIwODM5ZmFlOTc5ZDJmNzMyMzA2ZWQxMDgzZTA2MTlmZTNhZDYzMjQ5MTljYTJkYjNjY2U1NmIyYjEzNjQ5NjJjZGRhMDZkZDA4NzNmMzBkODM4ZGEwZjAzYzRlNDgwNDdlOGYyNGYxNWE0YjIzYjAyZWIwN2Q3MWJiNWI2YzI0YWQ0ODA5NzU4NmMyOGVkMzgyNzAzM2M2NzNmNTU2YTA2OTZiOTgxYzVkYTI2M2ZjMTlmZTNhODFhNWFlODA3MTc2ODlmZTRkNWZjNzUzYmQxMWI1OWNiNDY0Yjc2MjM1NzE4ZWNkYjI2NDg2OTEzNDk0NzYwMWJkODhjYjRkOTI5MDE0YjE4ZTQ5M2MwYzczNWMyZDE2YjliNmY3NjJhZDM2ZjllZWY2MTJkNTIwOTUzMGRlZTUwNTM1ZDk5MTllZGJhOWY4Y2EzZTI3M2MwYWQzNjljYjQ5YjRjNTc1YjVjOGY1ODc1Zjc4YmFlYWMyMzYwY2VkNGE0MDAzMjcwMzA5MWUzZTc0Y2ViMjdjZDlhMmU4MjliM2E2NDM5NzQ5ZjMxZTg2ZjQ1NDNhOTY5Mjg0YmM1M2I4ZWQwYWM5ZWVhOGYxYzhhNmY4YWY5ZTdjZWE3ZTlhODI0OWY3NTFjNTQ1MTQwMThmM2E5YThhOWU5NDA3ZmZmZDkKRot4/wAAArFJREFUeNqFU0lv01AQzu/mhDhyKRISB7ihluUADXBAAURDukdNcBIn8f68xkvs2s/285LYDtO6DWlJxRzs5zfzzfLN58bqrhVFsVwu4WDPvSknCUhjeAmH0WpVgauqqs3gxvpUO/wgoGnasa2Ti9Grvc8v95pvPh0wPDIMnReEPM+3g2uDshiHq1U5YcVW+7Rz2m+f9GemAy4c4rIs/wNOkqQ+Q6hpOyRJ6884JlvA5a1B5wDWdd1xPWxp1riLekcu+9sz9ZiQMAzTNIXJF4tFzUsDPlRVlSTJgLF0HZ6KLOumLZ1+G7971n/7nP/wQp/0/DDyXFeW5fl8DmG2bd9UrhkGg0OWZYQQuEx8F6v8jKM9xOYkvG47Xrdds/vPzMWyBldVmS9SVUMxCcsS0ha+7zMMa1nWnZkhTRRFJCGQG5CKjCSkG9J3vv90fL4jDnZoqqVqJs9zw+FwOp1Aog3CqtKYGfXMMIzj2K6LNalj8LsCvStPXgcuB2HgFyVR07R183fartkm16uC9GmWyYoShlE9IXQHhGd5tmXPsACKoqCyaVqyjCacdEYxnTPqnGKBfIwDjDHgQQX1gMWyaKypA9/hYYcXeHD4l5esqP46H4LIjntjWZvhIACkoijQNnAGM8LO/1YGSl3PhaubRpZlnGQza+5j2FC1uaEH5QmW51kYxXHgxI6AJt1gxkaBm+U5yKPVajEMU4sSEjXgBQpDCF1pS1GgJdu2OFHhjt9PPz4a7j/hvzxWRm3HCwYDih7To9FwXb9xXerGgDPgI47h710F2sihmnqvafb3iadCOEJSt9sFhT6oMNhQEARpmiyWRZItJFkNQgKBVyQTAt7NH+s+GFLCFKLAXwzGP456za8/D84opIJ8tCiK73G2BVy73UufQyorIFExMMBu7zftD6niYjdWSzEUAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Raft&apos;ın Bileşenleri ve Durumları&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/5ecddf0dad9a4881b5e5e2c0891473b1/fcda8/image.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/5ecddf0dad9a4881b5e5e2c0891473b1/12f09/image.png 148w,https://blog.hkucuk.com/static/5ecddf0dad9a4881b5e5e2c0891473b1/e4a3f/image.png 295w,https://blog.hkucuk.com/static/5ecddf0dad9a4881b5e5e2c0891473b1/fcda8/image.png 590w,https://blog.hkucuk.com/static/5ecddf0dad9a4881b5e5e2c0891473b1/efc66/image.png 885w,https://blog.hkucuk.com/static/5ecddf0dad9a4881b5e5e2c0891473b1/c83ae/image.png 1180w,https://blog.hkucuk.com/static/5ecddf0dad9a4881b5e5e2c0891473b1/a878e/image.png 2048w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;h3 id=&quot;terimler-terms&quot;&gt;&lt;a href=&quot;#terimler-terms&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Terimler (Terms)&lt;/h3&gt;
&lt;p&gt;Raft, zamanı “terimler” adı verilen ardışık tam sayılarla numaralandırılmış mantıksal zaman aralıklarına böler. Her terim bir seçimle başlar. Bir lider seçildiğinde, terim sona erene veya lider başarısız olana kadar sorumlu kalır. Terim numaraları, düğümlerin güncel bilgileri senkronize etmesine, çakışmaları çözmesine ve seçimleri koordine etmesine yardımcı olur.&lt;/p&gt;
&lt;h3 id=&quot;rpcler-remote-procedure-calls&quot;&gt;&lt;a href=&quot;#rpcler-remote-procedure-calls&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;RPC’ler (Remote Procedure Calls)&lt;/h3&gt;
&lt;p&gt;Raft, iletişim için iki ana Uzak Prosedür Çağrısı (RPC) türüne dayanır:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;RequestVotes RPC:&lt;/strong&gt; Adaylar tarafından seçimler sırasında diğer düğümlerden oy istemek için kullanılır.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AppendEntries RPC:&lt;/strong&gt; Lider tarafından log girişlerini çoğaltmak ve takipçilere “kalp atışları” (heartbeat) göndermek için kullanılır. Kalp atışları, liderin varlığını düzenli olarak takipçilere bildirmesini sağlar.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;lider-seçimi&quot;&gt;&lt;a href=&quot;#lider-se%C3%A7imi&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Lider Seçimi&lt;/h2&gt;
&lt;p&gt;Tüm sunucular başlangıçta takipçi olarak başlar. Lider, takipçilere düzenli olarak kalp atışı mesajları göndererek yetkisini sürdürür. Her takipçinin, liderden kalp atışı beklediği bir zaman aşımı (genellikle 150 ila 300 ms arasında rastgele seçilir) vardır.&lt;/p&gt;
&lt;p&gt;Eğer bir takipçi, zaman aşımı süresi içinde liderden bir kalp atışı almazsa, liderin başarısız olduğunu varsayar ve durumunu adaya değiştirir. Aday, mevcut terimini artırır, kendisine oy verir ve diğer tüm sunuculara RequestVote RPC’leri göndererek bir seçim başlatır.&lt;/p&gt;
&lt;p&gt;Bir adayın seçimi kazanması için, kümedeki sunucuların çoğunluğundan aynı terim için oy alması gerekir. Çoğunluk kuralı, belirli bir terim için en fazla bir adayın seçimi kazanmasını sağlar. Her sunucu, belirli bir terimde en fazla bir adaya oy verir.&lt;/p&gt;
&lt;p&gt;Seçimlerin üç olası sonucu vardır:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Lider Olma:&lt;/strong&gt; Aday, kümenin çoğunluğundan oy alırsa lider olur ve yetkisini tesis etmek ve yeni seçimleri önlemek için tüm diğer sunuculara kalp atışı mesajları göndermeye başlar.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Takipçi Olma:&lt;/strong&gt; Aday, yeni terimde başka bir sunucudan AppendEntries RPC’si (kalp atışı) alırsa, bu, başka bir liderin seçildiğini gösterir ve aday takipçi durumuna geri döner.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sonuçsuz Kalma:&lt;/strong&gt; Oylama bir bölünmeyle sonuçlanırsa (hiçbir aday çoğunluk oyu alamazsa), aday aday durumunda kalır, bir süre uyur (yine rastgele bir zaman aşımı) ve yeni bir oylama turu başlatır. Rastgele seçim zaman aşımları, bölünmüş oyların nadir olmasını ve hızlı bir şekilde çözülmesini sağlar.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;go-ile-lider-seçimi-örneği-basitleştirilmiş&quot;&gt;&lt;a href=&quot;#go-ile-lider-se%C3%A7imi-%C3%B6rne%C4%9Fi-basitle%C5%9Ftirilmi%C5%9F&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Go ile Lider Seçimi Örneği (Basitleştirilmiş)&lt;/h2&gt;
&lt;p&gt;Aşağıdaki Go kodu, Raft sunucu durumlarını, log girişini ve RPC mesajlarını tanımlar. Lider seçim sürecini simüle eden basitleştirilmiş bir RequestVote RPC işleyicisini de içerir.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;fmt&quot;&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;math/rand&quot;&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;sync&quot;&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;time&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// ServerState represents the possible states of a Raft server.&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; ServerState &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
	Follower ServerState &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;iota&lt;/span&gt;
	Candidate
	Leader
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// LogEntry represents a single entry in the Raft log.&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; LogEntry &lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	Term    &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;    &lt;span class=&quot;token comment&quot;&gt;// Term when this entry was created&lt;/span&gt;
	Index   &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;    &lt;span class=&quot;token comment&quot;&gt;// Index of this entry in the log&lt;/span&gt;
	Command &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Command to be applied&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// RequestVoteArgs represents the arguments for a RequestVote RPC.&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; RequestVoteArgs &lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	Term         &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Candidate&apos;s term&lt;/span&gt;
	CandidateID  &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Candidate&apos;s ID&lt;/span&gt;
	LastLogIndex &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Index of candidate&apos;s last log entry&lt;/span&gt;
	LastLogTerm  &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Term of candidate&apos;s last log entry&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// RequestVoteReply represents the reply for a RequestVote RPC.&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; RequestVoteReply &lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	Term        &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// Current term of the receiver&lt;/span&gt;
	VoteGranted &lt;span class=&quot;token builtin&quot;&gt;bool&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Whether the candidate received vote&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// AppendEntriesArgs represents the arguments for an AppendEntries RPC.&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; AppendEntriesArgs &lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	Term         &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;        &lt;span class=&quot;token comment&quot;&gt;// Leader&apos;s term&lt;/span&gt;
	LeaderID     &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;        &lt;span class=&quot;token comment&quot;&gt;// Leader&apos;s ID&lt;/span&gt;
	PrevLogIndex &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;        &lt;span class=&quot;token comment&quot;&gt;// Index of log entry immediately preceding new ones&lt;/span&gt;
	PrevLogTerm  &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;        &lt;span class=&quot;token comment&quot;&gt;// Term of PrevLogIndex entry&lt;/span&gt;
	Entries      &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;LogEntry &lt;span class=&quot;token comment&quot;&gt;// Log entries to store (empty for heartbeat)&lt;/span&gt;
	LeaderCommit &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;        &lt;span class=&quot;token comment&quot;&gt;// Leader&apos;s commitIndex&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// AppendEntriesReply represents the reply for an AppendEntries RPC.&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; AppendEntriesReply &lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	Term    &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// Current term of the receiver&lt;/span&gt;
	Success &lt;span class=&quot;token builtin&quot;&gt;bool&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// True if follower contained entry matching PrevLogIndex and PrevLogTerm&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// RaftServer represents a single server implementing the Raft algorithm.&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; RaftServer &lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	ID          &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;
	State       ServerState
	CurrentTerm &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;
	VotedFor    &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// CandidateID that received vote in current term&lt;/span&gt;

	Log &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;LogEntry &lt;span class=&quot;token comment&quot;&gt;// Replicated log&lt;/span&gt;

	CommitIndex &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Index of highest log entry known to be committed&lt;/span&gt;
	LastApplied &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Index of highest log entry applied to state machine&lt;/span&gt;

	&lt;span class=&quot;token comment&quot;&gt;// Volatile state for leaders&lt;/span&gt;
	NextIndex  &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// For each follower, index of the next log entry to send to that follower&lt;/span&gt;
	MatchIndex &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// For each follower, index of the highest log entry replicated on follower&lt;/span&gt;

	&lt;span class=&quot;token comment&quot;&gt;// For timeouts and communication&lt;/span&gt;
	ElectionTimeout time&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Duration
	HeartbeatTimer  &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;time&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Timer
	ElectionTimer   &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;time&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Timer
	mu              sync&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Mutex   &lt;span class=&quot;token comment&quot;&gt;// Mutex to protect server state&lt;/span&gt;
	peers           &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;RaftServer &lt;span class=&quot;token comment&quot;&gt;// Other servers in the cluster (direct reference for simplicity)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// NewRaftServer creates a new Raft server.&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;NewRaftServer&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;id &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; peers &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;RaftServer&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;RaftServer &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	r &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;RaftServer&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		ID&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;              id&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
		State&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;           Follower&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
		CurrentTerm&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;     &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
		VotedFor&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;        &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// No vote yet&lt;/span&gt;
		Log&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;             &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;LogEntry&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;Term&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; Index&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; Command&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;init&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Initial entry&lt;/span&gt;
		CommitIndex&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;     &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
		LastApplied&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;     &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
		ElectionTimeout&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; time&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Duration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;150&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;rand&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Intn&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;150&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; time&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Millisecond&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 150-300ms&lt;/span&gt;
		peers&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;           peers&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ElectionTimer &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; time&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;AfterFunc&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ElectionTimeout&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;startElection&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; r
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// RequestVote processes a RequestVote RPC.&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;r &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;RaftServer&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;RequestVote&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;args RequestVoteArgs&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; reply &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;RequestVoteReply&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;mu&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Lock&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;defer&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;mu&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Unlock&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

	reply&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Term &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;CurrentTerm
	reply&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;VoteGranted &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;

	&lt;span class=&quot;token comment&quot;&gt;// If candidate&apos;s term is older, reject vote.&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Term &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;CurrentTerm &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Server %d: Candidate %d&apos;s term (%d) is older than mine (%d). Vote rejected.\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ID&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;CandidateID&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Term&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;CurrentTerm&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	&lt;span class=&quot;token comment&quot;&gt;// If candidate&apos;s term is newer, update own term and become follower.&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Term &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;CurrentTerm &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;CurrentTerm &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Term
		r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;State &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; Follower
		r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;VotedFor &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// No vote yet in new term&lt;/span&gt;
		r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;resetElectionTimer&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
		fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Server %d: Candidate %d&apos;s term (%d) is newer than mine (%d). Became follower.\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ID&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;CandidateID&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Term&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;CurrentTerm&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	&lt;span class=&quot;token comment&quot;&gt;// If haven&apos;t voted in this term (VotedFor is -1) or already voted for candidate,&lt;/span&gt;
	&lt;span class=&quot;token comment&quot;&gt;// and candidate&apos;s log is at least as up-to-date as mine, grant vote.&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;VotedFor &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;||&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;VotedFor &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;CandidateID&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;isLogUpToDate&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;args&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;LastLogIndex&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;LastLogTerm&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;VotedFor &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;CandidateID
		reply&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;VoteGranted &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;
		r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;resetElectionTimer&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Reset timer after voting&lt;/span&gt;
		fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Server %d: Voted for candidate %d. (Term: %d)\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ID&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;CandidateID&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;CurrentTerm&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Server %d: Did not vote for candidate %d. (VotedFor: %d, LogUpToDate: %t)\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ID&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;CandidateID&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;VotedFor&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;isLogUpToDate&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;args&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;LastLogIndex&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;LastLogTerm&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// isLogUpToDate checks if the candidate&apos;s log is at least as up-to-date as the receiver&apos;s log.&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;r &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;RaftServer&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;isLogUpToDate&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;candidateLastLogIndex &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; candidateLastLogTerm &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;bool&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	lastLogEntry &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Log&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Log&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; candidateLastLogTerm &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; lastLogEntry&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Term &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; candidateLastLogTerm &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; lastLogEntry&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Term &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; candidateLastLogIndex &lt;span class=&quot;token operator&quot;&gt;&gt;=&lt;/span&gt; lastLogEntry&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Index &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// startElection simulates a server starting a leader election.&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;r &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;RaftServer&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;startElection&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;mu&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Lock&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;State &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; Candidate
	r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;CurrentTerm&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;
	r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;VotedFor &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ID &lt;span class=&quot;token comment&quot;&gt;// Vote for self&lt;/span&gt;
	fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Server %d: Leader election started. New term: %d\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ID&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;CurrentTerm&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;resetElectionTimer&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Reset election timer&lt;/span&gt;

	votesReceived &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Our own vote&lt;/span&gt;
	lastLogEntry &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Log&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Log&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
	args &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; RequestVoteArgs&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		Term&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;         r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;CurrentTerm&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
		CandidateID&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;  r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ID&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
		LastLogIndex&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; lastLogEntry&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Index&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
		LastLogTerm&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;  lastLogEntry&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Term&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;mu&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Unlock&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

	&lt;span class=&quot;token comment&quot;&gt;// Send vote requests to other servers&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; peer &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;range&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;peers &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; peer&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ID &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ID &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			&lt;span class=&quot;token keyword&quot;&gt;continue&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;go&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;p &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;RaftServer&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			&lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; reply RequestVoteReply
			&lt;span class=&quot;token comment&quot;&gt;// Direct RPC call for simplicity, would be over network in real-world&lt;/span&gt;
			p&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;RequestVote&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;args&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;reply&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

			r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;mu&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Lock&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
			&lt;span class=&quot;token keyword&quot;&gt;defer&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;mu&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Unlock&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

			&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;State &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; Candidate &lt;span class=&quot;token operator&quot;&gt;||&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;CurrentTerm &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Term &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
				&lt;span class=&quot;token comment&quot;&gt;// State changed or term changed, this vote is invalid.&lt;/span&gt;
				&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt;
			&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

			&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; reply&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Term &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;CurrentTerm &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
				&lt;span class=&quot;token comment&quot;&gt;// Discovered a newer term, become follower.&lt;/span&gt;
				r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;CurrentTerm &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; reply&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Term
				r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;State &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; Follower
				r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;VotedFor &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
				r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;resetElectionTimer&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
				fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Server %d: Discovered newer term (%d), became follower.\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ID&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; reply&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Term&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
				&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt;
			&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

			&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; reply&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;VoteGranted &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
				votesReceived&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;
				fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Server %d: Received vote from candidate %d. Total votes: %d\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ID&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; p&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ID&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; votesReceived&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
				&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; votesReceived &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;peers&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
					&lt;span class=&quot;token comment&quot;&gt;// Received majority votes, become leader.&lt;/span&gt;
					r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;State &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; Leader
					&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;HeartbeatTimer &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;nil&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
						r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;HeartbeatTimer&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Stop&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Stop any previous heartbeat timer&lt;/span&gt;
					&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
					r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;HeartbeatTimer &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; time&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;AfterFunc&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;time&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Millisecond&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sendHeartbeats&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Start heartbeats&lt;/span&gt;
					fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Server %d: Leader elected! (Term: %d)\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ID&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;CurrentTerm&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
					r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;resetElectionTimer&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Reset timer as leader&lt;/span&gt;
					&lt;span class=&quot;token comment&quot;&gt;// Initialize nextIndex and matchIndex&lt;/span&gt;
					r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;NextIndex &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;peers&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
					r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;MatchIndex &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;peers&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
					&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;range&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;peers &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
						r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;NextIndex&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Log&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
						r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;MatchIndex&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;
					&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
					&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt;
				&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
			&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;peer&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// resetElectionTimer resets the election timer.&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;r &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;RaftServer&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;resetElectionTimer&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ElectionTimer &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;nil&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ElectionTimer&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Stop&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ElectionTimer &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; time&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;AfterFunc&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ElectionTimeout&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;startElection&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// sendHeartbeats simulates the leader sending heartbeats to followers.&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;r &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;RaftServer&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;sendHeartbeats&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;mu&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Lock&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;defer&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;mu&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Unlock&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;State &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; Leader &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Leader %d: Sending heartbeats (Term: %d).\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ID&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;CurrentTerm&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; peer &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;range&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;peers &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; peer&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ID &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ID &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			&lt;span class=&quot;token keyword&quot;&gt;continue&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;go&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;peerIndex &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; p &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;RaftServer&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			&lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; reply AppendEntriesReply
			args &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; AppendEntriesArgs&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
				Term&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;     r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;CurrentTerm&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
				LeaderID&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ID&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
				&lt;span class=&quot;token comment&quot;&gt;// Log entries are empty for heartbeats&lt;/span&gt;
				PrevLogIndex&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Log&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
				PrevLogTerm&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;  r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Log&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Log&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Term&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
				LeaderCommit&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;CommitIndex&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
			&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
			&lt;span class=&quot;token comment&quot;&gt;// If there are new entries to send&lt;/span&gt;
			&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Log&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;NextIndex&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;peerIndex&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
				args&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Entries &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Log&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;NextIndex&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;peerIndex&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
				args&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;PrevLogIndex &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;NextIndex&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;peerIndex&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
				args&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;PrevLogTerm &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Log&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;NextIndex&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;peerIndex&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Term
			&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

			p&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;AppendEntries&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;args&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;reply&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

			r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;mu&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Lock&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
			&lt;span class=&quot;token keyword&quot;&gt;defer&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;mu&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Unlock&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

			&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;State &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; Leader &lt;span class=&quot;token operator&quot;&gt;||&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;CurrentTerm &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Term &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
				&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// State changed or term changed&lt;/span&gt;
			&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

			&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; reply&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Term &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;CurrentTerm &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
				r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;CurrentTerm &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; reply&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Term
				r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;State &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; Follower
				r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;VotedFor &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
				r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;resetElectionTimer&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
				fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Leader %d: Discovered newer term (%d), became follower.\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ID&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; reply&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Term&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
				&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt;
			&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

			&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; reply&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Success &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
				&lt;span class=&quot;token comment&quot;&gt;// Update nextIndex and matchIndex for this follower&lt;/span&gt;
				&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;args&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Entries&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
					r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;NextIndex&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;peerIndex&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;PrevLogIndex &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;args&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Entries&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
					r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;MatchIndex&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;peerIndex&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;NextIndex&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;peerIndex&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
				&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
				&lt;span class=&quot;token comment&quot;&gt;// Check for commitment&lt;/span&gt;
				r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;checkCommit&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
			&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
				&lt;span class=&quot;token comment&quot;&gt;// Decrement nextIndex and retry AppendEntries&lt;/span&gt;
				&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;NextIndex&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;peerIndex&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
					r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;NextIndex&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;peerIndex&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;
					fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Leader %d: AppendEntries failed for server %d. Decrementing nextIndex to %d.\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ID&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; p&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ID&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;NextIndex&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;peerIndex&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
				&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
				&lt;span class=&quot;token comment&quot;&gt;// Optionally, retry sending entries immediately&lt;/span&gt;
			&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; peer&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;HeartbeatTimer &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; time&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;AfterFunc&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;time&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Millisecond&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sendHeartbeats&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Regular heartbeats&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// checkCommit attempts to advance the commitIndex based on replicated log entries.&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;r &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;RaftServer&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;checkCommit&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	N &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;CommitIndex
	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Log&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;CommitIndex&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Log&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Term &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;CurrentTerm &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			count &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Count for self&lt;/span&gt;
			&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;range&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;peers &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
				&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;MatchIndex&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&gt;=&lt;/span&gt; i &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
					count&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;
				&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
			&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
			&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; count &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;peers&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
				N &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; i
				&lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;
			&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; N &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;CommitIndex &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;CommitIndex &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; N
		r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;applyLogEntries&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// AppendEntries processes an AppendEntries RPC.&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;r &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;RaftServer&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;AppendEntries&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;args AppendEntriesArgs&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; reply &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;AppendEntriesReply&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;mu&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Lock&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;defer&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;mu&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Unlock&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

	reply&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Term &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;CurrentTerm
	reply&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Success &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Term &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;CurrentTerm &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Server %d: Leader&apos;s term (%d) is older than mine (%d). AppendEntries rejected.\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ID&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Term&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;CurrentTerm&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Leader&apos;s term is older&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Term &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;CurrentTerm &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;CurrentTerm &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Term
		r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;State &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; Follower
		r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;VotedFor &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
		fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Server %d: Discovered newer term (%d) from leader, became follower.\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ID&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Term&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;resetElectionTimer&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Received message from leader, reset timer&lt;/span&gt;

	&lt;span class=&quot;token comment&quot;&gt;// Log consistency check&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;PrevLogIndex &lt;span class=&quot;token operator&quot;&gt;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Log&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;||&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Log&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;args&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;PrevLogIndex&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Term &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;PrevLogTerm &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Server %d: Log inconsistency. PrevLogIndex: %d, PrevLogTerm: %d. My log: %v\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ID&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;PrevLogIndex&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;PrevLogTerm&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Log&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	&lt;span class=&quot;token comment&quot;&gt;// Delete conflicting entries and append new ones&lt;/span&gt;
	newEntriesStartIndex &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;PrevLogIndex &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;args&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Entries&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Only truncate if new entries exist to append&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Log&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; newEntriesStartIndex &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Log &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Log&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;newEntriesStartIndex&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Truncate conflicting or subsequent entries&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
		r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Log &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Log&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Entries&lt;span class=&quot;token operator&quot;&gt;...&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	reply&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Success &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;

	&lt;span class=&quot;token comment&quot;&gt;// Update leader&apos;s commit index&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;LeaderCommit &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;CommitIndex &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;CommitIndex &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;min&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;args&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;LeaderCommit&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Log&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
		r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;applyLogEntries&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// applyLogEntries applies committed log entries to the state machine.&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;r &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;RaftServer&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;applyLogEntries&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;LastApplied &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;CommitIndex &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;LastApplied&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;
		fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Server %d: Log entry applied: %s (Index: %d, Term: %d)\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ID&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Log&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;LastApplied&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Command&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Log&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;LastApplied&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Index&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Log&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;LastApplied&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Term&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
		&lt;span class=&quot;token comment&quot;&gt;// Here would be the actual state machine application&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;min&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; b &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; a &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; b &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; a
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; b
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	rand&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Seed&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;time&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Now&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;UnixNano&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

	&lt;span class=&quot;token comment&quot;&gt;// Create a cluster of 3 servers&lt;/span&gt;
	servers &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;RaftServer&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		servers&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;NewRaftServer&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; servers&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Raft cluster started. Servers are in follower state.&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

	&lt;span class=&quot;token comment&quot;&gt;// Allow it to run for a while&lt;/span&gt;
	time&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Sleep&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; time&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Second&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

	&lt;span class=&quot;token comment&quot;&gt;// Simulate a client request to the leader&lt;/span&gt;
	&lt;span class=&quot;token comment&quot;&gt;// Normally, the client would find the leader and send to it.&lt;/span&gt;
	&lt;span class=&quot;token comment&quot;&gt;// Here, let&apos;s simply send to one server and expect the leader to process it.&lt;/span&gt;
	&lt;span class=&quot;token comment&quot;&gt;// (In real Raft, the client would retry until it finds the leader)&lt;/span&gt;
	fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\nSending client request...&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	leaderFound &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; s &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;range&lt;/span&gt; servers &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		s&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;mu&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Lock&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; s&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;State &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; Leader &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Leader %d found. Sending client request.\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; s&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ID&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
			newEntry &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; LogEntry&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;Term&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; s&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;CurrentTerm&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; Index&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Log&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; Command&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;SET x = 10&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
			s&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Log &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Log&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; newEntry&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
			&lt;span class=&quot;token comment&quot;&gt;// Update nextIndex for all peers to include the new entry&lt;/span&gt;
			&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;range&lt;/span&gt; s&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;peers &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
				&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; s&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ID &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; s&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;peers&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ID &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
					s&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;NextIndex&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Log&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Set to the index after the newly added entry&lt;/span&gt;
				&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
					s&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;MatchIndex&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Log&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Leader&apos;s own log is committed&lt;/span&gt;
				&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
			&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
			s&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sendHeartbeats&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Trigger log replication&lt;/span&gt;
			leaderFound &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
		s&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;mu&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Unlock&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; leaderFound &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			&lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;leaderFound &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Leader not found, try again or increase election timeout.&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	time&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Sleep&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; time&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Second&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\nSimulation ended.&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Bu kod, Raft’ın temel mekanizmalarını gösterir:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;RaftServer struct:&lt;/code&gt; Bir Raft sunucusunun durumunu ve logunu tutar.&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;RequestVoteArgs / RequestVoteReply:&lt;/code&gt; Seçim RPC’leri için veri yapıları.&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;AppendEntriesArgs / AppendEntriesReply:&lt;/code&gt; Log çoğaltma ve kalp atışı RPC’leri için veri yapıları.&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;startElection():&lt;/code&gt; Bir sunucunun adaya dönüşmesini, oy istemesini ve lider olmaya çalışmasını simüle eder.&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;RequestVote():&lt;/code&gt; Diğer sunuculardan gelen oy isteklerini işler.&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;sendHeartbeats():&lt;/code&gt; Liderin düzenli kalp atışları göndermesini ve log çoğaltmayı tetiklemesini simüle eder.&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;AppendEntries():&lt;/code&gt; Takipçilerin liderden gelen log girişlerini işlemesini ve log tutarlılığını sağlamasını simüle eder.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;log-çoğaltma&quot;&gt;&lt;a href=&quot;#log-%C3%A7o%C4%9Faltma&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Log Çoğaltma&lt;/h2&gt;
&lt;p&gt;Bir lider seçildikten sonra, istemci isteklerini işlemeye başlar. Her veri değişikliği, Raft logunda yeni bir giriş olarak kaydedilir. Bu log girişi, lider tarafından kendi yerel loguna eklenir. Log girişi tipik olarak gerçekleştirilecek işlem hakkında bilgi içerir (örneğin, bir veritabanı yazma işlemi için anahtar-değer çiftleri).&lt;/p&gt;
&lt;p&gt;Lider, log girişini kendi loguna ekledikten sonra, AppendEntries RPC’leri kullanarak bu log girişini takipçilere çoğaltır. Bu çoğaltma, tüm takipçilerin liderle aynı log girişleri dizisini almasını sağlar. Her takipçi, liderden aldığı log girişini kendi loguna ekler.&lt;/p&gt;
&lt;p&gt;Bir log girişi, liderin çoğunluktaki takipçilerden log girişini çoğalttığına dair onay aldığında “taahhüt edilmiş” (committed) kabul edilir. Taahhüt edildikten sonra, lider ilgili işlemi kendi durum makinesine uygular ve istemciye yanıt verir. Lider, gelecekteki AppendEntries RPC’lerinde (kalp atışları dahil) taahhüt edilmiş girişleri diğer sunuculara bildirir, böylece takipçiler de bu girişleri kendi durum makinelerine uygulayabilir.&lt;/p&gt;
&lt;p&gt;Raft, loglar arasında yüksek düzeyde tutarlılık sağlar ve bunu “Log Eşleştirme Özelliği” (Log Matching Property) ile garanti eder:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Farklı loglardaki iki giriş aynı dizine ve terime sahipse, aynı komutu depolarlar.&lt;/li&gt;
&lt;li&gt;Farklı loglardaki iki giriş aynı dizine ve terime sahipse, loglar o girişe kadar tüm önceki girişlerde aynıdır.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bu mekanizma sayesinde, bir lider iktidara geldiğinde log tutarlılığını sağlamak için özel bir eylemde bulunmasına gerek kalmaz. Normal çalışmaya başlar ve loglar, AppendEntries tutarlılık kontrolünün başarısızlıklarına yanıt olarak otomatik olarak yakınsar. Bir lider asla kendi logundaki girişleri üzerine yazmaz veya silmez.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/63d4a18e6c55f7a0d3cbb0752fdd9451/a878e/image1.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 100%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsTAAALEwEAmpwYAAAxC3RFWHRSYXcACmdlbmVyaWMgcHJvZmlsZQogICAgNjI2Mgo0OTQ5MmEwMDA4MDAwMDAwMDMwMDEyMDEwMzAwMDEwMDAwMDAwMTAwMDAwMDMxMDEwMjAwMDcwMDAwMDAzMjAwMDAwMDY5ODcwNDAwMDEwMDAwMDAzYTAwMDAwMGM4MDAwMDAwNTA2OTYzNjE3MzYxMDAwMDA2MDAwMDkwMDcwMDA0MDAwMDAwMzAzMjMyMzAwMWEwMDMwMDAxMDAwMDAwMDEwMDAwMDAwMmEwMDQwMDAxMDAwMDAwMDAwODAwMDAwM2EwMDQwMDAxMDAwMDAwMDAwODAwMDAwNWEwMDQwMDAxMDAwMDAwYWEwMDAwMDAyMGE0MDIwMDIxMDAwMDAwODgwMDAwMDAwMDAwMDAwMDM0MzAzOTYzMzg2MjM0MzYzODYxMzUzNjM1MzQzODMyMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAwMDAwMDIwMDAxMDAwMjAwMDQwMDAwMDA1MjM5MzgwMDAyMDAwNzAwMDQwMDAwMDAzMDMxMzAzMDAwMDAwMDAwMDYwMDAzMDEwMzAwMDEwMDAwMDAwNjAwMDAwMDFhMDEwNTAwMDEwMDAwMDAxNjAxMDAwMDFiMDEwNTAwMDEwMDAwMDAxZTAxMDAwMDI4MDEwMzAwMDEwMDAwMDAwMjAwMDAwMDAxMDIwNDAwMDEwMDAwMDAyNjAxMDAwMDAyMDIwNDAwMDEwMDAwMDA1MDE3MDAwMDAwMDAwMDAwNDgwMDAwMDAwMTAwMDAwMDQ4MDAwMDAwMDEwMDAwMDBmZmQ4ZmZlMDAwMTA0YTQ2NDk0NjAwMDEwMTAwMDAwMTAwMDEwMDAwZmZkYjAwNDMwMDA1MDMwNDA0MDQwMzA1MDQwNDA0MDUwNTA1MDYwNzBjMDgwNzA3MDcwNzBmMGIwYjA5MGMxMTBmMTIxMjExMGYxMTExMTMxNjFjMTcxMzE0MWExNTExMTExODIxMTgxYTFkMWQxZjFmMWYxMzE3MjIyNDIyMWUyNDFjMWUxZjFlZmZkYjAwNDMwMTA1MDUwNTA3MDYwNzBlMDgwODBlMWUxNDExMTQxZTFlMWUxZTFlMWUxZTFlMWUxZTFlMWUxZTFlMWUxZTFlMWUxZTFlMWUxZTFlMWUxZTFlMWUxZTFlMWUxZTFlMWUxZTFlMWUxZTFlMWUxZTFlMWUxZTFlMWUxZTFlMWUxZTFlZmZjMDAwMTEwODAwYTAwMGEwMDMwMTIyMDAwMjExMDEwMzExMDFmZmM0MDAxYzAwMDAwMTA1MDEwMTAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDMwNDA1MDYwNzAyMDhmZmM0MDA0NTEwMDAwMTAzMDIwMzA1MDMwNzA5MDYwNDA3MDAwMDAwMDAwMTAyMDMwNDAwMTEwNTEyMjEwNjEzMzE0MTUxMTQyMjYxMDc3MTgxOTE5M2IxZDExNTIzMjQzMjM0NTI1NDcyYTExNjE3NDI0MzYyOTI1NTk0YzFkMjQ0NjM3MzgyYjJjMmYwZmZjNDAwMWEwMTAxMDAwMzAxMDEwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAyMDMwNDA1MDZmZmM0MDAyYjExMDAwMjAyMDEwMzAyMDUwMjA3MDAwMDAwMDAwMDAwMDAwMDAxMDIxMTAzMDQxMjMxMTMyMTA1MjI0MTUxNjE1MmExMTQ4MTkxYTJiMWQxZjBmZmRhMDAwYzAzMDEwMDAyMTEwMzExMDAzZjAwZmIyYmQxNTRiODZlZDU2Y2Y2MjBjNmZhM2UyYjFjMjczMTQ4MGYxMmQxMzY0ODU1YzA1ZDg5MTk0ODM3ZTE2YWJhZTU1OGQ1NzkzNWQ5NGJhMDI2MWFkMDg0YjZhNmYyMjU0MzI5Y2MwMDI3NTFhMjg5NDg1NjYxNjM3MWUyNjgwZDEwYzZiMDczMTNiNThjNTYwOThmNmNkYmRlZDA5Y2I2ZWI3YmQzNmJkYTFjMGQyZjJkOWY5NTIyYTljNDMwZTQ4NTIxMGUwNTEwZGI3NmNlYWQzYTY2MTdmM2Q1MDdlZWU3MDQ3MTljOTJkZjlkMjk1OWQ0ZTY2NzFjNGRiNzg1NjU3YmMyOWNiOTRhYjgwZDQ1ODgxYzJhN2MzZDhjYzFhMjNiMjE2Yzc2ODQyNjQzNGViMmUzNjk1ODRhMzIzODEwMTQwMjQwMDEzZjUwMWQyYzZmN2JkZTgwYjE2ZjFmYzExN2JjYjYyOTBkM2JiYmU3MmE3NDI2ZDY0YTU0NGViYzgwNTI0OTNlMzUxZTY2ZDVlY2ZjNTkyY2M3NWUyNmMyZGQ3OTIxNjgwZDFkZTc3NGYwMjcyZGVjMGYyYWFlN2JjOWZlY2QzOTI5YjdjNDY3NWE0YjZhMmE0YjRkYjk5NWFjZDYwOWNkOTQwYjVlYzkxZTdlNzQyYmM5ZjZjZjI4YWMxNDRhZGRhOTQ1N2JiZGYxY2ExNDQ4MmE1NzBlMjZjM2Q1YTVhODBiNDFiNGZiM2NhOWFlNDI0ZTMzMDU0ZmI0MzMzYTg0YmMwZWVjNzdiNTUxZTAwNzc1NWM3YTc4OGE5OTBmMTNjMzY2M2M1OTg5M2UyNDg3MDM2MWMyODZkZDRhOTQxMjc4MmFjMGYwMzcxYWY4ZDY0NzA2ZjI2NzgzYzI4ODU4OTMzMjVjYjM5YjMwNTVjMjJjNDVjYTQ5YjBiOTUwMmE1MWI5M2NlZDZiMDAwNjgzMDJkOThjMmIwNjkwNjQ0MzZkYzBmMmI3ODU2YjVhZWU1NDU3OTMzOTNlNzJkYTRmNGUzNmEwMmU4ZGE4MTQ3OGQxYzY4MDAxYTI4ZDI4ZTE0MDE0OTRiNmEzNGEwMTI5NzRhMzg1MTQwMDM1ZTM0NWU5Mjk3ODUwMDUwMjhmM2QxNDAxNDU4OWEyOGJmNGEwMTBmNGEzODUxN2I1MzcyNWUxMWUzM2FmYWMxY2FkYTBhYzgxZDAwYmQwMGU1YTgzNWNhNzY4MzZjYjczMjljMzg5NGI5MmNiNDkyMzM2ZTk0NDIxYmJhNDI4MjZjOTM5OTVhMTFhZDhkYzlmNDUzZjgwNmQ3MjU3MjljMTAyNWNhN2MzMjhkZTNhZGJlODVlNTI5MDZjNDVkN2E4M2U2YWMzYWVhZjgyOWJkMWQzZjg1MDA3NWFmMmQyODJkYjRhYzcwNTAwNDVmYzY5YTc2NmM0NjljMmRiYjI5ODZkNDM4YTU0ZTAwNDdhY2Q2ZTVjN2Y1MjY4M2E1NDE5OThkNjBmMTE4NTNmMjcxNTgwYzM0OWIwNTM4ZTQ4NDI1MjJlNmMyZTQ5ZWE2YjllZWQzZWRhM2M1YzVhYmI2ZjYwODI0YTgzNmE0OWIxNTI0MGI5NTI5NWNiNGQ2YzJkZTkzNWE2M2M2ZTZmYjE0OWU0NTA1ZGNlYTE2ZTc0NTcxMGZkYWY4ZjE2NDAxZmI0NmVhNTY0OWQ0Y2E1OTE3MWNiNTI0NWY5ZGJhNmJjMmJhMDZjN2VkNTc2YjFkOWIxMzdkYTBiMjhkZTM0ZjFlZWVmMTNhNWMxMWQ3NTFlN2FiY2YwNGEyYWNhNDMzMjkzYTM1ZTdjMjgwMmMyYTI3Y2FiODc1YjU5YWM3ZjdkMjdjYWI4NzczOWNjN2Y3ZDYwNmM0Y2I1ZTgzNTkzYzViNmU3MGM2MDRjNGUxZWI2ZTcxODc5YzQ4NTIxN2EzNGI0OGI5NDliMGI5MzZkNmMzYzJiMGNlNzk0MzBhOWVhNzI0NjIxMmUzNGE0MWI4NjUwODJiNDAxYTcyNDY2NDkxYWYzZDZiMDllNzhjMWQ3Mjc2NjFkMTY0YzhiNzcwYmU0ZWNkY2E5MmQ1OTVkOTBkYjA0NjM4MjIyNTUxNTRkOTkyOTUxNDJjNWMwMzYwNGVhOTNhOGUwN2FkNmFhZjdhZDYxMzUzNTY4ZTdjYjhhNzhhNWI2NDgwZWI0YmMwNTIxMzQ1NThjYzVhMzg1MTQ5NmEwMTY5MTQwMjgxNDkwMDgyMmM0MWE4ZmRiMTgzYzE0YTIzYTg0MjhmZjAwYTUyZjZiNjA3MzVmYjM1N2MyOTQyY2NkNGVkOTExYmUyYjg0YjYwYTJkNjA4N2QxNzI5MWY3NDJiOGRiYzA4YWY3ODc2Yzk4NGJhOTVjZDcxOWM4OWZlNTMyOGI2NjFkMGFiYTc4MDAyYjQzZGFkOGUzNzVmYjM1N2MyYmMzZDNlMzM0ZGE5YzcxNmE0YTEyMmU0OTZkNWYwYWNmYTMxYmJhMmJiNjI3YTljZmE5YTQyMWE2NDI1NGZiODcyYjQ5M2MzYzQ5ZjAxYzdmNGU3NWVhMmM1Njk4NjQzNzZjZWFlMmE1YTgwMmE1MjhmMTI3YzRkNDM4MmYyMzNhYTU0OTBiNGJlZTBiMDRlZWQ1ZjM2OGU0OWUxYzc5OWYxZjMwYTk3ZGIxOGVhYmY2NmFmODU2OTQ0ZDllZGY4ZDFkZTY4YjZmMzBkMzg4MzZiYTU2ODA0MWIxYjhkMGQ2MDc2OWI2MTE1MjFmNTM5MWEzMzEzMjM2NjJiNDMyZTU4MjlhMjc4ZGFmYTExYzdhMWFkZGY2YzYwZjM1ZmIzNTdjMjhlZDhjNWI4YWZkOWFiZTE1Nzg0ZTUwNzY4YWNlMTE5ZjI3MjY4YmIxNGYzOGYyZGE2ZjY2OWE0MTQyYzg1Mjk0ODZkMjAyODhiOWQ2ZmUzNWJlZDkxZDlkMzg0Njc5MzI5YzQzOTI5NjljODMyN2Q1NmQzZDAxZTY0ZDg1Y2Y4NTU4YzA5NmM4N2E2MTM5ZjU5MWE3Y2RhYmVlMjdjMmE1NzZjNjJmYTk1ZmIzNTdjMmFmM2NkMjkyYTI5MGM1MThiYjI0NTg1MWE3MGI1NDdlZDhjNzU1ZmIzNTdjMjhlZDhjNzU1ZmIzNTdjMmIxYTM2YjIzZTJkODRjMWM0MTM3OTJjNWRjNGE0YTUwZTI3NDVhN2NjN2ZkMGQ3M2UzODFjZjQyZjc2ZGUwY2U2ZjAwNTE2ODE2OTA5YmE0MWI1ZjQzNjFjNDY5ZTM1ZDI3YjViMWQ1N2VjZDVmMGE4YWU0YTYwZTJjYzkwNTc2MGMzOWZjYjU3ZGU0Zjg1NjM5NzRmMWM4ZWQ5ZDdhN2Q2Y2YwMmE1ZGQ3YzkxZjY3NzA0ODMwOTg2MWY0NDU1MjY0ZTRlZjJkYzRkOTYwOWUzZGQwNmM5ZjQ3YWNkNWRkZWMyYTM4OTZjNzBiYWZkOWFiZTE0NzZiNjNhYjllYzk1ZjBhZDYzMDUxNTQ5MWNkM2M4ZTZmNzQ5OTIzNGEyZjRjMzcyNWE3MWMwODRhOGU2MjJmNjI5MjM0ZjQ4YTc4OGQyYTRhOGI0NzNhMjhhMDIzYzAzZjQzNmZjYzdkZTY5ZmQ3OWQzMTg3ZmQ4ZGJmMzFmNzlhN2M5ZDI4YzIxODk3MmUzNDU0MDVjYTkwZDMwOTNhMDJlMmMyNmZlYmFhZjgzMjhlMmYzOWY1MDYxYzRjMjg2ZTgwY2JhNTQ5Mjg5MmJjYTBlNzRkODkzOTUyNGRiNWI3NzgxM2M4MWFjOGVkYjQ4NzEzMzY3YWRjNzU0ZGI4ZDk0YjRjMTA0MDI5YjgxOTQwYjgyMDVjOWQ0ZmMyOWZkODg3Njc0Njk0ODhlOTRiOTI1Y2RjMTBmMjk2YjRhNzdiOTZjMDNhNDhkMzUyN2NmYWY4NTYyYjM3OWY2OTRkZmRlOGRmNWI0ZDY4ZTM1MGJiNGNmZjAwZjBmNGZmMDA5ODRmYzI4MzI2N2ZmODcyN2ZjYzI3ZTE1YjE3MjY5MzZhODM4OTYzMTg2NjFkZGQ5OTMxYTY5NzZiZTQyNmVhZjNlNTFhZDU1ZWQzNjJiOGU0MmMzOTRlYzNjMWI3OWEyYjc4ZTg5MjhmOTgwMTI0ZTdjYjZiYWI1ZTQyYjk2ZTM3MmU2YzQ0NzY4ODcwOWRjNDFkNTk1YTljNDg1MTJhNTljYTRhNDk1NmJjNGQ4NWNkZjhkNmY4YjE2ZmVlZDk1OTRhOGU4ZjgzZWQ2YzAzMmYxMmVkOGFlY2VjZjZhYmM2NzAyNTZhZGUzN2JiNDc3OTQzMmY3NGU2Y2MyZGFmMDA3OWQ2OTYwY2Q4OTM5OWRmNDM5MGQzZWRmMGNjZGFhZjZmM2Y0YWUwMmU2MmY4ZjE3ZDI1YWQ5YjdiNzYxNTY1MTUzOTZiOGI4MTk4MWI3MDFhZjlmNGYxYjY5YjY3NjZlMjExZTRjMzk4ZDM0NWE5NmIyODBiNjEyYmJlNzI0OGJiNjRmM2U5N2U0NzVhZDI1YTc1NTcxNjU1NGRmYTlkODBmMGEwMGYzZDU3MmU3Yzk2ZGM0YjZlNDQ2NTJiNTAyNTI5NTRhNDgyNDAyMDEyMDViYTkxZWIxNDhkNjIxMjllNTE0YjcxMTk1OTFjNDI2NWE0ZGJkNDJiOTBkMDk5MmE0YjExNTk1M2QyNWU2ZDk2OTNjNTZiNTU4MGY1ZDY2NjQ2ZDVjMDFiNDExOTZkYTgzOTA0NDY3NDM4ZmE1MmJjYzk3MzMyMzJhNDI3MmVhMDhjYzQ5YmU5NjFkNmIxZGI3NTM3NjlhNDRlNjlkN2IwZTZhMmJlZDgyNDQzNTNlMWM0ODQ1OGQ4YTU0MmMwOTUyYWQ3M2NiODVmOWQ2NmJiNzZkNDM2MTZiNTYwOTFkZWJhODk0YTA0ODRhMDgxN2QwNWVlNzk2YjVkNTBjMDljNmQ5NDcyZWU3NzZjMzcxNDgxODhhNTQ2MTRiNmRlMjlmYWM5MDZjYTFlNzA3NTE1MzM1MjZiODY2MTEzZjY4NTE4OWM3Nzk3ODZhMjNhODM4NDM2YTY5ZWNlYjQ5ZTQzOGVhMTQ3YmI2ZmZlMWRjOTI0ZTUxNzE2M2NjNTY1OTcxZWM3ZDg5OGJiMTg3OGZkMzU4ZmNhYmY3MGE5MTUxZGVkMjZiMWY5NTdlZTE1MjM5NTY0NTg1YTJkNDUyNmI3YTAxODgwMmYxMWJmMzFmNzlhN2VkY2E5OGMzZmVjNmRmOThmYmNkNTQ2MzhkZWQ0MjcxMGVkMTgzYmQxZDZjMjVhNGZkMTlmMDkwOTVhYmJkN2JhODBjYzNmODM1YjliNmJhNTE4NDRkYzVmMDQ4MTg5ZTU1NGE2Y2U3MDMyODVhNGQ4ZGJhMWU0NDc5ZTlkYzJmMGI4OTg3MzZhNGM2NDEwNTU2Y2NiNTJhZWE1NWI4NWNmZmE1Njc3MTFjNDM2ZTEwZDQ2NTQyYzI2MDQ4MmE4Zjk5ZDNiY2QzN2JkZTM5NDc3YmVhZTgwNWY1ZDRlOTdhM2I2NmRlMTZkNmU3NjBjMjEwOTQ5MzcwNTdkZWNiOTQ2YTdiZDYwYTFhZTk3YjY5NmJkOGRjNDZkNTc2NDUyZTRkNzU4NzJhMzRhY2FiMmVlZGMyMjJjMmRlNDVjM2Q2ZjA0OTQ0OTA0ODAxNDZlOWNhYjA2ZmE1YzY2YjgxN2ViZDA1M2NkMmI2YzkyZjRjNDI5YTgwYjQxMmEzMTU2YTFmNTQ2NjRlNTBhYjFiYWJiYjk4ZjAxYTgxYzZhNDkzNDg1MjA4ZDZiMmQ4OTZjNWMxN2RkNTM5MDllNWMzMmEzNzJkODQ4NTM3ZTgwNzUxZTYwNmRlMTUxZGJjNDM2ZjhiZWI2ZDU4NGUxMmIyMTIyZTQzZDYwOTUxMTdiMWVmMTNkMzRiNzAyMGYzMjA3YWM1NjY2ZGRjNDhmYmY4OTg2YzE5OGEyY2I2NTRkYTRlYTk3MDg0ODU4NDhjYzJlMDEyYTIwMTI2ZmQ0Njk1NjhjZGM3YmEyMWE0Y2FmOGZiMTkyOWM5NGYzNGFjNDk4MDk2OTQwMTIyM2FhZTZlOTA3ZWY3OGQ2OTMwMmQ5OGMzZjBiNzg0OWJhZTQ0YTAyYzFkNzJkZGRlYjk0MGQwNzlmOGY4ZDUzOTkxYjYyZGUzMThhZmM5ZDA3MGY3ZGIwZmE0YTdiNDM4NTE3MTk1MzYwMDhlNTk2Yzc1MWE5Y2RhZTgyYTViZWVlZGJhNjMzNGViNzFmMGM3MWYwYTVlZjFhNGE4ODQ5NDk0OGNhMzUzN2I4NTVjMTM3ZTA2ZjZlNTU2OTY1OWM5NTM2MTQ1MjJjZjFmZDllYzI3MWQyYzljNGEzNmY4YjIwODQ3N2FkYTEyMDkxZmEwYWY1ODVlMDE4NDYxOTM1NzMyMGMzNDMyZmFkMWJiNTI5M2NkM2E2OWZhMGFhZTg1Mjc2YmE1NjBjODc5YzgzMDYyY2E3MjIzOTc0MzhhMjk1YjZmZTYyMTFhNzc5MzkwMGIxMjZmNzNkMmEwMjI2Zjk0MmRlNmViZTQ5YzM2YzA5NDk3NTZlNjg0MjQyNDY2ZDE0Mzg5MjQ4MTYxN2IxYmU1ZDJmOTkyNjlmMTVjMmEwZTI2ZDI1MTMxODBlNjUzNzQyODFiMjkyN2MwOGQ0NTY2OWVkOGU4NjljNDE5NjkxM2E1ODZkZDRhZDQ0MWM4NDhiNjVlMDZkZTNlMzRhZTNiZTUwMGNiNjNlOGY4NWE1YjA4NTE1ZWVjOGNhYTUxMWEwMzk4ZGVjOTNkMzhmODcwYWYyYjU2ZGMyNjRiMmUyZGJjMjFjNzkyZTJkMjk0MTI1Mzc2Y2FjNWQ0M2JkYWQ5MzZkMzRkNmZlMTU3OGNlNTFlMTkwZDI2NWRlMGZiMzk4NjYxOGVlZmQ5NDJkZDdmOTNhZjJiMzI5M2U2ZTQzZDAyYWRjMDAzOWQ2M2U1MzViN2QyMjRiMGI4ZjI3MGQ4NGQyOTk0NmY1MGE0MDcwMjFjMTcyYWYxMjkzYTBkMGZjNmFlNzY3NTc4ZGE4Mzg4YzVkYTRhNDI1MDgyZGFjYTkwNTRhNTFiZTcwNzI2OTYwNmQ2ZTFhMWQ3NWJkNTViNmRkYjI2ODllZjdkYjU4ZmNhYmY3MGE5MWNhYTNiZGY2ZDY3ZjJhZmRjMmE0NzBhODAyZGU4YmViNDY5NDUwMTFmMGYyMDQzNmVmZDBmYmNkNTZlM2I4MDMzOGJjYTY5ZDdhN2NkNjViNDI0MDUzMmNiYjk1MGU1OGRjNWY5ZjMzYzM4ZmEyYTY0MjhiMTk3MTkwYTU0NzY0OTM3YjkyODE3ZTI2OWZlYzcxM2YwZWNmYjMxNTJjODQ2NGNlYzFiMTc3MTAzNjgzMTk0YjJiNGE0MTRhNWZiMTM2NDkwNmVhMWFmNDNhNWI4NTQ5YzQ3NjJiMGY5OGI3NTY2N2UyMGQ5NzcyMDU4NGJkZGQyMTI5MDJjNDFlMzdiMDI2ZjczNzAzYTU2OGJiMWM1ZmMzMzNlY2M1MWQ4ZTJmZTE5OWY2NjJhMDkyOGIwYmQ5MTg5MDU4NzVhNGUyYjhiYmExY2RkMTI1NzMxNTk4MTQyY2FjMTA2ZjcxNzI2Y2FlYTJkZDI5YTc3NjJiMGU3Njc0OTk0YjlmODhmZDIxYzUyY2I2OTkwNTI4NDkyYTUyOGQ4MGQzOGE4ZjhkNjhiYjFjNWZjM2IzZWNjNTA2MWM1ZmMzMzNlY2M1MDEwMzAxYzE1OGMxOTUyMzczMjFkNzEwZWU0MDk0YjhhYjk0ODQ4M2E1ZjllYTRmZTk1NmI5ODczYjUzMjYxYzVmYzMzM2VjYzUxZDhlMmZlMTk4ZjY2MjgwNjYwOTFkYmU3ZmU3NDdmZTAyYTZlNjFjYWFiMjE0MzhiZGJhNzdkMTk5ZmFlOGZlNThmYjgyYTY3NjM4YTNmZTE5OGY2NjI4MDdjMjg3NWE0Y2MwZDMzZDhlMmZlMTk4ZjY2MjgzMGUyZjI4Y2M3YjMxZjBhMDFmY2MzYWQ0MzkwNDdjYWQxM2ZlOWJiZmZhNTNiZDhlMmRiNThjYzdiMzE1MTI0NDM4YmYyYWM1MWQ5OTliNmVkZGZlNThmZThhMDJjYjMwYmYxMTQ2NjFkNDUzM2Q4ZTI3ZTE5OWY2NjI4ZWM3MTNmMGNjZmIzMTQwNzk3ODhlZGFjNWFkZjU1N2VlMTUyMzk1NDMyYzMyZDRlNjRiNmQzNjgyNTJiYjk0YTQwYmYwYTk5Y2FhNDgxNjkzYzY5NjkwZDQxMjQ3YzNmZWM2ZGY5OGZiY2QxODhjYTZlMDQxN2E1YmExNjUwZDI3MzI4MjQ1Y2ZhMjk3MGYzNjg4ZGY5OGZiY2Q0NmRhMjhlZjRiYzE2NWM3NjExOTlkNzFiMjEwMmY2YjliOGE4OWI2OTNhMmQ4ZDI3MjQ5ZjA1NjhkYWRjM2NlYTIzY2QzZTY2ZDNmZWVhNTNiNWQ4N2RhZmQ5YTZmYjM0ZmZiYWI5ZmM5ZjI2ZjNkZTkxZGEwMDllOTcwMmMyODExMjFiYjAxOThhYjI4MWZmNzFkNzhkMjYxZmU0ZmU0MzM4OGE1ZDQzMzM5Yzk1MTk2MWQ1MDdhNDIxNTk4OWQ0MmI1ZTIzNDIzNGUxYThlNDJiODdhYjlmZGJlYzdhZGY4NmQyN2Q1ZmI5MWQ3NjEzZTg5NTExYTkyZDA1MDQzYTgwYjQ4NTBiMWIxMTdhNzQwZWI1NTU4NjYxMjg2ZjBlOGNkYmZiZjRiYTk2OTIxNjA0OTVkODFiNmJjMTU2YTkxZjI2YzdlYjIzZmNjYjlmZWVhZWU1YzFlNGM5MjRkZDEyOWU1YTVhNjk0ZWI4YTA4NDIwMTUyOTQ0ZDgwMDM5ZDY3ZTRlM2QyNWM1NWEyMzI4NjlhZTRiNzgxMmE1NzhlNWU1ZTkzN2YwYTkxOGQ2Y2VjNjlmMWQyOTRiZDJkMGViNDRhZGEzZGFkZGM4NTU2YjU5NjljZDY1MjdjMGRjNzNhY2RlMmQxOTJmMzJhODMzYjdiMTVjNTI4MWI2NmNhNmUwODM3NGFiODExNzFjNDdlOTVlM2Y4YmVhNzUxODE0N2E1ZDk3YWJlNGVhZDI2MmM3MzZmNzczZWM0OTg0ZWNjODc4ODRkOWFkM2U4MmY0ZDVhMTZmNjY2ODkwNGE1MjEwMmMzMzc3NDU4NzJmMWFiYWMzYjFkY2VlYTE4OWNkYTViNTJjODRhNWM0MTM5MDkzYzAxMDc1NGRmZDIzYzZiOWZhMzY1YTIzNGYxN2M2Mzc4YTI0YTkyMTNmNmFlNDBkYzZiY2VkYThmMzY5NWE3ODkxMWRjNTE2MTk2MTI0YjJhM2YzOGYwZDEyOTRmM2IxZTZhZTk2ZTE1ZTU2OTM1ZmFiOTY1OGM2MzJkZmVlYThlYWNkYTdjNGEwZGI1NDVjZTM1YjUxODZlMTEyZDcxYTVhNjQ4NWE1YmNlMGExOTJhNDlkMDliNWM2ODBlOWNlYmRlY2VlZDJlMTc4ZWE5NDg4MGE3ZjNhNWE0YmFhNGI4Y2E5MTY0OTI0MGQ0OGQ3NTA3ZDU1MGY2OTFkNzcwYzUzMjE5YzNiMTZjNDUwZjA1NjcyYzQ5Mzc0MTA1MzYwNDFkMmM2ZTc5ZjJhOGYxNTk3NzE5NWNiYzJlNjQwYzczMGQ2NTRkNWZiNGEyN2E5MDQ5YmE2ZTEyYTQ5MDQyYjVlM2UwNmJlYjhmMjQ5MzhjNmQ0MjIyNGQ1MzExZDk2OWU0MjNiYWI3MWM3NzIyNzNkZWQ5NDY4NmZmMDAxZDJhYWE1NjM0ZWM4YzVhMWNmNWM0NTIxZDg2ODcwMjFhNDRiNTg0MmMyYzAwNGFkMzk3NWI2NWQyZmMwZGVhOGYxZGMyMTI1Mjk4Mzg4ZWY1OTJjM2MxYzQyYWY2Y2M1MzdiMjgxM2M0MWJmZWI1NGNhZDhjYzNjYWIzMDE4YjBkMDg0ZTU1MmM2NTA0MTFhMTA5YmU5N2QzYTcyYWUyNzk2NzZjYzljYTU2NzU5YzBiMWE2YjEzY2VkMTY4YjEyMTIzMzE0NjZjYzA4ZWEwZDVhZGJhZDY1MzYzYjBjOTJkY2NlZGNmYjRiNjViNDM0NWI2YzJjNTk0YmJkYWU2ZGQzNGY0ZGViNTc3MjZiYTcxYjkzOGRjOGQyMmRiNWRjOGVmN2RiNTlmY2FiZjcwYTkxNTFkZWZiNmIxZjk1N2VlMTUyMzk1Njg0OGI0NzBhM2QzNDg0MWUzNDAzMTg3ZmQ4ZGJmMzFmNzlhN2NkOGQ0NTY1Yjk4ZDM2MWI0ZWUwODFjMDljZGQ2YmQ3ZDM3YTQ3ZjVhYWE0ODI0NTg1NDU5YjFkNmU2NTc5ODIxMzIxYWI5NDEzYzA4ZTY5M2UwN2Y0ZDBmMmFmNTY5YmNjNDdmNWFhOGI0ZGU5MWJkNmFhODI0Y2U0Y2RhZTkxMWYxNjMwYzZjZWUyNTIxOWVlYTQzY2M4MDQwNWQ4NjY0YWFmNjA5MjA5MDM4ZWI3MTZhNTczNmNiMjQ0NjI2ZmM4MzhiMjYyYjliYzBhY2VjZTU3MTA1MjUyMmU1MzdlMDQxMjQ3MzM2YWI2OTQ4OWYxZGUzMzU5NDMwYTE2YjNlZGE3MzVkNjkxY2MwZmJjM2Y1MWE3NGE5NGQzOTJkZDY5MmUzNjYyYWQwYjAwYTQ4NTJhYzQxYTUwMzJmMWY2ZTgzZWUzM2I4YzAzMTI3ZGI3ZTIzNTI5YjUzNTkxNTYwYjI0NjUyNzM1YWUyZGNhZmUzNTNiMGRkYTMxODkzOTFlMjRiYzBlNWM3NTQ4Y2RhM2MxMmE0MDA5MjAxMjdkMmEwMDY5YWVhNzgwMzU3OWY0ZGZiYjE4N2E1NTQ5ZjRkYmYwOGQ3ZjNhYTk0MGM0YWY2OTMwZTg1ODliZTg5MWIyZjMwMzhlM2UxMGQ4MTFkMzYyOGI5MDg1OGI4MDQwNTU4ZmE2YzM5ZDRkOTdiNmQyMWI4NWJlOGZiMmQ4YzE1YTkzNzZkMGVhMTI5YmViNjI5Mzk0OTIwZGI1Yjc4MWU4NmFmNjIyZTYxYzUyNjBjZDE4OTAxYmQzM2FiNGQwZDRkZmE3NzQ4ZmViNTUxMjQ4NWQ5OWJmZGFlOTY0YTUwOGQ5ZGM0MWQyNWE1MjgzODhiNjQ1MTAwNWYyZGNkYzhlM2UzYTcwZDY5NWNkYWY5MmI4NGI3YTI2Y2U2MjZhNzViNzEwMTRkM2EwMDM5MTU5ZWVhZWU5NTVhZDkzNTA3NWQ0Njk1YTNmYTc3NDhmZWI1NTE3OWRkMjNmYWQ1NGEyMGNmNjE5YjQxMmE1NGE4YzljNTMwMDcyMmI4YjcxMDk2OTI3YmViNDg1YTZmYmNlMTYwOWZlMTNhZTYwNDZhMmRhZDVlY2UyN2I2NDAwMDlkNWQ1NWVjN2ZlNWFhYmRmZDNiOTA4ZGViNTU0MWM0NWU3ZDEzZjBkNDM4ZTQzNDJkYzc5NjFiNGE5NjQxNTFkZGFmNDAzOWU5ZDI5NDJjYjdiMGU1NGJhMGE4YzNiNzcyMTFiZDZhYTNlOWRkMjM3YWQ1NGEyNDFlZDI2YjFmOTU3ZWUxNTIzOGQ0NjRiNzI1NTI1MGUzYmJhMDEwMDgwMTE3YjliZGJhZDQ5YTEwMmQyNWNkZTk0OWEwOWI1MDkxMmY2YWNjNmQ0ZWQyM2Q4M2NkMGQ5MzFkMGNlNTRmN2RjNDI5NWE5MGI1NzIyMzRiMjBkNmEzOTU1MmUzNWIzYjBmMTY5M2JlOTJlMzlmNTUyMGEzMmExNDllZWRlYzZjYTA3NWQ0ZDYzOWQ0ZGMyYjFiZWU2Yjg1YzE0YWU3YzE5M2ZkZTMzNmE0MDc1YTkzMDllNjczMmMyOWM0NDc3MGE1MTk1MjA5YmY3YmZhOTNjMmZhOWI1NzkxZTUyZTI5MDBmY2ExMDEyMTVjMzM0Njc0NWY4ZjhlYmEwMjdjZDU3YWM2YzM2MGVjMDUwNjRiODhjY2UxNzBkOWI2ZWQ5ODhiMTNmNTc0ZDNhNTNkZmIxZDg3MDQ5NGVmOWRiMTM3MjM3NmQ3MWZlZGFlNGU5ZWFiZGZmOGZlOGVhZWE2OWJlOWZmMDA3ZWE0YWQ5ZGM2ZDEzYTEyZGU5NGZjNDQyODM5NjQxNDJiMjg1MjcyYTQ4MzYyNDllNzVlOTUzNjI2MWVmMTUwOTJjOTg4ZWFhZTUyOTU4NTE2OTQ3OTgwMzVjYTdmNDNlMDc0N2IwYWMxZTI2MWVjMjk5NDBkZTg1MmNhY2E5YzQyNDkxYTAxNjE2MDJjMzQxNTM3YjM0NmU1MWRhZmVjMTVkZDhkNDk0MTI5NzI3MWU0NzE3MjdiNzgyOTY3ZWQ3NjBkMWRmNjYyMzcyNzdkMzI0MDU3Njc2NTJkYWZlNzBhNmQ3MTlhZDYxYzQ3MWFjZGM5YzZlMTRjMDVjOWY4YWIyYTFmNzU2YmRkYjc2YmRhZTk0OWIwMjliZTk3ZDZmZDZiNjk4YTYxZWRjOTg0YjY1YTBkYjRlMTIxNDg1ODQwZDE0OTM3MTdmMGI4YWMxYzlkOWVjMjU4NzgyMjZlMTRkYjRlMGQxM2JjMmEyOWU3ZjU0OTM2YjZhNmQ2ZTE3M2EwYWYwZmM2OWU2NTU1N2IzZDZiZGZlNGVjZDEyODc3YmFiMTFmYzRiNjdkODRmY2VjY2MzOTIxMmFjYTRlNjRmNzRkODlkNmRjMzgxYWIxYzNiNjg1OTg5MjliNjYzZTIwODkyOTUyMTRiMzFiN2I5Yzk0MjZkOTk0OTNjNDExNzFlMDZhYWNlMGJiM2MwZGNjMzg2MTVkNDJlYzdkZjUyYjA1ZDk3ODBiOTdiZWMzMzBmNGIwNTQ5NTIxNzI4MDU2NTA4NTFiYWFkNzNkZTI3YzM4NWY4ZDc4YmEzOTY1ZWEyZTgzOTVmZGJmMzNiNzMyOGVkZjNkNTFiZDRjZjg0NTIwODk3MWVjNDVjN2NlMjdlMzRhMjc0M2ZjNWM3ZjZhOWY4ZDA4ODcxMTA4NGE0NDc2NmMwMDAzYjgzODU0MjUxNmU0YThiNTAyMmM3MjAxYjI5ZjViNjMyMjdhZTUxZmM0N2Y0ZjFlNTVmNzI3ODY1MzZkNWVkOTQ0ODI5MzFmMGQ5NzExZjdjMmYyM2FlMDcwMmQyYzJhZTA2NTUwMDdlYjFiZjAzNmVhNmIwNzNiNjk1MzI2NDQ3OTcyZjFjMGUzOGNhZDRiNjE2MWQwMDM2YWM5NjI0NTg1OTNkZDVkYjk2OGFmMWFkOTYzZmU0ZmYwZDkyZGM5N2UwMzQ4MzJlNTNiYmU5NDFlNTFjYjIxNDAwMDA5YjY4OGI2NTE2YjAwMzhlOWFkNjQwZWM0M2IxOTZiNDJiNjc1ZTI1NGUxNzBlNTFiYzRlNjIwMDI0NTg5MWFlNTFlYWFlY2MxZDNkYmU5NjcyZTVkZmJiZTBiMmMxYmNhMTg4YWYzNjI1NjJiMWE2YjBhZmUwNTM4OWRlNWJmYTRmMzNlMDZmZThhZWE0ZDJkMmUzNjk3MTA2ZTg1MDBhMDQ3MzA2Yjk2ZTE5ZTRlYzRmNzkwNjdlMWFjNDM2MTNhMTVhYWRiYzI5YmRjODAwMWQyZmUzYzNhNTc1MjZkMDk2ZDA5NmQwMmM5NDgwMDBlODA1NjU5ZjY1Zjk0ZDMwZWVhZjMxZTg5YTM5NTJmMGEwZWEyYjAzNjBhMmRhZWI0NTI1MDBhNjhkMzk1MjdhNjhhMDE2ZDQ1YWY0OWU5YTI4MDVhMmQ0OWU5YTI4MDJkNDhiNDA1MjRhNmMwODNjOGVhMGQyOTNjYThkN2FkMDE4OTk1ODFiZjg1NjFiMWZiNWVkNjMzMTE2ODc5YzU4N2RjNjUwODBlMTU3N2YyOWI5MzcwOWIyYWMyZmYwMDU3NGU1NTVhY2EyNTNkOTk4OTNlNTAxYTUzZmJlMGI2NTcxOTU2NDY1MDZkNjI2ZmEyOGU2NDhiMTI3NDRmM2I5YWRmNjI1ODZjMmM0OTgwYzRmOGNkYzg2YzVlYzk1OGJkYWUwODNmYTEzNTU4Y2VjODZjZWI0NDI5Mzg2Mzc5YzM4NWM0Yjg1NmFjZTk1NWVmYTFiZGM1Yjk1Yjg3YTY4MGNmYjRmMjI1Y2Y4YTY1ZWRiYzY3MTcwZGE0MTc1YjZjODRhMGJlNTBiNDkzN2UxNmNjYjA0MGZlOTE3ZTE1ZTkzZjI4YTE4OGVmYzhkYmU4MGE2OTY4NGVlOTQwMDQyNWMwOTUwMGE1NWYzNmI3MjcyZjg2OWQ0ZDVmMjM2M2I2NjkwOGM4OWMxZTNlNTM3YjhlZjViNWJkZjlmM2JlYmQ0Njg2ZjRmYmRiMzM4MTNjYjY5NmVlMTcxZDY1OTQyOTBkZGMxYjI1MmEzNzUwMDM4NmE2ODBjODg2NjYzZDE1MzlmY2EwNDY3ODM2YjI5Y2NmMzc2NGE5ZDZjYTczMWQwODA0MDU2NTNhNWM1Y2RiNWU0ZDJhMTk2OWI2MTNmYmMyOGZiYThlYTU5NmQ2NTQwOWNlYTM3NTY3NTY3ZWEwODE3ZWI1YjExYjMxODA4NjEyYzBjMzVhMGQyNGE4ODQ4NTJiZjg4ODI3OWY1MDNjZGNhOTRlY2M2MDE5ODlmOTJhM2VhNDEyMmM2YzRkODgwNmQ3YjVlYzQ4YmY0ZDI4MGNhZTVjNDA5NTg1Nzk0YzhjYTRhNDkwOTA4NDM0MGE0ZTQyMmM0ZGNkZWM0NWZkN2UxNWJlOGU5NWE1ODQyNWQ1ODcxYzA5MDE0YTAyYzE0NmRhOWI3MmFhNjNiMjFiMzc5MTI4ZjkyNTgwOTQ4MjEyOTQ5NTAwMDFiZTgwMDNlMjZhZWQwODA4NDg0YTQwMDk0OGIwMWQwNTAxZWFkNDUyNzFhNWUwMmY0MDdmZmZkOQrMTGC9AAACwElEQVR42oVUW0/bMBTuD99+wF4n7WkXaULaRUgwTWwaIBhMGzA6oDDoUpo293tztZPYsZ3sJB2F8sA+WbJj+5zvXD6nJ4TwfT+O4yiOAK7rOo6T53nToW7uYWmjB8a6rmua5nmebduqpo7H4zRN24v1sm3dormz2WseRF0/dNpbMDDGvp9uHl3scs6rqiqKYv9MfrN5MtI8XtGCVokqqxvv0FRaeO3dIRFj/UqxJEopGIOvn1fq2t5Ac2M4FU1TBq67vV6Yyn3jinHGeMfPEc4ZsHOohqgqClmCJxiirgmlDDbhMue3YQMTLPISx0m0SCRJsWEFhLI5ARjqZoBw2ZJVDO60xuASHMPidPTjYnzMWUs4C5MPn05evN75dnCNMc5zfNQfvVr5+mV7AGYQ4D/j+QcssjzGZQasohYQt6r7g99qEKKkRZyhQro2HTeap3lrDBnOZjNlqgA0XTcMwzSNTi92GAZwBCvXsT3PsR0bYwT3b8IWNeMijhNFmYJcQGSgFlAbISVCGaQAIF0PEEIwQynpImeYCGm36hshia5ilHFcEtF5F10JCSGQDpSa0OpOznBMinR8ieRhVeTgCHSBrb3Z6G0VnUed9O1AHUiHYep1OS+qLQSrG5Yl6uaatrVO0pjXTYmjTHrm9x9Rc81xPcPQj//sftxfUWxpqVUtc9f0zmXleW2hTNPyfU9XR1A6gGW1n5AwMC0xw0Q7BYEDGEmGsgzlJcV5EUcBLPKC5EUBGmzFB+CcdqLqLV5pol+a/Q2j/xnPzJLyJLTC4fPo4kksr7JOQrLure6c7Z2MF2HePgzsa8F1P5qc5rFHWY1i2x08NQ4eW+cvQV5pmpz/mbzf+rV9eDlX1H/eM8jM0EZXw6E8mcqyrCgTSZJUZcoZu2/c/iagobWYP7f52ygJ8XwvDENoVtgB1DavGeAv6TVuFFn8DRQAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Raft Log Çoğaltma&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/63d4a18e6c55f7a0d3cbb0752fdd9451/fcda8/image1.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/63d4a18e6c55f7a0d3cbb0752fdd9451/12f09/image1.png 148w,https://blog.hkucuk.com/static/63d4a18e6c55f7a0d3cbb0752fdd9451/e4a3f/image1.png 295w,https://blog.hkucuk.com/static/63d4a18e6c55f7a0d3cbb0752fdd9451/fcda8/image1.png 590w,https://blog.hkucuk.com/static/63d4a18e6c55f7a0d3cbb0752fdd9451/efc66/image1.png 885w,https://blog.hkucuk.com/static/63d4a18e6c55f7a0d3cbb0752fdd9451/c83ae/image1.png 1180w,https://blog.hkucuk.com/static/63d4a18e6c55f7a0d3cbb0752fdd9451/a878e/image1.png 2048w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;h2 id=&quot;güvenlik-özellikleri&quot;&gt;&lt;a href=&quot;#g%C3%BCvenlik-%C3%B6zellikleri&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Güvenlik Özellikleri&lt;/h2&gt;
&lt;p&gt;Raft, dağıtık sistemlerde tutarlılığı ve güvenilirliği sağlamak için bir dizi güvenlik özelliğini garanti eder:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Seçim Güvenliği (Election Safety):&lt;/strong&gt; Her terim için en fazla bir lider seçilebilir. Bu, her sunucunun yalnızca bir oy vermesi ve iki farklı adayın aynı terim içinde çoğunlukları asla biriktirememesiyle sağlanır.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lider Tamamlama (Leader Completeness):&lt;/strong&gt; Yeni bir lider, önceki terimlerde taahhüt edilmiş tüm log girişlerini her zaman içerir. Bu, takipçilerin yalnızca kendi loglarından daha güncel olan bir adaya oy vermesiyle sağlanır.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Log Eşleştirme (Log Matching):&lt;/strong&gt; Yukarıda açıklandığı gibi, eğer iki logda aynı dizine ve terime sahip bir giriş varsa, o noktaya kadar loglar tamamen aynıdır.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Durum Makinesi Güvenliği (State Machine Safety):&lt;/strong&gt; Bir log girişi taahhüt edildikten sonra, değişmeyeceği garanti edilir. Bu, sistemin bütünlüğünü korur.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kalıcı Depolama (Persistent Storage):&lt;/strong&gt; Her sunucu, mevcut terim, en son verilen oy ve log gibi kritik bilgileri kalıcı depolamada (disk veya flash gibi) saklar. Bu veriler, bir çökmeden sonra kurtarılabilmelidir.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;İstemci Etkileşimleri (Client Interactions):&lt;/strong&gt; İstemciler yalnızca liderle etkileşime girer. Bir istemci başlangıçta herhangi bir sunucuya istek gönderebilir, ancak lider olmayan bir sunucu isteği reddeder ve en son lider hakkında bilgi döndürür. Lider bir istemci isteğini yürütürken çökerse, istemci istek başarılı olana kadar yeniden dener. Yinelenen komutların önlenmesi için, her komut benzersiz bir komut kimliğiyle eşleştirilir ve lider, yinelenen bir isteği algıladığında eski yanıtı yeniden yürütmeden gönderir.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;raftın-avantajları-ve-sınırlamaları&quot;&gt;&lt;a href=&quot;#raft%C4%B1n-avantajlar%C4%B1-ve-s%C4%B1n%C4%B1rlamalar%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Raft’ın Avantajları ve Sınırlamaları&lt;/h2&gt;
&lt;p&gt;Raft, dağıtık sistemlerde konsensus için güçlü bir çözüm sunarken, kendine özgü avantajları ve bazı sınırlamaları vardır:&lt;/p&gt;
&lt;h2 id=&quot;avantajlar&quot;&gt;&lt;a href=&quot;#avantajlar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Avantajlar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Anlaşılabilirlik ve Basitlik:&lt;/strong&gt; Raft’ın birincil tasarım hedefi, Paxos gibi diğer konsensus algoritmalarına kıyasla daha anlaşılır ve uygulanması daha kolay olmaktır. Bu, geliştiricilerin onu benimsemesini ve kullanmasını kolaylaştırır.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hata Toleransı:&lt;/strong&gt; Raft, sunucu arızalarını etkili bir şekilde yönetebilir ve sistemin çalışır durumda kalmasını sağlayabilir. Kümenin çoğunluğu çalıştığı sürece sistem kullanılabilir kalır.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Güçlü Tutarlılık:&lt;/strong&gt; Raft, tüm düğümlerin aynı durumu korumasını garanti ederek güçlü tutarlılık sağlar.
Modülerlik: Raft, konsensus problemini lider seçimi, log çoğaltma ve güvenlik gibi ayrı alt problemlere ayırır, bu da onu anlamayı ve uygulamayı kolaylaştırır.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;sınırlamalar&quot;&gt;&lt;a href=&quot;#s%C4%B1n%C4%B1rlamalar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Sınırlamalar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tek Lider Darboğazı:&lt;/strong&gt; Lider, yoğun yük altında bir darboğaz haline gelebilir ve potansiyel olarak sistem performansını etkileyebilir. Tüm istemci istekleri liderden geçmek zorundadır.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bizans Hata Toleransı Yok:&lt;/strong&gt; Raft, Bizans olmayan hataları varsayar. Bu, kötü niyetli saldırılar veya düğümlerin düzensiz davranmasına neden olan yazılım hataları gibi keyfi hataları ele almadığı anlamına gelir.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;gelişmiş-konular&quot;&gt;&lt;a href=&quot;#geli%C5%9Fmi%C5%9F-konular&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Gelişmiş Konular&lt;/h2&gt;
&lt;h3 id=&quot;küme-üyeliği-değişiklikleri&quot;&gt;&lt;a href=&quot;#k%C3%BCme-%C3%BCyeli%C4%9Fi-de%C4%9Fi%C5%9Fiklikleri&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Küme Üyeliği Değişiklikleri&lt;/h3&gt;
&lt;p&gt;Raft, küme yapılandırmasındaki değişiklikleri, yani düğüm ekleme veya kaldırma işlemlerini yönetme protokolünü tanımlar. Raft, genellikle tek sunuculu değişikliklere izin verir, yani aynı anda yalnızca bir sunucu eklenebilir veya silinebilir. Bu, özel AppendEntries girişleri kullanılarak iletişim kurulan küme yapılandırma değişiklikleri aracılığıyla gerçekleştirilir. ScyllaDB gibi bazı uygulamalar, Raft’ı kullanarak eşzamanlı düğüm ekleme veya kaldırma işlemlerine izin veren “işlemsel topoloji değişiklikleri” üzerinde çalışmaktadır.&lt;/p&gt;
&lt;h3 id=&quot;anlık-görüntüler-snapshots&quot;&gt;&lt;a href=&quot;#anl%C4%B1k-g%C3%B6r%C3%BCnt%C3%BCler-snapshots&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Anlık Görüntüler (Snapshots)&lt;/h3&gt;
&lt;p&gt;Raft, log boyutunu sınırlamak için periyodik anlık görüntü mekanizmasını kullanır. Anlık görüntüler, belirli bir zamandaki sistemin durumunun bir görüntüsünü yakalar ve bu duruma ulaşmak için kullanılan tüm önceki log girişlerinin kaldırılmasına izin verir. Bu işlem otomatik olarak ve kullanıcı müdahalesi olmadan sunucularda gerçekleştirilir. Anlık görüntüler, tüm yapılandırmaları, sırlar motorlarını, kimlik doğrulama yöntemlerini, politikaları, belirteçleri ve depolanan sırları yedekler.&lt;/p&gt;
&lt;h3 id=&quot;pre-vote-ve-liderlik-transferi&quot;&gt;&lt;a href=&quot;#pre-vote-ve-liderlik-transferi&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Pre-Vote ve Liderlik Transferi&lt;/h3&gt;
&lt;p&gt;Orijinal Raft algoritmasının uzantıları, kullanılabilirliği ve performansı artırmak için geliştirilmiştir:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Pre-Vote:&lt;/strong&gt; Bir üye kümeye yeniden katıldığında, zamanlamaya bağlı olarak zaten bir lider olmasına rağmen bir seçim tetikleyebilir. Bunu önlemek için, ön oylama önce diğer üyelerle kontrol eder. Gereksiz seçimi önlemek, kümenin kullanılabilirliğini artırır.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Liderlik Transferi:&lt;/strong&gt; Düzenli bir şekilde kapanan bir lider, liderliği açıkça başka bir üyeye devredebilir. Bu, bir zaman aşımı beklemekten daha hızlı olabilir. Ayrıca, başka bir üye daha iyi bir lider olduğunda (örneğin, daha hızlı bir makinede olduğunda) bir lider istifa edebilir.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;gerçek-dünya-uygulamaları&quot;&gt;&lt;a href=&quot;#ger%C3%A7ek-d%C3%BCnya-uygulamalar%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Gerçek Dünya Uygulamaları&lt;/h3&gt;
&lt;p&gt;Raft algoritması, basitliği ve sağlamlığı nedeniyle birçok popüler dağıtık sistemde yaygın olarak benimsenmiştir:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;etcd:&lt;/strong&gt; Kubernetes’in temel bir bileşenidir ve dağıtık sistemlerin çalışmaya devam etmesi için ihtiyaç duyduğu kritik bilgileri (yapılandırma verileri, durum verileri ve meta veriler) tutmak ve yönetmek için kullanılan açık kaynaklı bir dağıtık anahtar-değer deposudur. etcd, tüm düğümler arasında veri deposu tutarlılığını sağlamak için Raft konsensus algoritması üzerine kurulmuştur.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Consul:&lt;/strong&gt; Dağıtık sistemler için bir hizmet ağ çözümü olup, Raft algoritmasına dayalı dağıtık bir anahtar-değer deposu içerir. Hizmet kayıtlarının durumunu korumak için Raft’a güvenir.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ScyllaDB:&lt;/strong&gt; Yüksek verim ve öngörülebilir düşük gecikme süresi gerektiren veri yoğun uygulamalar için tasarlanmış bir NoSQL veritabanıdır. ScyllaDB, tutarlı işlemler gerçekleştirmek ve yönetilebilirliği ve tutarlılığı önemli ölçüde artırmak için Raft’ı uygulamaktadır.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TiKV:&lt;/strong&gt; Dağıtık bir veritabanı olan TiKV, hata toleransı için verileri birden çok kopya arasında senkronize etmek için Raft’ı kullanır.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/cb8fe4f70649a7bad9aab89fbedfd82b/a878e/image2.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 100%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsTAAALEwEAmpwYAAAq83RFWHRSYXcACmdlbmVyaWMgcHJvZmlsZQogICAgNTQ4Mgo0OTQ5MmEwMDA4MDAwMDAwMDMwMDEyMDEwMzAwMDEwMDAwMDAwMTAwMDAwMDMxMDEwMjAwMDcwMDAwMDAzMjAwMDAwMDY5ODcwNDAwMDEwMDAwMDAzYTAwMDAwMGM4MDAwMDAwNTA2OTYzNjE3MzYxMDAwMDA2MDAwMDkwMDcwMDA0MDAwMDAwMzAzMjMyMzAwMWEwMDMwMDAxMDAwMDAwMDEwMDAwMDAwMmEwMDQwMDAxMDAwMDAwMDAwODAwMDAwM2EwMDQwMDAxMDAwMDAwMDAwODAwMDAwNWEwMDQwMDAxMDAwMDAwYWEwMDAwMDAyMGE0MDIwMDIxMDAwMDAwODgwMDAwMDAwMDAwMDAwMDM2NjIzODMyMzk2MTYyMzA2NjMwMzczNTY1MzY2MzM3MzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAwMDAwMDIwMDAxMDAwMjAwMDQwMDAwMDA1MjM5MzgwMDAyMDAwNzAwMDQwMDAwMDAzMDMxMzAzMDAwMDAwMDAwMDYwMDAzMDEwMzAwMDEwMDAwMDAwNjAwMDAwMDFhMDEwNTAwMDEwMDAwMDAxNjAxMDAwMDFiMDEwNTAwMDEwMDAwMDAxZTAxMDAwMDI4MDEwMzAwMDEwMDAwMDAwMjAwMDAwMDAxMDIwNDAwMDEwMDAwMDAyNjAxMDAwMDAyMDIwNDAwMDEwMDAwMDA0NDE0MDAwMDAwMDAwMDAwNDgwMDAwMDAwMTAwMDAwMDQ4MDAwMDAwMDEwMDAwMDBmZmQ4ZmZlMDAwMTA0YTQ2NDk0NjAwMDEwMTAwMDAwMTAwMDEwMDAwZmZkYjAwNDMwMDA1MDMwNDA0MDQwMzA1MDQwNDA0MDUwNTA1MDYwNzBjMDgwNzA3MDcwNzBmMGIwYjA5MGMxMTBmMTIxMjExMGYxMTExMTMxNjFjMTcxMzE0MWExNTExMTExODIxMTgxYTFkMWQxZjFmMWYxMzE3MjIyNDIyMWUyNDFjMWUxZjFlZmZkYjAwNDMwMTA1MDUwNTA3MDYwNzBlMDgwODBlMWUxNDExMTQxZTFlMWUxZTFlMWUxZTFlMWUxZTFlMWUxZTFlMWUxZTFlMWUxZTFlMWUxZTFlMWUxZTFlMWUxZTFlMWUxZTFlMWUxZTFlMWUxZTFlMWUxZTFlMWUxZTFlMWUxZTFlMWUxZTFlZmZjMDAwMTEwODAwYTAwMGEwMDMwMTIyMDAwMjExMDEwMzExMDFmZmM0MDAxYzAwMDAwMjAyMDMwMTAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDUwNjA0MDcwODAyMDNmZmM0MDA0OTEwMDAwMjAxMDMwMjA0MDQwMjA2MDMwYzA4MDcwMDAwMDAwMTAyMDMwMDA0MTEwNTIxMDYxMjMxNDEwNzEzMjI1MTE0NjExNTMyNzE4MTkxYjMwODI0MzMxNjE3MjMyNTM2NDI1MjYyNzQ3NTgyYjIyNzUzNTQ2NDcyYTFjMmYwNjM3MzkyYjFiNGQzZTFmZmM0MDAxYTAxMDEwMDAzMDEwMTAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyMDMwNTA0MDEwNmZmYzQwMDJhMTEwMDAyMDIwMjAxMDQwMDA1MDQwMzAwMDAwMDAwMDAwMDAwMDEwMjAzMDQxMTIxMDUxMjMxODEzMjM0OTFiMWQxMTMzMzQxNzE2MWExYzFmZmRhMDAwYzAzMDEwMDAyMTEwMzExMDAzZjAwZWNhYTBkMTQ1MDA1MmE3NDUwMDUxNDc0YTI4MDVmNzUxNGZhOWEzYTUwMGI2YTdmNzUxOGEzYWQwMDc1YTM2ZjZhMjgxYjUwMDc2YTM2ZjZhMjhhMDBmOTUwNzE0NmMyOGY5ZDAwMGEwMWEyOGQ4NTAwNTJhN2I1MWQ2ODAyOTc1YTc0ODlmNmEwMGY5NTE0NjcxNDUwMDYwZDFiZDE5ZGU5ZjQxNDAyZTk0MDFkZTgxNDc1YTAyM2I4OWI1OWIyZTFmZDBhZWY1OWQ0MWE0MTZkNmE5Y2VlMjM0ZTY3NjM5YzA1NTFkZDg5MjAwMWVlNmI5ZmVmYmM2MmUzNjllZjY2OWEwODlhYzYxNjYyNjNiNzFhNjc5YmU1YWY2MDVjYjdhOGZiOWMwMTllOWI1NmRjZjFiYjdmMGRiNTIxZmYwMDg5NmZmOWU5NWM5ZDNlYmY3Y2I3MzNjNDY2ODk0NDcyYmEwYzc5NjM2MGM0MGQ5OGU3ZjFhZTBjY2I2YzhjOTQ2MmY0N2QyZjQyYzNjNmI2Yjk1OTcyZGYzYTM2NzhmMTZmOGUwMTA2NmJmZjAwMjYzMjQwMmYyNjhlYTE1NzI3MWI5ZTZkYmVkYWRlZmUxYzZiMzc3YzQzYzE1YTY2YWY3Y2IxMmRjY2YxYjc5YmU1YTk1NTJjYWVjYTQ4MDczOGNmMmU3MWYzYWUzYmI3ZDUyZWI1MGI3YmY4Mjc5MjM2OGQyZGQ1YzAwMTczOWU3MDNhYWVkOGY5MWFlYjJmMDU0ZmZhMzNkMWMwMWRhNWZjZTdhZjMwZWM5Y2E2ZDQ5ZWM5ZjVkYzVjN2E2OTg0YTk4ZWI2ZmYwMDNmODJlNDdkODUxZDI4Y2VkNDAzOTNiZDY4MWYyZTE4Y2QwNjhjZDE5YzUwMDc0YTAwYTA3Y2U4Y2U0ZDAwNTNlZDQ4OWEzYjUwMGU4ZDg1MTRiMTQwM2Y5OWEzMzlhNWYyYTc4YzUwMDc0YTI5NjNkZThlYjQwM2ViNDc0YTNhNTc4OTVlMzg2Mjc5NjY5MTIzOGQwMTY2NzYzODBhMDc1MjRmNmEwMjk5ZTM3NmZlMWFlYTVmZjliNmZmMDA5ZTk1Y2Y4NzdlYjhhZWE4ZTIyZDFlYzc1ZWQxZWU3NDlkNDUxOWFkYWUxNDA3MDhlNTU4MTA0MTA0MTFkMDgyMDExZjY1NTBlM2YwODM4NGU1ZTdmMmY1M2Q2OWY5MThhYjcyZGYwMzg2MWQ0MWY0ZWM2YjgzMmYxNjc3NDkzOGIzZTk3YTI3NThhMzAyYTk0MmQ0ZGVkZWY4ZDdlNTFhMGY1ZDk1MGU5NTc2YTRhYTg1MDE0YjE3NTFiZTM5ZmE2NzliMTgwN2Q1OGM3NmNlNzZhZTk5ZjA2YTM5MjFmMGQzNDY1OWEyNzhkOWEzNzcwMWQ3MDc5NWE0NzY1M2Y3ODIwZmRmNTAxYTdmODRmYzA5NzE3Y2MzZTJlZjM1M2Y4NTkwMDllZGE1YmQ1OTEwOTA3MjEyNDUwMzcxOTFmNTRlYzcwNDFlZjViMzU0MDFkMzZmNmE5NjJlMzNhNzZkOTQ3NTllYWQwY2VkNDYwYjg1Y2YyYjVlYmNiZmFmZmEzZDUxNGJhZDNjNjA1NzY5ODIxYjBhM2U3NDgwYTI4MDdkNjk2NzE0NzRlOTQwMTQwM2EyOTYyOTlhMDBhNWI5ZGE5ZDA0ZDAwYmEwYTA3Y2U5ZmNlYjE3NTNiZmI3ZDNlZDRkYzVjOTdlNWU2MDhhYTg4NWQ5ZDg5YzA1NTUxYjkyNGQwMTkzYjkzNDFhODM4ZjhiZjg2OWIyMWI1YWIzODFkNWNhMThlNzkzY2E3Yzg2MmE3ZDJkODNkNDExZDNiMWFmMTI3MTk3MGQ0NzNjMTFjYmFhYzExYWNmNmMyZTYzOTlmMmIxMThjZTcwNzljZWMzM2NhZGY4N2NjNTAxM2UzM2RlYjBmNWNiMDRkNWI0NmJkZDMyNTc2OGUzYmJiNzc4MTlkNDBlNjUwY2E0NjQ2NzZjZWZkZWIxOWI4OWI4NzU2MTc5OWI1Y2QzNTYyNDYwYWNlNmU1NzAwOWU4MzM5ZWY4MzVmN2QyYjVhZDJiNTU2OTk3NGNkNDJkZWYzYzllNWYzMGMyZmNjMTczOWM2ZTM2ZWM3ZjBhMDJhMWE5Zjg2ZjE2YTM3ZDM1ZjVjZjExNmFjMmU2Nzc0Nzk1ZTIyYTk5MmEzMDMwMDdkNWU4MzE4ZTliZmI5YWYzNjVlMWJlOTFhNGRlOGQ1OWVmZWZhNjE2ZWZmMTBkMDAwYWIxMzE1M2NkOGU0MDAwYzZkOWM3NzZkZmFkNWRmNTJiZGI1ZDM2Y2E0YmRiZWI4OGFkZWRlMjE5NzkyNDZjMDFmZjAwZWY2Yzc3YWE3NzExZjFhZGJkZGU4OTdmNmZhMjVhZWE1MmRkNGI2ZDIyNWJjY2Q2MjU2MjBlNTQ4NTYyMjQyOTk1Y2UzMzhlZDU1NWI3ZDU1N2VlNDkyZmVkZTg5YzJiOWNmZTE1YjNlMTM3ODdiYTc2YjRlMzU0MWFiNmE3MDQ1NzRjZDcyMjI4OGFjNGEzY2MwNTg5MjE3ZjlmOTZmYWRmNmY1YzkyN2VkYTg3ODY1YTQ1ZGNlMWM1ZmVhNTBjNDAzMjg4MjM5NzExYWEzMjgxYzhhM2IwY2YzMWZmMDAxYjBlOTVlNzg0ZjhjZTBiMmUxZGQzNmNmNWRiNWQ0NjFiYzgyZDIyOGVlNjY1YjEyNjIyZWE4MDMxMWU1OTdjMmU0MWM2N2I1NWQ3NGZiZGI0ZDQyY2EyYmNiMWI4OGVlMmRlNjVlNjhlNDhkYjJhYzNlZGE1NTdkNTZmMzVjOTNmZTllYzRlYjljM2UyNWEzZWM4YTExMDIyYTgwMDBjMDAwNjAwZjk1M2FjM2JlZDUyYzJjNjRmMmVmMmU1MjEzZTUzNGQ5N2NlMzkxNTk1NDljZmRhZWEzMWQ0ZTZhMzZmYjhjNzg3MmNlMThhNjkzNTM4YTQ4YTU5ZmUxZDVlMmNjODAzODE5MjA5MWQwNjM3Y2Q1YTQwOWVkY2QwNGQ0MGJmMTlmMGIyMzQ2YTM1Y2IyN2YzMGUxNGE0ODE4MGRiM2I5MWIwZGJmZjAwNzFlZTJiZDFlMmZlMWE1YjlmODdmYTY2ZDBjYTA2NDgwZDllNWU5ZDdkOGVlMDYzYWVmNDA0ZTBkYjdhMzczNThiYTY2YTU2MWE5YzJkM2U5Zjc5MDVkYzRhYzUwYmM0ZTE5NzIzYjY0NTY1NjY4MDBkMWQwNTNkODUyYTAxZDE4YTI5MWM5YTAwM2QzZWNhYWM0ZjBlYTFjNDdmMWYwMTllY2UwYjRiN2JiMzBhNDZmNmNjZWU0YTYwZjNmMzg3NTIwZTdhNjNhNmRiZDU5ZGI2NTNmNjU0MjcwOWY1ZDVmZjAwYmNlN2ZmMDBhNjgwODY4YjgwZTE4YWU0ZGQ0NjM0NTU5OWIzY2NlMzRiNmM5Yzg2MDczZmMyZmIzYjhmZjExZjdhZjc3M2MxM2YxMzBjNzE1YzNlOGYyYTQ0OGIxYzdjZGE2MzEyYWFiOWU1MDBmOWI5YzBlNjNkZmJmZDk1NzExOWEwZTY4MGEzMmY4Nzk2ZTFkOThiNjk0Zjk3MGVhYWRhN2I5MDg0MGMwMGEzY2VkODBlYzNiNjRlMzAwZTJhNGI0OGUxYWJkZDIwNGEzNGRiZWQzMmQxNjUyMGI4OGY0ZTZjMTIzMzhlYjJmY2NkNTk4ODIzYmQ1MTM1NGI4ZTM3ZDYyZmE1YjFkMzFlMWQyYWRkNWRkMmUyNDkyMTY1Njg5NDMxZTUyYjIxZDk5OTk0NjcyYTA4NTA0NzdhMDIyYmM0NmIwZTI0Yjg2ODVlZWI4OTZjNmU3NDVmODliNjhhNGI1YjdiMjMxNGU5NzAyNWU2ZTcxMjg5MDk0YzBlNWY0OTA3M2YyZWYxM2YwM2E5MjdlYzM1Yzk1ODdmYmM1YWM3MjFmYzU3OTdmZTc5YTk2ZDQzNGEyZmMyZjc3YTQ3MDRkOTI2Yjc3OTJjZjE0YjM1ZGRkNWQzYzE2OGIyYTk1MDY0NTkxNzI0YzgwMGNlMTM5ODFlNTAxOGY2YWZiZGNlODJkNmZhYjdkMTA5YzU2NGRkYWRiZmM0MzI0ZGE2MDcyMTc3ZGY5OTRhYWZmMzViMDNhZWQ1ZjNiZDY3YTZlNDY1NTkxOWQ1YWQyNWFlNGQ0YzBjYmFhOThiOGNmNjQxMWIxZDRlNDA3Y2VkNzI1NTFmZWVmNmIxYzY3ZjEzY2Q4ZmJiMTU2ZGYwZTZjYjUwNGUxNDQ4YjRjZDRhM2I3OGQyZjZmNDM3OWYwMTlkOWNmYzRjODcyNThiODM1ZjNkMmY4NDJlZWZlZDIwYmI3ZTI0NzM2ZDNjNmIyYWY5MTYwOTFiOTU2MDA4ZGRkOWYxYjFmNmE5NWQxMmVlZDM4NmFjYTNkMmI1MGIyOTc0Yzg1NWRiOTZlOWU1MzM0MTMzMzMxNjJjZDJlMDE1NjYyNDkzY2UxNzczYjY2YmRlOGRkMzcyMzE2Yzk0ZWRkNzJiNWMwY2ZjYmFhZThhOGMzNjdhZDUzODZmNTBkNTFkMWVmYjUxYjA5ZGEzNTJhYTRkODNhZTAxMjA5MWU5OTg2Nzc1NTNiZjQyMDExYmQ2MWQ5NzAzYmRhNWJjYjZlYjc3YTZjYjE0YjJiNGJjOTJlOWE1ZDUwYjI4NTIxNDE5N2QyYjgwMDYwNTVjODMwNjUwNTQ4MjA4YzgyM2JkMzAwOGViNWY0MjY1OTQ1OGJjM2NiNzhkOWNlNzQ4NmU3MjA4NTdkMzU4ODRjMjg1ZjQ4ZjM3ZDNiMjhkYzZmYjBmNjE4ZmFhZjAxYzYyNDc5MDNlOTVlNjNiNzNiM2ZkMWVmY2M1YjM5ZTZjZjlkOWNlNzdjZjVhYmFlZTY4ZGZiNTAxNTQ2YjRiZmUxN2QzNDRkNmIzNjk5ZjBiMTNjNjFlZGEyYjAzMTA2NTJjYTliMTBlNzA0MDNiNmQ4ZGFhZDYzNmE4NGUzN2NmZWU2ZWUwN2Y1ZTFmY2Q0YTliZGY3YTAxZTI5MWEwZTQ5YTNhNTAwZTgyNjgzNGJhMGM5YTAxMzdkNTM1MGJjMjdmNWI1N2ZlZjQ5YmZlOWFhNDcxOTc4YWViYTY3MTFkY2U5MWE3NThjZDI0NzY2ZGU1Y2Y3MjYwNTk0MzRiZGQxNTRjYjE5MDE3YmI2ZjkyNzAwNmQ5YWE4ZjBlZjFmNWJmMGY0YmE5YzlhNTU4Y2M4ZGFhZGZjOTdmNzVjZmE3ODZjY2FlMDAzOGNkZTdhNDZkZDA2ZGQ3ZGVhZDU0NWFkNmQ0NWZkMGE5ZGY1YTdhNzI0NzQwNjY5ZTZhYTdlMWU3MTRiZjEyZGJjZDIzMTg2NDU1OGUzOTE2NDhlMTY4ODhlNjY3NTY0NjQ2NjZjMzJiNDY3NzBjNDEwNDUxZTI1NzE5NDFjMWZhNTQzMzdjMzQ5Nzc3Yjc3Mjc5NzZkMDI2M2IwY2IzYjEyNDBlNTUxYjlkZjI3NjAzYWQ1NmEyZGJlZDRiOTJjNzI0OTZkYmUwOWNkNmI1MTZkM2UwODhjNzZiMjVkNGYzY2EyMTgyMTQyMTc5OWM4Mjc3NjNiMjhjMjkyNGZjYjYwNGUwNTYwMmU4ZDc1YTkxMTI3MTE1Y2FkYzQ3ZDQ1ODQxOTViNjFmZjE2N2Q1MmZmOGIwYmZkNWFkM2RhZmYxZmRiNmI5NzdhNGRkNmE1YTY0YjJjZmE0NWUwYmRiMzYxYTcyYWYyY2ExMTk0MTM4YmNkYzYxOGVjNzZjODA3YjU1YWI4NjdjNGZiOWQ0ZjUyNGI2NzQ4ZDRlNTA5ODY0YjEzMTM0ODg2NDU0NjI4ZWIzYzgzMmJjZWE3MDQ2ZTJhYzk1MTY0NTZkYzU5MDhkZDVjOWU5NDkxYjRkMTUyMzhkNjM4ZDE1NTU0MDU1NTUxODAwNzYwMmI1ZTZiNTNiMGYxN2UzODI2ZjQ5M2E0Yzg2MmRiM2NjYmNiMjY3N2VkODM5Y2FmN2Q4ZjYxOWQ4YjhkYWI1YmYxMmVhNGI2YmUyZGRhNTljZjI0YTUyN2IwNjU4ZDAwZjQ4NzI5MmUwZTdlYzBjMzE5ZGYyMGUwZjJlNDU0NTg1ZDM4NDhlNzg1YjQ5ZmVjMzA3ZTVhZDQ5NDhhYWNhNTU4MDIxODYwODIzMjA4YThkZTExZmU0YTY5M2ZkODYwZmNiNWE5NDIzNmEwMjA4ZTg1MjU4MTMzNzBmZGQwYjBlZTZkMWQ0YmRhYjFmZjgzMzk4ZmVkNDIwN2I4MzU5NWEyZWE5MmRlNGY3MzY3Nzk2NmQ2OTdiNmJjYTY1NDBlMWUzNjBkOWU1NjQ2MThjODNjYTdhODA0NjM3MTU0YWYxMWZjNDk2ZTFkZDcxNzQ1ZDNlYzVlNzllMzg5NjViOTk5OTAzMmM3Y2Q5ZTQ0MGE1ZDMyNGUwOTI3MzgwMzFkNDlkYTg1NjNjN2MyY2I4OWY1MmUyNWI3ZDNlNTFhOTZhNTBjMzBkY2IzNWFhOTUyYjE3MzcyZTE3ZTI3MDBmYWI3MjNhZTE3ZGFhZThlM2RiMjViNTE2NTUyYmViOGJkMzkyM2ExNzM0ZmE1NTAzYzM2ZTM3YjllMjZiZmYwMDIyNmYyODhmMmU1ZTc0Zjg2MzEzYzRlOWU1MTAwZTI0NzU2NTY1OTQxMDQxMDQ2MGU3ZTU2YmUyYWQ2ZWNmODczNDFiYWQ2NmZmMDBjYzMwNWJhODI1MjI1ZTY3OTE4OTAxNTE0NzcyNDkwMDc2ZGY3YzBhYTljNWE3ZGFkNzI1OGE0OWFkYWYwNjM3MWNiYTI3MGNkYzM0OGVhYWJjZjE2ZWM3MDNmNmE5NTM4MGU0NjQ3N2FkMGZjNDllMjJkOGYxNTY4NTM2OGZhZmU4MmIyZDhkYzk0Njk2ZDVlZDVkYzAyYWUxZDQ3Mzg5MDY3MDU0NmUwMGNlMmE3MzRkZjE2MjZiYWJiNGI1MTBkYmMyZWY5MTE3OWQ2OTI0NjhlYzAxMjEzOTgzYjcyOTM4YzAyNDYzMzhhYjFkMTYyNWI3MTdmNDIwYWVhZGJkMjkyMzZlZjRhNTVmMGQzYWU1NmY2YzJkZWYxNTRhYWNmMTJjYTAxZWEwMzAwNzFmZjNhYzhhYThiMDJiY2JlNzk0OWFmNTVlNjRmYWE2ODBlNThlMmU5MTU3YzQ0ZDdlMzliZTFiYzkzN2Y3MjdmNThiZDkyZDk3OWI5ZDMxODY4ZTM3MjRlMzNiMTAwNjMyNmEzNzUwN2I3NGIyOTVhZDBlOTY2N2U1ZjQ3OTVhZDVjY2FmOWM4ZmFhOGQwMDBjN2U0NDgxZjNhOThlMmUyNDcxYWYxMTEwNDhmZTM1OWZhN2RhMmEyNjY5NWQxMDEyYzAwMjcwNWE0NzJhOGJiMTM5MjcwNzFkMzFkM2E5MTViYjBhMWI4NDY3ZGVkMmQyZmIxOGIyYjkyOWI4NzZhN2NiZmI5YjhiZjQ3NzAzZThiYmRjNzRlNTFmZmM4YjlhYzBmZDI3MTlkNmQ3NDQ2OGI5YjljMWI5ZTVlNWViOWU1OGViMmZmNDZlOTNjZmQxMmZhNjQ0NzA4MDg4OTg5NWM3MmM4MjU5OThhMWZlYjAwZWI5MWRiMjJiZTdmYTQ1ZTc5Zjg3ZjFmZWIyZTdmY2E5NTlkNWFkZTU2YmZjYjNiZWM3YWM2ZjQ4ZDU4N2U4ZWRmMmRhMzY3M2I2MzVlYmNmZmU4YWNkZTAwNzJkYzY2YjhmMmZjYTU2MjIzZjJhNjc5NTM5N2NjYjVmYWFlZWFhY2MzMzllYTA2ZjkxZDA1NDdlNWZmYTRkZjhkNDhmODdkMzM1Y2YxYmU5ZDZjOGJjZDJjYzBhYzZhYTQ5NjJjMjU4OThhOWRiNjJhYThjYzdhODAzMWJkNzc2NDUyZWJhYTRkYzliZTBlM2EyZWZkNGIxMjUxNDhlYTNlYjlhYTU2YmZhNzA5ZjhlYTJkNDdlMWFlNjUxMDU5YmEzMTZiNTNlNTI2MTFjODYxMjFkODljYjAxZDM5ODYzNjIwMTIwZGQ0OWM1NTczODk3ODhlYzJkZWM3NTFiNWI0Yjg4YTVkNDYzODY0NDhlMzY4ZTQ2NGYzNzk3NjU2NjQ1MzhkZjE5ZWUzMzU4YTZiOTlmYzI1YjcwYjY5M2ZkODYwZmNiNWE5MzM5YWE2ZjA3ZjEzZDk1YjcwOTY5MzZmYWJjY2IwNWZjNTY1MGE1Y2M3MGRiY2NjODkyMDQwMTgwMjUzNzAwOGViNTZjYjJiYmI2YmZiNDhlZWVjZTY0OWUwOTQ2NTFkMGU0MWZmYmY2YTAzOWUzYzY3MmMzYzU1YmIxODgwYzQ2M2I3MTI3OWVmM2E0NzhmMjliMTkzMGZhYzZmOGM2MzZjZjVhYWViOGIzMTFiMTQxYTA5N2U1MzhmZDc3NTdlYjhmYjJhZDFlMzBlN2Y3Y2NkNTMwMGZlYzJkYmZjODZhYTMyOTc0OGNiMDUyNzE4ZjdmN2VhNzAzYTBlYTcxOWQ4NzdhZGJhNzFmYmVhOGNiYjlhZTNmODMxZWRiZmIyYzk0N2I1M2U0ZDgzZmEzOWYzZmQzMTI5OTM5YjljYzcyOTdlNmViY2RlNTU5ZTczNTdjZjFkNzFmYmRiZGU4M2QzZTIyZGJmM2QyYThkZmEzYjMzY2RjNDVhOWUxMzliZTFiY2QxMmJhODNjODM5ZDZkYzIxMDQ4MDdkNDIzNjIwMTAwZTA2NDgxNTc5ZjFkNzI3YzM3YmUwM2ZkYTJkYmYzZDJiM2E1ZjMzZWZmZTlkZjBmOTdmNDczZmU5ZWYxYzk2NzEzNWMyNTk3OTg1N2Q0NjRkN2NjMmM0ZTRmNThmZTBkYjkwZmNiOThlM2RjZDdkMzRmNzJkYzUxNjExMjJjMjIxMTJjNGRmYzBkZjliYjFjZDk3MDcyYzYxOGIwNzAwN2E3MDdkZjNkYWJkZTU4Nzc2YzdkYjVmM2I2YmM4ZTJkNjJjMGNhZWE4ODk3YThhNThiZWUzNjE4Y2FmNWMxMmUxNDFlZTQxMDNhNTY5ZGI0Yjg0NjUyNzM2Zjg3YzdhMzNhYmI5NGU0OTI4MjVjYWZiOWQ0YmMzMWZjOWNkMzNmYjFjM2ZlNDVhOTJhYzBlMWU4ZTQ4MzQxZDNlMTk1MGE0OTFkYWM0YWVhN2FhOTA4MDExNTlkZGFiMDhkYTE5YTQ3MTRlOTYyODBkNDdhOGNmZTE4ZWFkMTRmYzQzYThlODczMGI5Yjk2MTIxNDhlNDkxNWE1Mjc2MGM3Y2I3MDhhY2RjYWRiMTIwOWU0NmViOGFmMjJjZmMxNjQ4ZTI5MjY1NWI2MzI0NjI1NDEyY2Y3NmE1OTQ4NjNjYzNkNWVhMTg1NmRjNjQ2ZDViM2FlMzQzZDFlZTBjM2U3ZTk3NjkyZjkxMWY5NTE3M2M0MDg0NGZlODhmNjFlZGVkNWYzNGUxY2QwMTE5NTk3NDZkM2YyYWU1ZDdmNTc1ZjRiMWM2ZTM2ZGJlYWFmZTAyYTZhYzlhZTEzMjBlYjhiZjI4YzNlMDViZmUxODliNGJmYTNmODU0MjJkOTU4ZTEzOTIzODVkMTUwYjdhYjE5NjAzMmM3MzkzZDRlZjkzZDZhMmI4ZmFlYjg1ZWYzNTRiN2QwNzg4ZjRiNmJiNTU4ZDZlOTY0MDQ4Mjg1OThjNmExMzkwZjM5NjYzZTljMmY1YzhlYjU2YmQzMzRkYjBkMzIwMzBkODU5YzE2YjE5MzkyYjEyMDUwNGUzMTkzZjc1N2FiYmIwYjNiYzQ5NTJlNmRhMjk1NjY0MTFjODFkMDFlNzUwNDkwMGZjODEyNGZjYjM1MTRkYTdiMjVhNWFkMWE5NmQyZGZjMWI5OWFlNGJkODQ5MDQ1NmYyNzIzNGFmMmRjOTQyMDllNTBjNDg2M2NhMDkxOGY1NjNiZmIxYTljZTBlYmRmMGI3NGRkNjEzZjczNjYzZjhmYmE1NTgxMTkyMzllNTcyMTg4MjEwMTZjZjI4ZTg0OGRiYTY0ZjRhYjkxZTFjZDAzNmM2OGRhN2VjMDgxZmFiYWY0MjMwNDc0ZWUzNmFmYTQxYTE2OGQwNWNhNWQ0M2E1NTk0NTM0NjMwOGU5MGE4MmJiOTNiN2I2ZTQ5ZmJjZDdhZTcyNmI0ZDllMjg0NTcyOTFlMzhhZTc5NmRiODYzNTRiOWI3OTBjNzM0NTY1MzQ5MWI4ZWFhYzIzNjIwOGZiYzU3MjdkOWI1YWFjN2U1OGJjYjJiNjc0M2VhNWI4ZDVkNmRkZDk4ODBjNWI5NTljMTM5MjQ5ZTZlZTcyNmJhYjM4ZDNmOTIzYWNmZjAwNzdjZmY5NmQ1Y2JmNjEzZGRkYWRiODViNWJiOTIxNTdjM2IwMDkxYjY1ODgxOTNlYTQyN2IwZWY1ZGQ4MzA5Y2EzMmVjZDZmOGYzZWNlMmNjOTQ2MmUzZGZiZDczZTNkMTgzN2Y3ODJkNjA5MjViNWQ0YTAzNzRiMWM4ZjEzNTllYjAyNzc4ZDk1MTk4MzEwOGU0ODAzOTdhZjRjZTA3N2FlYTZlMDM2Mjc0Mzk1ZGI3NjZiZWJhNjI3ZGM5OTljOTM1Y2JkYzQzMzRmNzVhNmNkZjE5NzhmMzM0NzA0Y2QxMDY1OGQ3ZDVlNTMwMjdkMmEwOWQ4OWFlYTBlMDExZmM0NGY5ZmY2ZGI5ZmNlNmFmMzNhMTI4YThmN2ViN2NmOGY0N2I4NzI4YzljYmI3N2FlM2NmYjJhN2M1OTc5YzBmYTg2YjlhODRiYzQ5YzM2NWRlYzA5ODNlMzE5MWJmODUwOGExZDg2NTcxOTU1MGRkYzljNjdhNTQzNDEzNzgzOWYwNTE1Y2RlNjg2OTY0MjQyNTQwOTEyNDYwMTgzMDA1NzJhYzQ2NDczMjFmYjFiZTQ3MWI3MmU3NGViMGI5NWU0YjhiMWI2OTk0NDllNmUyNDg5NTg3M2ZmMDA0YjcxZDdlN2Q2YmU0NzQ1ZDIzMmM3ZThhYjFjYjI4NTYzZjBjOWI4MTljMDNiNzRkY2ZlMjZiODk0ZTRiODRjZWM3MDhiZjI4YWQ3ODdkYWRmMDYzYmJlODljMjc2ZTYxNTFjZjNiYWM3NmNlOGJkNDI5NzY2NmVhNDlkYmE5M2U5ZjYxNTIxZTIxNWQ2OGQxNjg2OTY1YWVkODQ5N2Q2OWE4NGViNmRlNGExYzEyZDgyZTBlNzIzOTcxYzk5YzgzOWNlMmE3MmRlYzZjZWRlNjc5YTBiNTgyMjkxZjI1ZDkyMzU1MmQ5ZWI5MjA2ZjVmNDk2MThlNTkyMzkyNDhkNTlhMjZlNjhjOTFiYTljMTE5MWVkYjEyM2VmYWYzNmY3YjNkZDcxYTM1MDlkMmJjMWU1ZDQxMmM4NThkZWIzM2M3ZTYwNjViOWJiMjA4YzY0NjAwN2U2Mzk1MWNjMDgxODJiZWFjZTM3YWNjZDI5N2MxOGQyYjUyYjdkNDZjZWUyZDdlMjYwNmU3ODlhNGI4Yjg5ODIzMDFmNWI5NWM5MDA4Y2Y1YzZjN2U3NTdjM2MyOWMzN2NhNDdkMDc2MWI5Y2U3YzkxOWViOWViZmYwMDdlZDVlOWY4NWY4NzU4OTI3NDNkM2IyNWZjYzM4Yjc1MTk2ZjU2ZTdmZjAwNTM3ZTI2YTRlZDliZTFiNjQ1NTcwNWNhNDg5M2I0OWUyYjliNThhZTYxZTZmMmU1NDBlOWNjYTU0ZTA4YzhjODNiOGZiMGQ3ZDZiY2EyMmEyMmEyYTg1NTUxODAwNzYxNWU4ZDQwOTg1MmRlOWQwNjgwMzM4YTViZDNkYThlYjQwMmViNDY3YjBhNzljNTE0MDIxNDc1YTYzN2EzM2VkNDA2MTZiNzY2NzUxZDFlZjc0ZjBmZTU5YjliNzkyMWU3YzY3OTc5OTRhZTcxZjdkNjhiOGZjMjVlMzQ0OGMyOTVkMWQ4YTgwMDkxN2FlMDFjNzdmZDllZDViYjM4YjM0YTZkNmY0MWI4ZDJkNmUwZGJmOWU1MzMyMjgwNDgwMWQ1ODhkYzExYjgwNDZlMDhkZjdhYTdkZmYwNDcxMjRiN2YxY2I2YmM0ZWQwNWJkYWM4NGRhYzdiOGMyZTMwMDYxNDAwOTgxODVmNDgyM2Y5ZGQ3NmFiYTljOGIyOWRmNjNmMjUzNmQxMGI3NWRjYmMxYWY2ZWJjMWNlMzBiZDQ2ODY1OTM0NzgxNjU0ZjJkYTRmOGEyZmNhMzM5MDcxZTU2NzYyNzM4MDU3M2QwOWM1NmY3ZDAzNGQ0ZDI3NDk4MmMyMzlhNDljYzYwOTkyNjkzMWNmMmI5Mzk2NzM4ZGIyNDkyNzZkYjdkYWE5OTNmMGE3MWRiYTlmMmY4ZTY0NDVjMjk1OGZjYjNiNmUzMjBiZTMyNDZlZTMzOGM5YzI2N2ExYWI5NzBmNTlkZTU4NjkzMTViNmExN2YyNWZkZDAyYzY0OWRmYWI5MmM0ZjRlYzM3YzAxZGIxNWU1Yjc0YWQ3YjkxMmFlYThkNmI1MTI0M2EwYTA3Y2U5ZmNlOTY3MzU1MTYwNmU0ZDE5ZGIxNDY3ZGE5ZmNlODA0M2RlOGRjZDFkNjllNjgwNDRkMWRhOWY0YTNhZDAwNTE4ZGU4YTNhOWEwMGM1MTRhODE0MDNjN2JkMmM1MTQxZjZhMDFkMWQyOTdkZjQ1MDA2MjlkMWRlOTdkZjQwM2U5NGIxNDBhMjgwM2FkM2E1NDUwMGYxOGE1OGNkMWQ3YmQwNjgwN2YyYTMxNDc0YTVkN2JkMDBmMTQ3ZDk0YjM0ZTgwZmZkOQpbRkECAAACVklEQVR42p2U62/SUBTA97cZPxk/6DezmBifH9y/4CMmxiW6aJZtiTOa7cOSaQJTiCQwhTDdgA238CiPUijQ10rfLQVa2l68UIIwxzY9aZrbc87v3HtOz7kzvWkCAHAc+O5Nl5kzbJBzer1/g8Fgt7ai5FdXkMUFjaFHygvATn8/LpsOXLkUvHpZRNIj5UVhMY9gt28k7swKWOl8GIyJA4DA0HgwUN4Jq6oKJuV0eLQ2DIMgyRrLESxPkqRt26e6/YFbrRZNM8fHLMMwmta0LZMtx8nCT8e2NE2jKIoeiK7rJ2EYj200KpVKtVotFgssJ6FH29TWNeLzdRZP8qJaKqEYhkEHGPokbJpdVdNGp8LxWj572EC+iGhA4hnHAW5NoAmWoNvtTsDwG2qH59ebqiJZtoNiuKwokNEUWW9qrhW6jUowhOOpwoYvzHICy8sbvkjiCIHKbCbN8xxcHObKa94Qhtf1Vscb2o3up0zTHMKWDV6u+e8+Wk5mitFfhXtPV9+s+2BrwiLJsgId3nnC95+9D0QPUJyae/7hydKmq+/Djm2/+hS79cKTypX2kPrsvH/54zeoJmg2j5Z7wF4Ppm/O+yLxVIVsPFgMwThuFgPYcWLJTDC6z/FCjWT83/dyRUzR9MdLm3ATimZyJdy//YOkaEGUvkYSuwcpt2bDnGEkRRYNowOTkUXBaLd4SX342je34KnWCfirFVkyOh3L6i/g49Zs6lRpTX1lK/bWuyPL0nhjgTN6282iP5Ltdg0vEzUctqqrdK3j7X3OZQD+/yaZnKG/5TfByVwRIuMExQAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Raft Log Çoğaltma&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/cb8fe4f70649a7bad9aab89fbedfd82b/fcda8/image2.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/cb8fe4f70649a7bad9aab89fbedfd82b/12f09/image2.png 148w,https://blog.hkucuk.com/static/cb8fe4f70649a7bad9aab89fbedfd82b/e4a3f/image2.png 295w,https://blog.hkucuk.com/static/cb8fe4f70649a7bad9aab89fbedfd82b/fcda8/image2.png 590w,https://blog.hkucuk.com/static/cb8fe4f70649a7bad9aab89fbedfd82b/efc66/image2.png 885w,https://blog.hkucuk.com/static/cb8fe4f70649a7bad9aab89fbedfd82b/c83ae/image2.png 1180w,https://blog.hkucuk.com/static/cb8fe4f70649a7bad9aab89fbedfd82b/a878e/image2.png 2048w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;p&gt;Raft algoritması, dağıtık sistemlerde konsensus problemini çözmek için zarif ve pratik bir yaklaşım sunar. Paxos’un karmaşıklığına bir yanıt olarak tasarlanmış olması, onu geliştiriciler için daha erişilebilir ve anlaşılır hale getirmiştir. Lider seçimi, log çoğaltma ve güvenlik gibi temel bileşenlere ayrılmış yapısı, güçlü tutarlılık ve hata toleransı garantileriyle birleştiğinde, Raft’ı etcd, Consul ve ScyllaDB gibi modern dağıtık sistemlerin temel taşı haline getirmiştir. Raft, basitliği ve güvenilirliği dengeleyerek, günümüzün karmaşık ve dinamik bilişim ortamlarında sağlam ve ölçeklenebilir uygulamalar oluşturmak için vazgeçilmez bir araç olmaya devam etmektedir.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Raft_(algorithm&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/Raft_(algorithm&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://web.stanford.edu/~ouster/cs190-winter22/lectures/raft/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://web.stanford.edu/~ouster/cs190-winter22/lectures/raft/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.geeksforgeeks.org/paxos-vs-raft-algorithm-in-distributed-systems/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.geeksforgeeks.org/paxos-vs-raft-algorithm-in-distributed-systems/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.mindbowser.com/raft-consensus-algorithm-explained/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.mindbowser.com/raft-consensus-algorithm-explained/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://arorashu.github.io/posts/raft.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://arorashu.github.io/posts/raft.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2025/raft-algoritmasi-dagitik-sistemlerde-basit-ve-guvenilir-konsensus/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Havacılık Tarihindeki Kilometre Taşları: Wright Kardeşlerden Modern Jetlere]]></title><description><![CDATA[Binlerce yıl boyunca, insanlar gökyüzünde zahmetsizce süzülen kuşlara imrenerek baktılar. Mitolojik İkarus'tan Leonardo da Vinci'nin uçan makine çizimlerine kadar, gökleri fethetme arzusu insan tarihinde sürekli bir hayal olarak kaldı. Ancak bu kadim özlem, 20. yüzyılın başlarında nihayet gerçeğe dönüştü.]]></description><link>https://blog.hkucuk.com/2025/havacilik-tarihindeki-kilometre-taslari-wright-kardeslerden-modern-jetlere/</link><guid isPermaLink="false">https://blog.hkucuk.com/2025/havacilik-tarihindeki-kilometre-taslari-wright-kardeslerden-modern-jetlere/</guid><pubDate>Tue, 08 Apr 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Binlerce yıl boyunca, insanlar gökyüzünde zahmetsizce süzülen kuşlara imrenerek baktılar. Mitolojik İkarus’tan Leonardo da Vinci’nin uçan makine çizimlerine kadar, gökleri fethetme arzusu insan tarihinde sürekli bir hayal olarak kaldı. Ancak bu kadim özlem, 20. yüzyılın başlarında nihayet gerçeğe dönüştü.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/d5ff3c15c3c0927965d70fcfd09cfd27/29007/image.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 66.89189189189189%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAIAAAAmMtkJAAAACXBIWXMAAAsTAAALEwEAmpwYAAACyklEQVR42j3N609ScQDG8fMf9KY3veldb6ytrc0XbbW2ynkBTLuZs/KWzCINxalJqWlqInIHBQUBAS+kQCk3ucnhcBUO54jG3XOwZn9GP1xz++zZ8+4L0fgBKh+m8PxA3by/juu7QJm/4Knlemo47mqOq/p8q2b37s84ocfScKMEiDSKQ8+kcL04SBMFqQKkXhigCJE6IUIRBusAPkwTgABM5YESDDK1XB/UvBRqVoReKEJPFRG6ZIe15Hi5HOpUh1+pIn1ahG2A541esdE1sh5plAYaJEiDuOwRIApAnaoDoEMVo2vig1o/c4I7JVMKZWqJZkusXmNxFhgcVZ9ki6EMNMuDTXLk+bnyWUSgHj36Xp94p4v36mO9+vBr7kYPV80SGka1LqbK3bkc6FAf0PV4tw57q8e7NIk3K9FzkXZVFPpoxIeM+MAmxlyNDm4m2abj4e1fLH2sbW6jR7k/sJFkrcW6Zbu9EhODr2MqbP26WL8BZRriHwxxaNz8a8x8DJSP6XjMlPryI802hCoe1l+tvPuguZNGH6hpaqG20ltHRQypZQQEjDjbiAGQwJ4D+PYsz5bh2zI8a3remuZa03faWFcq712uuHXp2o2bVVS22slxEDM7mSlL6j9zClryEQofIfeenCMWPUVA5i5IXLkRjfs6reX2k/YhuXnBlZU7j2TOjNiZE9nSAsCahvShUhlC6hByNQAQGn9B7Umr3EfA1Irls0AxKZCOzUx/nZsdFynElrDSk11yAznIHDs1lZWA7ShAfo8Q63BavZeUmuFJ5TZjgtf16duwUDOttcp3ozrf0RpSMABwAXJipw6sZMdJG0bak6QNJa1oCbCjp/bkb8fhmR0/c+BnzsO/NuzPToL8GStaIgVLGMhDoSMSSQEEnCL8ZSf+Q8J/eOLHi/t40YflvVjek8x70JwXzbkSZV4060UzvnjmHy277qWREBYpAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Havacılık&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/d5ff3c15c3c0927965d70fcfd09cfd27/fcda8/image.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/d5ff3c15c3c0927965d70fcfd09cfd27/12f09/image.png 148w,https://blog.hkucuk.com/static/d5ff3c15c3c0927965d70fcfd09cfd27/e4a3f/image.png 295w,https://blog.hkucuk.com/static/d5ff3c15c3c0927965d70fcfd09cfd27/fcda8/image.png 590w,https://blog.hkucuk.com/static/d5ff3c15c3c0927965d70fcfd09cfd27/efc66/image.png 885w,https://blog.hkucuk.com/static/d5ff3c15c3c0927965d70fcfd09cfd27/c83ae/image.png 1180w,https://blog.hkucuk.com/static/d5ff3c15c3c0927965d70fcfd09cfd27/29007/image.png 1600w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;h2 id=&quot;wright-kardeşler-ve-havacılığın-doğuşu&quot;&gt;&lt;a href=&quot;#wright-karde%C5%9Fler-ve-havac%C4%B1l%C4%B1%C4%9F%C4%B1n-do%C4%9Fu%C5%9Fu&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Wright Kardeşler ve Havacılığın Doğuşu&lt;/h2&gt;
&lt;p&gt;17 Aralık 1903’te, Kuzey Carolina’nın Kitty Hawk bölgesindeki rüzgârlı kumlarda, Orville Wright ilk motorlu, kontrollü ve sürdürülebilir ağır hava aracı uçuşunu gerçekleştirirken, kardeşi Wilbur da yanında koşuyordu. Wright Flyer adlı uçakları, mütevazı bir şekilde 12 saniye havada kalarak 120 fit (yaklaşık 37 metre) yol kat etti. Kısa olmasına rağmen, bu başarı Ohio’nun Dayton şehrinden gelen bisiklet tamircilerinin yıllarca süren metodolojik araştırma ve deneylerinin sonucuydu.&lt;/p&gt;
&lt;p&gt;Wright kardeşleri öncüllerinden ayıran şey, uçuşun üç temel zorluğunu çözmeye yönelik sistematik yaklaşımlarıydı: kaldırma kuvveti, itme gücü ve kontrol. Onların atılımı, üç eksenli kontrol sistemini geliştirmeleri sayesinde oldu; bu, pilotun uçağı etkili bir şekilde yönlendirmesini ve dengesini korumasını sağlıyordu. Kanat bükülmesi (kanatçıkların öncüsü) ve dümen hareketleri aracılığıyla pilotun yuvarlanma, yunuslama ve sapma hareketlerini kontrol etmesine olanak tanıyan bu yenilik, bugün hâlâ uçak kontrol sistemlerinin temelini oluşturmaktadır.&lt;/p&gt;
&lt;p&gt;İlk uçuşlarını takip eden yıllarda, kardeşler tasarımlarını geliştirerek uçuş sürelerini ve mesafelerini kademeli olarak uzattılar. 1905 yılına gelindiğinde, Wright Flyer III 30 dakikadan fazla havada kalabilir ve karmaşık manevralar gerçekleştirebilir hale gelmişti, bu da pratik hava yolculuğunun mümkün olduğunu gösteriyordu.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/f382992952c0f4d1c10bf5b4af3e6350/133ae/image2.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 56.08108108108109%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABsklEQVR42lWQyY5BURCGz6N6DomYZ20eF6wsiIVYSATBFTFGBJGgiXlodCK8QH99bnrR/+Kmqk79Q11xvV6/JO73+9d/3G63x+Px/Qcm+/1+s9msVqv1en25XASjqwSNWsBBiO3T6bTb7ebz+XA47HQ6zWaTb6/XoxiPx4fDQZzPZ5WDyvF4RHU6nfb7/VqtVqlU6vW6oijlcnkwGPDEAvv4I00tqHAgTLfbbbfb1WoVbTjw2SMeyT8liMYaHOQSiQRagmDb7XY2m9HwRj2ZTFqtVqFQSCaTqmej0SgWi+gSBwNsNBoNw19nRrlcDg63MUqlUplMJpvNWq3WcDhcKpXY5vKdBM7v99vj8YxGI/F8PnGIx+OLxYI88JfLJYr8gtfrxW2kJT8cQpGOV26x2+2oC1JxgM1mUyTwyefzPKTTaUSj0eiHRCAQ8Pl8LpeLOA6Hw+12QxFer5ep0WjU6XQmk0mv12u1WmoKvgaDgT2z2cyq0+mETItWKBSCJdAmczAYpElIBCWw4jD1C03lOCXUCa3w+/1sqA/wY7FYJBIhDtmIY7FYmBMVMhyG1AS0SPwAsCDfnjYdAK8AAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Wright Kardeşler&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/f382992952c0f4d1c10bf5b4af3e6350/fcda8/image2.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/f382992952c0f4d1c10bf5b4af3e6350/12f09/image2.png 148w,https://blog.hkucuk.com/static/f382992952c0f4d1c10bf5b4af3e6350/e4a3f/image2.png 295w,https://blog.hkucuk.com/static/f382992952c0f4d1c10bf5b4af3e6350/fcda8/image2.png 590w,https://blog.hkucuk.com/static/f382992952c0f4d1c10bf5b4af3e6350/efc66/image2.png 885w,https://blog.hkucuk.com/static/f382992952c0f4d1c10bf5b4af3e6350/c83ae/image2.png 1180w,https://blog.hkucuk.com/static/f382992952c0f4d1c10bf5b4af3e6350/133ae/image2.png 1424w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;h2 id=&quot;i-dünya-savaşı-havacılık-olgunlaşıyor&quot;&gt;&lt;a href=&quot;#i-d%C3%BCnya-sava%C5%9F%C4%B1-havac%C4%B1l%C4%B1k-olgunla%C5%9F%C4%B1yor&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;I. Dünya Savaşı: Havacılık Olgunlaşıyor&lt;/h2&gt;
&lt;p&gt;1914’te I. Dünya Savaşı’nın patlak vermesiyle uçak tasarımı ve kabiliyetinde hızlı bir ilerleme yaşandı. Öncelikle keşif amaçlı kullanılan narin makineler, savaşın sonuna doğru özelleşmiş savaş uçaklarına dönüştü. Çatışma süresince avcı uçakları, bombardıman uçakları ve yer saldırı uçakları ortaya çıktı.
Anthony Fokker gibi havacılık öncüleri, makineli tüfeklerin pervanelere çarpmadan pervane yayı boyunca ateş etmesine olanak tanıyan senkronizasyon dişlisini geliştirdi. Manfred von Richthofen (“Kırmızı Baron”) ve Eddie Rickenbacker gibi efsanevi hava aslrı, hava muharebeleri kamuoyunun hayal gücünü ele geçirirken tanınmış isimler haline geldi.&lt;/p&gt;
&lt;p&gt;1918’de savaşın sonunda, uçak hızları iki katından fazla artarak 130 mil/saat (yaklaşık 210 km/saat) üzerine çıkmış, tavan yükseklikleri 20.000 fit (yaklaşık 6.100 metre) üzerine çıkmış ve uçuş süreleri birkaç saate uzamıştı. Metal, yapısal bileşenlerde ahşabın yerini almaya başlamış ve uçak motorları önemli ölçüde daha güçlü ve güvenilir hale gelmişti.&lt;/p&gt;
&lt;h2 id=&quot;havacılığın-altın-çağı-1919-1939&quot;&gt;&lt;a href=&quot;#havac%C4%B1l%C4%B1%C4%9F%C4%B1n-alt%C4%B1n-%C3%A7a%C4%9F%C4%B1-1919-1939&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Havacılığın Altın Çağı (1919-1939)&lt;/h2&gt;
&lt;p&gt;Savaşlar arası dönem, havacılığın askeri bir gereklilikten ticari bir girişime ve popüler bir gösteriye dönüşümüne tanık oldu. Fazla askeri uçaklar, 1918’de Amerika Birleşik Devletleri’nde başlayan hava postası servisi dahil olmak üzere sivil kullanımlara yeniden tahsis edildi.&lt;/p&gt;
&lt;p&gt;Charles Lindbergh’in 1927’de “Spirit of St. Louis” ile gerçekleştirdiği solo transatlantik uçuş dünyayı büyüledi ve uzun mesafeli hava yolculuğunun olanaklarını gösterdi. New York’tan Paris’e yaptığı 33 saatlik yolculuk, 25.000 dolarlık Orteig Ödülü’nü kazandı ve bir nesil havacıyı ve uçak tasarımcısını esinlendirdi.
1932’de Atlantik’i tek başına uçan ilk kadın olan Amelia Earhart, dönemin macera ruhunu simgeledi ve havacılıkta neyin mümkün olduğunun sınırlarını zorladı. 1937’de dünya çevresinde bir uçuş denemesi sırasında ortadan kaybolması, havacılık tarihinin en büyük gizemlerinden biri olmaya devam ediyor.&lt;/p&gt;
&lt;p&gt;Aynı zamanda, ticari hava yolculuğu da şekillenmeye başladı. 1919’da Almanya’nın Deutsche Luft Hansa (daha sonra Lufthansa) ve Hollanda’nın KLM havayolları kuruldu, ardından 1924’te Imperial Airways (British Airways’in öncüsü) geldi. Amerika Birleşik Devletleri’nde, Pan American World Airways, Juan Trippe’nin liderliğinde öncü bir uluslararası taşıyıcı olarak ortaya çıktı.&lt;/p&gt;
&lt;p&gt;Uçak tasarımı bu dönemde önemli ölçüde gelişti. 1925’te tanıtılan Ford Trimotor, ilk tamamen metal yolcu uçaklarından biriydi. 1933’te tanıtılan Boeing 247, tamamen metal yarı monokok yapı, içeri çekilebilir iniş takımı ve otomatik pilot dahil olmak üzere yenilikler içeriyordu. 1935’te ilk kez uçan Douglas DC-3, hız, menzil, kapasite ve güvenilirlik kombinasyonu ile hava taşımacılığında devrim yarattı ve hava yolculuğunu devlet sübvansiyonları olmadan kârlı hale getirdi.&lt;/p&gt;
&lt;h2 id=&quot;ii-dünya-savaşı-jet-çağı-yaklaşıyor&quot;&gt;&lt;a href=&quot;#ii-d%C3%BCnya-sava%C5%9F%C4%B1-jet-%C3%A7a%C4%9F%C4%B1-yakla%C5%9F%C4%B1yor&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;II. Dünya Savaşı: Jet Çağı Yaklaşıyor&lt;/h2&gt;
&lt;p&gt;II. Dünya Savaşı (1939-1945), havacılık teknolojisinde bir başka büyük sıçramaya yol açtı. Uçak üretimi eşi görülmemiş seviyelere yükseldi; sadece Amerika Birleşik Devletleri çatışma süresince 300.000’den fazla uçak üretti.&lt;/p&gt;
&lt;p&gt;Supermarine Spitfire, North American P-51 Mustang ve Boeing B-17 Flying Fortress gibi ikonik uçaklar, Müttefik hava gücünün sembolleri haline geldi. Savaş, uçakların olumsuz hava koşullarının üzerinde uçmasına olanak tanıyan basınçlı kabinlerin ve navigasyon ile hava savunmasında devrim yaratan radarın tanıtılmasına tanık oldu.&lt;/p&gt;
&lt;p&gt;Belki de en önemlisi, çatışma jet itişinin gelişmesini hızlandırdı. 1939’da Alman mühendis Hans von Ohain, dünyanın ilk pratik jet uçağı olan Heinkel He 178’in motorunu tasarladı. İngiltere’de, Frank Whittle’ın paralel çalışması, 1941’de ilk kez uçan Gloster E.28/39’a yol açtı.&lt;/p&gt;
&lt;p&gt;Savaşın sonunda, operasyonel jet avcı uçakları arasında Almanya’nın Messerschmitt Me 262’si ve İngiltere’nin Gloster Meteor’u vardı. 600 mil/saate (yaklaşık 965 km/saat) yaklaşan hızlara ulaşabilen bu uçaklar, yaklaşan jet çağının habercisiydi.&lt;/p&gt;
&lt;h2 id=&quot;jet-devrimi-ve-modern-çağın-başlangıcı&quot;&gt;&lt;a href=&quot;#jet-devrimi-ve-modern-%C3%A7a%C4%9F%C4%B1n-ba%C5%9Flang%C4%B1c%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Jet Devrimi ve Modern Çağın Başlangıcı&lt;/h2&gt;
&lt;p&gt;1952’de British Overseas Airways Corporation (BOAC), dünyanın ilk ticari jet yolcu uçağı olan de Havilland Comet’i tanıttı. Birkaç feci kazaya yol açan erken yapısal sorunlara rağmen, Comet jet seyahat çağına öncülük etti.&lt;/p&gt;
&lt;p&gt;1958’de tanıtılan Boeing 707 ve kısa bir süre sonra gelen Douglas DC-8, jet yolcu uçakları için standart konfigürasyonu belirledi: geriye süpürülmüş kanatlar, kanatların altına ve önüne asılı motorlar ve dairesel kesitli basınçlı gövde. Bu uçaklar seyahat sürelerini önemli ölçüde azalttı ve kıtalararası seyahati milyonlarca kişiye erişilebilir hale getirdi.&lt;/p&gt;
&lt;p&gt;1960’lar uzay yarışına ve ay inişlerine tanık oldu, ancak ticari havacılıkta da muazzam ilerlemeler yaşandı. 1969’da ilk kez uçan Boeing 747, eşi görülmemiş boyutu ve kapasitesi ile uzun mesafeli seyahatlerde devrim yarattı. “Jumbo Jet” lakaplı bu uçak, ilk konfigürasyonlarında 366 yolcu taşıyabiliyordu ve uluslararası hava yolculuğunun demokratikleşmesine yardımcı oldu.&lt;/p&gt;
&lt;p&gt;Bu arada, 1968’de İngiliz-Fransız ortak yapımı Concorde havalandı ve 1976’da ticari hizmete girdi. Mach 2.04’lük (saatte 1.350 milin üzerinde) seyir hızlarına ulaşabilen Concorde, transatlantik seyahat sürelerini sadece üç saatin üzerine indirdi. Teknolojik harika statüsüne rağmen, yüksek işletme maliyetleri ve çevresel kaygılar yaygın olarak benimsenmesini sınırladı ve hizmet 2003 yılında sona erdi.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/0aba337c9d6671600a6f83da828a3b62/1cfc2/image3.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 57.432432432432435%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAACj0lEQVR42h3Q609ScRzH8fOfuNWD1tbWmit70Cpzpc0Hbc3NSvEBolw8YuuBT8ouNpK8pAcPyE1JkMs5CgoqooAIHC6H60FBnYYicTuHY/0L/Wx77bP3vg+/kMJd1PhKhmB5OVrV+iuLoZotTlsTzHq67sywtlTduc96s5fe7J+NDGun2M0M6zpg9w5Z134dmt0uzHmK2t2SGvCV9UR1NUGvxGksRuNxgLEmmdVUfZ1i7en6Wgo0Y0sxa2nGQdGQzHWO7hQUOwW19/f8XmkhUF4kqsZIzRStmUnaEqPNJIganmCWU3UsyVqARB1L0Fi8Cs048+j2uTZQ0/gqmt3igr/8M1DR+Su6YEVHVAEjydjSl7Z4bTV64SDzVuIYD53iZGkpWoGQrTPpSo43gkuMSbm7iO5cgBdYoow9zfqOLqOnLJErbgYyKtOWzOBS2oJ6d8bgzVnCBWOkDA0vHb2V+bu7P/LeqQye4/Cvv6kzJn1yEdrP23yUbjOhWk9OrSRHdITUcSaxF75vFCedxTF7ftR6AvGQmGh694PMMar1vJ/G+oZGJHLL8Li+nftFpDkUqrKw9nhIdzKozQLi+ZxYkxWD1mRhzQHUJQlwpMSrb6EuabTza6Djk5szleJMxDo/O/koBQjkFF9OCRQZPiDP9KOUcI4aUIJLGuqV7nGlPs6o5yrG/MIfEf4UActIARLjT4dFCAnPkgOzVwujsUGUFMxEuBPB3kmCOx6EHvTqH/KWHvUZH/cbm/tNQIvQ/HTAArQO4s9gDGiFsTYx3irGrxbGWkTmJwJTs9AENbQhDc+Ra+3I9Xbkxgv05kv5rQ7F7c454M5rZeMb1X/Kxi7lXY76Hkfd1KNu4qjv94BW/QNJHKlb9rZauQAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Concorde&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/0aba337c9d6671600a6f83da828a3b62/fcda8/image3.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/0aba337c9d6671600a6f83da828a3b62/12f09/image3.png 148w,https://blog.hkucuk.com/static/0aba337c9d6671600a6f83da828a3b62/e4a3f/image3.png 295w,https://blog.hkucuk.com/static/0aba337c9d6671600a6f83da828a3b62/fcda8/image3.png 590w,https://blog.hkucuk.com/static/0aba337c9d6671600a6f83da828a3b62/efc66/image3.png 885w,https://blog.hkucuk.com/static/0aba337c9d6671600a6f83da828a3b62/1cfc2/image3.png 900w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;h2 id=&quot;askeri-havacılık-engelleri-aşmak&quot;&gt;&lt;a href=&quot;#askeri-havac%C4%B1l%C4%B1k-engelleri-a%C5%9Fmak&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Askeri Havacılık: Engelleri Aşmak&lt;/h2&gt;
&lt;p&gt;Askeri havacılık, savaş sonrası dönem boyunca sınırları zorlamaya devam etti. 1947’de Chuck Yeager, Bell X-1 ile ses bariyerini aşarak 43.000 fit (yaklaşık 13.100 metre) yükseklikte Mach 1.06’ya (700 mil/saat veya 1.126 km/saat) ulaştı. 1960’lara gelindiğinde, SR-71 Blackbird gibi uçaklar rutin olarak ses hızının üç katında uçuyor, 80.000 fitin (yaklaşık 24.400 metre) üzerindeki yüksekliklere çıkıyordu.&lt;/p&gt;
&lt;p&gt;İngiliz Harrier “Jump Jet” ile örneklenen dikey kalkış ve iniş (VTOL) uçaklarının geliştirilmesi, yeni taktik olanaklar sundu. 1983’te ilk kez operasyonel olarak kullanılan F-117 Nighthawk ile modern stealth teknolojisi, uçak radar izlerini önemli ölçüde azaltarak hava savaşını temelden değiştirdi.&lt;/p&gt;
&lt;p&gt;Günümüzün F-22 Raptor ve F-35 Lightning II gibi beşinci nesil savaş uçakları, tartışmalı ortamlarda hava üstünlüğünü korumak için stealth teknolojisini gelişmiş aviyonikler, süperkruz kabiliyeti (son yakıcılar olmadan süpersonik uçuş) ve yüksek entegre bilgisayar sistemleriyle birleştiriyor.&lt;/p&gt;
&lt;h2 id=&quot;modern-ticari-havacılık-manzarası&quot;&gt;&lt;a href=&quot;#modern-ticari-havac%C4%B1l%C4%B1k-manzaras%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Modern Ticari Havacılık Manzarası&lt;/h2&gt;
&lt;p&gt;Ticari havacılık endüstrisi, dünyanın neredeyse her köşesini birbirine bağlayan küresel bir ağa dönüşmüştür. Boeing 787 Dreamliner ve Airbus A350 gibi modern yolcu uçakları, kompozit malzemeler ve gelişmiş aerodinamik kullanarak, binlerce mil uzunluğundaki rotalarda eşi görülmemiş yakıt verimliliği ve yolcu konforu sunuyor.&lt;/p&gt;
&lt;p&gt;2007’de dünyanın en büyük yolcu uçağı olarak tanıtılan Airbus A380, tek sınıflı bir konfigürasyonda 853 yolcu taşıyabilir. Değişen pazar talepleri nedeniyle üretimi 2021’de sona erse de (daha küçük, daha verimli çift motorlu uçaklara doğru bir yönelim), A380 merkez-çevre rota tasarım felsefesinin zirvesini temsil ediyor.&lt;/p&gt;
&lt;p&gt;Amerika Birleşik Devletleri’nde Southwest Airlines ve Avrupa’da easyJet ve Ryanair tarafından öncülük edilen düşük maliyetli taşıyıcılar, hava yolculuğunun ekonomisini dönüştürerek dünya çapında milyarlarca insana erişilebilir hale getirdi. 2019’da, COVID-19 pandemisinden önce, küresel havayolları yaklaşık 4,5 milyar yolcu taşıdı.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/904d252b0fe4ca032500a5728ffbfb02/00d43/image4.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 56.08108108108109%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAACqklEQVR42gGfAmD9AFGFwlSHxE6DxF2Ozm+b1F6PzlCFy1eIy1yMzVuKzVqKy1mKy1qJy1yJy1yJy1qJylqIyFqHx1mHxVmHwwBThcBPgsB5otbE0uPv8fPk7fmnvt1jks9Pg8hXh8daiclXh8dXhsdWhsZVhsZVhsZWhsZXhsVYh8RWhcIAVIS/TIC+nK3F9e7m+ff2/f397eXayMPAjavQVorKS3/BVIXEVIXEVITDVIXEVIXDVoXDVILATn69VoLAAFSCvVWGw1F2ont/grGqoNPPzNzb4dXMyN3Ov7/Dy3yh0Ux/vk2AvlSGxVGCwVSDv0t8umiRyLnK6GSOxgBRf7xTgb5Uh8dFY4pUaoFvc3OgoJ/U1+Hj5Ond1M7l4+WzxN5slMpQerBbhr5aiMVnkdDBzeGAt6tMeqoATXmzUHy2OluFbISmXoOzPVFgUFNSeXN4lZCUb3mBYmtzcHN6Z257MjxJvcDNeoaZX2l/a2tyP19mJjFBADNIYoOIk09SVnJyckdKSxonKC41Ny8aIEYiKEo1PEBGTCw2PSMtMztBSYCAf1ZgXhskKCcvNiwyOTpDTABGZItkaHBib4I+VW8wQlElNkYlNkMjND8sKjI7KC1CLjZGQ0ktOEBASVFRWF1yQ1GZdYKNobdJaplMcqUATnq0SXOrTHevUHy1T3etUHWoU3quN1N2MUtoL0djIiUwKCk1HiYwZWhnuqipzaKn3tHQj5WdU2aDVmqKAE11rFB4r1B4rlB3rlF5r1J5r1N7slB2rFJ5r0ZqmUJjj0VqmkVmk05mh1ZthWN7jnOAkmRwf1Noh1FrkgBPdapPdatQdqxRd65Sd61Sd6xTd6pTea9Uea5WfLJWfbRWfLRWfbRVfLVTebNRdq5PdaxTebBWfbZWfLQN2EkH1uq0ugAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Airbus A380&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/904d252b0fe4ca032500a5728ffbfb02/fcda8/image4.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/904d252b0fe4ca032500a5728ffbfb02/12f09/image4.png 148w,https://blog.hkucuk.com/static/904d252b0fe4ca032500a5728ffbfb02/e4a3f/image4.png 295w,https://blog.hkucuk.com/static/904d252b0fe4ca032500a5728ffbfb02/fcda8/image4.png 590w,https://blog.hkucuk.com/static/904d252b0fe4ca032500a5728ffbfb02/efc66/image4.png 885w,https://blog.hkucuk.com/static/904d252b0fe4ca032500a5728ffbfb02/00d43/image4.png 1000w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;h2 id=&quot;jetlerin-ötesinde-havacılığın-geleceği&quot;&gt;&lt;a href=&quot;#jetlerin-%C3%B6tesinde-havac%C4%B1l%C4%B1%C4%9F%C4%B1n-gelece%C4%9Fi&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Jetlerin Ötesinde: Havacılığın Geleceği&lt;/h2&gt;
&lt;p&gt;Havacılığın geleceğine baktığımızda, sektörü yeniden şekillendirebilecek birkaç trend ortaya çıkıyor:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. Sürdürülebilir Havacılık:&lt;/strong&gt; İklim değişikliği konusundaki endişeler, sürdürülebilir havacılık yakıtları, elektrikli itme sistemleri ve hidrojen gücü araştırmalarını yönlendiriyor. Eviation gibi şirketler tamamen elektrikli yolcu uçakları geliştirirken, büyük üreticiler 2030’lar ve sonrası için hidrojen enerjili ticari yolcu uçaklarını araştırıyor.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Kentsel Hava Hareketliliği:&lt;/strong&gt; Joby Aviation, Lilium ve Archer gibi şirketler, kentsel merkezler içinde ve arasında hava taksisi olarak hizmet vermesi amaçlanan elektrikli dikey kalkış ve iniş (eVTOL) uçakları geliştiriyor, bu da kentsel ulaşımda devrim yaratma potansiyeline sahip.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Süpersonik Rönesans:&lt;/strong&gt; Concorde’un emekliliğinden sonra, Boom Supersonic gibi şirketler, daha ekonomik ve çevre dostu tasarımlarla ticari süpersonik seyahati canlandırmak için çalışıyor. Boom’un Overture modeli, 2020’lerin sonlarında yolcuları Mach 1.7 (yaklaşık 1.300 mil/saat veya 2.092 km/saat) hızında taşımayı hedefliyor.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. Otonom Uçuş:&lt;/strong&gt; Uçuş kontrollerinde artan otomasyon, sonunda azaltılmış mürettebat gereksinimlerine ve hatta pilotsuz ticari uçaklara yol açabilir, ancak önemli düzenleyici ve kamu kabul engelleri bulunmaktadır.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5. Uzay Turizmi:&lt;/strong&gt; Virgin Galactic ve Blue Origin gibi şirketler, uzayın sınırına ulaşan yörünge altı deneyimler sunarak havacılık ile uzay uçuşu arasındaki çizgiyi bulanıklaştırıyor ve yüksek irtifa seyahatinde yeni bir sınır açma potansiyeline sahip.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;sonuç-bir-yüzyıllık-dönüşüm&quot;&gt;&lt;a href=&quot;#sonu%C3%A7-bir-y%C3%BCzy%C4%B1ll%C4%B1k-d%C3%B6n%C3%BC%C5%9F%C3%BCm&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Sonuç: Bir Yüzyıllık Dönüşüm&lt;/h2&gt;
&lt;p&gt;Bir asırdan biraz fazla bir sürede, havacılık Wright kardeşlerin 12 saniyelik sıçramasından, yüzlerce yolcuyu neredeyse ses hızında basınçlı konforla taşıyan rutin transatlantik uçuşlara evrildi. Modern uçaklar, uçuş öncülerine bilim kurgu gibi görünecek malzemeler ve teknolojiler içeriyor.&lt;/p&gt;
&lt;p&gt;Bu dikkate değer dönüşüm, insan toplumunu temelden değiştirdi; mesafeleri kısalttı, kültürleri birbirine bağladı ve gerçek bir küresel topluluk yarattı. İklim değişikliği ve kaynak kısıtlamaları da dahil olmak üzere 21. yüzyılın zorluklarıyla karşı karşıyayken, havacılık evrilmeye, dünyamızı birbirine bağlamadaki çok önemli rolünü sürdürürken değişen teknolojik, ekonomik ve çevresel gerçeklere uyum sağlamaya devam ediyor.&lt;/p&gt;
&lt;p&gt;Havacılık hikayesi, özünde insan yaratıcılığının ve azminin bir kanıtıdır; yerçekiminin sınırlamalarını kabul etmeyi reddeden ve gökyüzüne zarifçe tırmanırken hayranlık uyandırmaya devam eden makineler yaratan vizyonerlerin ve mühendislerin bir kroniğidir.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://airandspace.si.edu/explore/stories/aviation-history&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://airandspace.si.edu/explore/stories/aviation-history&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.nasa.gov/centers/glenn/about/history/timeline.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.nasa.gov/centers/glenn/about/history/timeline.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.nps.gov/wrbr/index.htm&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.nps.gov/wrbr/index.htm&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2025/havacilik-tarihindeki-kilometre-taslari-wright-kardeslerden-modern-jetlere/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[CAP Teoremi: Dağıtık Sistemlerde Temel Kısıtlamalar]]></title><description><![CDATA[CAP teoremi, dağıtık sistem tasarımındaki en etkili prensiplerden biri olarak, mühendislerin dayanıklı ve ölçeklenebilir uygulamalar oluştururken karşılaştıkları temel kısıtlamaları ifade eder. İlk olarak Eric Brewer tarafından 2000 yılında öne sürülen ve daha sonra Seth Gilbert ve Nancy Lynch tarafından 2002 yılında matematiksel olarak kanıtlanan [1] bu teorem, dağıtık veri sistemlerinin aynı anda şu üç garantiden en fazla ikisini sağlayabileceğini belirtir; Tutarlılık (Consistency), Erişilebilirlik (Availability) ve Bölünme Toleransı (Partition tolerance).]]></description><link>https://blog.hkucuk.com/2025/the-cap-theorem-fundamental-constraints-in-distributed-systems/</link><guid isPermaLink="false">https://blog.hkucuk.com/2025/the-cap-theorem-fundamental-constraints-in-distributed-systems/</guid><pubDate>Sun, 06 Apr 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;CAP teoremi, dağıtık sistem tasarımındaki en etkili prensiplerden biri olarak, mühendislerin dayanıklı ve ölçeklenebilir uygulamalar oluştururken karşılaştıkları temel kısıtlamaları ifade eder. İlk olarak Eric Brewer tarafından 2000 yılında öne sürülen ve daha sonra Seth Gilbert ve Nancy Lynch tarafından 2002 yılında matematiksel olarak kanıtlanan [1] bu teorem, dağıtık veri sistemlerinin aynı anda şu üç garantiden en fazla ikisini sağlayabileceğini belirtir: &lt;code class=&quot;language-text&quot;&gt;Tutarlılık (Consistency)&lt;/code&gt;, &lt;code class=&quot;language-text&quot;&gt;Erişilebilirlik (Availability)&lt;/code&gt; ve &lt;code class=&quot;language-text&quot;&gt;Bölünme Toleransı (Partition tolerance)&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Bu makale, CAP teoreminin teorik temellerini, pratik etkilerini ve modern dağıtık sistemlerin bu çerçevede nasıl stratejik ödünleşmeler yaptığını incelemektedir. Dağıtık sistemlerle çalışan profesyonel mühendisler için, bu kısıtlamaları anlamak, iş gereksinimlerine ve teknik gerçeklere uygun bilinçli mimari kararlar almak için esastır.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/9e953479fd7b9ba65d7db4b78adc09cb/541fe/image.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 93.91891891891892%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAATCAIAAAAf7rriAAAACXBIWXMAAAsTAAALEwEAmpwYAAACCElEQVR42oVUUW/TMBDu3+edFx4QGntEmoQmMSqtIknR1lFa0W5FwEAqCDW24zRpGsdJnKT7HHclzapycqzYvs93992XdDZPrKoqzEVRSJmlaWaWZm5Z5yA4CELP83x/icGYF8dic8gOgOG9Wq12S6SAi8JwdQxsEgvDEGHNsqzN7BPCsiz7T2TKmFLqaRAhxHK5bBW/B1ZKZ6jjUHo9GDj9PsZoPIa7SKTv+8fAOOCcY0ada21RpJ8IR1KmxyJjN0uz+/n86+J3mGp6jVdeVosoH/0iLqGtijqPCStKWYgOBcuXN5cvLs+702FZFXStTq3Zs/PJm7ErRcwYR/P2wGCUEJKmqdkKpXj7+ePrQe/k+sNza/7Kue/N/paPAPRih+/U7UFfo2Y9aJMbx7c3p7d3Q1/fWZmOGQfkmOf5FoxFURvuAKWgmvtBpZJodib/XKlyM5lOwfmXyUSIBP7rdWw0swVDDNDAp+HQdhzbtvtXg1zwb87JYtaDvt9dXFiW/b7bhQrqnicmcw32PG7S2BGviShU+uMsd0elFiyFua4LqRgVIvgWjC3O/X1JaoLYdyuiP1u9xSlxKeZ/rQI4CIIGYfrDYl5AmZ8kSUOCihBq4u+JBBzgewpqw4uhBILl2vTVqBM1SynbIjExkUySSAyTVVWbFlmuQBJ+DE3ntjybaTffD/rAHgB980NoCfbOogAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;CAP Teoremi&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/9e953479fd7b9ba65d7db4b78adc09cb/fcda8/image.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/9e953479fd7b9ba65d7db4b78adc09cb/12f09/image.png 148w,https://blog.hkucuk.com/static/9e953479fd7b9ba65d7db4b78adc09cb/e4a3f/image.png 295w,https://blog.hkucuk.com/static/9e953479fd7b9ba65d7db4b78adc09cb/fcda8/image.png 590w,https://blog.hkucuk.com/static/9e953479fd7b9ba65d7db4b78adc09cb/efc66/image.png 885w,https://blog.hkucuk.com/static/9e953479fd7b9ba65d7db4b78adc09cb/c83ae/image.png 1180w,https://blog.hkucuk.com/static/9e953479fd7b9ba65d7db4b78adc09cb/541fe/image.png 1654w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;hr&gt;
&lt;h1 id=&quot;üç-garantiyi-anlamak&quot;&gt;&lt;a href=&quot;#%C3%BC%C3%A7-garantiyi-anlamak&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Üç Garantiyi Anlamak&lt;/h1&gt;
&lt;h2 id=&quot;tutarlılık-consistency---c&quot;&gt;&lt;a href=&quot;#tutarl%C4%B1l%C4%B1k-consistency---c&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Tutarlılık (Consistency - C)&lt;/h2&gt;
&lt;p&gt;Tutarlılık, dağıtık bir sistemdeki tüm düğümlerin aynı zamanda aynı verileri görmesini sağlar. Kesin tutarlı sistemlerde, herhangi bir okuma işlemi, hangi düğümün isteği aldığına bakılmaksızın en son yazma işleminin değerini döndürür. Bu özellik, veriler yazıldıktan ve onaylandıktan sonra, tüm sonraki okumaların bu yazma işlemini yansıtacağını garanti eder.&lt;/p&gt;
&lt;p&gt;Resmi olarak, tutarlılık doğrusallık (linearizability) anlamına gelir - işlemler, operasyonların gerçek zamanlı sıralamasına uyan sıralı bir düzende yürütülüyor gibi görünür [2].&lt;/p&gt;
&lt;h2 id=&quot;erişilebilirlik-availability---a&quot;&gt;&lt;a href=&quot;#eri%C5%9Filebilirlik-availability---a&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Erişilebilirlik (Availability - A)&lt;/h2&gt;
&lt;p&gt;Erişilebilirlik, arızalı olmayan her düğüme yapılan her isteğin, yanıtın en güncel verileri içerdiği garantisi olmadan bir yanıt aldığı anlamına gelir. Erişilebilir bir sistem, bazı bileşenler başarısız olsa bile hizmetin çalışır durumda kalmasını sağlar ve tüm istemci isteklerine yanıt verir.&lt;/p&gt;
&lt;p&gt;Matematiksel olarak, erişilebilirlik, her isteğin sonunda bir yanıt alacağı anlamına gelir (canlılık özelliği), ancak yanıt en son durumu yansıtmayabilir [3].&lt;/p&gt;
&lt;h2 id=&quot;bölünme-toleransı-partition-tolerance---p&quot;&gt;&lt;a href=&quot;#b%C3%B6l%C3%BCnme-tolerans%C4%B1-partition-tolerance---p&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Bölünme Toleransı (Partition Tolerance - P)&lt;/h2&gt;
&lt;p&gt;Bölünme toleransı, bir sistemin ağ bölünmeleri - bazı düğümlerin diğerleriyle iletişim kurmasını engelleyen ağ arızaları - olmasına rağmen çalışmaya devam etme yeteneğini ifade eder. Bölünmüş bir ağda, bir bölümdeki düğümlerden gönderilen mesajlar diğer bölümlerdeki düğümlere ulaşamaz.&lt;/p&gt;
&lt;p&gt;Bölünme toleransı, gerçek dünya dağıtık sistemlerinde isteğe bağlı değildir; ağ arızaları kaçınılmaz olarak meydana gelecektir. Gilbert ve Lynch’in kanıtı, bölünme toleransı gerektiriyorsak, tutarlılık ve erişilebilirlik arasında seçim yapmamız gerektiğini gösteriyor [1].&lt;/p&gt;
&lt;h1 id=&quot;teorem-üçünden-i̇kisini-seçin&quot;&gt;&lt;a href=&quot;#teorem-%C3%BC%C3%A7%C3%BCnden-i%CC%87kisini-se%C3%A7in&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Teorem: Üçünden İkisini Seçin&lt;/h1&gt;
&lt;p&gt;CAP teoreminin temel içgörüsü, bir ağ bölünmesi meydana geldiğinde, dağıtık bir sistemin ya tutarlılıktan ya da erişilebilirlikten vazgeçmesi gerektiğidir:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. CP Sistemleri (Tutarlı ve Bölünme Toleranslı):&lt;/strong&gt; Bu sistemler, erişilebilirliğe göre tutarlılığa öncelik verir. Bir bölünme meydana geldiğinde, tutarlılığı korumak için bazı düğümler erişilemez hale gelir.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. AP Sistemleri (Erişilebilir ve Bölünme Toleranslı):&lt;/strong&gt; Bu sistemler, tutarlılığa göre erişilebilirliğe öncelik verir. Bir bölünme sırasında, tüm düğümler erişilebilir kalır, ancak eski veya tutarsız veriler döndürebilir.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. CA Sistemleri (Tutarlı ve Erişilebilir):&lt;/strong&gt; Bu sistemler bölünmelere tolerans gösteremez. Pratikte, gerçek CA sistemleri yalnızca dağıtık olmayan ortamlarda var olabilir, çünkü dağıtık ortamlarda ağ bölünmeleri kaçınılmazdır.&lt;/p&gt;
&lt;h1 id=&quot;matematiksel-kanıt-sezgisi&quot;&gt;&lt;a href=&quot;#matematiksel-kan%C4%B1t-sezgisi&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Matematiksel Kanıt Sezgisi&lt;/h1&gt;
&lt;p&gt;Gilbert ve Lynch’in matematiksel kanıtı [1], tutarlılık, erişilebilirlik ve bölünme toleransını aynı anda elde etmenin imkansızlığını basit bir senaryo kullanarak gösterir:
İki düğümlü (A ve B) ve v değeriyle tutarlı bir durumda başlayan dağıtık bir sistem düşünün. Bir ağ bölünmesi meydana gelir ve A’yı B’den izole eder. Bir istemci, A düğümüne yeni bir v’ değeri yazar. Ardından, farklı bir istemci B düğümünden okur.&lt;/p&gt;
&lt;p&gt;Bu senaryoda:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sistem tutarlılığa öncelik veriyorsa, B düğümü bir değer döndüremez (erişilemez) çünkü en son durumu doğrulayamaz.&lt;/li&gt;
&lt;li&gt;Sistem erişilebilirliğe öncelik veriyorsa, B düğümü A düğümündaki güncellenmiş v’ değeriyle tutarsız olan v değerini döndürmelidir.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bu, bir bölünme sırasında çözülemez bir ikilem yaratır: ya yanıt vermeyi reddederek erişilebilirlikten vazgeçin, ya da potansiyel olarak eski veri döndürerek tutarlılıktan vazgeçin.&lt;/p&gt;
&lt;hr&gt;
&lt;h1 id=&quot;modern-sistemlerde-pratik-örnekler&quot;&gt;&lt;a href=&quot;#modern-sistemlerde-pratik-%C3%B6rnekler&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Modern Sistemlerde Pratik Örnekler&lt;/h1&gt;
&lt;h2 id=&quot;cp-sistem-örneği-güçlü-tutarlılık-ile-redis-cluster&quot;&gt;&lt;a href=&quot;#cp-sistem-%C3%B6rne%C4%9Fi-g%C3%BC%C3%A7l%C3%BC-tutarl%C4%B1l%C4%B1k-ile-redis-cluster&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;CP Sistem Örneği: Güçlü Tutarlılık ile Redis Cluster&lt;/h2&gt;
&lt;p&gt;Redis Cluster, aşağıdaki yapılandırma kullanılarak tutarlılığa erişilebilirlikten daha fazla öncelik verecek şekilde yapılandırılabilir:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;context&quot;&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;github.com/go-redis/redis/v8&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;setupConsistentRedisCluster&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;redis&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ClusterClient &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    rdb &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; redis&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;NewClusterClient&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;redis&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ClusterOptions&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        Addrs&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;    &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;:7000&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;:7001&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;:7002&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;// Require acknowledgment from majority of nodes&lt;/span&gt;
        ReadOnly&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;// Wait for data to be replicated to majority of nodes&lt;/span&gt;
        RouteByLatency&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    
    &lt;span class=&quot;token comment&quot;&gt;// Test connection&lt;/span&gt;
    ctx &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Background&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; rdb&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Ping&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;ctx&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Err&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;nil&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;panic&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;err&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; rdb
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Bu yapılandırmada, bir ağ bölünmesi meydana geldiğinde, yalnızca düğümlerin çoğunluğunu içeren bölüm çalışır durumda kalır. Azınlık bölümü erişilemez hale gelir, tutarlılığı korumak için erişilebilirlikten fedakarlık yapar.&lt;/p&gt;
&lt;h2 id=&quot;ap-sistem-örneği-nihai-olarak-tutarlı-okumalarla-dynamodb&quot;&gt;&lt;a href=&quot;#ap-sistem-%C3%B6rne%C4%9Fi-nihai-olarak-tutarl%C4%B1-okumalarla-dynamodb&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;AP Sistem Örneği: Nihai Olarak Tutarlı Okumalarla DynamoDB&lt;/h2&gt;
&lt;p&gt;Amazon DynamoDB, erişilebilirliğe anında tutarlılık yerine öncelik veren, nihai olarak tutarlı okumalar için bir seçenek sunar:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; AWS &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;require&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token char&quot;&gt;&apos;aws-sdk&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; dynamoDB &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;new&lt;/span&gt; AWS&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;DynamoDB&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;DocumentClient&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Eventually consistent read (default)&lt;/span&gt;
async function &lt;span class=&quot;token function&quot;&gt;fetchDataWithEventualConsistency&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; params &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        TableName&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token char&quot;&gt;&apos;MyTable&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        Key&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token char&quot;&gt;&apos;id&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; key &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;// ConsistentRead: false is the default (eventually consistent)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    
    try &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; result &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; await dynamoDB&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;params&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;promise&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; result&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Item&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; catch &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;error&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        console&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;error&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Error fetching data:&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;error&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        throw &lt;span class=&quot;token builtin&quot;&gt;error&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Bu yapılandırmayla DynamoDB, bölünmeler sırasında okuma hizmeti vermeye devam edecek ancak bölünme iyileşip çoğaltma yetişene kadar eski veriler döndürebilir.&lt;/p&gt;
&lt;h2 id=&quot;crdt-tabanlı-sistemler-cap-ödünleşmeleri-arasında-gezinme&quot;&gt;&lt;a href=&quot;#crdt-tabanl%C4%B1-sistemler-cap-%C3%B6d%C3%BCnle%C5%9Fmeleri-aras%C4%B1nda-gezinme&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;CRDT Tabanlı Sistemler: CAP Ödünleşmeleri Arasında Gezinme&lt;/h2&gt;
&lt;p&gt;Çatışmasız Çoğaltılabilir Veri Türleri (Conflict-free Replicated Data Types - CRDTs), CAP ödünleşmelerini ele almak için yenilikçi bir yaklaşım sunar:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;// Simplified example of a G-Counter (Grow-only Counter) CRDT in Go&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; GCounter &lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    Counts &lt;span class=&quot;token keyword&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Node ID -&gt; Count&lt;/span&gt;
    NodeID &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;NewGCounter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;nodeID &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;GCounter &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;GCounter&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        Counts&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        NodeID&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; nodeID&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;c &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;GCounter&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Increment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    c&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Counts&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;c&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;NodeID&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;c &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;GCounter&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Value&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    total &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; count &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;range&lt;/span&gt; c&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Counts &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        total &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; count
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; total
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Merge function for eventual consistency&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;c &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;GCounter&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Merge&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;other &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;GCounter&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; nodeID&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; count &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;range&lt;/span&gt; other&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Counts &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; existingCount&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; exists &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; c&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Counts&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;nodeID&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;exists &lt;span class=&quot;token operator&quot;&gt;||&lt;/span&gt; count &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; existingCount &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            c&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Counts&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;nodeID&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; count
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Bu G-Counter gibi CRDT’ler, bölünmeler iyileştiğinde çatışmaları otomatik olarak çözmek için tasarlanmış veri yapıları kullanarak, bölünmeler sırasında erişilebilirliği korurken nihai tutarlılık sağlar [4].&lt;/p&gt;
&lt;hr&gt;
&lt;h1 id=&quot;sistem-tasarımı-için-pratik-hususlar&quot;&gt;&lt;a href=&quot;#sistem-tasar%C4%B1m%C4%B1-i%C3%A7in-pratik-hususlar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Sistem Tasarımı için Pratik Hususlar&lt;/h1&gt;
&lt;h2 id=&quot;i̇ş-gereksinimlerini-analiz-etme&quot;&gt;&lt;a href=&quot;#i%CC%87%C5%9F-gereksinimlerini-analiz-etme&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;İş Gereksinimlerini Analiz Etme&lt;/h2&gt;
&lt;p&gt;Dağıtık sistemler tasarlarken, öncelikle spesifik gereksinimlerinizi analiz edin:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. Veri Tutarlılığı Gereksinimleri:&lt;/strong&gt; Uygulamanızın güçlü tutarlılık (örn. finansal işlemler) gerektirip gerektirmediğini veya nihai tutarlılığı (örn. sosyal medya beğenileri) tolere edip edemeyeceğini belirleyin.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Erişilebilirlik Gereksinimleri:&lt;/strong&gt; Uygulamanız için kabul edilebilir kesinti süresini değerlendirin. Kritik öneme sahip sistemler, anında tutarlılık yerine erişilebilirliğe öncelik verebilir.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Ağ Ortamı:&lt;/strong&gt; Altyapınızda ağ bölünmelerinin olasılığını ve sıklığını dikkate alın.&lt;/p&gt;
&lt;h2 id=&quot;pratik-ödünleşmeleri-uygulama&quot;&gt;&lt;a href=&quot;#pratik-%C3%B6d%C3%BCnle%C5%9Fmeleri-uygulama&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Pratik Ödünleşmeleri Uygulama&lt;/h2&gt;
&lt;p&gt;Modern sistemler genellikle ağ koşullarına göre uyarlanan nüanslı yaklaşımlar uygular:&lt;/p&gt;
&lt;h3 id=&quot;ayarlanabilir-tutarlılık&quot;&gt;&lt;a href=&quot;#ayarlanabilir-tutarl%C4%B1l%C4%B1k&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Ayarlanabilir Tutarlılık&lt;/h3&gt;
&lt;p&gt;Birçok sistem, mühendislerin işlem türlerine göre tutarlılık ve erişilebilirlik arasında denge kurmasına olanak tanıyan ayarlanabilir tutarlılık seviyeleri sunar:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;// MongoDB example with different write and read concerns&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; MongoClient &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;require&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token char&quot;&gt;&apos;mongodb&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

async function &lt;span class=&quot;token function&quot;&gt;performOperationsWithDifferentConsistencyLevels&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; client &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;MongoClient&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&apos;mongodb&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;localhost&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;27017&lt;/span&gt;&apos;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    await client&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; db &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; client&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;db&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token char&quot;&gt;&apos;mydb&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; collection &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; db&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;collection&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token char&quot;&gt;&apos;documents&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    
    &lt;span class=&quot;token comment&quot;&gt;// Write with strong consistency (majority write concern)&lt;/span&gt;
    await collection&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;insertOne&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; item&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token char&quot;&gt;&apos;example&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; value&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;42&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; writeConcern&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; w&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token char&quot;&gt;&apos;majority&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; wtimeout&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5000&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    
    &lt;span class=&quot;token comment&quot;&gt;// Read with eventual consistency (primary read preference)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; result &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; await collection&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;findOne&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; item&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token char&quot;&gt;&apos;example&apos;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; readPreference&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token char&quot;&gt;&apos;primary&apos;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    
    await client&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;close&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; result&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id=&quot;devre-kesiciler-ve-yedek-planlar&quot;&gt;&lt;a href=&quot;#devre-kesiciler-ve-yedek-planlar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Devre Kesiciler ve Yedek Planlar&lt;/h3&gt;
&lt;p&gt;Bölünmeleri tespit etmek ve davranışı buna göre ayarlamak için devre kesiciler uygulayın:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;context&quot;&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;errors&quot;&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;time&quot;&lt;/span&gt;
    
    &lt;span class=&quot;token string&quot;&gt;&quot;github.com/sony/gobreaker&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; DataStore &lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    ConsistentStore StronglyConsistentDB
    AvailableStore EventuallyConsistentCache
    circuitBreaker &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;gobreaker&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;CircuitBreaker
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;NewDataStore&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;DataStore &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    cb &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; gobreaker&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;NewCircuitBreaker&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;gobreaker&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Settings&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        Name&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;        &lt;span class=&quot;token string&quot;&gt;&quot;database-circuit&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        MaxRequests&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        Timeout&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;     &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; time&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Second&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        ReadyToTrip&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;counts gobreaker&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Counts&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;bool&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            failureRatio &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;float64&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;counts&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;TotalFailures&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;float64&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;counts&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Requests&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; counts&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Requests &lt;span class=&quot;token operator&quot;&gt;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; failureRatio &lt;span class=&quot;token operator&quot;&gt;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0.5&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;DataStore&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;// initialize stores...&lt;/span&gt;
        circuitBreaker&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; cb&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;ds &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;DataStore&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;GetData&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;ctx context&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Context&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; key &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;interface&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;error&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// Try strongly consistent store with circuit breaker&lt;/span&gt;
    result&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; ds&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;circuitBreaker&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Execute&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;interface&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;error&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; ds&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ConsistentStore&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Get&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;ctx&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; key&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;nil&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;// Circuit open or consistent store failed&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;// Fall back to eventually consistent store&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; ds&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;AvailableStore&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Get&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;ctx&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; key&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; result&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;nil&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Bu model, sistemlerin mevcut ağ koşullarına bağlı olarak CP ve AP modları arasında dinamik olarak geçiş yapmasına olanak tanır.&lt;/p&gt;
&lt;hr&gt;
&lt;h1 id=&quot;cap-teoreminin-ötesinde&quot;&gt;&lt;a href=&quot;#cap-teoreminin-%C3%B6tesinde&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;CAP Teoreminin Ötesinde&lt;/h1&gt;
&lt;h2 id=&quot;pacelc-uzantısı&quot;&gt;&lt;a href=&quot;#pacelc-uzant%C4%B1s%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;PACELC Uzantısı&lt;/h2&gt;
&lt;p&gt;PACELC teoremi, hem bölünmeler sırasında hem de normal çalışma durumunda sistem davranışını ele alarak CAP’i genişletir [5]:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;PA/EL:&lt;/strong&gt; Bir Bölünme meydana gelirse, Erişilebilirlik ve tutarlılık (Latency) arasında seçim yapın; Aksi takdirde (normal çalışmada), tutarlılık ve Latency arasında seçim yapın.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bu uzantı, bölünmeler yokluğunda bile, dağıtık sistemlerin tutarlılık ve gecikme arasında temel bir ödünleşmeyle karşı karşıya olduğunu kabul eder.&lt;/p&gt;
&lt;h2 id=&quot;tutarlılık-modelleri-spektrumu&quot;&gt;&lt;a href=&quot;#tutarl%C4%B1l%C4%B1k-modelleri-spektrumu&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Tutarlılık Modelleri Spektrumu&lt;/h2&gt;
&lt;p&gt;Tutarlılığı ikili olarak görmek yerine, modern sistemler bir spektrum boyunca çeşitli tutarlılık modelleri uygular:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. Güçlü Tutarlılık:&lt;/strong&gt; Doğrusallık, sıralı tutarlılık&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Nedensel Tutarlılık:&lt;/strong&gt; Nedensel olarak ilişkili işlemler tüm gözlemcilere aynı sırada görünür&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Nihai Tutarlılık:&lt;/strong&gt; Tüm çoğaltmalar sonunda aynı duruma yakınsar&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;// Redis example with different consistency models&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; Redis &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;require&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token char&quot;&gt;&apos;ioredis&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Strong consistency with synchronous replication&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; strongConsistentRedis &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;new&lt;/span&gt; Redis&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Cluster&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; host&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &apos;redis&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;node1&apos;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; port&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;6379&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; host&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &apos;redis&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;node2&apos;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; port&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;6379&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    scaleReads&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token char&quot;&gt;&apos;master&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Only read from master node&lt;/span&gt;
    waitCommand&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;     &lt;span class=&quot;token comment&quot;&gt;// Wait for commands to complete&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Eventual consistency with asynchronous replication&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; eventuallyConsistentRedis &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;new&lt;/span&gt; Redis&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Cluster&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; host&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &apos;redis&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;node1&apos;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; port&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;6379&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; host&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &apos;redis&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;node2&apos;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; port&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;6379&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    scaleReads&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token char&quot;&gt;&apos;all&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;    &lt;span class=&quot;token comment&quot;&gt;// Read from any node&lt;/span&gt;
    enableOfflineQueue&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;p&gt;CAP teoremi, dağıtık sistem mühendislerinin kabul etmesi ve yönetmesi gereken temel kısıtlamalar sunar. Bu kısıtlamalar sınırlamalar olarak görülmek yerine, belirli uygulama gereksinimlerine dayalı bilinçli ödünleşmeler yapmak için bir çerçeve olarak anlaşılmalıdır.&lt;/p&gt;
&lt;p&gt;Modern dağıtık sistemler giderek değişen ağ koşullarına ve veri erişim modellerine uyum sağlayan sofistike stratejiler uygulamaktadır. İş gereksinimlerini dikkatle analiz ederek ve CAP teoreminin teorik temellerini anlayarak, mühendisler spesifik kullanım durumları için tutarlılık, erişilebilirlik ve bölünme toleransı arasında optimal dengeyi sağlayan sistemler tasarlayabilirler.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;p&gt;[1] &lt;strong&gt;Gilbert, S., &amp;#x26; Lynch, N. (2002)&lt;/strong&gt;. Brewer’s conjecture and the feasibility of consistent, available, partition-tolerant web services. ACM SIGACT News, 33(2), 51-59.&lt;/p&gt;
&lt;p&gt;[2] &lt;strong&gt;Herlihy, M. P., &amp;#x26; Wing, J. M. (1990)&lt;/strong&gt;. Linearizability: A correctness condition for concurrent objects. ACM Transactions on Programming Languages and Systems, 12(3), 463-492.&lt;/p&gt;
&lt;p&gt;[3] &lt;strong&gt;Bailis, P., &amp;#x26; Ghodsi, A. (2013)&lt;/strong&gt;. Eventual consistency today: Limitations, extensions, and beyond. Communications of the ACM, 56(5), 55-63.&lt;/p&gt;
&lt;p&gt;[4] &lt;strong&gt;Shapiro, M., Preguiça, N., Baquero, C., &amp;#x26; Zawirski, M. (2011)&lt;/strong&gt;. Conflict-free replicated data types. In Symposium on Self-Stabilizing Systems (pp. 386-400). Springer.&lt;/p&gt;
&lt;p&gt;[5] &lt;strong&gt;Abadi, D. (2012)&lt;/strong&gt;. Consistency tradeoffs in modern distributed database system design: CAP is only part of the story. Computer, 45(2), 37-42.&lt;/p&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2025/the-cap-theorem-fundamental-constraints-in-distributed-systems/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Mekanik Saatlerdeki Mühendislik Harikaları: Zamanın İzinde]]></title><description><![CDATA[İnsanlık, zamanı ölçme ve takip etme ihtiyacını medeniyetin ilk günlerinden beri hissetmiştir. Güneş saatleri, su saatleri ve kum saatleri gibi ilkel zaman ölçüm araçlarından karmaşık mekanik saatlere geçiş, insan zekâsının ve yaratıcılığının etkileyici bir göstergesidir. Mekanik saatler, 13. yüzyılda Avrupa'da ortaya çıkmaya başladı ve o zamandan beri, hem işlevsellik hem de estetik açıdan sürekli olarak gelişti.]]></description><link>https://blog.hkucuk.com/2025/mekanik-saatlerdeki-muhendislik-harikalari-zamanin-izinde/</link><guid isPermaLink="false">https://blog.hkucuk.com/2025/mekanik-saatlerdeki-muhendislik-harikalari-zamanin-izinde/</guid><pubDate>Mon, 24 Mar 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;mekanik-saatçiliğin-kökleri&quot;&gt;&lt;a href=&quot;#mekanik-saat%C3%A7ili%C4%9Fin-k%C3%B6kleri&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Mekanik Saatçiliğin Kökleri&lt;/h2&gt;
&lt;p&gt;İlk mekanik saatler, genellikle kiliselere veya şehir kulelerine monte edilen büyük, ağır yapılardı. Bu erken dönem saatler, &lt;strong&gt;ağırlık tahrikli sistemlere&lt;/strong&gt; dayanıyordu ve bir &lt;strong&gt;maşa ve çark denge mekanizması&lt;/strong&gt; kullanarak zaman tutuyordu. Bu mekanizma, sonraki yüzyıllarda icat edilen daha hassas sistemlerle karşılaştırıldığında oldukça ilkeldi, ancak o dönem için devrim niteliğindeydi.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/a4f26b6877c629d626738aaa03bd365d/d53ff/image.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 150%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAIAAACjcKk8AAAACXBIWXMAAAsTAAALEwEAmpwYAAAG4UlEQVR42hWU+VNaCRLH39+wP6VmM3GN0TGJRrNREeR4j+txX4/jcYgCKsipIJcgIII33oIYL8R4a4iOoI6Jx3jkWJPJzO7U1lbt/7Jvq7qrun/4VnV1f74NoDKBRilRK4SNSpFGKW5U8lUyGFVwhRK2yaj1ui0sLoNIwoPkejYT5MAQg9rAgAh0iATTQSC3Mra7OHqUGTjJ9q/PxZemQsvJmM/V2qxgWZpE3VZNR4s0FnL09/pj3R3zQ+616WB2MpBJdGcnQsC/Pn/4/ebw9jj7sZDZmo+PD3pH4j4pi0ipLSfVPMVVlTW8LLPrxO92Fr0u83S/93hz5mwvfVdYvX+/DdwW1m4L69f51fuztZl+V1/Y2WFAyDU/sUEcGyKwqQ0wpb6usnSwx5GaimVnI7mV0ZOd9MeT9W8Xe8Dd8dqn97u/Xe3e/ZId7nNODfjtLaiYRWrVoiwQJ2CSTDqNiE1r16FX+fW1xaGjnfRZbuXLee4rJv795t2fn47uL3ecdp2CD6E8SpMScdlM4W6fUSuytqqG43293R5rW7NdLw04moYHvIfb6a9XB/++/wDcX+e/XR99v855LapHD/5SWvywVSNjwWwlqkpPJ+ZmJhu1zS16g9vaUvzwweOHD9QIe//N68ON9NH2IoAN8/Fs77/fTncX4hwqnoivdZgMTWa/2mAfCLnH+0M235DN3ZuIBWiUhmelj3s9pp93lnczMwcbC8Dtyda3q3fff93/dLwS6jKKuHC42xvti3s93niwq7/H7XL7sHZ8IIwIODDYsDQevDzevshvXhxtAn/c5v/z9cMfd/l/3uUDrnYuTBfzuWw6yGFStQqRmMuQ8WFUwlXLRCIeB+GzFsYCl4fL2LY//bIDfD7b+/7rwfebnz+fbdlNOgaVwqBCeo0SRYSohMeDIaww6lRSAZcOgY2odGk8VFgbuStkvmB3vs5v3J1s/XaVO95Oq6V8qZCj1WitJn2bXtZu0lhtLVoNIhawpUI+TKOI+azliZ7T9dHr/NqX83f/hwRj68+bt2d7KZWUyyA3yCUCs1nTGYt2DI95p5JD6Zl4n1OLCgwqnoANRjzWw+zk+d7cP95vATuZmUTMPzUU6g04GCCJRsCZW2W9iXhoamp8aXZtd3FxdXx2eSbc4zDq5CxKndtuyq0mMf3pThIIe2zPysv/Xl1Z+aycQqinkfDWdnRoNLyUDMbCjkYtGglaMtnJdKpXJePXVFcqEcHSROxkeyG3Og3EA04Bm/6kpJjSUO9zWhqViL9Lm4o2J3qauBIJrNTKFaK58cBCMqiSi3gsRjTg6fPZu7scYX8X0K5TIUL+i2q8TCKOdrtUcsTd2bQ7hPa6m9zhEEumFMmVe5no2KBLLhGJOEzMmCG3JdhlcTudgNvaSsbMTmQoUaWhSU2HKIiYnx4y91j4TltjNNQxO+KcHTTbrW0YYTwm5GpVxIPuwv6b7aVpwOMwQSC1BgehclSNKigkEkRqkCKSkVjnZL9tNGqOBVpbdCoGRBawmWw6ZG5G/R3tG+nRg5UEIBGL8XgiBaSJRGI2i00FKQQ8nkIkUkhkkYAvwZKLUUcDyWQmlQySiFwYVsllyX7fZqof8Lvs5WWlT38qLf5b0ePiohfPy4uLiiqfPcXX1rx8UfG0rJSAq8XX1bysfF5RXgqRic1KacTXsZkazEz1AdtLExIeXPzo0Y9//aGmuoKAw1VXVmCBKWFKLQuqAYk4fF0tCVcDEethGtVsaNpdnDjfSedWJoHLg5UF7CwILGSSED4sE9DYVAJmTK9J2KVn+gz06R406NRRGvAYBcT6OgGHNRkPvB4Opgb9wPv9hcv92au3ybfLw852TcTMkvPJnW2IHiFF2qGwiebV0d+m7LGeTgYVFPPYCIdu0WvCXbbkcAS4yG9dFTZuTrcPVxNGlBe2yO1tik49L2oG0xHhoFsy4RPMhlS57GCn3SjnMWQcqE2rGI1HsvNTwPn+wpfTnZvjre3FhJxJMorrNXJu1M6JWqgBEy1oom6MSMYCisLWeMRr5oCvqISXbU2qkMcR9tiBwv5aNjly9GYmt5bkMUA++IpOo0adiE8PLcXE832igU52Zsy4+2aOQyXWVT+XsChBm85v1nrcbsDYopcIOAYZp99rokPkokc/PnlS5nIYh/z6qAOJ2IRjQfVF/rW13fiqqgJbO41E0MkErWop9nCAbovaIOfoFCKvrQWjobSkpKykpIFA9Ljt0wn//FRPamZQo9a8qqoi1dfRKMSqiueEuldcOigVcICN1HDMb283NEb8LpVCSqjH0SEIg5HLgsViBEHkXA6Px2KiUqRZoxFy2Rh5DCqNBlFbG+X/A3xmAdC9nS18AAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Ortaçağ Kule Saati Örneği&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/a4f26b6877c629d626738aaa03bd365d/fcda8/image.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/a4f26b6877c629d626738aaa03bd365d/12f09/image.png 148w,https://blog.hkucuk.com/static/a4f26b6877c629d626738aaa03bd365d/e4a3f/image.png 295w,https://blog.hkucuk.com/static/a4f26b6877c629d626738aaa03bd365d/fcda8/image.png 590w,https://blog.hkucuk.com/static/a4f26b6877c629d626738aaa03bd365d/efc66/image.png 885w,https://blog.hkucuk.com/static/a4f26b6877c629d626738aaa03bd365d/d53ff/image.png 1068w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;h2 id=&quot;yayın-i̇cadı-ve-taşınabilir-saatler&quot;&gt;&lt;a href=&quot;#yay%C4%B1n-i%CC%87cad%C4%B1-ve-ta%C5%9F%C4%B1nabilir-saatler&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Yayın İcadı ve Taşınabilir Saatler&lt;/h2&gt;
&lt;ol start=&quot;15&quot;&gt;
&lt;li&gt;yüzyılın sonlarına doğru, mekanik saatlerde devrim yaratan önemli bir gelişme yaşandı: &lt;strong&gt;yay mekanizmasının icadı&lt;/strong&gt;. Saat yapımcıları, ağırlıklar yerine &lt;strong&gt;yay gücünü&lt;/strong&gt; kullanmaya başladılar, bu da saatlerin önemli ölçüde küçültülmesine ve taşınabilir hale gelmesine olanak sağladı. Sarmal bir yay, kasnak etrafına sarılır ve kademeli olarak serbest bırakılırken enerji sağlardı.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;İlk taşınabilir saatler, 16. yüzyılın başlarında ortaya çıktı ve yaklaşık bir elma büyüklüğündeydi. Bu erken dönem cep saatleri &lt;strong&gt;tambur saatler&lt;/strong&gt; olarak biliniyordu ve genellikle varlıklı aristokratlar ve tüccarlar tarafından sahip olunabilecek lüks eşyalardı. Zaman içinde saatler daha küçük, daha hassas ve daha erişilebilir hale geldi.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/6226e9e5964bc2bb88d2bcc7808209c0/24f3f/image2.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 72.97297297297297%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAIAAABr+ngCAAAACXBIWXMAAAsTAAALEwEAmpwYAAADkElEQVR42h3Se0xbVRwH8PuPZhLjTEb4RxlbGtnifKRjD1gIdqBDBAoI4hi2Hd3qiAUG7b3tfba3LY8WJg/xAWFEZ4jELEExzDk12ZiJTuZ04JYAvS3l8mo7LhvbHO2993A9NPnm/HGSz/md/PJFSL9IBkQyKJEhiZ6XKR4wvMSGFWYm6rl2nbg+4RIUdlneShi4wpvwZCLAGdl0RDYRm1+0ByR7UCZCMskDmpfhLSMo5G+T9g4b3t9LTS577m+6HwBnWGKjwHEPMInQUYCgftGWwHhIJuDkiILf4j3nfM2mQnPBCz7jYa/5PcbDoLcD7H+K457ErAJKALQAqNUtLGEBCZuTsaBIrChnr/w1SNeOeWoGyOrW2hJWl3v7a+JbS4HxeKHrbsB5X4KGEACZCGLhJGtAsgYla0jGeICa9R/rMoeo6svuqu+dld2mY9+QJ85os94/mJp74CXrnzfpJwqxKpFrgFhLYBRiLm6PKMbhS9VZKs2eZLNGVaZOtRZnlB7YrXl1l70iu/JQqur5bTq3y/FQIQQZxg4xxkkYJ2IBmQhsFFXk56YmGV7ZbtqfYspKK1XvtGkP9daV/NvX2FH2mnrHUwVv5aBclEx4OBzBORGfjZG8YvvlRlW+2rB/t071dNHOZ0t2PVeanvyZLntp2CaM2HyFqnfTnqnRl2EhgVyHP5fh2hAmKNKzT1iIR38tPpKOF+UYXk55+8WkPdu3vb4jqTE77VLTse/q8ywHUxzlGYNjF9BlkYY7gxhu2x0S3dxGs3+DnRIM+mK38aizPKfhyF5DRroxc59Le/jzk3n9p97sqi/46gvCOb1IrCpUZEvCJ5A2XvYGY23TD73QXxhizaWE4ejpvL0ns1Wm3H10VWZXQ/6A1/hlD9o8csXGK9SCzMCSJdqCtC/I7cFYO8RTUdf4LD5wsYVEOyx61qSlTFqvVddNffgp00C3dDddnSPuPqZm47DFjiXgXAFI56LcMQfxuu/vldbxGfqHm3XtfVb98foSTUOZhtBVNBr0pyyeD85f++gnzj4Rpe48ov1xx7zELgLEtwRaQvGW6UeefyKOcc42OlHXP1JjPvuGOv0ddXL5idOVWGdl95hh+NaZy1zT72H71ANyZoMMxqmQhAxGwcCy3D8f6/Ov905FOm/Mtf08SQ/92GTHaLwWPT+KX/yDGJtkrwZaJ1bO3Vnr8j/+ZD7WsyD2LEn/A7BIIOABO9/ZAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;16. Yüzyıl Tambur Saati&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/6226e9e5964bc2bb88d2bcc7808209c0/fcda8/image2.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/6226e9e5964bc2bb88d2bcc7808209c0/12f09/image2.png 148w,https://blog.hkucuk.com/static/6226e9e5964bc2bb88d2bcc7808209c0/e4a3f/image2.png 295w,https://blog.hkucuk.com/static/6226e9e5964bc2bb88d2bcc7808209c0/fcda8/image2.png 590w,https://blog.hkucuk.com/static/6226e9e5964bc2bb88d2bcc7808209c0/efc66/image2.png 885w,https://blog.hkucuk.com/static/6226e9e5964bc2bb88d2bcc7808209c0/c83ae/image2.png 1180w,https://blog.hkucuk.com/static/6226e9e5964bc2bb88d2bcc7808209c0/24f3f/image2.png 2179w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;h2 id=&quot;pendulum-saatleri-ve-huygensin-katkısı&quot;&gt;&lt;a href=&quot;#pendulum-saatleri-ve-huygensin-katk%C4%B1s%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Pendulum Saatleri ve Huygens’in Katkısı&lt;/h2&gt;
&lt;p&gt;Mekanik saatçilikte bir diğer önemli kilometre taşı, &lt;strong&gt;Christiaan Huygens&lt;/strong&gt; tarafından 1656’da &lt;strong&gt;pendulum saatinin&lt;/strong&gt; icat edilmesiydi. Galileo Galilei’nin pendulum çalışmalarından esinlenen Huygens, pendulumun sabit salınımını zaman tutma mekanizması olarak kullanarak önceki mekanik saatlerden çok daha hassas bir saat geliştirdi.&lt;/p&gt;
&lt;p&gt;Pendulum saatleri, &lt;strong&gt;dakikadaki hata miktarını dakikadan saniyeye&lt;/strong&gt; düşürerek zaman ölçüm doğruluğunda büyük bir iyileşme sağladı. Bu gelişme, özellikle &lt;strong&gt;deniz navigasyonu&lt;/strong&gt; için kritik öneme sahipti, çünkü denizciler boylam hesaplamaları için hassas zaman ölçümüne ihtiyaç duyuyorlardı.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/d6be207942729ed0293061171b10ba0c/f0551/image3.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 202.7027027027027%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAApCAIAAAC6D54pAAAACXBIWXMAAAsTAAALEwEAmpwYAAAJw0lEQVR42j2VeTiUax/Hnz/e971OMTPPzJjFMraxhyOTHGtCUREpinTsWTvW7Pu+hEGUPZN9zxCypki2hChjSzKFrIVhnnneec+5rve+fv9+rs/9u3/3976B5aqIH81xW+2pO51Ze905ez2P9l8VHA48OegvPh4u47yrPh6tYo1UHL+rZb+vPR6r5tbRaNXRaOXRSCXwrSlxpyNttytzu4P66+Xjg/7CvZ6c1caYlZpQRon/an384XApzGjmkqzRCmi6kT1ZD03VQxPcqgPWnqf+7M3e6cxYb4pdoafOV8d8rggYy3DKs9b1lBZyFwBDKNIDVL/D0fL1tjRGXTI83wpNP+N8pHNmmoCNNiproOBbY/Rc8V+P7QwTzbQmMl1iDFWv8JM85EQDpPA2BNAS5O0Osx7KcI/VV2L2PYG/9EKMVs5cK7Ddmb1GjxvPdJrIcArSkv3rd/Eq1ysWsrLeFMlsNQEqRaBMX+weGR9IkW4JtfZXkZyrSWQzWtkLLzhLXcBOT+7G88S+aEt/RZK7CMadgLLiw5oJkXK0hMIkcXdwhDxtsQwN0i08wRTP5yRMSJNFvUpwgdcGoeWXwE7X48OBgo/5PtSrqndJiDAJVIgExo+M9yLzeZBwvhKkEGmBEElckqKQlzghSARZpCe5OVIHfx+CVvqB3Z687Y6MkQeOJbbnPcXAZDk0VQkbLomMlkTFS4Gxv4s+0SAWq2BrdASylQVSZZDtTprHn19ymIMc5htgr69ws43aE2kdqilnhsdYolHeRDBOHB0rDkaJYeIlMJkKuDwlvpKzAhZ43HU0JkVJZKoyDd4ch5hvgd2XBUdvSxbLwkucDOykhaz40A7CRB9hfCgZ7yeCDxDFZ1IESq6oFOoq2ooKOhDAlvt3oO+jHG6tjXHNRezR8s9VMXU+JsFqUkFShCBFso+4gI0Q1laG6E4RsZESTNClFGjLpatKp5wWXqxJgfcZ0Po4Z2MC2HldCk9UM2hhNGcDawl+GxzalR/vICftpifzwFop/Y5yhBnlhoJk4WXVUAWyPfpkT6QzzFqAdj9A61PAz7eV8GTNN3pqg6+pm7xwgJRQKJnko6NEc9fKun2myvVcg/eFh466cYbadZeUUmQxG31lMLwGceUb08CvoWrOZA03Cb2JjuWuV0NPi0XJi2SYq7UEXCiw0272MVopcHweZZ6srTTofavcweRoZw2GjznsbfbWPLA/Ws+ZaWCPVQ5nevaGW2efl0iWFQjUlCv11qlxV2/1uziRaU3zv/ZAVe5jgvtYuh/n8ACGYQ4MsXdXgcOJZg6jmTNZN5kfMBRrW2cik3+G5CtDdFKXzPpTKcdevcz5nJm8RKKW8lKm/2xuGHTEgv9e0N53gDX9HF5o5Uw/+1AQ+CbRmWaskKcimq8jEXKKeI8i6mGgXm2pZiFBKjI9t1oUu1IYAv8f/rUBsD51wIvt8Ef6VH7AYIp7kbHyY02ZQiNKib5w1tUzXjeuNdjpeWiqVNiZfS1NmXkYALH2/2Ghg02ANdvNhbnhHH/k2xVlV3xVJUtDvshQPluLmHhBOvKa9jMHXQspkWzj85NpQd0hjke/9v7XM3QA7a9x4a5/zGPZ3n2xDmUWGtQ/pCPlibF6kjRH1YiLck0eejflRWPVf+8Puzuf6sba24ThA+holb27CLA+dsDzz7lm7mnTfc3zLlHSzki4C4N+F+QHwvXbPNXp7pouGjIRyhJd927MRFqxthjw0Qpnf5bNnTMX5nDh6caBNI8q58sZmrIZCkI2/EiHc7Iv/dXozmdeB+n4XVYOlBF8dfdil6vRAXME3p/j7Eyzme+Bw+l2eK6FPVHbl+SYaEgJlBNNl8E7k1DX5EgJRnIZNxTpHmf/uiAfLEWsvqqSoy61++EFvPcJ2hhnfxkBDqZauY/j8XhNV7z9Q3ONqNPkB1L4YHHQTRBhigf5sfxhVxQdNGQCyNgKY+V4TaW9qTZ4c5IbLPbnt8A+95LMNMJTDW+o92guRvfPysZKEnwFEL7CiLv8vLJorJcwUgnk8xTlq7FQS7plfLTcDzOHOcwh9kI/8HO0AZ6pZw1XvIixDdaS9ZUWvU8AAwQRHoK80epCDWEm7eHWMljibSI2UkEsWI7E7KHB66PQysDxXB+wN1QLT9UdvKE1BpvHGZ9xIgt6C2LdMCedlQg0F8qrGKPdjmBTbQUTBG/gKTEvFfm9sQb46xtouY/1qQfYfVMFvauERqo6E+2zbmq4kPk9SHymvDx/UvDJN6Sot08/sT997hTJFEQFy4tGG/5x/KkdXurlLPWyZjqB7b7S4+FSaKSyNdYm6qKCqxDGjh9rysOjjge9dEUjTGT9dMWJOJwBAnQTIabpKXAjDM93QovdB1PtwI8eGnukdLcnv8LH5CaZeJUHcZ0XYYlCXOY5qYUDjclEAzR4CoUxBtHGCPDyyRMDyT7wQhc0277/vhVY6yxiDz39Rk8vcNG3IBPv8J40QaGugWhbNK8VlucWHn2eD2OBwzgQcNeQKKsT/xpM8oJnWtkf6PvvWgBmW97RQPFaM7XAWf+GOMGE5+Q5BKjNi74NIn0JKF9+jDMOtAdRxiisERI0P/Gfzki3o+Ha4/f1P0eagBX6o5/dj949vp9kdtaKhDVCIK+jwD8xSBsM0g6NsMUgnQjouzjQA4c2RKGNeXlzjdVWGjPZ72p3B+uBpYas7Y6H7TF2GTZapiIE/RO8ejyI8yiMARJlgMbexGDuCPBfx2LuEpGXsBj9f//W5Gl19LZyv790u78GYFRzf/acqcKgh/Y6tooiloJYSwUhZSRSHgEqoLC6IFr+N4QiD/KilNitUyLmgviRrMC93pJfr59u9lUCM+UpW+0Z8+XRhe6Xki20c+2MBqnuNJdLlgqiBAQf7gRaVUS0JszpdZqnr45c+CX1r43UrY68/de0ta5SYIqWtP48fbUhqTPBaSjLa7oodL4sZrU+Od/BUA/kNUAi/NWVvtanfCiOaIm2X6xOWm/J2nyRu/+6hNlWDEwUxX+npzCfpSxVxc4+DZ99GvGJFjFLi+pLcnY9K3X6JKLM89ZSdcLMk4jZp9ErjWlrzVk73QU/ewu/0POA0fxYZmPi18ak5dqE+bJILs8ojfpUEsGVV/hbGZFFxgtCl6rjR3ICemPdPpZEbXXmbXXk7nTkLjbkAIM5ESv18cs18UvVcQsV0dzmGWVRjKdcT+RUYXB3igejNHquLHq2NObDk6gv9Sk/2nLWW7N/tD6crc4E+qihn6tjFiuj58qjGKURc2VR8+VRCxUxXD+XX65JWKiK+1zD3Vrqdzr1WxOV2ZTOfEZlPkubKnvwX0T5AIvZsOi7AAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Pendulum Duvar Saati&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/d6be207942729ed0293061171b10ba0c/fcda8/image3.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/d6be207942729ed0293061171b10ba0c/12f09/image3.png 148w,https://blog.hkucuk.com/static/d6be207942729ed0293061171b10ba0c/e4a3f/image3.png 295w,https://blog.hkucuk.com/static/d6be207942729ed0293061171b10ba0c/fcda8/image3.png 590w,https://blog.hkucuk.com/static/d6be207942729ed0293061171b10ba0c/f0551/image3.png 862w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;h2 id=&quot;escapement-mekanizması-mekanik-saatlerin-kalbi&quot;&gt;&lt;a href=&quot;#escapement-mekanizmas%C4%B1-mekanik-saatlerin-kalbi&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Escapement Mekanizması: Mekanik Saatlerin Kalbi&lt;/h2&gt;
&lt;p&gt;Mekanik bir saatin en önemli bileşenlerinden biri &lt;strong&gt;escapement mekanizmasıdır&lt;/strong&gt;. Bu dahiyane sistem, güç kaynağından (ağırlık veya yay) gelen enerjiyi kontrollü bir şekilde serbest bırakarak saatin düzenli bir ritimde çalışmasını sağlar.&lt;/p&gt;
&lt;p&gt;Tarih boyunca, çeşitli escapement tasarımları geliştirilmiştir, her biri zaman ölçüm doğruluğunu iyileştirmeyi amaçlamıştır:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Verge Escapement&lt;/strong&gt; - En eski türlerden biri, 14. yüzyıldan itibaren kullanıldı&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Anchor Escapement&lt;/strong&gt; - 1657’de Robert Hooke tarafından icat edildi, pendulum saatlerini daha verimli hale getirdi&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deadbeat Escapement&lt;/strong&gt; - 1675’te George Graham tarafından geliştirildi, daha hassas zaman ölçümü sağladı&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Detent Escapement&lt;/strong&gt; - Deniz kronometrelerinde yaygın olarak kullanıldı&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lever Escapement&lt;/strong&gt; - Modern mekanik kol saatlerinin çoğunda hâlâ kullanılan bir tasarım&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Her bir escapement tasarımı, saatin &lt;strong&gt;doğruluk, güvenilirlik ve verimlilik&lt;/strong&gt; özelliklerini artırmak için geliştirilmiştir.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://blog.hkucuk.com/e9c409ee05595bb9d372eab91b41db2b/Anchor_escapement_animation.gif&quot; alt=&quot;Lever Escapement Mekanizması&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;deniz-kronometreleri-ve-john-harrisonın-başarısı&quot;&gt;&lt;a href=&quot;#deniz-kronometreleri-ve-john-harrison%C4%B1n-ba%C5%9Far%C4%B1s%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Deniz Kronometreleri ve John Harrison’ın Başarısı&lt;/h2&gt;
&lt;ol start=&quot;18&quot;&gt;
&lt;li&gt;yüzyılda, mekanik saatçilikte belki de en önemli ilerlemelerden biri &lt;strong&gt;John Harrison&lt;/strong&gt; tarafından gerçekleştirildi. İngiliz marangoz ve saat yapımcısı, denizcilerin boylam hesaplamalarında kullanabilecekleri yeterince hassas bir zaman ölçüm aracı yaratma zorluğunu aşmak için yaşamını adadı.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Yıllarca süren çalışmalardan sonra Harrison, denizde çalışabilen ve günde sadece birkaç saniye hata yapan ilk güvenilir &lt;strong&gt;deniz kronometresini&lt;/strong&gt; geliştirdi. Onun H4 kronometresi, &lt;strong&gt;sıcaklık değişimleri, nem ve gemi hareketinden&lt;/strong&gt; etkilenmeden doğru zaman tutabilen bir başyapıttı.&lt;/p&gt;
&lt;p&gt;Harrison’ın başarısı, sadece deniz navigasyonunu dönüştürmekle kalmadı, aynı zamanda hassas mekanik saatçiliğin gelişimi için de yeni bir standart belirledi. Onun inovasyonları, modern saat yapımının temelini oluşturan birçok teknik çözümü içeriyordu.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/945bc37b6a784bc582c71b303bd8dc2c/26a94/image4.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 126.35135135135134%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAZCAIAAAC+dZmEAAAACXBIWXMAAAsTAAALEwEAmpwYAAAF50lEQVR42iWUeVDSWRzAf/+1KeaRgqIohwh4a5rrVR6JgqGC3DeCoFJqJKKmJIh4gdfutrPuTrNj7VY7zTTbNk1t21Rrt3Y4tp2b3akZKqhYirKv2Zn3x3vv+z7f+/ug3BhPcpxHfqIHdZsnLfmrou2bmWle/Cw//k4/BSW4nIriZfkKcvw5WT6sTJ/SdO+ir7cUJMB2kjx2EGEQJdGDlgwrSfGkp8FY6V7sTBg/y1tGhssLAga05MH6Qtku/3JKkIwcIMr1F2T7cjK3lKTACuI882K/gujbPZlpnpwMGHenlzDbW5zjK8vzURYgahjYs98pDhvoKiqyuiS0ajeyvAABlIIHnHSv4iQPWtJmCOz4O7xF2X7SXb6K/K2qgoC9tKDa4pA6XqyljtJXR20SxtSzMBoGWk0LUlIQCrK/JNeHneZZmgKDRDt9Jbm+4EpVAFcXIqqLEJJchLIAWc8hVfOSumupenFyPYugY6H30YPUhYFVFHgFFS7O9uFlwqCyXP9y8tZKqv9eGrK2OFjHCpNR8S2Vead+rL16uu3GGfO5Y/ohk6hRmKQF9ukh1UVw4BpAxNnekCofrqYi9hYFaeioJg4GGDx3otPpGHPOjzimzzven/vkuL5svzl2aahBklrHwGkZyBoaoooSoCT7QupCeC0teD89pIEZtp9N7D0oWHe9XF2ZmJu+aP94/c3k+aWF0eXFcbfbdu/asIafCFzT0pG1NMQeagBUUxRYRw/WlQbrBJFVwvRH90643c+WF8fmPt5asN19M3nZ6Xy6sjzhWLizsf50eLC2piSimR2mZQTtK4JDmpLgRiZQFlzJSzVq6c75a/bZkdmpS/Nzd1Y/T66uvVpZeTLz/qZ9fmzt0/ijO8frOEl6LraJhQL2IS0D1cBGp0d752VE/GSV29/9aZu66LCPflp5OG8bt81MrLqml5aezkzddthuvHly2rKf0conHuSgG5mhUBMrrLo4BIXYlBoH/6FDOvv89OzU5ZmpEZfrucv1esH2wu12LS9NfpgZX1q4O/3ywmAj38gnGQX4Fg4aamSFNbIxxDDYtii4SVO0OP2X0z767J8zU2+vud3Tq2szbvfi/McXiwtTbnB+dduyh9JVFm8S4lt5OACjjYKIFKJ3ahJWzdv+4NaRNedd+9ytqbdXPwBX7Y8/f7a5XGsbGxsAvjdyplOZ2afaZhZFGPlYAGPNElJugl9kRGCNMM28j7K68sTtfm2b+duxcH92enRt9cP6+jog111rJ7/VDlbnWMviusRRJgEGxIxuE0ZUFWKC/DbtSApX0bBDbVzH3O211QeLczc+vr+y4ny44XYC+PnY2aNG/jfqtB5ZVJc02iTAAxij5+LbRcSaYkwifksCKVCej+3Zm33xpOnx6PCLid/e/Xvh/pVjV37tGP2993ATDZAWeXSXhGgSYiEdE9XCwR3k4TskRLM0siQ9MDkSSc/A6LjxbfLUU33KPw5pjhoEvxj5R/XFfYp4iyLWUkbqkhDaReFQAwul52HahASjkGSWRlkVsS1cPC8n1KQmt6t3tVXmDmgZxzslfeXxlrKY3vI4qzzaIo/slhLMwnBIV4pu5uAMAmK7mNghjTRLST1l0T2KmJ6KZGtFolWV0CVP6JQnDFTED1bE96vie4FIFtUhiQDVguoZoc1snEFINIkIgOyUkrplkd1lJKsiulcZ/T8zUBHXr4ztV8ZZy6O7yyI7JSRQKoMAB2m+zBNazyO28oHnhDYR0SwmdMlIVmVMvyrmUHUSWANVcUPaNIsiCpBdMmKnlNguxBl4GAj8AfuKUTomGvRZMxej5+NbeLgGJsYojLCUxxw5kDXclPWzgfx2/HuQKpDUL2bFhFYe9kt7VlDge2hwDR1ZXxrawMSC+LV0tDIf3lQaqmOGGYSERiZmcH/WhSFFKxsDKgqawsAPb+GGNTJREDfDm5vhK84Gn1HAnt1BYEI1JSGaEiQQN3PQoIpgYOuKQ8EYtvJxBj5ez8O1cLEH2KE6RvB/5c+NNlUI5R8AAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;John Harrison&apos;ın H4 Kronometresi&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/945bc37b6a784bc582c71b303bd8dc2c/fcda8/image4.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/945bc37b6a784bc582c71b303bd8dc2c/12f09/image4.png 148w,https://blog.hkucuk.com/static/945bc37b6a784bc582c71b303bd8dc2c/e4a3f/image4.png 295w,https://blog.hkucuk.com/static/945bc37b6a784bc582c71b303bd8dc2c/fcda8/image4.png 590w,https://blog.hkucuk.com/static/945bc37b6a784bc582c71b303bd8dc2c/efc66/image4.png 885w,https://blog.hkucuk.com/static/945bc37b6a784bc582c71b303bd8dc2c/26a94/image4.png 1102w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;h2 id=&quot;komplikasyonlar-mekanik-ustalığın-zirvesi&quot;&gt;&lt;a href=&quot;#komplikasyonlar-mekanik-ustal%C4%B1%C4%9F%C4%B1n-zirvesi&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Komplikasyonlar: Mekanik Ustalığın Zirvesi&lt;/h2&gt;
&lt;p&gt;Mekanik saatçiliğin en büyüleyici yönlerinden biri, &lt;strong&gt;komplikasyonlar&lt;/strong&gt; olarak bilinen ek işlevlerdir. Bu karmaşık mekanizmalar, saatin temel zaman gösterme işlevinin ötesine geçerek, saatçilik zanaatının gerçek teknik ustalık gösterileri haline gelir.&lt;/p&gt;
&lt;p&gt;Yaygın komplikasyonlar arasında şunlar bulunur:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Kronograf&lt;/strong&gt; - Bir kronometre işlevi, kısa zaman aralıklarını ölçmek için kullanılır&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Perpetual Calendar&lt;/strong&gt; - Ayın farklı uzunluklarını ve artık yılları otomatik olarak ayarlayan takvim&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Moon Phase Display&lt;/strong&gt; - Ayın geçerli evresini gösteren mekanizma&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tourbillon&lt;/strong&gt; - Yerçekiminin etkilerini telafi etmek için tasarlanmış dönen kafes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Minute Repeater&lt;/strong&gt; - Düğmeye basıldığında saati çalan kompleks bir mekanizma&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Equation of Time&lt;/strong&gt; - Gerçek güneş zamanı ile ortalama güneş zamanı arasındaki farkı gösteren gösterge&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En karmaşık mekanik saatler, &lt;strong&gt;binlerce özenle işlenmiş ve monte edilmiş parçadan&lt;/strong&gt; oluşan ve &lt;strong&gt;yıllar süren çalışma&lt;/strong&gt; gerektiren gerçek mühendislik mucizeleridir.&lt;/p&gt;
&lt;h2 id=&quot;i̇sviçre-saatçiliği-mükemmelliğin-simgesi&quot;&gt;&lt;a href=&quot;#i%CC%87svi%C3%A7re-saat%C3%A7ili%C4%9Fi-m%C3%BCkemmelli%C4%9Fin-simgesi&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;İsviçre Saatçiliği: Mükemmelliğin Simgesi&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;İsviçre saatçiliği&lt;/strong&gt;, mekanik saatlerle neredeyse eş anlamlı hale gelmiştir ve bu durum tesadüf değildir. 16. yüzyılda, İsviçre’nin Cenevre kentinde &lt;strong&gt;Kalvinist reformlar&lt;/strong&gt;, mücevher yapımını yasakladı, birçok zanaatkâr becerilerini saat yapımına yönlendirdi. Bu, İsviçre’nin saatçilik endüstrisine temel oluşturdu.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jura dağları&lt;/strong&gt; boyunca uzanan bu saat yapım geleneği, yüzyıllar içinde gelişti ve mükemmelleşti. İsviçreli saat yapımcıları, kış aylarında çiftçilerin ek gelir kaynağı olarak başlayan bir sistemde, son derece özelleşmiş bir &lt;strong&gt;“établissage”&lt;/strong&gt; (montaj) sistemi geliştirdiler.&lt;/p&gt;
&lt;p&gt;Bugün, &lt;strong&gt;Patek Philippe, Audemars Piguet, Vacheron Constantin ve Rolex&lt;/strong&gt; gibi İsviçre markaları, mekanik saatçiliğin zirvesini temsil etmektedir. Bu markalar, geleneksel zanaatkârlığı modern teknoloji ve yenilikle birleştirerek olağanüstü zaman ölçerler üretmeye devam etmektedir.&lt;/p&gt;
&lt;h2 id=&quot;otomatik-kurma-mekanizmaları&quot;&gt;&lt;a href=&quot;#otomatik-kurma-mekanizmalar%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Otomatik Kurma Mekanizmaları&lt;/h2&gt;
&lt;ol start=&quot;18&quot;&gt;
&lt;li&gt;yüzyılın sonlarına doğru, &lt;strong&gt;otomatik kurma mekanizmaları&lt;/strong&gt; mekanik saatlerde önemli bir yenilik haline geldi. Abraham-Louis Perrelet ve Hubert Sarton gibi mucitler, saati manüel olarak kurma ihtiyacını ortadan kaldıran sistemler geliştirdiler.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Modern otomatik saatlerin çoğu, &lt;strong&gt;“rotor”&lt;/strong&gt; olarak bilinen bir ağırlığın kullanıcının doğal el hareketleriyle dönmesine dayanan bir mekanizma kullanır. Bu dönme hareketi, saatin ana yayını kuran bir dizi dişliye aktarılır, böylece saat sürekli olarak çalışmaya devam edebilir.&lt;/p&gt;
&lt;p&gt;Bu inovasyon, mekanik saatlerin kullanışlılığını büyük ölçüde artırdı ve günümüzde &lt;strong&gt;lüks mekanik kol saatlerinin&lt;/strong&gt; standart bir özelliği haline geldi.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/2d358e791d3632189a3be494eb1ae2c0/9d76a/image5.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 67.56756756756756%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAIAAACgpqunAAAACXBIWXMAAAsTAAALEwEAmpwYAAACVklEQVR42lWSy0pqYRTH90v0BuKguSAE+gBNHQjNBB8gHDQxIUFBSKLALmYSXkhDRDQpMumuhRIphoq3yAoVpUhBj+jp/GwfotZg8+3vW/+1fusifP6wwWDQaDTK5XImk8nn8z+f/n7Z528TxAe+Hx8fyWRyZ2dne3t7d3f3/Pz8+fm50+n0er3hcPgdYjwe/xKLhlO1Wk2lUvf394eHh0dHRyDc3t4+PDxcXV3B0mw2+/3+d7L/YpGWPE9PT5VKZTQa4Qf2y8tLt9t9e3srFouAENflct3d3SER8wuA8YaGQ61We39/z+VykUjk9PSU/IVCIR6PX1xcnJ2dUZHZbJZIJJzFFgjX19eEhw0N2CRE6ff7cTUajchw4Nfj8VitVmRTU1Ozs7N/vkwgA8y4ut3uUCjkcDgWFxdlMplUKjWZTIlEAmyYDw4O4Dw5OREEQaFQtNttGCdilNPT03K5XKVS2e12pVKpVqvn5uboudPpjMViVBsOh4mLA2IOiClTCAQCj4+POp1uZmZmdXWVCtGTXK/XLywsgEr+tbW19fX1paWl5eVlfmlnqVSaYHNFA8l/fHwM3tbWlsVi4TIajRKCg8/n02g0m5ub+/v7+NCXdDr9+vo66XYwGNRqtZTE1c3NjefLyLOxsWGz2RADube3BzmtgZaBoxfXZjJnyIk9Pz9PP+Bh2tSDN5NjEGwBy0d7EDNUlOKqTMS8sRWUzVYaDIaVlRVYmDC7RS3MhvXicHl5mc1m6/U6zr/Wk3URN44eEBhvdpNCvF4vUOCA2mq1fspE+wfu+4jNbJRU6QAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Otomatik Saat Mekanizması&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/2d358e791d3632189a3be494eb1ae2c0/fcda8/image5.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/2d358e791d3632189a3be494eb1ae2c0/12f09/image5.png 148w,https://blog.hkucuk.com/static/2d358e791d3632189a3be494eb1ae2c0/e4a3f/image5.png 295w,https://blog.hkucuk.com/static/2d358e791d3632189a3be494eb1ae2c0/fcda8/image5.png 590w,https://blog.hkucuk.com/static/2d358e791d3632189a3be494eb1ae2c0/9d76a/image5.png 829w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;h2 id=&quot;modern-mekanik-saatçilik-ve-yeniden-canlanma&quot;&gt;&lt;a href=&quot;#modern-mekanik-saat%C3%A7ilik-ve-yeniden-canlanma&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Modern Mekanik Saatçilik ve Yeniden Canlanma&lt;/h2&gt;
&lt;p&gt;Dijital ve kuvars saatlerin 1970’lerde yaygınlaşması, &lt;strong&gt;İsviçre saat endüstrisini&lt;/strong&gt; büyük bir krize sürükledi. Ancak, 1980’lerin sonlarından itibaren, mekanik saatlere olan ilgi yeniden canlandı. Bu rönesans, zamanı ölçmenin yanı sıra, &lt;strong&gt;mühendislik mükemmelliği ve geleneksel zanaatkârlık&lt;/strong&gt; örnekleri olarak mekanik saatlerin takdir edilmesine dayanıyordu.&lt;/p&gt;
&lt;p&gt;Günümüzde, mekanik saatçilik hem geleneğe saygı gösteriyor hem de sınırları zorlayan yenilikler getiriyor. Modern malzemeler ve üretim teknikleri, &lt;strong&gt;silikon parçalar, yeni metal alaşımları ve gelişmiş yüzey işlemleri&lt;/strong&gt; ile geleneksel saatçilik zanaatı, doğruluk ve güvenilirliği daha da artırıyor.&lt;/p&gt;
&lt;p&gt;Aynı zamanda, &lt;strong&gt;bağımsız saat yapımcıları&lt;/strong&gt; olarak bilinen küçük atölyeler ve bireysel ustalar, sıradışı ve yenilikçi tasarımlarıyla mekanik saatçiliğin sınırlarını zorluyorlar.&lt;/p&gt;
&lt;h2 id=&quot;koleksiyonerlik-ve-mekanik-saatlerin-değeri&quot;&gt;&lt;a href=&quot;#koleksiyonerlik-ve-mekanik-saatlerin-de%C4%9Feri&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Koleksiyonerlik ve Mekanik Saatlerin Değeri&lt;/h2&gt;
&lt;p&gt;Günümüzde, yüksek kaliteli mekanik saatler sadece zaman ölçüm aracı olarak değil, aynı zamanda &lt;strong&gt;değerli koleksiyon parçaları&lt;/strong&gt; olarak da işlev görmektedir. Özellikle vintage veya antika mekanik saatler, saatçilik tarihi ve mühendislik ustalığının somut örnekleri olarak yüksek değer taşımaktadır.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Müzayedelerde&lt;/strong&gt; rekor fiyatlara satılan saatler, örneğin Patek Philippe ve Rolex gibi prestijli markaların nadir örnekleri, bu mekanik harikaların sadece geçici moda ürünleri değil, nesiller boyunca değerini koruyabilen &lt;strong&gt;miras parçaları&lt;/strong&gt; olduğunu göstermektedir.&lt;/p&gt;
&lt;p&gt;Mekanik saat koleksiyonerliği, hem tarihsel hem de teknik anlayış gerektiren sofistike bir uğraş haline gelmiştir. Koleksiyoncular, belirli modellerin nadir varyantlarını, önemli komplikasyonları veya ilginç tarihi öneme sahip parçaları ararlar.&lt;/p&gt;
&lt;h2 id=&quot;mekanik-saatlerdeki-zanaatkârlık-ve-sanatsal-değer&quot;&gt;&lt;a href=&quot;#mekanik-saatlerdeki-zanaatk%C3%A2rl%C4%B1k-ve-sanatsal-de%C4%9Fer&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Mekanik Saatlerdeki Zanaatkârlık ve Sanatsal Değer&lt;/h2&gt;
&lt;p&gt;Mekanik saatlerin mühendislik harikaları olmanın ötesinde, aynı zamanda olağanüstü &lt;strong&gt;zanaatkârlık ve sanat eserleri&lt;/strong&gt; olduğunu belirtmek önemlidir. Saat kadranlarındaki ince &lt;strong&gt;guilloche desenleri&lt;/strong&gt;, el oyması &lt;strong&gt;köprüler ve plakaları&lt;/strong&gt;, ve zarif &lt;strong&gt;ısıl mavileştirilmiş vidalar&lt;/strong&gt;, saatçilik zanaatının estetik boyutunu vurgular.&lt;/p&gt;
&lt;p&gt;Lüks mekanik saatlerin yapımında, her bir bileşen genellikle el ile &lt;strong&gt;cilalanır, süslenir ve monte edilir&lt;/strong&gt;. Bu süreç, saat başına yüzlerce hatta binlerce saat alabilir ve nesiller boyunca aktarılan beceriler gerektirir.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yüksek saatçilik&lt;/strong&gt; (Haute Horlogerie) olarak bilinen bu seviyede, işlevsellik ve estetik mükemmel bir şekilde birleşir. Bu saatler, aynı zamanda işleyen sanat eserleri, tasarım örnekleri ve insan yaratıcılığının ifadeleri olarak değerlendirilir.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/4fa2068f8321705ed8ee5fdda384f145/29007/image6.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 75%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAIAAABr+ngCAAAACXBIWXMAAAsTAAALEwEAmpwYAAADf0lEQVR42g2QSW8TBwCF50DS4OAt9uzjLGRzbI89Hs+MPYvjmjTePY638TYm3mICJE4KNG2apkqiVpgWVUAFhEMX0VLRHIJapKqVmkNVoQgJcanEiUOv/Rcd6Z2e9L0nfUCKHK6who5k7ogmlTPkvIY8dU7ljAXaUPcbr4YsDX4kR+sLPr3s1sUcZxOkLkfr4q4hfnwQyFIjCmNt8FBbgOoCHCWtEQqqclCbh0sMqPWr80iJBQs+S5kDc15zzGnKUNqcKTKnB4o0UmaQOodUBSLL22QKzrBEikZXBKzN400e6wbxjoRX/ajCwmUWLvignBdMua1ptwUoMZjKYct+fDk2U1yYU6TJHGtLM6NlBu1KxGZ4dDVIrIj46jyRo1EtCosUGCRDgQmXFVAYvMZiVyKTB113R55dTlO1uKc6P1mm0RqLtnnskoCtSkRTtLVFIk9jS15EYVGFgeMaXGExLY3I1GbZcbnguFEnr1wM1qWJpjShhu29jHtNJtfDY3Uf1BKJhoBnaSRPIzkfkvZAQIPXntG9tuPWhmv/svPrbWatRH/1YfH4nnxD9ex2mS920sffbvRbwToLtYK2WgBLuOG0B9bsaDBRppEnnwdOvg/99CV3f5f/48nm29PeUd/3fsV5dyf05/H6m9d3Xp082ko5Wzx2UcAVBok6wQwFAVXOVmWQ2xueH29L/WvUw335vzd7/55Wfn1w4dNL5EfNuWf3F37/rvj3Lzv9XqzsBdUAXuIQmQIX5qxAmSXaAt6Jjm+16TWFPLxZefvy6vPDxZfPsi+O5BdH6edPWzcP6q/+OvhsLRSZNTUlosJhRQaOOEBA8eENAasGsKIfzzLEz4fdb/bFlSTyQcOzt90symI4xF/rVf857V+v+t+dNmVoWBWwIotkNGEKQxR8aJFB8wwqjJ3b68WPH6bWa/ZFaTqVfO+T7fYP9/KvT7Ye320tcrPp4Iw0ZVY4tBJAZQ8IqAFblkYLLKqpD0/q4yR4fSV86+PonV3xUT/x22P16YP6bi85BhsIs86OG5OkteqHl7xQhoY0eLTixzJeJOGyRO0jMmmxw3qRniokfcU4GZOmOXJ8aGDAfHbgPDg8A+niTnOJhTNeMEmCQM1vU3ki78PizpFFuznutC6LhHDeaDO+Yxw8YxgcsA6d4Sf04VkzM6p3IcMXZkw5GlqiwJjD+j+DwvRl97O9ygAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Saat Mekanizması El İşçiliği&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/4fa2068f8321705ed8ee5fdda384f145/fcda8/image6.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/4fa2068f8321705ed8ee5fdda384f145/12f09/image6.png 148w,https://blog.hkucuk.com/static/4fa2068f8321705ed8ee5fdda384f145/e4a3f/image6.png 295w,https://blog.hkucuk.com/static/4fa2068f8321705ed8ee5fdda384f145/fcda8/image6.png 590w,https://blog.hkucuk.com/static/4fa2068f8321705ed8ee5fdda384f145/efc66/image6.png 885w,https://blog.hkucuk.com/static/4fa2068f8321705ed8ee5fdda384f145/c83ae/image6.png 1180w,https://blog.hkucuk.com/static/4fa2068f8321705ed8ee5fdda384f145/29007/image6.png 1600w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;h2 id=&quot;mekanik-saatlerin-geleceği&quot;&gt;&lt;a href=&quot;#mekanik-saatlerin-gelece%C4%9Fi&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Mekanik Saatlerin Geleceği&lt;/h2&gt;
&lt;p&gt;Dijital çağda ve atomik saatlerin &lt;strong&gt;nanosaniye hassasiyetiyle&lt;/strong&gt; zaman tutabildiği bir dünyada, mekanik saatlerin varlığını sürdürmesi ve hatta gelişmeye devam etmesi dikkat çekicidir. Bu, tamamen mekanik, insan yapımı bir cihazın dayanıklılığı ve büyüsüne dair bir kanıttır.&lt;/p&gt;
&lt;p&gt;Gelecekte, &lt;strong&gt;geleneksel zanaatkârlık&lt;/strong&gt; ile &lt;strong&gt;ileri teknoloji&lt;/strong&gt; arasındaki entegrasyon muhtemelen artacaktır. Yeni malzemeler, bilgisayar destekli tasarım ve hassas üretim teknikleri, mekanik saatlerin performansını ve güvenilirliğini daha da artıracaktır.&lt;/p&gt;
&lt;p&gt;Aynı zamanda, artan dijitalleşme ve hızla değişen tüketim kültürü karşısında, mekanik saatler, &lt;strong&gt;zamansız değer ve kalıcılık&lt;/strong&gt; sembolü olarak konumlarını güçlendirebilir. Bir mekanik saat, doğru bakımla nesiller boyu çalışabilir - dijital cihazların çoğunun kısa ömrüyle çarpıcı bir tezat oluşturur.&lt;/p&gt;
&lt;p&gt;Bugün’ün dünyasında, mekanik bir saat sadece bir zaman ölçüm aracı değil, aynı zamanda &lt;strong&gt;teknik mükemmellik, tarihsel süreklilik ve insan yaratıcılığı&lt;/strong&gt; konusunda bir beyandır.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/d9f83da96814c8f2738eaf902f485902/996b2/image7.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 110.13513513513513%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAWCAIAAABPIytRAAAACXBIWXMAAAsTAAALEwEAmpwYAAADSklEQVR42mP4/fv3v3///uMEQMl/f//+xSrHAMS/fv06dfp0/4QJNbV1OXl5peUVPb19y5cv3759O1zbPzBA19ze3q6hocHAwMDKzi4qLqmgrGJmbpmekV1aUZlbUDRt5uydO3c+fvwIYgqafgYrG1slZVVuHl5Obh4NTS17B6cpU6auWbpwwcTWnqqc0rTY/KyMjvbWPbt3f/r0CU0/yNk/fvw4eepUdk5uZ1f3osVLF86ft2HRjJvbpj3dP/Pk9uWrF8yY1N5cW121dMmSJ4+f/PnzB0UzxEmHDh3OyMzav2f3ykkN27bvunTm+N1LRw7u23HhyIanp9bMrM8pLsidNHny6zdv4PYzACmIYQ8ePHD39F61cMbDvTNOHNj94Nadi5eubNqx58jRI9ePbDy7sLohM6KotPLTxw8Izcje6J84acWCGZcPbbh1+86p02frywvystMaS8o3rlp3++Cyda2JcTEx9x88wK55wfz5EydO6O/tOXb8xKy5c1qaG6uLi1ISErZu3nb78qkj0/Kq89Nu3LqDohnu7V07d6xetfLwocPrNmxKjY+PD/erry6ZNKl//8FDly+eP7e8deGkrsfPXqBrhnDevHmzbvXq06dOHTp0qCguXkVZycHBOiklZe3adS1NDW0VuatXrnz85Bm6Zjj/xvXru3dsP3v6zKnTZ1au2bBw8bIjh49evHh5ybw5Rw4dio6JmzlrNtylDGjpGEjevXMbGGFrVq2aNnXqCmAi3bZ9546d06fPiIyK4uPnnzx5ClANJIIYMPMBkPz48eOO7TuWLV+xYcOmrq5uQyNDFlYWAQFBOUXFGTNn4tQM1w8kv33/8eDREx9fX6CFKmpqAYHBunoGaenpIM1/cWiG56G/f/9t3LRZXlFRTkHR29cvKjrO2NTM1c0NS4BhAojb9uzdx8XDa2hkHBUd6+LqbmBg+P79e4h+fJohxgOVGhgZs3NweHr7ePv4KauoXr5yBRLg+DTDoyQrOweY4U3NLWztHYGZd+/evRB3EdAMcfnSpcvYODj09A0dnVyYWVgXL15MlGaIzbdu3xYQEhKXkDQ0NgU6obunhyjNEG9///7D3z8AWE6JSUgwMTPXNzRANAMA+xLu+m2TGbMAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Gelecek Nesil Mekanik Saat Konsepti&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/d9f83da96814c8f2738eaf902f485902/fcda8/image7.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/d9f83da96814c8f2738eaf902f485902/12f09/image7.png 148w,https://blog.hkucuk.com/static/d9f83da96814c8f2738eaf902f485902/e4a3f/image7.png 295w,https://blog.hkucuk.com/static/d9f83da96814c8f2738eaf902f485902/fcda8/image7.png 590w,https://blog.hkucuk.com/static/d9f83da96814c8f2738eaf902f485902/efc66/image7.png 885w,https://blog.hkucuk.com/static/d9f83da96814c8f2738eaf902f485902/c83ae/image7.png 1180w,https://blog.hkucuk.com/static/d9f83da96814c8f2738eaf902f485902/996b2/image7.png 3077w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;h2 id=&quot;sonuç&quot;&gt;&lt;a href=&quot;#sonu%C3%A7&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Sonuç&lt;/h2&gt;
&lt;p&gt;Mekanik saatler, yüzyıllar boyunca gelişen ve mükemmelleşen olağanüstü mühendislik harikaları olmaya devam etmektedir. Basit ağırlık tahrikli mekanizmalardan, bugünün &lt;strong&gt;mikroskopik toleranslarla&lt;/strong&gt; işlenmiş karmaşık saatlerine kadar, saatçilik sanatı ve bilimi, insan zekasının ve yaratıcılığının en iyi örneklerinden biri olmuştur.&lt;/p&gt;
&lt;p&gt;Bu mekanik şaheserler, sadece zamanı ölçmekle kalmaz, aynı zamanda &lt;strong&gt;insanlığın hassas mekanik sistemlere hakim olma ve zamanın kendisini evcilleştirme&lt;/strong&gt; çabasını da temsil ederler. Küçük bir alanda yüzlerce hareketli parçanın mükemmel uyum içinde çalışması, insan başarısının ne kadar etkileyici olabileceğinin bir hatırlatıcısıdır.&lt;/p&gt;
&lt;p&gt;Dijital çağda bile, mekanik saatlerin devam eden popülaritesi ve değeri, bu hassas makinelerin &lt;strong&gt;salt işlevselliğin ötesine geçen bir anlamı&lt;/strong&gt; olduğunu göstermektedir. Bir mekanik saat, zamansız bir işçilik, yenilik ve mühendislik mükemmelliği eseridir - teknolojinin hızla ilerlediği bir dünyada, geçmişle olan bağlantımızı koruyan ve kutlayan bir nesne.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/2bfaa9549240250b17bfd87560cf9aa7/c1b63/image8.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 79.72972972972973%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAIAAACZeshMAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD20lEQVR42gHQAy/8AEIeBkoiB1ElCFMmClwpCV0rC2QxD2czEGIwD2gzD2AwD202EWMyEXA5E2MzE2s7GHFEHW5EHXxSJnRRKQBHIgdPJgpVKQ1cLA9eLRBlMBJmMhRvORZqNhZuOBZpNhVrOBdrORhrORdwPxxzRB52RyCCVSiBWi6FZDwASyYJUikMWS4SYDIWYzIWZjQXazYZcz0cdUEed0Ifbz4cdEIeekgidUcieE0meEskglYqjWpBlXtVm4lpAFYxFVszFWI4HWc7HmY4G2c4G288HXZCIndHJHZIJHFEH3hKJH5TLH5TKoNcNI1rRZuDYaybfrmskrmulwBiOhplOxtwSSt2TSxvRSVvRyl1SCl1RiV0SCd6UjCAXDqCWzSGZUGFYjuSckmvkmTBs5jMxbHHv6nFvqYAlntcnYhtqJV8rpl9ppF0n4xzk31ojHdjknpho5WDsKiYsqOLta2buK+asauXq6iVsKWLrZhzrpNonYhkAJqIZ6yber6ke8isg8mvicishsethsWshcCqhcGrise0lca2msCymb6ulLekhaKeiqqdg7mxmMjDqsHEtwC+xbi2uqy4vrTAva3Lwq3Vy7bKu6HPv6XSwKPNuZnTwqbPvaTOw7DNxLDNyrnEyb7AwrfV2s7W29HZ3tYAgV4yeVcxi3ZdqpFzhGNImH9ie2NMeWRQhGhOk3RUfmRJhGdIgGtTbVtHkX9ln495mpB/joJtq6qexsm+AIpsRZJvQ4x6YZ2KcnlVN4RlQ3taN2hNLndSLm1KLV9BJHRTMHRXMlZAKXFcQHhbPIdnSYdmQ49uSaKXfwCLgGKJbUiJZ0OQaEKofFWmfVqOZ0h4XkSae16McVeQdVmeeVSWcE6RaEd7Wj6Ga0uGZ0eJb06Te1ahn5EAYkEjiV42jGI/l3FOkXRZnXxenXZUlXZXpoNfm31diXBVnnVPqH5XoXZPimZHgmJFcFc8bVs/enBSdXlrAGJLNmhUO2JOOGRPOWxROnNWPHNVOXdWOo5kQIxlRGZKL2Q+HWtFI2ZHKHNXPH1bPGdONG1SN2pVOF9WPQBDMyJGNCRPOidYQStbQStVPilXPilgRC5kRi9sTDNvTjNdPiFNMRFaQCRbRC5ZRC1eRy50UzdxUzdhTTMAPSsYQS4aRC8aSTIcSjMeTzchUDciVTsmXUEra0w0bk40c1M5bk81Y0cuXEIrVz8pVkApWUMsWUQsXEcuAEswGD0qFEItFkMvF0YvGEoyGkszG1A3IVo/KmhKNG9ROX5fRnFUOmdKMGNIMFg/KU85JFE8JU87JE89JvaRd+sXpsSdAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;İsviçre Saatçilik Müzesi&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/2bfaa9549240250b17bfd87560cf9aa7/fcda8/image8.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/2bfaa9549240250b17bfd87560cf9aa7/12f09/image8.png 148w,https://blog.hkucuk.com/static/2bfaa9549240250b17bfd87560cf9aa7/e4a3f/image8.png 295w,https://blog.hkucuk.com/static/2bfaa9549240250b17bfd87560cf9aa7/fcda8/image8.png 590w,https://blog.hkucuk.com/static/2bfaa9549240250b17bfd87560cf9aa7/efc66/image8.png 885w,https://blog.hkucuk.com/static/2bfaa9549240250b17bfd87560cf9aa7/c83ae/image8.png 1180w,https://blog.hkucuk.com/static/2bfaa9549240250b17bfd87560cf9aa7/c1b63/image8.png 1200w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://bhi.co.uk/publications/horological-journal/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://bhi.co.uk/publications/horological-journal/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.watches-of-switzerland.co.uk/the-history-of-watchmaking&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.watches-of-switzerland.co.uk/the-history-of-watchmaking&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.hautehorlogerie.org/en/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.hautehorlogerie.org/en/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.journals.elsevier.com/journal-of-engineering-and-technology-management&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.journals.elsevier.com/journal-of-engineering-and-technology-management&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2025/mekanik-saatlerdeki-muhendislik-harikalari-zamanin-izinde/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Uçaklar Nasıl Uçar? Kaldırma Kuvvetinin Fiziksel Açıklaması]]></title><description><![CDATA[Uçakların gökyüzünde süzülmesi, yerçekimine meydan okuması çoğumuz için büyüleyici bir manzaradır. Peki uçaklar gerçekten nasıl uçar? Bir uçağı havada tutan kaldırma kuvveti (lift) nasıl oluşur? Pek çoğumuz okullarda ya da popüler bilim kaynaklarında uçağın kanadının üstünden akan havanın, altından akan havadan daha hızlı aktığı ve Bernoulli ilkesine göre basınç farkından dolayı uçakların yükseldiğini öğrendik. Ancak durum gerçekte bu kadar basit değil.]]></description><link>https://blog.hkucuk.com/2025/ucaklar-nasil-ucar-kaldirma-kuvvetinin-fiziksel-aciklamasi/</link><guid isPermaLink="false">https://blog.hkucuk.com/2025/ucaklar-nasil-ucar-kaldirma-kuvvetinin-fiziksel-aciklamasi/</guid><pubDate>Wed, 12 Mar 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Uçakların gökyüzünde süzülmesi, yerçekimine meydan okuması çoğumuz için büyüleyici bir manzaradır. Peki uçaklar gerçekten nasıl uçar? Bir uçağı havada tutan kaldırma kuvveti (lift) nasıl oluşur?&lt;/p&gt;
&lt;p&gt;Pek çoğumuz okullarda ya da popüler bilim kaynaklarında uçağın kanadının üstünden akan havanın, altından akan havadan daha hızlı aktığı ve Bernoulli ilkesine göre basınç farkından dolayı uçakların yükseldiğini öğrendik. Ancak durum gerçekte bu kadar basit değil.&lt;/p&gt;
&lt;p&gt;Bu makalede David Anderson ve Scott Eberhardt’ın kapsamlı açıklamaları üzerinden kaldırma kuvvetinin gerçek fiziksel yapısını inceleyeceğiz.&lt;/p&gt;
&lt;p&gt;(David Anderson ve Scott Eberhardt’ın &lt;strong&gt;&lt;a href=&quot;http://www.aviation-history.com/theory/lift.htm&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;“How Airplanes Fly: A Physical Description of Lift”&lt;/a&gt;&lt;/strong&gt; makalesinden faydalanılarak hazırlanmıştır.)&lt;/p&gt;
&lt;h2 id=&quot;1-uçuşun-geleneksel-açıklaması-ve-sorunları&quot;&gt;&lt;a href=&quot;#1-u%C3%A7u%C5%9Fun-geleneksel-a%C3%A7%C4%B1klamas%C4%B1-ve-sorunlar%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;1. Uçuşun Geleneksel Açıklaması ve Sorunları&lt;/h2&gt;
&lt;p&gt;Birçok kitapta ve derste uçuşun temel prensibi olarak şu ifade edilir:&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;“Kanadın üst kısmından geçen hava, alt kısımdan geçen havaya göre daha hızlı hareket eder. Bernoulli prensibine göre hız arttığında basınç azalır. Böylece üst tarafta düşük, alt tarafta yüksek basınç oluşur ve uçak havaya kalkar.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;p&gt;Fakat Anderson ve Eberhardt’a göre bu yaygın açıklama eksik ve yanıltıcıdır. Bu açıklama iki büyük sorunu içinde barındırır:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Yanlış Yorumlanan Bernoulli İlkesi: Kanadın üst kısmının uzunluğunun daha fazla olması, havanın üst taraftan daha hızlı geçmeye zorlandığını anlatmaz. Bu fiziksel gerçeklere uymayan bir basitleştirmedir.&lt;/li&gt;
&lt;li&gt;Newton’un Yasalarının İhmal Edilmesi: Geleneksel anlatımda hava akışının kanadı aşağı ittiği gerçeği göz ardı edilir.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/734068c9fbac17c0ee4760b467e1577e/8fdfc/image.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 54.72972972972974%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAB7CAAAewgFu0HU+AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/P9b71AAAB6ElEQVR42k1T2ZKbMBDk/39tYz845YfExnGMbW4MQpw6Oj1ivVmqGiFppmn1jCLw8d4H8EumqJsGZVmhIMqyRpZlqMocRV4gzSqiRpIUiOOS+wvaFlBqy4+E6PV6wRgb6ITXWQNnZnij4Ra1Ye0x6R59q1A8Fc6/Bph1wTw7LAuwrB7OkVAUaa1hzUqmhSQ9/Ko4DvDO/EfQzrdnnOfcbrEQWB3WnXOIrLVouw5m0QzaSGTDiVLKDXD+yxb5dn6jx+dPvFvJ14fcqK5rjOMIYy2+h31/3mTfMQwaLa3qOgVrHS1zwbaoqir0fc+J+Uqepin4mqYprtcrzuczTqdTQBzHeN4TqDrFH+7dbjfkeRYKJzxRx+MKhKQsy5B8OByw2+3w4+MjjHvBfh8gc4HE/CSOxyMulwsanlTsC0UZhgErFc4sV88CibqSyrM8x/3xoIoEfwVJgtv9jsczRZayldheHVWN8wxD3+V0kRRACBzZtz58O+lYPfYD2ydgGoC2YUt0QJEC8W+ujZyzyoprHZuRooJCKUpbFZi6BrOi0VUOzeR5HKAZLFhoyUz16tVgVIpxtCp9QGcPzIwfOGqSRu9CjOMEG9qDP+YRxAJZX2iDeNs0L96ckqdpt1Zi3sS95fNCrKz0zLx/0BROHlfx4B8AAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Uçuşun Geleneksel Açıklaması&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/734068c9fbac17c0ee4760b467e1577e/fcda8/image.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/734068c9fbac17c0ee4760b467e1577e/12f09/image.png 148w,https://blog.hkucuk.com/static/734068c9fbac17c0ee4760b467e1577e/e4a3f/image.png 295w,https://blog.hkucuk.com/static/734068c9fbac17c0ee4760b467e1577e/fcda8/image.png 590w,https://blog.hkucuk.com/static/734068c9fbac17c0ee4760b467e1577e/efc66/image.png 885w,https://blog.hkucuk.com/static/734068c9fbac17c0ee4760b467e1577e/c83ae/image.png 1180w,https://blog.hkucuk.com/static/734068c9fbac17c0ee4760b467e1577e/8fdfc/image.png 1725w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;2-kaldırma-kuvvetinin-fiziksel-temeli-newtonun-yasaları&quot;&gt;&lt;a href=&quot;#2-kald%C4%B1rma-kuvvetinin-fiziksel-temeli-newtonun-yasalar%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;2. Kaldırma Kuvvetinin Fiziksel Temeli: Newton’un Yasaları&lt;/h2&gt;
&lt;p&gt;Anderson ve Eberhardt, kaldırma kuvvetinin açıklamasında asıl temel fiziksel prensip olarak Newton’un üçüncü yasasını (Etki-Tepki) öne sürer:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Kanat, havayı aşağıya doğru yönlendirir.&lt;/li&gt;
&lt;li&gt;Buna karşılık olarak hava, kanadı yukarı doğru iter.&lt;/li&gt;
&lt;li&gt;Bu karşılıklı etkileşim, uçakların yükselmesini sağlayan kaldırma kuvvetini oluşturur.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Başka bir ifadeyle, uçaklar havayı aşağı doğru ittiği ölçüde yükselir. Bu prensip aslında uçakların neden daha yüksek bir açıyla (angle of attack) kalkış yaptığını da açıklar. Açı büyüdükçe hava aşağı daha çok itilir, bu da kaldırma kuvvetini arttırır.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/c2d22b1cad945a0c99bae93a34972b82/8fdfc/image2.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 64.1891891891892%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAACXBIWXMAAB7CAAAewgFu0HU+AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/P9b71AAABsUlEQVR42oVTCY7iMBDM/58ISCtlOHICcUJ8JjVdTcwwu0iL1HLi2NV1NMWyLIgxYhxH7HY7HA4H7Pd7XK9XtG37qq7rUFWVrny/XC565n4f9Pl8PiOEgCKlhNvtBgI/Hg/0fY9hGJAb5eJhrinxPenzuiZ47wX0ruDTNKFY11XZ5YtswOJBgvy9huBhTBAAL40DnPOve8QqyMQYoxecc7r+r4zxIt2LVC+qvDax1imoSqbEzOITMzay1m4NnSgKYk1AXQfM8xOQ50iuoFxqz5IzKAG4z6K3rHmeN58nCeYhITnMVrxNz7sKSDMJStl1XaNpGi0+M9FcOWnW8djhdGpRfjWoyhPaukIj3yNTZkeyyKzIgutPCOFXyjGGTbJH00VM5wrODJjFjoUe5lDyJfr07meu98AYSt851P0K+6eEF5UhLU9AAnEOM9g7yKe9F6AwrNuE+esCLwyd7KfMMM/hv/LiS/aP/E3yNUgoUSwKOuxspHNIVP47yJJecuo/rbSFfnPExnGSweZfzsj7M1Ce4bcC8iMyN8iAl8jsPSg2K8tS08/nnGNwdhtqq3v89g3Lr+3pC1dVSwAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Kaldırma Kuvvetinin Temel Fiziksel Mantığı&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/c2d22b1cad945a0c99bae93a34972b82/fcda8/image2.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/c2d22b1cad945a0c99bae93a34972b82/12f09/image2.png 148w,https://blog.hkucuk.com/static/c2d22b1cad945a0c99bae93a34972b82/e4a3f/image2.png 295w,https://blog.hkucuk.com/static/c2d22b1cad945a0c99bae93a34972b82/fcda8/image2.png 590w,https://blog.hkucuk.com/static/c2d22b1cad945a0c99bae93a34972b82/efc66/image2.png 885w,https://blog.hkucuk.com/static/c2d22b1cad945a0c99bae93a34972b82/c83ae/image2.png 1180w,https://blog.hkucuk.com/static/c2d22b1cad945a0c99bae93a34972b82/8fdfc/image2.png 1725w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;3-bernoulli-i̇lkesi-tamamen-yanlış-mı&quot;&gt;&lt;a href=&quot;#3-bernoulli-i%CC%87lkesi-tamamen-yanl%C4%B1%C5%9F-m%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;3. Bernoulli İlkesi Tamamen Yanlış mı?&lt;/h2&gt;
&lt;p&gt;Bernoulli ilkesi kaldırma kuvvetinde rol oynayan gerçek bir fizik yasasıdır. Ancak tek başına kaldırma kuvvetini açıklamaya yetmez. Aslında Bernoulli ilkesi, Newton’un üçüncü yasası ile birlikte ele alınmalıdır.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Kanadın üst kısmında hava gerçekten de daha hızlı akar. Ancak bu hız farkı, kanadın şekli nedeniyle değil, hava akımının kanat yüzeyine yapışma eğilimi (Koanda etkisi) nedeniyle ortaya çıkar.&lt;/li&gt;
&lt;li&gt;Böylece kanat yüzeyinde hava aşağı doğru kıvrılarak bir dolaşım (circulation) oluşur. Bu da üst kısımda düşük basınç bölgesini yaratır. İşte Bernoulli ilkesi bu dolaşım nedeniyle düşük basınç oluşmasını açıklar.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Anderson ve Eberhardt’ın da belirttiği gibi, kaldırma kuvveti, Bernoulli prensibinin Newton mekaniğiyle birleşimi sayesinde daha doğru anlaşılır.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/46a868e185029238617292460e11c3e1/8fdfc/image3.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 63.51351351351351%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAACXBIWXMAAB7CAAAewgFu0HU+AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/P9b71AAAB7UlEQVR42n1TCW7bMBDU/3+VFxSpizaOHdRHJOuwdVA3JXK6s4octwi6wGC15Gr2ZAAR771i/abkeY4kSZCmKbIsUzuOY1yvV7WJcRjhnMM0TVglmOdZnXlBslXPs1PQJuj3rw5vEd7Dd0RhhNvthqZpEPDSGHMn8t4xz7te8RnQ3yuyzsLaScmttQolLIri/sM4OoE4WydYbPH7kM9AWqrFQ9ClXUpY1/VHGR5l6aVvHpfLgvgCvJ0NdskZVW3Rd0DXeVSVx34v97GXHi6ZkyMgWV0bwSwN9zIIp0RZ5oTYIQw9fuxzfHuNsdkV2L0N0jMGc9hsHJ6e6ONkDktVAcsloTFOokEhRwpTAWnRoWosphEYBuBqOhTVLBkuPqcThBCSABbCtm3Rtg36fhY9Sc8GKUlIygrZLcUpPohzKoEipEmMOIlwTo4oi1KSqMW/l0CjTHjWrdAelmWpk+q6RvcrlFU4Ho9S3h7PP5+xe91ju92K3uHX9gXfXzY4/D5IdidEUaRDZSLaw8ehPMq64K1tFbqbboYZDCY34StRQmZWsSH/kX7q0YyNgrv3VeC/Xgq3nGmznyyfG0+bmnbXdrr87C01K6Jev5nQ6hswAt8iD7jpJKWmPY6jDKtHXuTaL77tpl38eE6sPuu/fwCjg+2jaEZatgAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Koanda Etkisi ve Dolaşım Kavramı&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/46a868e185029238617292460e11c3e1/fcda8/image3.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/46a868e185029238617292460e11c3e1/12f09/image3.png 148w,https://blog.hkucuk.com/static/46a868e185029238617292460e11c3e1/e4a3f/image3.png 295w,https://blog.hkucuk.com/static/46a868e185029238617292460e11c3e1/fcda8/image3.png 590w,https://blog.hkucuk.com/static/46a868e185029238617292460e11c3e1/efc66/image3.png 885w,https://blog.hkucuk.com/static/46a868e185029238617292460e11c3e1/c83ae/image3.png 1180w,https://blog.hkucuk.com/static/46a868e185029238617292460e11c3e1/8fdfc/image3.png 1725w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;4-koanda-etkisi-ve-dolaşımın-rolü&quot;&gt;&lt;a href=&quot;#4-koanda-etkisi-ve-dola%C5%9F%C4%B1m%C4%B1n-rol%C3%BC&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;4. Koanda Etkisi ve Dolaşımın Rolü&lt;/h2&gt;
&lt;p&gt;Birçok kişi Koanda etkisini ilk kez duymuş olabilir. Koanda etkisi basitçe, akışkanların (hava dahil) yüzeylere yapışarak hareket etme eğilimidir. Bu etki, kanadın üst yüzeyindeki hava akımının kanada yapışarak aşağı doğru kıvrılmasına neden olur.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Bu kıvrılma ve dolaşım, havanın aşağı itilmesi anlamına gelir ve Newton’un üçüncü yasası devreye girer.&lt;/li&gt;
&lt;li&gt;Ayrıca dolaşım (circulation), kanat çevresinde süreklilik gösteren hava akımını temsil eder ve kaldırma kuvvetinin temelinde yer alan basınç farklarını yaratır.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/6548ab4fd17f9a7bfbf54bf35e115fc9/82f58/image4.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 104.05405405405406%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAVCAYAAABG1c6oAAAACXBIWXMAAB7CAAAewgFu0HU+AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/P9b71AAACBklEQVR42pWV7ZKqMAyGuf/L29FxHX+4Oix+K6CCCm22T3uCPUfUs5kpNCF9mzdpQ2KtFeR6vUpRFHI8Hv17sVjIdDqV2WzW2c/ns+R5LqfTyb/VF531SMKjaRqp61pWq5XsdjvZbrd+wXq9luVyKfv9XjabjQdAxwedNz5pmvq1gHrAqqrEGCMq6IfDQWLps6kQOZHyTqCM0rZtB3q5XGQ8HstwOJTJZCKj0UgGg4H3Q/BjsFZTppJAFxoA8lEdEaUYR6bfY0ANhnmiBcGo0rezgsU+ffMEJwqgEf67+2/nCUBU6jeAxrwA5NFH+dlc1aeU9Tz9T4RtSw6tK5J1JyHMHyKELqDvAKHpyuI2t67yAbyXMoDvKKua51a+vrhZz+knHOJ3RYFaAAvzMF4Uhbv6CrAorHx8WClLI/M5wNYFYSTLoI5fBKhX7fFgy59rCJi4jsKwrhGIu4oin59c2Tv9jjJAtKo4wpBw4wuRZcZdQePBisK4yKwvDJS1yurfUdabck+wcTtbT7WqrAMM4/vbujYVchin5YEyvTBEGMKua+MBnNltFnKYpoD9ffY0gHjuKdNRYiMDilTWBe8pAnqP6PnwlImQo0O1tXOXZe4aZuXyu/RtrKrO3gdbWZbeB196JHMaMHoS/1Nut1vXYJsmFAkbQFmWuSMz94uw44PAUP8n2H8A+KRryhaJi5IAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Koanda Etkisi Basit Deneyi&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/6548ab4fd17f9a7bfbf54bf35e115fc9/fcda8/image4.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/6548ab4fd17f9a7bfbf54bf35e115fc9/12f09/image4.png 148w,https://blog.hkucuk.com/static/6548ab4fd17f9a7bfbf54bf35e115fc9/e4a3f/image4.png 295w,https://blog.hkucuk.com/static/6548ab4fd17f9a7bfbf54bf35e115fc9/fcda8/image4.png 590w,https://blog.hkucuk.com/static/6548ab4fd17f9a7bfbf54bf35e115fc9/efc66/image4.png 885w,https://blog.hkucuk.com/static/6548ab4fd17f9a7bfbf54bf35e115fc9/c83ae/image4.png 1180w,https://blog.hkucuk.com/static/6548ab4fd17f9a7bfbf54bf35e115fc9/82f58/image4.png 1387w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;5-sonuç-kaldırma-kuvvetini-nasıl-anlamalıyız&quot;&gt;&lt;a href=&quot;#5-sonu%C3%A7-kald%C4%B1rma-kuvvetini-nas%C4%B1l-anlamal%C4%B1y%C4%B1z&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;5. Sonuç: Kaldırma Kuvvetini Nasıl Anlamalıyız?&lt;/h2&gt;
&lt;p&gt;Bu blog yazısında ve Anderson ile Eberhardt’ın makalesinde gösterildiği gibi kaldırma kuvvetini doğru anlamak için sadece basit okul açıklamalarına değil, daha geniş bir fiziksel bağlama ihtiyacımız var. Kaldırma kuvveti:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Newton’un üçüncü yasasına göre oluşur: Hava aşağı, uçak yukarı.&lt;/li&gt;
&lt;li&gt;Bernoulli ilkesi tek başına değil, Koanda etkisi ve dolaşım ile birlikte rol oynar.&lt;/li&gt;
&lt;li&gt;Geleneksel açıklamalar sadece yüzeysel bir fikir verir ve çoğu zaman yanıltıcıdır.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bu doğrulara dayanarak uçuşun fiziğini anlamak, havacılığa dair yanlış bilgilerin önüne geçecek ve daha sağlam bilimsel temellere dayanan bir öğrenme sağlayacaktır.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.aviation-history.com/theory/lift.htm&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;http://www.aviation-history.com/theory/lift.htm&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2025/ucaklar-nasil-ucar-kaldirma-kuvvetinin-fiziksel-aciklamasi/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Havaalanı Pistlerinin Numaralandırılma Mantığı]]></title><description><![CDATA[Hava taşımacılığı, modern toplumların olmazsa olmaz unsurlarından biri haline gelmiştir. Dünyada her gün binlerce uçak iniş ve kalkış yaparken, havaalanları bu operasyonların güvenli ve etkili şekilde gerçekleşebilmesi için hassas bir düzen içinde tasarlanmıştır. Bu düzenin en temel öğelerinden biri, havaalanı pistlerinin isimlendirilmesi ve pist başı ile sonlarında yer alan rakamlardır.]]></description><link>https://blog.hkucuk.com/2025/havaalani-pistlerinin-numaralandirilma-mantigi/</link><guid isPermaLink="false">https://blog.hkucuk.com/2025/havaalani-pistlerinin-numaralandirilma-mantigi/</guid><pubDate>Mon, 10 Mar 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hava taşımacılığı, modern toplumların olmazsa olmaz unsurlarından biri haline gelmiştir. Dünyada her gün binlerce uçak iniş ve kalkış yaparken, havaalanları bu operasyonların güvenli ve etkili şekilde gerçekleşebilmesi için hassas bir düzen içinde tasarlanmıştır. Bu düzenin en temel öğelerinden biri, havaalanı pistlerinin isimlendirilmesi ve pist başı ile sonlarında yer alan rakamlardır. Bu makalede, havacılıkta son derece kritik olan pist numaralarının anlamı, kullanımı ve isimlendirilme sisteminin detayları kapsamlı bir şekilde incelenecektir.&lt;/p&gt;
&lt;h2 id=&quot;pist-numaralarının-temel-mantığı&quot;&gt;&lt;a href=&quot;#pist-numaralar%C4%B1n%C4%B1n-temel-mant%C4%B1%C4%9F%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Pist Numaralarının Temel Mantığı&lt;/h2&gt;
&lt;p&gt;Havaalanlarındaki pistlerin başında ve sonunda yer alan rakamlar, pistlerin yönlerini ifade etmek üzere belirlenmiştir. Pist numaraları rastgele değildir; her rakam pistin manyetik kuzeye göre olan yönüne karşılık gelir. Dünya üzerindeki her pist, manyetik kuzeye göre hizalanmıştır ve bu hizalanış açısı, pist numarasını belirler.&lt;/p&gt;
&lt;p&gt;Örneğin, bir pistin başındaki numara &lt;code class=&quot;language-text&quot;&gt;09&lt;/code&gt; ise bu pist, manyetik kuzey ile yaptığı yaklaşık &lt;code class=&quot;language-text&quot;&gt;90&lt;/code&gt; derecelik açıyı belirtir. Dolayısıyla uçak pistin bu tarafından inişe geçtiğinde, uçağın burnu yaklaşık olarak doğuya (&lt;code class=&quot;language-text&quot;&gt;90°&lt;/code&gt; manyetik yön) bakıyor olacaktır. Eğer pist numarası &lt;code class=&quot;language-text&quot;&gt;27&lt;/code&gt; ise, bu pistin tam karşı ucu olduğu ve manyetik kuzeye göre &lt;code class=&quot;language-text&quot;&gt;270&lt;/code&gt; dereceyi işaret ettiği anlaşılır; uçak bu durumda batıya doğru (&lt;code class=&quot;language-text&quot;&gt;270°&lt;/code&gt; manyetik yön) iniş veya kalkış gerçekleştirir.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/080f838f11858959f5274d2f34b3e13b/5a190/image.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 75%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAIAAABr+ngCAAAACXBIWXMAAAsTAAALEwEAmpwYAAADfElEQVR42h2Q/U9bZRTHH38yMUvmgrpsc5XIOoThEqMytpmsILBSoC+UbsoAiTOZroVRQUC4vbftve3tbW/vW2/vS7u2lNtCmS2UuVkGw8QX1oKJmT+Y7V/wh2X+CT71PMmT85ycz/me5wtOvH7k7OnjLU1vt57VXer44GpfV4+pq7Pf0G3uto6M2MYmjHaLoa/TYOo2WvtNtgHr59ft42ODnzlgHZgMpwZ6dOb+piF7i92mHzTrzMOtLrdDlGlZUQQxpqgSgjmvjbb325rMw83W4XNWW6vF/N6QtRXA94C9udfSeMV0ss/e5vp2hBUi2RUtk1lmOZ7j+VQ6s6LlJEWc99waHv2o26LrtTYah/RGyxlw6dO3LnceN1nPT89O8Dytabl8Pq8m1Gg0yjDRWExgeU6SZTgrl1tTVBlBJx03OjqNp7tM7wCrvX1+/rYY42VJYaJMOBKO/B8URQkCrypSPeEFhuUiNE0zrKwkVDW5uHRn6PoFIMclISbCDioUgmLwROn6RZEkHaFYhiZJUuB5+PkwTYeoMBmiqEhYUZNqIgFw3A8DdkCc49hkUlXkeDadlEQBQRZRFAlTlBgTMulUpVKBFuIEQYZIH46ToRBAMYwIBILBIMsweS2rZTNxkVekGEUGIen1onAExzHl8kZmOcOwDCQJMgjl/TgOPCgGSQxDZ2dnEGQJwzyY14P7vR5k6fuFucXFBVj0+TCCIHz1Ff0Bsi7rhSWfD6zmc2Qw4J6+I8VjyYQCgSgdzmZSXgx58LAST6QxD5JKqBzLeDBMVdXlbAZuDmUVVQFaNuV218mfd7dVWUQxtFQs1qpPHu3uvHj5b+RugRITh38c7mxXcJJUFOn3337RNA31YoXCKnBNOqkwtV35cWuzSAQIaEmt9uTg8PDPv5//8+LlDL1c3jtYuVfe3t27m075CLy8WXq894jjhe/m5gDNcDuP937d37//sFIq369Wa8+fPYMuWGy2eY/vYq+14eS7DY1tU2i0WjtYL21uPfjp6V9P96tVIS6D9fXC1maJpsOOa45B8+Dk1KRrytV7tedci/7YsaMAgFcAePW1Iw2ndM3nP2zvuHDFYJiZWxAklRNlsLFRLKzlbzudo2M3oIX31leLP6yFgn73tPPmV+OXP7mo1585+uaJN5re17V9PP7lzS8mxm998zXD86Eo8x8NNLeg5TyPygAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Havaalanı Pistlerinin Numaralandırılma Mantığı&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/080f838f11858959f5274d2f34b3e13b/fcda8/image.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/080f838f11858959f5274d2f34b3e13b/12f09/image.png 148w,https://blog.hkucuk.com/static/080f838f11858959f5274d2f34b3e13b/e4a3f/image.png 295w,https://blog.hkucuk.com/static/080f838f11858959f5274d2f34b3e13b/fcda8/image.png 590w,https://blog.hkucuk.com/static/080f838f11858959f5274d2f34b3e13b/5a190/image.png 800w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;numaralandırma-sisteminin-detayları-ve-özel-durumlar&quot;&gt;&lt;a href=&quot;#numaraland%C4%B1rma-sisteminin-detaylar%C4%B1-ve-%C3%B6zel-durumlar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Numaralandırma Sisteminin Detayları ve Özel Durumlar&lt;/h2&gt;
&lt;p&gt;Pist numaralandırma sistemi temel olarak, manyetik pusula yönlerini esas alır ve aşağıdaki kuralları içerir:&lt;/p&gt;
&lt;h3 id=&quot;1-pist-numaralarının-hesaplanması&quot;&gt;&lt;a href=&quot;#1-pist-numaralar%C4%B1n%C4%B1n-hesaplanmas%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;1. Pist Numaralarının Hesaplanması&lt;/h3&gt;
&lt;p&gt;Pist numarası belirlenirken, manyetik yön 10’a bölünür ve en yakın tam sayıya yuvarlanır. Örneğin:
• Manyetik yönü &lt;code class=&quot;language-text&quot;&gt;183°&lt;/code&gt; olan bir pist, &lt;code class=&quot;language-text&quot;&gt;18&lt;/code&gt; olarak numaralandırılır.
• Manyetik yönü &lt;code class=&quot;language-text&quot;&gt;187°&lt;/code&gt; olan bir pist ise &lt;code class=&quot;language-text&quot;&gt;19&lt;/code&gt; numarasını alır (&lt;code class=&quot;language-text&quot;&gt;186°&lt;/code&gt;’dan itibaren yukarı doğru yuvarlama yapılır).&lt;/p&gt;
&lt;h3 id=&quot;2-i̇ki-uçlu-numaralandırma&quot;&gt;&lt;a href=&quot;#2-i%CC%87ki-u%C3%A7lu-numaraland%C4%B1rma&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;2. İki Uçlu Numaralandırma&lt;/h3&gt;
&lt;p&gt;Her pistin iki yönü olduğundan dolayı, pist numaraları her zaman birbirine zıt (180 derece farkla) olacaktır. Bu nedenle pistin bir ucu &lt;code class=&quot;language-text&quot;&gt;03&lt;/code&gt; ise diğer ucu &lt;code class=&quot;language-text&quot;&gt;21&lt;/code&gt; olacaktır (&lt;code class=&quot;language-text&quot;&gt;03 → 30°&lt;/code&gt;; &lt;code class=&quot;language-text&quot;&gt;21 → 210°&lt;/code&gt;). Başka bir örnekle, bir pistin numaraları &lt;code class=&quot;language-text&quot;&gt;04&lt;/code&gt; ve &lt;code class=&quot;language-text&quot;&gt;22&lt;/code&gt; ise, bu pistin bir yönü &lt;code class=&quot;language-text&quot;&gt;40°&lt;/code&gt;, karşı yönü ise &lt;code class=&quot;language-text&quot;&gt;220°&lt;/code&gt;’yi ifade etmektedir.&lt;/p&gt;
&lt;h3 id=&quot;3-çift-veya-üçlü-pist-durumları-sol-orta-sağ&quot;&gt;&lt;a href=&quot;#3-%C3%A7ift-veya-%C3%BC%C3%A7l%C3%BC-pist-durumlar%C4%B1-sol-orta-sa%C4%9F&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;3. Çift veya Üçlü Pist Durumları (Sol, Orta, Sağ)&lt;/h3&gt;
&lt;p&gt;Büyük havaalanlarında birden fazla paralel pist bulunabilir. Bu durumda pist numarasına ek olarak harf kullanılır:
• “L” (Left/Sol)
• “C” (Center/Orta)
• “R” (Right/Sağ)&lt;/p&gt;
&lt;p&gt;Örneğin İstanbul Havalimanı’nda paralel pistler &lt;code class=&quot;language-text&quot;&gt;17L&lt;/code&gt;, &lt;code class=&quot;language-text&quot;&gt;17C&lt;/code&gt; ve &lt;code class=&quot;language-text&quot;&gt;17R&lt;/code&gt; olarak isimlendirilmiştir. Buradaki rakamlar pistlerin güney (&lt;code class=&quot;language-text&quot;&gt;170°&lt;/code&gt;) yönlü olduğunu ve “sol-orta-sağ” şeklinde sıralandığını gösterir. Paralel pistlerin varlığı, hava trafiğini yönetmede çok büyük kolaylık ve güvenlik sağlamaktadır.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/058e76116130fcfe456becd252ca1def/29007/image2.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 56.08108108108109%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAACbUlEQVR42hWQSVPaYABA80d68uKIBSErIYTsZPnIyhK2YEARArIpEnTaoY6deqljZxx/QKeirTo99ILa9rfVXt7lHd7Mg66Xt9d3d1d395fL+4vl4+fbn1cPv748ri4fVhcPq/Mfz4vbl+Ob3+HN36NvfyZfX45unubL1bvvz7PlE7Q7GgfTaX82G4THh4vT8PR08elsfPJ+PzwZhuHwYDIe9sq7QaO3H86G3UHgB929g8l8EZ59nELBeDQ5nntBvzveH02HrV6n5nue5+755V6rMmoWeu2q4LjZfGE+qJ1PvQ+H/jiob7eq5boLCaajWrmUAnhDVw21Ush1akZQNzt1a7xtDnaKVa+MSyAD9Gq9eNh1w37lpO8ete1xy4ZQhsXYDC0JCpAb+Wy3AnZc4Be1nZLSqSiFoiXltHUihTCM7lhl12yXxGYp6/+3MkQJLEKnCIbiJa5oip4jerbYcKSKnlFV3nR0SdfWYIKURM3MaSZoV5RuifXzbMPhIIQijUqJNWycTieZDMuQAoNrHMKzhKSIWSBvYug6RmygKCeLElANU27muZaTaVoUhFHJUj2PKLk3MXwNScVT6QxH8yIjZDnLztEiGyGIDUp4i2FZoMhAYUXetfjdPO3bNAQTSBSOxZBoDIPjSQxNEUQ6RWbSyTTJyhJMkRECX8fILRwTlaySUzmRk2TB0Pi8IUBwEo3jSBRNRODYRiIaSWxtwvFXwiRh1WrALbEAvB5lgFbbaZoFGyNxiklTDJ1m/5fRBIHEcXgLTcRROP7ax+EYGk+xNMg7kqFzmkLyHAfUUsPTC3YUScAEBiexBIH+A0N12waypqPcAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Havaalanı Pistlerinin Numaralandırılma Mantığı&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/058e76116130fcfe456becd252ca1def/fcda8/image2.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/058e76116130fcfe456becd252ca1def/12f09/image2.png 148w,https://blog.hkucuk.com/static/058e76116130fcfe456becd252ca1def/e4a3f/image2.png 295w,https://blog.hkucuk.com/static/058e76116130fcfe456becd252ca1def/fcda8/image2.png 590w,https://blog.hkucuk.com/static/058e76116130fcfe456becd252ca1def/efc66/image2.png 885w,https://blog.hkucuk.com/static/058e76116130fcfe456becd252ca1def/c83ae/image2.png 1180w,https://blog.hkucuk.com/static/058e76116130fcfe456becd252ca1def/29007/image2.png 1600w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;h3 id=&quot;4-zaman-i̇çinde-değişen-manyetik-yön-ve-pistlerin-yeniden-numaralandırılması&quot;&gt;&lt;a href=&quot;#4-zaman-i%CC%87%C3%A7inde-de%C4%9Fi%C5%9Fen-manyetik-y%C3%B6n-ve-pistlerin-yeniden-numaraland%C4%B1r%C4%B1lmas%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;4. Zaman İçinde Değişen Manyetik Yön ve Pistlerin Yeniden Numaralandırılması&lt;/h3&gt;
&lt;p&gt;Havaalanlarındaki pist numaraları, dünya üzerindeki manyetik kuzey referans alınarak belirlenir. Ancak dünyamızdaki manyetik kutupların sabit olmadığı ve zaman içerisinde sürekli hareket ettiği bilinmektedir. Bu durum, pistlerin ilk olarak belirlendiği andaki manyetik yön ile yıllar içinde oluşan manyetik yön arasında farklılıkların meydana gelmesine neden olur. Bu sebeple pist numaralarının zaman zaman yeniden gözden geçirilerek güncellenmesi gerekebilir.&lt;/p&gt;
&lt;p&gt;Dünya’nın manyetik kuzey kutbu, jeolojik ve manyetik aktiviteler nedeniyle sürekli olarak hareket halindedir. Bu hareket, genellikle yılda birkaç kilometre ile birkaç on kilometre arasında değişebilen bir oranda gerçekleşir. Bu kayma sonucunda, bir havaalanındaki pistin gerçek manyetik yönü, ilk numaralandırmanın yapıldığı zamana göre birkaç derecelik sapma yaşayabilir. Başlangıçta örneğin 180 dereceye (18 numaralı piste) hizalanmış bir pist, manyetik kuzeyin hareket etmesiyle yıllar içinde 184 ya da 185 dereceye kayabilir. Bu durum, pist numarasının yeniden belirlenmesini zorunlu hale getirir.&lt;/p&gt;
&lt;p&gt;Uluslararası standartlara göre, eğer pistin manyetik yönü mevcut numaralandırmasından 5 derece ya da daha fazla bir sapma gösterirse, pist numaralarının güncellenmesi gerekmektedir. Bu durum, pilotların navigasyon sistemleri ve pusulalarıyla pistin numaralarının uyumlu kalmasını sağlayarak uçuş emniyetini koruma amaçlıdır. 5 derecelik fark, bir pilotun pist yaklaşma safhasında pistten sapmasına ve inişte sorunlar yaşamasına sebep olabilecek kritik bir eşiktir.&lt;/p&gt;
&lt;p&gt;Bu tür değişikliklerin somut örneklerinden biri, ABD’de bulunan Florida’daki Tampa Uluslararası Havalimanı’nda 2011 yılında yaşanmıştır. Havalimanındaki pistlerin manyetik yönlerinde oluşan belirgin sapmalar sebebiyle tüm pistlerin numaraları değiştirilmiş ve yenilenmiştir. Benzer şekilde, Kanada’da bulunan Calgary Uluslararası Havalimanı ve diğer birçok havaalanında da, manyetik kuzeydeki değişimlerden dolayı pist numaralarında düzenlemelere gidilmiştir.&lt;/p&gt;
&lt;p&gt;Bu güncellemeler basit gibi görünse de, gerçekte büyük lojistik operasyonları içerir. Çünkü pist numaralarının güncellenmesi, havaalanının pist tabelalarının, navigasyon haritalarının, pilotların uçuş planlarının ve hava trafik kontrolörlerinin kullandığı tüm dokümantasyonun değiştirilmesini gerektirir. Aynı zamanda, uluslararası yayınlanan uçuş haritaları (jeppesen chart’ları gibi) ve elektronik navigasyon sistemleri üzerinde de güncellemeler yapılması zorunludur. Bu işlemler havacılık otoriteleri tarafından titizlikle koordine edilir ve genellikle önceden duyurularak havacılık sektörünün tüm paydaşlarına bildirilir.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;pist-numaralarının-kullanımının-önemi-ve-güvenlik-açısından-rolü&quot;&gt;&lt;a href=&quot;#pist-numaralar%C4%B1n%C4%B1n-kullan%C4%B1m%C4%B1n%C4%B1n-%C3%B6nemi-ve-g%C3%BCvenlik-a%C3%A7%C4%B1s%C4%B1ndan-rol%C3%BC&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Pist Numaralarının Kullanımının Önemi ve Güvenlik Açısından Rolü&lt;/h2&gt;
&lt;p&gt;Pist numaraları pilotlar, hava trafik kontrolörleri (ATC) ve havaalanı operasyon ekipleri için kritik öneme sahiptir. Çünkü pist numaraları, uçakların kalkış ve iniş rotalarını, özellikle de pist yaklaşmalarını belirleyen en temel referanslardır. Uçuşun en kritik aşamaları olan iniş ve kalkış sırasında hata riskini azaltmak ve operasyonel karışıklığı önlemek adına pist numaralarının net, doğru ve güncel olması zorunludur.&lt;/p&gt;
&lt;p&gt;Ayrıca, pist numaraları meteorolojik raporlamada (METAR), uçuş planlarında ve hava trafik kontrol talimatlarında doğrudan referans olarak kullanılır. Pilotlar, özellikle düşük görüş koşullarında (sis, yoğun yağmur, kar, vs.) pist numaralarını radar ve navigasyon cihazları üzerinden görerek, doğru hizalanma ve inişi sağlarlar.&lt;/p&gt;
&lt;h3 id=&quot;yanlış-kullanımlar-ve-riskler&quot;&gt;&lt;a href=&quot;#yanl%C4%B1%C5%9F-kullan%C4%B1mlar-ve-riskler&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Yanlış Kullanımlar ve Riskler&lt;/h3&gt;
&lt;p&gt;Havacılık sektöründe, havaalanlarının pist başlarında ve sonlarında yer alan rakamların doğru kullanımı son derece kritiktir. Bu rakamlar uçuş operasyonlarının temel referans noktaları olduğundan, yanlış anlaşılmaları veya yanlış kullanımları ciddi kazalara ve tehlikeli durumlara yol açabilir.&lt;/p&gt;
&lt;p&gt;Özellikle büyük ve yoğun trafiğe sahip havaalanlarında, birden fazla paralel pist bulunduğunda, pist numaralarının yanında kullanılan ek harflerin (L-Sol, C-Orta, R-Sağ) net bir şekilde anlaşılması çok önemlidir. Örneğin, bir pilotun ya da hava trafik kontrolörünün “26L” yerine “26R” pist numarasını yanlışlıkla kullanması, iniş veya kalkış esnasında farklı pistlerde bulunan diğer uçaklarla çarpışma riskini doğurabilir. Havacılık tarihinde bu tür durumların yanlış pist seçimi nedeniyle kazaya dönüşmüş örnekleri bulunmaktadır.&lt;/p&gt;
&lt;p&gt;Ayrıca, pist numaralarının yanlış iletişimi veya yanlış okunması düşük görüş koşullarında (sis, yağmur, kar, gece şartları) daha büyük tehlike arz eder. Görüş mesafesinin sınırlı olduğu bu durumlarda, pilotlar pist numaralarını fiziksel olarak görmekte zorlanabilir ve tamamen hava trafik kontrolörlerinin verdiği bilgilere ve navigasyon cihazlarına bağımlı kalırlar. Bu noktada iletişimdeki küçük bir hata bile pilotun hatalı bir piste iniş yapmasına veya yanlış hizalanmasına neden olarak uçuş güvenliğini tehlikeye atabilir.&lt;/p&gt;
&lt;p&gt;Bir başka kritik risk, hava trafik kontrolörü ve pilot arasındaki radyo iletişimi sırasında rakamların yanlış anlaşılması veya yanlış söylenmesidir. Radyo frekansında oluşabilecek parazitler veya yoğun trafik durumlarında hızlı konuşmalar nedeniyle pist numaralarının karıştırılması sıkça karşılaşılan bir sorundur. Bu tür durumlar, pilotun beklenmedik manevralar yapmasına veya pist ihlallerine yol açabilir, bu da son derece tehlikeli durumların oluşmasına neden olabilir.&lt;/p&gt;
&lt;p&gt;Bu risklerin minimize edilmesi için havacılık otoriteleri ve uluslararası kuruluşlar (ICAO, FAA, EASA gibi), standart iletişim prosedürleri geliştirmiştir. Bu prosedürler doğrultusunda pilotların ve hava trafik kontrolörlerinin kullandığı terminoloji standartlaştırılmıştır. Örneğin, rakamların her zaman tek tek söylenmesi (örneğin “18” pist numarası “bir sekiz” şeklinde ifade edilir) ve talimatların tekrar edilmesi zorunludur. Ayrıca, pist numaralarının yazılı ve dijital tüm kaynaklarda güncel tutulması, pilotlara eğitim verilmesi ve düzenli tatbikatlar yapılması da kritik öneme sahiptir.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Havaalanlarında pist numaraları basit birer sayıdan çok daha fazlasıdır. Her numara, havacılık güvenliği, uçuş operasyonlarının yönetimi ve havaalanı altyapısının kullanımı için kritik öneme sahiptir. Manyetik yönü esas alan ve global çapta standartlaştırılmış olan bu numaralandırma sistemi sayesinde pilotlar ve hava trafik kontrolörleri arasında net ve güvenilir bir iletişim sağlanmaktadır. Bu sistemin doğru ve güncel tutulması, havacılıkta emniyetli operasyonlar için vazgeçilmezdir.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.icao.int/APAC/Meetings/2015%20WAWG1/an14_1ed_1951.pdf&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.icao.int/APAC/Meetings/2015%20WAWG1/an14_1ed_1951.pdf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.faa.gov/documentlibrary/media/advisory_circular/150_5340_1l.pdf&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.faa.gov/documentlibrary/media/advisory_circular/150_5340_1l.pdf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.eurocontrol.int/publication/eurocontrol-guidelines-time-based-separation-tbs-optimised-runway-delivery-ord-final&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.eurocontrol.int/publication/eurocontrol-guidelines-time-based-separation-tbs-optimised-runway-delivery-ord-final&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2025/havaalani-pistlerinin-numaralandirilma-mantigi/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Fransa Bisiklet Turu: Bir Tutkunun Öyküsü]]></title><description><![CDATA[Bisiklete aşık insanların takvimlerinde işaretlediği bir tarih vardır, Temmuz ayı. Bu tarih geldiğinde, Fransa’nın küçük kasabalarından büyük şehirlerine uzanan, kilometrelerce yola yayılan renkli bir heyecan başlar. Fransa Bisiklet Turu—ya da dünyaca bilinen adıyla "Tour de France"—sporun ötesine geçen, insan ruhunun dayanıklılığını ve hayata olan bağlılığını simgeleyen bir hikâyedir.]]></description><link>https://blog.hkucuk.com/2025/fransa-bisiklet-turu-bir-tutkunun-oykusu/</link><guid isPermaLink="false">https://blog.hkucuk.com/2025/fransa-bisiklet-turu-bir-tutkunun-oykusu/</guid><pubDate>Sun, 02 Mar 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Bisiklete aşık insanların takvimlerinde işaretlediği bir tarih vardır: Temmuz ayı. Bu tarih geldiğinde, Fransa’nın küçük kasabalarından büyük şehirlerine uzanan, kilometrelerce yola yayılan renkli bir heyecan başlar. &lt;a href=&quot;https://en.wikipedia.org/wiki/Tour_de_France&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Fransa Bisiklet Turu&lt;/a&gt;—ya da dünyaca bilinen adıyla &lt;a href=&quot;https://www.letour.fr/en/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;“Tour de France”&lt;/a&gt;—sporun ötesine geçen, insan ruhunun dayanıklılığını ve hayata olan bağlılığını simgeleyen bir hikâyedir.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/13456dfc6df9889c420c033b740178e8/21cdd/image.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 62.83783783783784%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAIAAAAmMtkJAAAACXBIWXMAAAsTAAALEwEAmpwYAAADJElEQVR42gEZA+b8ABcUAzUoA0U1AjkwBEc5AHJjI+Dbz/Ly9PTz9PX09vPy8u/s6+7s6uvp5+jm5Ozu88exaoNiA49xHZZvCAAeGAY5KgRZQgJDNQNZRwdbRgC1q4jr5+LOxLHNw7De1snt6+Xl4dj19fPz8vDFrmy3jQOFXAN/WwNbRQMAR0M2ZVxHRC0ASzgDU0EFXUcAq6B51cm2oIxoppNxqpl42dPE0Mq41Mi4zrqEsoUGwZQJspAwjWwRTjoAAFk+KnVWRVxROmNPL0M1CFM/AHJfILWkgdfMuuLaybSlidzTvNi+lLSSUa2FGLyTJrCQKNu2X5Z1IW5QBABqPS+HPyZzWUakkoeFgHVZTyteVSqHeELBt6u3qI2aiFuajG6PeEm1mlN6Zjx/cl1fVlN3cWNlW0paVk4Aa2dbhnVwl3x3d2hciHp4i4GGfHRwblxAbVIjgGEycUQdY0UaW0crhmxCRkEyLDRJNDI3Jio3V1BXICMrAGlTR2RUToqCf3ppZF5NRnFoZFZNU4plKnZPDbeKKmI8Ck0uDJBjKTMeAUs4ECAdGCYiHBgQBmRMOyUeGgB+b2Q7MjFdUkiEfYw/PEZPQkM+PVOKYi6QYSOgd0FwTi8YFRB6XUQaEw02JxpMMB9jRS4wJBg5Jhg1JhsAYE05IBwgWEhAgGddVkAvSjgpTD1BTTMfXDoXXUQnYkUwUEEuZ0k0Oy0fOzAjPzYtPikYNycWTzYkRi8eAEgzJCojHEk6MWJHMSwiGEIyIG1OM1E4IFI/I1g/GkUzIlJLPGBMNVxJOEc+LT82KysoIB4dFz80JjkvJABGQTkwKh5BNy1rXlc+Nyo2NS5hVEpbSjZWUURRQh9RQyRERj9YWU1FOy0rLig/PDBHRj0+Oy8aGxYnKCMANTcuLzAlQ0I4T1FRWVhSMjEmKiooRkZHc2tXTEc6RD0oPTkrNDYuSUtEPjwxUUw9W1VBZl9JNjImNTInACQmGDk3K1BMPhwaEjo5MEE/NDQxJElGOXlxXW1mUW1mVVxXRT46K0xIOG5oVX93ZIZ+anpzX2VfTnRtW5pfFJzTTEI1AAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Fransa Bisiklet Turu&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/13456dfc6df9889c420c033b740178e8/fcda8/image.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/13456dfc6df9889c420c033b740178e8/12f09/image.png 148w,https://blog.hkucuk.com/static/13456dfc6df9889c420c033b740178e8/e4a3f/image.png 295w,https://blog.hkucuk.com/static/13456dfc6df9889c420c033b740178e8/fcda8/image.png 590w,https://blog.hkucuk.com/static/13456dfc6df9889c420c033b740178e8/efc66/image.png 885w,https://blog.hkucuk.com/static/13456dfc6df9889c420c033b740178e8/c83ae/image.png 1180w,https://blog.hkucuk.com/static/13456dfc6df9889c420c033b740178e8/21cdd/image.png 1680w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;h2 id=&quot;bir-hayalin-başlangıcı-sararmış-gazete-sayfalarından-dünyaya&quot;&gt;&lt;a href=&quot;#bir-hayalin-ba%C5%9Flang%C4%B1c%C4%B1-sararm%C4%B1%C5%9F-gazete-sayfalar%C4%B1ndan-d%C3%BCnyaya&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Bir Hayalin Başlangıcı: Sararmış Gazete Sayfalarından Dünyaya&lt;/h2&gt;
&lt;p&gt;Fransa Bisiklet Turu, bugün dünyanın en büyük spor etkinliklerinden biri olarak görülse de, başlangıcı aslında çok daha mütevazı ve insani bir hikâyeye dayanıyor. Bu hikâye, 1903 yılında Fransa’nın o dönemde popüler gazetesi olan L’Auto’nun editörü &lt;a href=&quot;https://tr.wikipedia.org/wiki/Henri_Desgrange&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Henri Desgrange&lt;/a&gt;’ın, satışlarını artırmak amacıyla yaratıcı bir fikir arayışıyla başladı.&lt;/p&gt;
&lt;p&gt;O yıllarda gazeteler arasındaki rekabet yoğundu ve tiraj artırmak için farklı yollar deneniyordu. Desgrange, gazetesini farklı kılmak ve okuyucuların ilgisini çekmek adına cesur bir karar verdi: Fransa’nın dört bir yanını dolaşan, dayanıklılığı ve insan iradesini ölçen, hiç görülmemiş zorlukta bir bisiklet yarışını düzenlemek. Ancak bu sıradan bir yarış olmayacaktı. Paris’te başlayıp, Lyon, Marsilya, Toulouse, Bordeaux ve Nantes gibi büyük şehirlerden geçerek tekrar Paris’e dönen yaklaşık 2400 kilometrelik dev bir rota belirledi.&lt;/p&gt;
&lt;p&gt;O dönemin şartları göz önüne alındığında, bu karar büyük bir risk içeriyordu. Henüz modern yol altyapısı yoktu. Bisiklet teknolojisi oldukça ilkeldi; bisikletler ağır, yollar bozuk ve uzun mesafeler neredeyse imkânsız görünüyordu. Desgrange’ın fikrine ilk başta kimse inanmadı. İnsanlar bunu çılgınca buldu; hatta başarısızlıkla sonuçlanacağına kesin gözüyle bakıldı. Ama işte tam da burada insanoğlunun cesareti devreye girdi: o dönemin bisikletçileri bu zorlu mücadeleye katılmak için gönüllü oldu.&lt;/p&gt;
&lt;p&gt;İlk tur, 1 Temmuz 1903 tarihinde Paris’ten başladı. Yarışçıların üzerinde basit kıyafetler vardı; bazıları şapka takıyor, çoğunun üzerinde yedek parça ve tamir araçları bulunan çantalar bulunuyordu. Yol boyunca onları destekleyecek teknik ekip yoktu. Yarışçılar kendi sorunlarıyla baş başaydı. Lastik patladığında, zincir koptuğunda ya da bisikletleri arızalandığında, bunu kendi başlarına çözmek zorundaydılar.&lt;/p&gt;
&lt;p&gt;Günler süren bu yarışta, zaman zaman gece karanlığında, gaz lambalarının ve yol kenarlarında bekleyen meraklı izleyicilerin ışığında yollarına devam etmek zorundaydılar. İlk yarış o kadar zorluydu ki, 60 yarışçıdan ancak 21’i parkuru tamamlayabildi. Yarışı tamamlayan ilk isim Maurice Garin oldu ve Fransa tarihine geçti. Ancak Garin sadece yarışı kazanmakla kalmadı, aynı zamanda insanlığın azmini, mücadele ruhunu ve sınırları zorlama cesaretini temsil etti.&lt;/p&gt;
&lt;p&gt;İlginçtir ki, yarışın başarısı, gazeteyi de büyük bir tiraj artışına taşıdı. Gazete satışları beklenenden çok daha yüksek rakamlara ulaştı ve Desgrange’ın hayali sadece sportif değil, ticari anlamda da başarılı oldu. Ancak asıl önemlisi, bu yarış insanları bir araya getirdi. Yarış güzergâhındaki her kasaba, her köy, yola çıkarak bisikletçileri karşıladı. Evlerinden yiyecek, içecek getirenler oldu, yarışçıların geçişini coşkuyla kutlayan topluluklar oluştu. Böylece Fransa Bisiklet Turu, toplumun ortak heyecanının ve birliğinin simgesi hâline geldi.&lt;/p&gt;
&lt;p&gt;Sararmış gazete sayfalarında başlayan bu hikâye, zaman içinde büyük bir tutkuya dönüştü. Bisiklet sporu, insanların kalplerinde yer edindi. Fransa Bisiklet Turu’nun başlangıcı, insanın kendi sınırlarını aşma arzusunun, dayanışmanın ve cesaretin hikâyesiydi. Bugün, dünyanın her yerinden milyonlarca insanın izlediği bu dev organizasyon, aslında o ilk yarışın mücadeleci ruhunu ve insanoğlunun sınırsız hayal gücünü temsil etmeye devam ediyor.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/5251b2aafe009b4c767c34b5b20587a2/c1b63/image2.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 66.21621621621621%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAIAAAAmMtkJAAAACXBIWXMAAAsTAAALEwEAmpwYAAADGUlEQVR42i2QbU8SAQCA7y/1oQ/1qdVcLAkRT8AQCIRD5JDr5E44IFGSfJkakalZrQKtyMo3MiUpTSnN8CWlmaKL0nTVJsm9AXLR1g949jx7gBSbTlDsLsUeHHGzP7noL25pP9c5f+SNpH0LzNVJ1jXBIINMzRD1NEqufKMWtlPTX8j++RQSSALZTIbKpL9SzOjs3ORibD6+82oz+WT96AfFUdncfIIZWKZtY3me1Q3Q1lGqPUziQ6TSR5fcJYFsNstx3MbWlsWM2HHEQdQ4rzS0trc99N8bC4X2DlLhL6mZODkbJ80jjGmIbQ4z7hBtC9L4EA1kMpl/8HqMMMN2zIDqFYiu3KCWVMhE8jLReCQ6leCWdugDkp74nGoMkcZBFh1hneMsNsz+M+dyOZphvJ5Wt9NST5hUYEG1ptSGGWCdcim2vrxL90d2XizthzcPH65l22bS7jcZy3jWNJz9n538k3RfqXM78Ea7GYeVwoKTVhzFUcPcytrE6r4/kuhbPHj1/vvNq93dkT+3PrCBZTrwMQmk0+l8+eFhqrfnRoMNefq4L3OUu3/32k23BK2SjL1f2aa44OLu2+BiSEt02eo//U7HdpMtnjsvV38D+ea8maLppqZGgkAf9z3YW99Zi/r6O04QBnBydiY8MOVHnN5ThS4F7Pc0B27fueZqLT1bcL2nCxgeGXlwzxccDWoV4hqjpu4SbjPVWjDErpMTsNhurtDIpKiqxCEorFeUuVCFXSU/f/yYAjwnFAqAIj7/PI9XrVarxEKRgGfSa7VKmVJa3IJd6HLxpeBpC6zSXZQ5nRavA8ZMMARB5aUlAqlEqroITE2HHwX6xyeC3g63DlJVVkJ6nRYxqpBKngkqQgxy1Kg3VmkcllrhucJSMQiCxZeqDdIy8dliPrC3l4jHV1dX3i1EXjwP3OrpbL5sw2prjFazHke0kFqGIRocrRSLeDAkbWzAoAoJCApAcVGB4AwQ31iOrc1FP4RnXg9OjvmDz3oDPs/93qbONkuvx9rdQTQ7TXXWKlutHoGVkKZck39TwperRcZq5V/US+YGqO2spwAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Fransa Bisiklet Turu&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/5251b2aafe009b4c767c34b5b20587a2/fcda8/image2.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/5251b2aafe009b4c767c34b5b20587a2/12f09/image2.png 148w,https://blog.hkucuk.com/static/5251b2aafe009b4c767c34b5b20587a2/e4a3f/image2.png 295w,https://blog.hkucuk.com/static/5251b2aafe009b4c767c34b5b20587a2/fcda8/image2.png 590w,https://blog.hkucuk.com/static/5251b2aafe009b4c767c34b5b20587a2/efc66/image2.png 885w,https://blog.hkucuk.com/static/5251b2aafe009b4c767c34b5b20587a2/c83ae/image2.png 1180w,https://blog.hkucuk.com/static/5251b2aafe009b4c767c34b5b20587a2/c1b63/image2.png 1200w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;h2 id=&quot;i̇nsanlık-cesaret-ve-azim&quot;&gt;&lt;a href=&quot;#i%CC%87nsanl%C4%B1k-cesaret-ve-azim&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;İnsanlık, Cesaret ve Azim&lt;/h2&gt;
&lt;p&gt;Fransa Bisiklet Turu’nun arkasında gizli olan, bazen kamera objektiflerine takılmayan, ama kalplere dokunan öyle hikâyeler vardır ki, bu yarışa anlamını asıl onlar kazandırır. Bu hikâyeler cesaretin, dayanıklılığın ve insan ruhunun azminin öyküsüdür. Her yıl Temmuz ayında yaşanan mücadele, yalnızca fiziksel dayanıklılığın sınırlarını zorlamakla kalmaz, aynı zamanda yarışanların kalplerinde derin bir iç hesaplaşmaya dönüşür.&lt;/p&gt;
&lt;p&gt;Bisikletçiler, pedal çevirmeye başladıkları anda kendileriyle uzun ve acımasız bir yarışa girişirler. Her bir pedal çevirişinde kendilerine meydan okurlar. Bisiklet sürmek, aslında hayatın simgesidir; bazen dik yokuşlar, bazen virajlar, bazen ise umulmadık inişler sunar. Ancak Fransa Bisiklet Turu’nu bu kadar eşsiz kılan şey, bisikletçilerin, hayatta olduğu gibi, her zorluk karşısında daha da güçlenerek yollarına devam etme kararlılığıdır.&lt;/p&gt;
&lt;p&gt;Düşünün ki, bisikletçiler Alp Dağları’nın ürkütücü dikliğine ulaştıklarında, bacaklarının ağrısıyla mücadele ederken zihinsel olarak da çok farklı bir sınav verirler. Bazen kendilerine şu soruları sordukları olur: “Burada ne işim var? Devam etmeli miyim?” Ancak her seferinde kalplerindeki o derin motivasyonu bulurlar. Çünkü yarışçılar bilir ki, asıl zafer, bedenlerinden çok ruhlarında gerçekleşir.&lt;/p&gt;
&lt;p&gt;Bazen bu mücadele öyle yoğunlaşır ki, insanın dayanıklılığını ve cesaretini yeniden tanımlamak gerekir. 2016 yılında yarışan İngiliz bisikletçi Chris Froome’un yaşadığı o dramatik sahneyi unutmak mümkün mü? Froome, Mont Ventoux’nun zorlu yokuşlarında yaşadığı kaza sonrasında bisikleti kullanılamaz hale gelince, hiç tereddüt etmeden koşarak zirveye doğru ilerlemeye başlamıştı. O an, yalnızca yarışın kuralları ya da sporcunun kararlılığından fazlasını ifade ediyordu; bu, insan ruhunun asla pes etmediğini, cesaretin ve azmin her zaman kazanacağını simgeliyordu.&lt;/p&gt;
&lt;p&gt;Bisikletçilerin bu tür mücadelelerine tanık olan seyirciler de onlardan ilham alır. Yol kenarında bekleyenler, bisikletçilere sadece tezahürat etmezler, aynı zamanda onların duygusal mücadelesine ortak olurlar. İniş çıkışlı hayatlarının bir parçasını da o bisikletçilerde bulurlar. Çünkü bisikletçiler pedal çevirdikçe, aslında insanların hayatla kurdukları mücadeleyi ve hiç bitmeyen umutlarını simgelerler. Yaşlısından gencine, her izleyici, yarışçıların bu kararlılığı karşısında kendi hayat mücadelesinden parçalar bulur.&lt;/p&gt;
&lt;p&gt;Fransa Bisiklet Turu’nu kazanmak elbette büyük bir onurdur, ancak birçok bisikletçi için esas mesele kazanmak değildir. Esas mesele, insanlığın içindeki o yenilmez ruhu göstermektir. İşte tam da burada, yarışın gerçek anlamı ortaya çıkar: hiçbir fiziksel engel, insanın içindeki irade ve tutkunun önünde duramaz.&lt;/p&gt;
&lt;p&gt;Her pedal darbesinde, her tırmanışta ve her finiş çizgisinde tekrarlanan bir mesaj vardır: İnsan ruhunun gücü, insanın bedeninden çok daha büyüktür. Cesaretin, dayanıklılığın ve azmin sınırları yoktur. Fransa Bisiklet Turu, insanlığın bitmeyen mücadele ruhunun, tutkusunun ve azminin muhteşem bir kutlamasıdır.&lt;/p&gt;
&lt;p&gt;Ve yarış sona erdiğinde, geriye sadece sonuç tablosundaki isimler değil; yarışanların, onları destekleyen insanların ve hatta dünyanın dört bir yanında izleyen milyonların kalplerinde, insanlığın cesaretine ve dayanıklılığına dair unutulmaz bir iz kalır. İşte bu, Fransa Bisiklet Turu’nun insana ve yaşama verdiği en büyük armağandır.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/88095c9d50cb3ce9c8ea7695eb8e7dbb/cc95c/image3.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 40.54054054054054%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAIAAAB2/0i6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAB80lEQVR42gHoARf+AMrO2NTV3sPG06m0wbG6xbS7yb3Ez9jd5Nbd6dDU3aeuuqGrtrO6xKGmr6Ops6Sxw5+wxqyyvpefqo+WowCVnZaZoJB/i3SHf3uckY1+i26GjnqGjYCDi4iLlJiEjpZ8iZF5hIxzfYB8hoeAjI+FkpOVm5F2f21VYUsAaW1Ma206ZGczZGE2gnpHb3gpcngqcXYsbXQwaXQ1XWg6T1Y5VmAyZGw2bnI5eHY9dHE2bHAuMj8QODwdAFVcXW1qVmdrQkM9NH1tQnZuQnZ0N3qCK3uEJ32EJIKIM4SLPYCJN25yP2xtUG1oWXlzS3x3S29sVGplWgBXVjZqbFZ0VDlYQjRzYVaFY0+CYy5rYVZpXlNraV14cVtnXEphYU5fVlJ1Z1RhVkZ4cFNgV0xHREpYYmYAUFogYmcvdG4+bXFMLTAuT0Q2UkMqYVlMU2JxbWxfW0k4UTo0dG1baF5Tb2haemZWTUBCLzc2WmVZbHRPAElTH09aHXh7OG90PlhKNiooLUA/NkhBOklGT2lsS3l5Q0ZPSoyFa3l/VjhCRH4wMFc2LGZwPXZ/OmNtJABMUR9JVB1kbyptdzJmYDeBdG2BdWwjJRkrMDd0dlqNjk+FhVx+dFlZZkceJSJHMyVjYTJvdzFkayZnbykyF8YhVtP89QAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Fransa Bisiklet Turu&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/88095c9d50cb3ce9c8ea7695eb8e7dbb/fcda8/image3.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/88095c9d50cb3ce9c8ea7695eb8e7dbb/12f09/image3.png 148w,https://blog.hkucuk.com/static/88095c9d50cb3ce9c8ea7695eb8e7dbb/e4a3f/image3.png 295w,https://blog.hkucuk.com/static/88095c9d50cb3ce9c8ea7695eb8e7dbb/fcda8/image3.png 590w,https://blog.hkucuk.com/static/88095c9d50cb3ce9c8ea7695eb8e7dbb/efc66/image3.png 885w,https://blog.hkucuk.com/static/88095c9d50cb3ce9c8ea7695eb8e7dbb/c83ae/image3.png 1180w,https://blog.hkucuk.com/static/88095c9d50cb3ce9c8ea7695eb8e7dbb/cc95c/image3.png 2796w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;h2 id=&quot;turun-kalbindeki-i̇nsanlar&quot;&gt;&lt;a href=&quot;#turun-kalbindeki-i%CC%87nsanlar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Turun Kalbindeki İnsanlar&lt;/h2&gt;
&lt;p&gt;Fransa Bisiklet Turu’nun ruhu yalnızca bisikletçilerden değil, onlara kilometreler boyunca eşlik eden, yollar boyunca dizilen milyonlarca insandan oluşur. Bu insanların hikâyeleri, turun gerçek duygusal kalbini oluşturur. Her yıl, Fransa’nın küçük köylerinden, tarihi şehirlerine kadar uzanan yollar boyunca toplanan bu insanlar, turun belki de görünmez ama en değerli kahramanlarıdır.&lt;/p&gt;
&lt;p&gt;Günler öncesinden başlayarak, yarış güzergâhındaki köylerde ve kasabalarda tatlı bir telaş başlar. İnsanlar yarış günü geldiğinde, evlerinin önüne sandalyelerini çıkarır, sofralarını hazırlar ve geçecek bisikletçileri bekler. Yarıştan saatler önce yol kenarında bir araya gelen aileler, çocuklar, gençler ve yaşlılar bir festival havasında sohbet eder, şarkılar söyler, heyecanla bisikletçilerin gelmesini beklerler. Bu bekleyiş bile başlı başına unutulmaz bir deneyimdir.&lt;/p&gt;
&lt;p&gt;Özellikle Fransa’nın küçük kasabalarında, bu yarış gerçek anlamda bir bayramdır. Köyün yaşlıları, gençlerin hazırladığı pankartları taşır, çocuklar ise hayran oldukları bisikletçilerin formalarını giymiş, ellerinde bayraklar ve balonlarla, gözleri parlayarak yolları gözetler. Yol kenarında saatlerce bekleyen bu insanların gözlerinde, heyecan, sabır ve umut dolu bekleyiş iç içe geçer.&lt;/p&gt;
&lt;p&gt;Bisikletçiler geçerken, seyircilerin yüzlerindeki ifade paha biçilemezdir. Birkaç saniyelik bu an, sanki sonsuza dek hatırlanacakmış gibi insanların hafızasına kazınır. Kimi zaman bu an, bisikletçilerden birinin seyircilerin uzattığı su şişesini kabul ettiği, küçük bir çocuğa el salladığı ya da yaşlı bir teyzeyle kısa bir göz teması kurduğu küçük, insani anlardır. Ama işte bu küçücük anlar, seyirciler için ömür boyu unutulmaz anılara dönüşür.&lt;/p&gt;
&lt;p&gt;Fransa Bisiklet Turu’nda seyircilerle yarışçılar arasında sessiz bir anlaşma vardır; yarışçılar onlardan güç alır, seyirciler de bisikletçilerin o büyük azminden ilham alırlar. Yolların kenarında saatlerce bekleyen bu insanlar, bisikletçilerin taşıdığı insanüstü mücadele ruhuna ortak olur. Özellikle zorlu dağ etaplarında, yorgunluktan tükenmiş bisikletçilerin isimlerini bağırarak onları motive eden seyirciler, aslında yarışçıların fiziksel gücünden çok kalplerine hitap ederler. İşte bu anlarda, bisikletçilerle seyirciler arasındaki bağ, sadece saniyeler içinde kalplerden kalplere ulaşır.&lt;/p&gt;
&lt;p&gt;Bu insanlar arasında, hikâyeleriyle unutulmaz olan pek çok kişi vardır. Her yıl Mont Ventoux’nun zirvesinde, yarışçıları geleneksel kıyafetleriyle karşılayan yaşlı çift, Alp Dağları’nın eteklerinde sabahın erken saatlerinde evlerinde yaptıkları kekleri dağıtan kadınlar, küçük bir köyde yarışın geçtiği tek caddenin kenarına yerleşen ve yarışçılara limonata uzatan çocuklar… Bu insanlar Fransa Bisiklet Turu’nun gerçek kahramanlarıdır ve onların samimiyeti, turun ruhunu her yıl yeniden yaratır.&lt;/p&gt;
&lt;p&gt;Turun kalbindeki insanlar, aslında yarışın anlamını çok iyi kavramıştır: bisikletçiler zafer peşinde koşarken, seyirciler onlardan umut, cesaret ve yaşam enerjisi toplar. Bu karşılıklı paylaşım, turun aslında sadece bir bisiklet yarışı değil, insanların birbiriyle ve hayatla bağlarını güçlendirdiği ortak bir hikâye olduğunun en büyük kanıtıdır.&lt;/p&gt;
&lt;p&gt;Ve Fransa Bisiklet Turu sona erdiğinde, bisikletçiler kürsüye çıkarken alkışlar sadece onları değil, bu muhteşem öykünün gerçek yaratıcıları olan, kilometreler boyunca onların yanında duran, umutlarıyla ve sevgileriyle onlara destek olan bu görünmez kahramanları da selamlar.&lt;/p&gt;
&lt;p&gt;Çünkü Fransa Bisiklet Turu’nun gerçek güzelliği, bisikletlerin hızında değil, yol kenarında toplanan insanların kalplerinde saklıdır.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/d0e868940707335930b918db25dcac9e/29007/image4.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 66.89189189189189%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAIAAAAmMtkJAAAACXBIWXMAAAsTAAALEwEAmpwYAAADJElEQVR42gEZA+b8AB8vJyQ2LSg7Nis9O1ZqZWN3eNDZ3v////39/drm8s/f8e70+f3+/9HZxnqLSH2MPHF8KnB9IWd1Fy06DAAcLCYaKigbLDAlNjk/UkooPEJqgYC6zc/u9vymx+yMsNu+1uunta5gcVeQn0KIlD5dah9mcTQ4QyEaIhgADBccMUExR1guRFUtRFU1JjhBPFFMUGdie46IvLikr5p+mZhzbntVRFVFfotGaXM9XmVQdXtmRkoaPEEcADU6RkVSOk5bPmZ1XVNiM0BQKz1FPUFKTUNOaYd8e8emjpyJg3NfbGBcXl5cTU5VL2RuSl1OJ19WHEZGFABFSlc5SlUaJjxGWHtKVmRjaXRZWGBTVmBHUGBdb4aEkapweIyCdH5xaGw0NjdQVko5QTtmWEZhZnguMkQAMz1JKTpSJDNEKDA0R0lNkpGTYWtwSlNReoKFdXiDgIKLYmh5WVhkd3x8jpaPaGx0OzxHT05WIiIlLi0vAENMWUVISnNzbTM5USkrL3FyUTBKT0paU5qWlXBzWHx7YqShpEFCT0dIT/3648jHsUtPWbq7prGwnZqXigBxalxya1p1alogHDJERkqEjoYKEReAgYLj4eBucmpZTzbr6eZ3epAgGTC6uLmdm50bGjWknIr///H8+egAdGxgg3tzhoF4GhsbV1lXoqiuCQsMcXJ16OrsR0ZJIBsb29vcS01MHhgUwL/BiISCAwEAbmdi19fP4t7SAKebjnh5fEtWZk5MS6mpnaOqs0lRUX+Agri/x4yGd1VPS9DR0nFvcHh0ar7Bw5qbm0pIRXx6dLe3tr28uABkbXhyfo3Q0M5VVEu7u7nv7upQWVmnp6fj4+OfnZdzaFnc3d6NiYVpaGXFx8yysbNYVUeLjYuwsrWioqEAmKCq+/n05OPfamxs4+Hb7e3oaWxrrq+s2trWrq+vYmFb4uHhjo6Gc3Rx0dHTu72+TE5NhYeKsbO3nZ+hAPv79+/w7fDw7sLExqGqtMDFx8HCv6awuMnR19jY1Y+SlKessL2+v6qvtLO5wLq7u5eXlJqfpaersKipq4cBenjkL0hUAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Fransa Bisiklet Turu&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/d0e868940707335930b918db25dcac9e/fcda8/image4.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/d0e868940707335930b918db25dcac9e/12f09/image4.png 148w,https://blog.hkucuk.com/static/d0e868940707335930b918db25dcac9e/e4a3f/image4.png 295w,https://blog.hkucuk.com/static/d0e868940707335930b918db25dcac9e/fcda8/image4.png 590w,https://blog.hkucuk.com/static/d0e868940707335930b918db25dcac9e/efc66/image4.png 885w,https://blog.hkucuk.com/static/d0e868940707335930b918db25dcac9e/c83ae/image4.png 1180w,https://blog.hkucuk.com/static/d0e868940707335930b918db25dcac9e/29007/image4.png 1600w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;h2 id=&quot;bisikletin-ötesinde-bir-anlam&quot;&gt;&lt;a href=&quot;#bisikletin-%C3%B6tesinde-bir-anlam&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Bisikletin Ötesinde Bir Anlam&lt;/h2&gt;
&lt;p&gt;Fransa Bisiklet Turu’nu sadece bir spor organizasyonu olarak görmek büyük bir eksiklik olur. Çünkü bisiklet, bu yarışta pedal çevirmekten, hızdan ve güçten çok daha fazlasını ifade eder. Bisiklet, hayatı, insanlığı, doğaya saygıyı ve sürdürülebilir geleceği simgeleyen bir metafordur aslında.&lt;/p&gt;
&lt;p&gt;Bisikletin doğuşu, endüstriyel çağın hızlı ve karmaşık dünyasında insanları tekrar sade ve huzurlu bir yaşama davet eder gibidir. Pedal çevirirken hissedilen rüzgarın özgürleştirici etkisi, hareket etmenin en sade ve en insani halini hatırlatır bizlere. İşte Fransa Bisiklet Turu da bu sadeliğin, bu insaniyetin dev bir kutlamasıdır.&lt;/p&gt;
&lt;p&gt;Bu yarış, şehirleri, ülkeleri ve kültürleri birbirine bağlar. Yarış boyunca bisikletçiler, Fransa’nın eşsiz doğal güzelliklerinden, tarihi köylerinden ve kasabalarından geçerken aslında dünyaya önemli bir mesaj verirler: doğanın güzelliğine sahip çıkmak ve onu korumak, insanlığın en önemli görevlerinden biridir. Bu anlamda Fransa Bisiklet Turu, insanlara doğa ve çevreyle barışık bir yaşamın mümkün olduğunu gösterir. Pedal gücüyle çalışan bu iki tekerlekli mucize, doğaya zarar vermeden, çevreye saygılı şekilde ulaşımın ve hareketin mümkün olduğunun sembolü haline gelir.&lt;/p&gt;
&lt;p&gt;Bisiklet aynı zamanda insan sağlığına ve yaşam kalitesine dair çok güçlü bir mesaj taşır. Turu izleyen milyonlarca insan, bisikletçilerin dayanıklılığı ve fiziksel gücünden etkilenerek bisiklete yönelir. İnsanlar, bisiklet kullanımının bireysel sağlıklarına katkısını gördükçe, hayatlarını daha sağlıklı ve aktif hale getirmenin mümkün olduğunu anlar. Bisikletin günlük yaşamda kullanımı, trafik sorunlarına çözüm sunar, şehirleri insan merkezli hale getirir ve toplumsal yaşamın kalitesini yükseltir.&lt;/p&gt;
&lt;p&gt;Fransa Bisiklet Turu, bisikletin bu sosyal yönünü çok güçlü bir şekilde vurgular. Yarış boyunca şehirlerde yaşanan büyük coşku, toplumsal birliğin, paylaşmanın ve birlikte hareket etmenin ne kadar değerli olduğunu gösterir. Bisikletin insanları bir araya getirme gücü, farklı sosyal kesimleri aynı yolda buluşturur. Yarış, zengin-fakir, genç-yaşlı ayırt etmeksizin herkese hitap eder ve böylece toplumsal dayanışmanın simgesi haline gelir.&lt;/p&gt;
&lt;p&gt;Ayrıca bisiklet yarışı, insanın kişisel sınırlarını zorlamasını, kendi potansiyelini keşfetmesini simgeler. Tur boyunca pedal çeviren her bisikletçi, kendi içinde büyük bir mücadele verir. Bu mücadele, izleyicilere yaşamda karşılaşılan güçlüklerin üstesinden gelmenin mümkün olduğunu gösterir. Bisikletçiler, fiziksel engellerin yanı sıra zihinsel engelleri de aşarlar ve bu yönüyle hayatın zorluklarına karşı nasıl direnç gösterileceğinin, cesaretle mücadele etmenin önemini anlatırlar.&lt;/p&gt;
&lt;p&gt;Tarih boyunca Fransa Bisiklet Turu, bisikletin temsil ettiği bu değerlerle milyonlarca insana ilham verdi. İkinci Dünya Savaşı’nın ardından yarışın yeniden başlaması, bisikletin umudun simgesi olduğunu ve savaşın karanlığından çıkmak isteyen insanların kalplerindeki yaşam sevgisini canlandırdığını gösterdi. Bugün bile, bisikletçiler pedal çevirdikçe, insanlığın daha iyi bir geleceğe duyduğu inancı yenilerler.&lt;/p&gt;
&lt;p&gt;Turun sonu geldiğinde, bisikletçiler madalyalarını alır ve sahneden çekilir, ancak geride kalan şey çok daha büyüktür. Yarışın ardından, bisikletin bu derin anlamı insanların kalplerinde yaşar. Belki de bu yüzden Fransa Bisiklet Turu sadece sporun değil, aynı zamanda insanlık değerlerinin, doğaya ve yaşama saygının ve sürdürülebilir bir geleceğe dair umutların en büyük temsilcilerinden biridir.&lt;/p&gt;
&lt;p&gt;Bisiklet, Fransa Bisiklet Turu’nda artık bir araçtan çok daha fazlasıdır. O, insanlığın ortak değerlerinin, doğanın güzelliğinin, yaşam sevincinin ve birlik olmanın sembolüdür. Bu yüzden her pedal darbesinde, bisikletin ötesinde, hayatın ta kendisini buluruz.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/4bba3548deb13643e2b8a8d2644413a4/9b29b/image5.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 56.08108108108109%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAACk0lEQVR42g3NyVLaAAAA0PxAT705vdhD753pcup0bw9OqbYyFREtsokYEAgICspaQBIWCYRgWCqGzSgQEhI2ERBKrT30j+rMuz9g9tn9B0/vCbdeMKMwfQXXB/D5ALnoBFhmd8ju0ByIBPb9+55COtwf3ZIVrlJusL1IgdOQDRPw8PHM84XZTMPcvYlzY7Tcio2m8ckVcsVZJ6Py5Yhusly11hjWStf1y1OLy+2M5BvuLq+f8i5g5tGM0rjQGaMn9I/jYgxHYY4PNmgfV/VnsWyeHrCNbg6vIn6cCaFYJLemMhIlLFlR0TU9IFh9Kdds7xl0NY8Psx6SnigVw6N7jmOTDpTqnds23Bei8udZMldJI5nMERyIF9IkUSAISgkUSpBMsTX35GNYrIt808k+qUNf1ei8TPNufnNpNWxx4FEsk0hk0mdHXn8p6WuetVEHjO2HLi48AFnSvn77XvxFdGg0asWShTdzn18Jvi9KsFAKx/JksUWgpUNv2neQLGFQLLjitgdcGg2qUaGedaBCadcVIoFghfDCYb1VvSwzKbVHVhuotMsUHo8T/zBvgQyIWmo0KJRLy9uQxgqtCBGzCXboAbbOnFNMEj91eRGz+UClMkhFcpveKpcaNpfXFDKLfFEaBDc8KqlBLHJLlkChcFWi0mqhPIEB7fa027vh+WuKYnM/y6lUHkvmfMFYwuXygXLnptwul1g2xGaF1GbaNYm+6FXroH4nkSCKRQpg2QFNd2m6w/PDfv+23//b4ofTP//yoaBduRF17VoMkN2y5zzwBgKRuzCTLVSrLM/1alUWoOk2w/T51qTd+d1u/2KY3mAwuROC4+AWFE8QSBhLHZ+QJFWrcc3mZbcz7nTGLNur17j/cLJq3gaLWWMAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Fransa Bisiklet Turu&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/4bba3548deb13643e2b8a8d2644413a4/fcda8/image5.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/4bba3548deb13643e2b8a8d2644413a4/12f09/image5.png 148w,https://blog.hkucuk.com/static/4bba3548deb13643e2b8a8d2644413a4/e4a3f/image5.png 295w,https://blog.hkucuk.com/static/4bba3548deb13643e2b8a8d2644413a4/fcda8/image5.png 590w,https://blog.hkucuk.com/static/4bba3548deb13643e2b8a8d2644413a4/efc66/image5.png 885w,https://blog.hkucuk.com/static/4bba3548deb13643e2b8a8d2644413a4/c83ae/image5.png 1180w,https://blog.hkucuk.com/static/4bba3548deb13643e2b8a8d2644413a4/9b29b/image5.png 3840w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;h2 id=&quot;tarihte-i̇z-bırakan-anlar&quot;&gt;&lt;a href=&quot;#tarihte-i%CC%87z-b%C4%B1rakan-anlar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Tarihte İz Bırakan Anlar&lt;/h2&gt;
&lt;p&gt;Fransa Bisiklet Turu’nun tarihi, yalnızca bisikletçilerin mücadelesinden ibaret değildir; aynı zamanda unutulmaz anların, insan hikâyelerinin, sevinç ve hayal kırıklıklarının birleşiminden oluşan destansı bir öyküdür. Yüz yılı aşkın bir zamandır, turun her anı tarihin sayfalarında iz bırakan dramatik sahnelerle doludur.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;İlk Yarış ve Efsanenin Doğuşu (1903):&lt;/strong&gt;
1903 yılında gerçekleşen ilk Fransa Bisiklet Turu, tarihin dönüm noktalarından biridir. 1 Temmuz günü Paris’ten yola çıkan bisikletçiler, günler süren, zor şartlarla dolu bir mücadeleyi başlattılar. Yarışın ilk şampiyonu &lt;a href=&quot;https://en.wikipedia.org/wiki/Maurice_Garin&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Maurice Garin&lt;/a&gt;, tarihe adını kazırken, aslında sadece bir sporcu değil, insan azminin de ilk sembollerinden biri oldu. Yarışın başarısı, sonraki yıllarda katlanarak artan bir tutkunun başlangıcını temsil ediyordu.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Eugène Christophe ve Kırık Çatalın Hikâyesi (1913):&lt;/strong&gt;
1913 yılında, &lt;a href=&quot;https://en.wikipedia.org/wiki/Eug%C3%A8ne_Christophe&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Eugène Christophe&lt;/a&gt; bisikletinin çatalının kırılmasıyla unutulmaz bir hikâye yarattı. Christophe, yarışı bırakmak yerine, bisikletini sırtına aldı ve tamirci bulana kadar kilometrelerce yürüdü. Tamirhanede kendi elleriyle bisikletini onaran Christophe, yarışı kazanamasa da cesaretin, kararlılığın ve mücadelenin sembolü olarak Fransa tarihine geçti.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Savaşların Gölgesinde Bisiklet Tutkusu (1947):&lt;/strong&gt;
İkinci Dünya Savaşı nedeniyle Fransa Bisiklet Turu 1940-1946 arasında gerçekleşmedi. Savaş sonrası, 1947 yılında turun yeniden başlaması, sadece sportif değil, aynı zamanda sosyal ve duygusal bir zaferdi. İnsanlar yaralarını bisiklet yarışıyla sarmaya çalıştılar ve yarış, umudun, yeniden doğuşun sembolü oldu.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Eddy Merckx ve Rakipsiz Yıllar (1969-1974):&lt;/strong&gt;
Belçikalı bisikletçi &lt;a href=&quot;https://en.wikipedia.org/wiki/Eddy_Merckx&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Eddy Merckx&lt;/a&gt;, 1969-1974 yılları arasında adını tur tarihine altın harflerle yazdırdı. “Yamyam” lakaplı Merckx, bitmek bilmeyen hırsı ve enerjisiyle tam beş kez Fransa Bisiklet Turu’nu kazandı. Onun dominasyonu, bisiklet tarihinin en etkileyici dönemlerinden biri olarak kabul edilir. Merckx sadece yarışları değil, seyircilerin kalbini de kazanmıştı.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bernard Hinault’nun Kararlılığı (1985):&lt;/strong&gt;
&lt;a href=&quot;https://en.wikipedia.org/wiki/Bernard_Hinault&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Bernard Hinault&lt;/a&gt;, 1985 yılındaki turun en zorlu etaplarından birinde geçirdiği ciddi bir kazaya rağmen yarışı bırakmayı reddetti. Yüzünde kan ve acı ifadesiyle pedal çevirmeye devam eden Hinault, yarışı bitirdiğinde, kazanamasa da yarış tarihinin en büyük kahramanlarından biri oldu. Bu an, insan iradesinin ve dayanıklılığın unutulmaz bir simgesiydi.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Greg LeMond ve 8 Saniyelik Zafer (1989):&lt;/strong&gt;
1989’da Fransa Bisiklet Turu tarihinin en dramatik finişlerinden biri yaşandı. Amerikalı bisikletçi &lt;a href=&quot;https://en.wikipedia.org/wiki/Greg_LeMond&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Greg LeMond&lt;/a&gt;, son etapta Laurent Fignon’u sadece 8 saniyelik bir farkla geçerek tarihin en küçük farkıyla turu kazandı. Bu, Fransa Bisiklet Turu’nun unutulmaz anlarından biri olarak, hâlâ bisiklet tutkunlarının hafızalarında canlılığını koruyor.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lance Armstrong ve Yıkılan Bir Efsane (1999-2005):&lt;/strong&gt;
&lt;a href=&quot;https://en.wikipedia.org/wiki/Lance_Armstrong&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Lance Armstrong&lt;/a&gt;’un hikâyesi, bisiklet tarihinin en karmaşık ve dramatik anlarından biridir. Kanserle verdiği mücadeleyi kazanarak peş peşe 7 kez tur şampiyonu olan Armstrong, yıllar sonra doping yaptığı gerekçesiyle tüm unvanlarını kaybetti. Armstrong’un hikâyesi, bisiklet sporunda zafer ve trajedinin ne kadar yakın olabileceğinin simgesidir.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chris Froome ve Mont Ventoux (2016):&lt;/strong&gt;
&lt;a href=&quot;https://en.wikipedia.org/wiki/Chris_Froome&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Chris Froome&lt;/a&gt;’un 2016’da Mont Ventoux etabındaki inanılmaz kazası, bisiklet tarihinin unutulmaz sahnelerinden biridir. Froome, kaza sonucu bisikleti kırılınca, yarışa koşarak devam etti ve herkesi şaşırtan, yürekleri titreten bir azim gösterdi. Bu sahne, asla pes etmeyen bir sporcunun sembolü hâline geldi.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sloven Genç Yıldız: Tadej Pogačar (2020):&lt;/strong&gt;
2020 yılında &lt;a href=&quot;https://en.wikipedia.org/wiki/Tadej_Poga%C4%8Dar&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Tadej Pogačar&lt;/a&gt;, henüz 21 yaşındayken Fransa Bisiklet Turu’nu kazanarak tarihe geçti. Genç Sloven bisikletçi, son günkü zaman yarışında gösterdiği olağanüstü performansla yarışı son anda lehine çevirdi. Bu zafer, genç yeteneklerin tur tarihinde yeni sayfa açabileceğinin göstergesi oldu.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Jonas Vingegaard ve Danimarka’nın Gururu (2022-2023):&lt;/strong&gt;
2022 ve 2023 yıllarında arka arkaya Fransa Bisiklet Turu’nu kazanan Danimarkalı bisikletçi &lt;a href=&quot;https://en.wikipedia.org/wiki/Jonas_Vingegaard&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Jonas Vingegaard&lt;/a&gt;, bisiklet tarihine güçlü bir giriş yaptı. Özellikle dağ etaplarında gösterdiği performansla tur izleyicilerini etkileyen Vingegaard, bisiklet sporunun heyecanını yeniden canlandırdı ve gelecek yıllar için yeni bir rekabet döneminin başladığını müjdeledi.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Fransa Bisiklet Turu’nun tarihi bu unutulmaz anlarla örülüdür. Bu olaylar, yalnızca sporda değil, insanlık tarihinde de iz bırakmıştır. Bu anlar, insanların mücadele gücünü, dayanıklılığını ve tutkusunu simgeler. Ve bu yüzden Fransa Bisiklet Turu, sadece bir yarış değil, tarih boyunca unutulmayacak hikâyelerin yaşandığı bir efsanedir.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/99f14dcb7216385490cedb108af63533/97a96/image6.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 66.89189189189189%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAIAAAAmMtkJAAAACXBIWXMAAAsTAAALEwEAmpwYAAADJElEQVR42gEZA+b8ABAnLCdMV0d5jF2YsGWmwWuqxHSux4G40YzA2Ye/2Hy30m+vynKxzXayzHWwy3WvymmguVaHmy5WZBY0PQAHEhAGFRQMISAdOTxCZ3NzobSKt85+pbhahpdJdoV5pbaNvNJvnrJNeIZMdoVGanYnQ0sKJSoJHiISJCYADBQQDhcUDRwZEyQeEiUfIzs6Lk5UGEBJFT5HDjY+IUZONFtkKE9XFj1FCi4yDSgqEystDiYpEicoDiIkAAsTDxMaFCAnGQsYEhUhHCcwJSo1KjpIOztTT0BeYTtZWkJdXi1MTiU/QCs6OhczMxowLhInJw4iIgseHwAWGhE5NyNRTjOBdEk/PCUvMCFBPytFOyI6NR9gZ1qEiICGiYFKXVVBRzpXUUcbNDEdMC0VKScSJCQOHx8AKSsYLS0WKyscf21Ab181fmdBh3VTinlWeGxPgXNTb2ZHYlw+V1tBRD8yUVA7NEU0JTcsGC4nECMgDyAeABgaEUdFPUFBPnJqXop+cZKCbqOWg6qbjLKnm7WhlremlaaWfV9QOFQ7K1tUO1lUNEtLLTg/LyctIx0nHAAlJSVfW11zamd8al56bGVnb3VxcnV6fH9vdHZvcmSKhoSQmp5/b2iMbF+aiHZ4allaTTFhUjhdTzF4XDoASk1OPENDPk9ZZ2tsXVZSWFxegnZ4SUxPY1hOkXRZlIqDiXyBmp2ejX99koR9bVtQg2NGinNYVVA3fWRGAFVeYGxubz09PzY9QVZgY2hrbWtkYWRqbqGEbOGGQZBqUnxVUXlva3VXU6iosZOZm2hlX2ldSHBXPnlOJgBXXV89RUhAQ0RLT1Bzd3lvdXkxPUFpa26SeGDskzyvlI6Si46Eg4FeVFFjbnldY2Ola2N6bm9XTkpSOCYATVRXUVZZaW9xYmhqdHp8e3x9PElNd3d1bF9ZiGZLeXd8W11fn5yZm56fYmVmW1tXWktKhH+AgoeJZGVnAFBZXFtiZT9IS0xXW25vcXhxa7KtqbmtpKqkonZtb2RYVywvL8nJysfJy5mcno+Ul1tmaklRU291eGRrbswOGN0EbjGCAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Fransa Bisiklet Turu&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/99f14dcb7216385490cedb108af63533/fcda8/image6.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/99f14dcb7216385490cedb108af63533/12f09/image6.png 148w,https://blog.hkucuk.com/static/99f14dcb7216385490cedb108af63533/e4a3f/image6.png 295w,https://blog.hkucuk.com/static/99f14dcb7216385490cedb108af63533/fcda8/image6.png 590w,https://blog.hkucuk.com/static/99f14dcb7216385490cedb108af63533/efc66/image6.png 885w,https://blog.hkucuk.com/static/99f14dcb7216385490cedb108af63533/c83ae/image6.png 1180w,https://blog.hkucuk.com/static/99f14dcb7216385490cedb108af63533/97a96/image6.png 2400w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;h2 id=&quot;turun-bugün-bize-öğrettikleri&quot;&gt;&lt;a href=&quot;#turun-bug%C3%BCn-bize-%C3%B6%C4%9Frettikleri&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Turun Bugün Bize Öğrettikleri&lt;/h2&gt;
&lt;p&gt;Fransa Bisiklet Turu, yalnızca profesyonel sporcuların katıldığı bir yarış olmanın çok ötesinde, her yıl milyonlarca insana yaşama dair önemli dersler veren bir hayat okuludur aslında. Bu tur, pedal çevirenlerin ve onları izleyenlerin hayatına anlam katan, insana kendi hikâyesini yeniden yazdıran bir yolculuktur. Bugün geriye dönüp baktığımızda, Fransa Bisiklet Turu’nun bizlere öğrettiği çok kıymetli dersler vardır.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Asıl Yarış Başkalarıyla Değil, Kendimizle Olandır&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Fransa Bisiklet Turu, her bisikletçinin önce kendiyle verdiği bir mücadeledir. Zirvelere tırmanırken, bedensel sınırları zorlanırken, bisikletçiler rakiplerinden önce kendi zihinsel engelleriyle yarışırlar. Bu yarış bize, hayatımızdaki en büyük engellerin dışarıda değil, içimizde olduğunu öğretir. Yarışçıların yokuşları aşma kararlılığı, kendi korkularımızı, şüphelerimizi ve içimizdeki direnci aşmamız gerektiğini bize gösterir. Turu izlerken anlarız ki, en büyük rakibimiz aslında içimizdeki o “pes et” diyen sestir ve bunu aşmanın yolu kararlı bir iradeye sahip olmaktır.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mücadele Vazgeçmemektir&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Fransa Bisiklet Turu’nun en çarpıcı mesajlarından biri, mücadele ruhunun asla bitmemesi gerektiğidir. Yarışçılar düşer, sakatlanır, bisikletleri bozulur ama her defasında yeniden kalkıp pedala basmaya devam ederler. İşte bu sahneler, hayatımızda karşılaştığımız zorluklar karşısında bizi yeniden ayağa kalkmaya teşvik eder. Mücadelenin gerçek anlamının, düşmemekte değil, düştükten sonra tekrar ayağa kalkıp devam etmekte olduğunu bize hatırlatır. Fransa Bisiklet Turu, umudun ve yeniden başlama cesaretinin en güçlü simgelerinden biridir.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Başarı Emek ve Sabır Gerektirir&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Turu izlerken, başarıya ulaşmanın hiçbir zaman kolay olmadığını anlarız. Yarışı kazanan isimler, yıllarca süren yoğun antrenmanların, fedakârlıkların ve emeklerin sonucunda zirveye çıkarlar. Bisikletçiler, bazen yıllarca zafer kazanamaz, ancak sabırla ve azimle çalışmaya devam ederler. Tur, bize sabrın değerini, emek verilmeden büyük zaferlerin mümkün olmadığını öğretir. Başarının bir gecede gelmediğini, başarının ardında uzun yılların sessiz, fedakâr emeğinin yattığını fark ederiz.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Takım Olmanın Gücü&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Fransa Bisiklet Turu, görünürde bireysel bir spor olsa da aslında büyük bir takım çalışmasının ürünüdür. Bisikletçiler birbirlerinin önünü açar, takım arkadaşlarını destekleyerek rüzgârın etkisini azaltır, güçlerini paylaşırlar. İşte bu dayanışma, takım olmanın hayatımızdaki önemini gösterir. Bize yalnızca birlikte hareket ettiğimizde güçlü olduğumuzu hatırlatır. Tur boyunca bisikletçilerin dayanışmasını izlerken, hayatımızdaki sorunları çözmek için birbirimize destek olmamız gerektiğini anlarız.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Hayatta Her Zorluk Geçicidir&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Bisikletçiler dağları tırmanırken, acının ve yorgunluğun zirvesini yaşarlar. Ancak her zirveden sonra inişlerin, her zorluktan sonra rahatlamanın geleceğini de bilirler. Fransa Bisiklet Turu, bize hayatın da böyle olduğunu anlatır: Hiçbir acı sonsuza dek sürmez. Hayatta karşılaştığımız zorlukların geçici olduğunu, sabır ve dayanıklılıkla, mutlaka bir çıkış yolu bulabileceğimizi hatırlatır. Bu düşünce, zorlu anlarımızda bize umut verir, geleceğe daha güvenle bakmamızı sağlar.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Doğaya ve Yaşama Saygı&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Fransa Bisiklet Turu’nun belki de günümüzdeki en önemli mesajı doğaya ve çevreye duyduğumuz saygıyı hatırlatmasıdır. Bisiklet, doğayla dost, çevreye zarar vermeyen sürdürülebilir bir yaşamın sembolüdür. Bu yarış sayesinde, doğaya ve çevremize daha iyi davranmak, onu korumak ve gelecek nesillere temiz bir dünya bırakmak konusunda bilinçleniriz. Bisiklet yarışının temsil ettiği yaşam biçimi, gezegenimizi koruma sorumluluğumuzun simgesidir.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Hayallerin Peşinden Gitmek&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Son olarak Fransa Bisiklet Turu, hayallerimizin peşinden gitmenin ne kadar kıymetli olduğunu hatırlatır bizlere. Yarışa katılan her bisikletçi, aslında kendi hayalinin peşinden koşar. Bu yarış bize gösterir ki, büyük hayaller kurmak, onları gerçekleştirme arzusu taşımak hayatın anlamını oluşturur. Bisikletçiler pedal çevirdikçe biz de kendi hayallerimize daha sıkı sarılırız. Her pedal darbesi, her zorluk, her başarı ve her başarısızlık, bize hayal kurmaktan ve o hayallere ulaşmak için çalışmaktan vazgeçmememizi öğretir.&lt;/p&gt;
&lt;p&gt;Fransa Bisiklet Turu’nun öğrettikleri, bisiklet yarışlarının çok ötesindedir. Bu tur, insanlığın ortak değerlerinin, cesaretin, dayanıklılığın ve umudun eşsiz bir kutlamasıdır. Bu yüzden pedallar her çevrildiğinde, insanlar sadece bisiklet yarışını değil, yaşamın kendisini izlerler. Çünkü hayatın anlamı, aslında Fransa Bisiklet Turu’nda saklıdır.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/02c99fd60ee33250c3888a775932d7cc/2bef9/image7.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 66.89189189189189%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAIAAAAmMtkJAAAACXBIWXMAAAsTAAALEwEAmpwYAAADJElEQVR42gEZA+b8AMnd88vf9bTY9bXa9om14bzX8tnr+uHv/73JyNHd4uj0/+f1/OPy/tjn9tLl9dHk8+Pw+Z225VSK1ZGLrgDJ3/bL3vW+3PXA4fmpy+qFqdPT5/rF1uSzwMDs9vzU4fO/vs/Ky9Lq9//b7vvb8P7I3elgZ5AcM2hnY38AxNjyweD6x+P7zOH23O//ztzsd4SZprbJ6ebx8fX7g6PUlFR5hWdmsMTLkpqYt8XLiJCKbVcmSjMpV1lyAJhEWsfR4MvY6OHy/+36/8DL1FFWaF93rdHD1PP2+5imvXBob3d5f3d6dW9wbXV3eWxvZLKaSWFSYDFNfABuTWBjVFiRiYq0vM6wwdSgoZ6QiW6cmnGxwt69wLKdnYhyd36HipiXknefmm6DhZCJiIt7Y1YzMTkICgcAkZrTjHJ8Y1BOcWJndFhUkYF9aGNskIdIvbJ7cGM6hXcepqKElY2dloeKoZuZp6asmpGZa1xfbFpWgXNxAJyYxZV8f4t3dYBcV41kb7KnzG9hZlVPV39xXGRYP0c+Jp6UfHl3hXpvbnx3eZyamoJ4empYVV04HGRDLgCNf5yCZFVtXFZ0VkyYgIahjp10ZF1jV1Z6a25MQUZMRUh9cnJ1b3B0cHCOdnOshoSQiIlcRzpiQjBJNCUAcGdzeGddUkpQMjAxV1ZVc3J9cmhoa2Npb2VpZVpYZVxXn5aNl5CMmJOVnYWCfk4/a00+VDIcWERCU0dIAEtCR19XVVlQVTIvMGRTT4JoY3NgWIFtY6+hhYJ2amxrbcLAvqaoqZ6PhHxlU5mPhnpmVmdaQ2ZWQl0+MwBkS0NbRDltV0pdSj6EbVyOdViqm3e2r5XRzLmSkJR9e37Exci8vby6t6/Evri4ur+Li45gYVJUVkVZSkgAakxAcVdBh3ZZkYRVpJdxt6+TysS8uri0s7S0kJCTpaSmx8fIvry6uLezw8PEnZ2ihYSCUk9GR0g9V1RPAHZoUZCFYaaZdbClhcbAr8PAuquqp5mamZaXm5eYnLOysK+up6+tp7u4t7Gwr4eJkltcXkVEP1FRQG9rV44lsV7GMAjWAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Fransa Bisiklet Turu&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/02c99fd60ee33250c3888a775932d7cc/fcda8/image7.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/02c99fd60ee33250c3888a775932d7cc/12f09/image7.png 148w,https://blog.hkucuk.com/static/02c99fd60ee33250c3888a775932d7cc/e4a3f/image7.png 295w,https://blog.hkucuk.com/static/02c99fd60ee33250c3888a775932d7cc/fcda8/image7.png 590w,https://blog.hkucuk.com/static/02c99fd60ee33250c3888a775932d7cc/efc66/image7.png 885w,https://blog.hkucuk.com/static/02c99fd60ee33250c3888a775932d7cc/2bef9/image7.png 1024w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;p&gt;Fransa Bisiklet Turu, bisiklet yarışının çok ötesinde, insanlığın tutku, cesaret, azim ve dayanışma hikâyelerini içinde barındıran eşsiz bir yolculuktur. Tarihin sararmış gazete sayfalarından başlayıp milyonların kalbine ulaşan bu yarış, hem bisikletçilere hem de onları izleyen insanlara hayatta vazgeçmemeyi, sabretmeyi, hayallerin peşinden koşmayı ve doğaya saygı duymayı öğretir. Yüz yılı aşkın süredir devam eden bu muhteşem tur, bizlere yalnızca şampiyonları değil, daha önemlisi insan ruhunun sınırsız gücünü ve umudu hatırlatmaya devam ediyor. İşte tam da bu yüzden Fransa Bisiklet Turu, insanların kalbinde daima özel ve anlamlı bir yere sahip olmaya devam edecek.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Tour_de_France&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/Tour_de_France&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.letour.fr/en/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.letour.fr/en/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tr.wikipedia.org/wiki/1903_Fransa_Bisiklet_Turu&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://tr.wikipedia.org/wiki/1903_Fransa_Bisiklet_Turu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tarihdergi.com/fransa-bisiklet-turu-dunyanin-en-zor-yarisi/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://tarihdergi.com/fransa-bisiklet-turu-dunyanin-en-zor-yarisi/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2025/fransa-bisiklet-turu-bir-tutkunun-oykusu/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Chandy-Lamport Algoritması: Dağıtık Sistemlerde Küresel Durum Nasıl Görüntülenir?]]></title><description><![CDATA[Dağıtık sistemler, birden fazla bağımsız sürecin veya düğümün (node) ortak bir amaç doğrultusunda işbirliği yaptığı sistemlerdir. Modern teknoloji dünyasında mikroservis mimarilerinden, bulut (cloud) altyapılarına kadar pek çok alanda yaygın bir şekilde kullanılmaktadırlar.]]></description><link>https://blog.hkucuk.com/2025/chandy-lamport-algoritmasi-dagitik-sistemlerde-kuresel-durum-nasil-goruntulenir/</link><guid isPermaLink="false">https://blog.hkucuk.com/2025/chandy-lamport-algoritmasi-dagitik-sistemlerde-kuresel-durum-nasil-goruntulenir/</guid><pubDate>Sun, 23 Feb 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Dağıtık sistemler, birden fazla bağımsız sürecin veya düğümün (node) ortak bir amaç doğrultusunda işbirliği yaptığı sistemlerdir. Modern teknoloji dünyasında mikroservis mimarilerinden, bulut (cloud) altyapılarına kadar pek çok alanda yaygın bir şekilde kullanılmaktadırlar.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Küresel durum (global state), bir dağıtık sistemi oluşturan tüm süreçlerin ve bu süreçler arasındaki iletişim kanallarının o andaki durumlarının birleşimidir.&lt;/li&gt;
&lt;li&gt;Dağıtık bir sistemde küresel durumun belirlenmesi; hata tespiti, checkpointing, hata toleransı ve işlem koordinasyonu gibi konularda kritik bir rol oynar.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Fakat burada büyük bir sorun vardır: Dağıtık sistemlerde, tek bir küresel saat (global clock) veya tüm düğümleri aynı anda “donduran” bir mekanizma bulunmadığından, “O an” kavramı her düğüm için farklı olabilir. Bu durum tutarlı bir küresel durumun yakalanmasını zorlaştırır. &lt;a href=&quot;https://en.wikipedia.org/wiki/Chandy%E2%80%93Lamport_algorithm&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Chandy-Lamport Algoritması&lt;/a&gt; bu sorunu çözmek için geliştirilmiş klasik bir metottur.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/6063f93e6fec8386a95e343412809cab/d4417/image.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 72.2972972972973%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAIAAACgpqunAAAACXBIWXMAAAsTAAALEwEAmpwYAAACvUlEQVR42kVT+1PaQBD2L+70h9a2o0Nb2+mgrThYwKBAeCnPBMEKBApoBJKA5RWJvJWnARGx8oZgD7Wys3d7t7ffzbd7twsPjzKdTofDETDDTnvUbXPcGDgHwyE3nT6dTkYDsBiORpMJ9/BfFsDgRv1LAslFsJsMlXWIs06o4FM3M6H2VbGRIuoxrBHHSvguS/uu87FazNNI4nNwKx/BNYv7ylcnqiXGIkjZgG6kbYIYskqjq5R2xS5ePFLwsgeCCMIn9B+zjq1xvzMDA1rd+iXt3PQin+JuNWkURKySsI5P7fEtsjfBgy8B7TfXDs8Lf46ZBYfK93bt65xH+ZTLQrfbYRsthknT0T+laqN3f3tVKZ7bpfT+Dw+y7EGWCMPXuHk9avpOI2uME0oTKJunW+12r9ed0abTVcgQUJiDMEIksux4wrHlSwaDnLp3TsOHMLqasglzDkk5guXzBS+ZjqZqHMc95xyii5DuBNJ5YZTcNgYCkcJoPDkPe117b/02XhzlZ2wbzXwkdVFXWymx1rf367Q/HD+D8dPcjomAkaDM5Jeb/CK164g4u75u+Kxbpw7h33KyXjij0yWTMybV45Jdrx1n5tX2khmpwf9T6RQq7CIVBiJgJHCWq9dqLFutVNgbXyirQAgFSipREjL48XDuuWDAgJsA2239sRB2LPNlvDXFyrpaBOgdkBZ3QmMNyRFSbQ0DVVlCUr2fShTn4GD0YtsYlGjdYo17a9cDFmCW6nyAyKYSE6mB3wVykWh/CxW/hEqMztTmYCbHQvrAjtEPo5RqPwyjIZkZkKQgHS43BzRWCqjKQsrNQUh/LIDd+VJzDu50B4dHSQfOmLHYgY+OMOVEuuqlMiCdWKrauuu17/uNVgfQBjHJHNsfjGbgp4LNvjc3a4Bmu3N713tpleljV7xsK2x78PhCL/IPce6i5Iz7b2MAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Chandy-Lamport Algoritması&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/6063f93e6fec8386a95e343412809cab/fcda8/image.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/6063f93e6fec8386a95e343412809cab/12f09/image.png 148w,https://blog.hkucuk.com/static/6063f93e6fec8386a95e343412809cab/e4a3f/image.png 295w,https://blog.hkucuk.com/static/6063f93e6fec8386a95e343412809cab/fcda8/image.png 590w,https://blog.hkucuk.com/static/6063f93e6fec8386a95e343412809cab/efc66/image.png 885w,https://blog.hkucuk.com/static/6063f93e6fec8386a95e343412809cab/c83ae/image.png 1180w,https://blog.hkucuk.com/static/6063f93e6fec8386a95e343412809cab/d4417/image.png 1737w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;dağıtık-sistemlerde-küresel-durum-kavramı&quot;&gt;&lt;a href=&quot;#da%C4%9F%C4%B1t%C4%B1k-sistemlerde-k%C3%BCresel-durum-kavram%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Dağıtık Sistemlerde Küresel Durum Kavramı&lt;/h2&gt;
&lt;p&gt;Dağıtık bir sistemde:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Süreçler (Processes):&lt;/strong&gt; Her biri bağımsız çalışan genellikle bir işlemci, bir çekirdek veya bir program parçası.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;İletişim Kanalları (Channels):&lt;/strong&gt; Süreçler arasındaki mesaj iletim yolları. Bu kanalların kendine özgü gecikmeleri veya sıralama sorunları olabilir.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Bir süreç yerel durum (local state) olarak adlandırılan kendi belleği, kaydedilmiş değişkenleri, veri yapılarını vs. saklar. Küresel durum tüm süreçlerin yerel durumlarının ve süreçler arası kanallarda bulunan mesajların birleşiminden oluşur.&lt;/p&gt;
&lt;h2 id=&quot;chandy-lamport-algoritmasının-tarihçesi-ve-önemi&quot;&gt;&lt;a href=&quot;#chandy-lamport-algoritmas%C4%B1n%C4%B1n-tarih%C3%A7esi-ve-%C3%B6nemi&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Chandy-Lamport Algoritması’nın Tarihçesi ve Önemi&lt;/h2&gt;
&lt;p&gt;Chandy-Lamport Algoritması, K. Mani Chandy ve Leslie Lamport tarafından 1985 yılında yayımlanan &lt;a href=&quot;https://lamport.azurewebsites.net/pubs/chandy.pdf&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;“Distributed Snapshots: Determining Global States of Distributed Systems”&lt;/a&gt; başlıklı makalede tanıtılmıştır. Bu makale dağıtık sistemlerde tutarlı snapshot (anlık görüntü) alma problemine getirdiği çözüm ile literatürde çığır açmıştır.&lt;/p&gt;
&lt;p&gt;Algoritma, o zamandan bu yana:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Checkpointing:&lt;/strong&gt; Dağıtık sistemin o andaki durumunu kaydedip, bir hata sonrası bu duruma geri dönme.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hata tespiti:&lt;/strong&gt; Örneğin “hangi süreçler çalışıyor, hangileri çalışmıyor” gibi durumların gözlemlenmesi.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deadlock tespiti ve analizi:&lt;/strong&gt; Bazı süreçler kaynak bekleyerek sıkıştığında küresel durumun analizi gerekir.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;gibi birçok alanda temel bir çerçeve sunmuştur.&lt;/p&gt;
&lt;h2 id=&quot;algoritmanın-temel-i̇lkeleri&quot;&gt;&lt;a href=&quot;#algoritman%C4%B1n-temel-i%CC%87lkeleri&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Algoritmanın Temel İlkeleri&lt;/h2&gt;
&lt;p&gt;Chandy-Lamport Algoritması şu basit ama etkili fikre dayanır:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;Marker (İşaretleyici) Kullanımı:&lt;/em&gt;&lt;/strong&gt; Bir süreç anlık görüntü (snapshot) başlatmaya karar verdiğinde, kendi durumunu kaydeder ve diğer süreçlere özel bir &lt;code class=&quot;language-text&quot;&gt;marker&lt;/code&gt; mesajı gönderir.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;Koordinasyon:&lt;/em&gt;&lt;/strong&gt; Marker mesajı alan süreçler, eğer bu marker’ı ilk kez görüyorsa, kendi durumlarını da kaydedip marker’ı başkalarına yollar.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;Kanal Durumu Kaydı:&lt;/em&gt;&lt;/strong&gt; Her süreç marker mesajından önce ve sonra gelen mesajları takip ederek kanal durumunu tutarlı şekilde belirler.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Bu sayede tüm süreçler zamansal olarak ayrık ancak mantıksal olarak tutarlı bir snapshot elde edebilirler.&lt;/p&gt;
&lt;h2 id=&quot;algoritmanın-adımları&quot;&gt;&lt;a href=&quot;#algoritman%C4%B1n-ad%C4%B1mlar%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Algoritmanın Adımları&lt;/h2&gt;
&lt;p&gt;Chandy-Lamport Algoritması üç temel aşamadan oluşur:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Snapshot (Anlık Görüntü) Başlatma&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Bir süreç (örneğin &lt;code class=&quot;language-text&quot;&gt;P_1&lt;/code&gt;), kendi yerel durumunu kaydeder.&lt;/li&gt;
&lt;li&gt;Tüm komşu süreçlere birer marker mesajı gönderir.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Marker Mesajının Alınması&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Başka bir süreç (ör. &lt;code class=&quot;language-text&quot;&gt;P_2&lt;/code&gt;), eğer bu algoritmayı ilk kez başlatıyorsa:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Kendi yerel durumunu kaydeder.&lt;/li&gt;
&lt;li&gt;Tüm komşularına marker mesajı gönderir.&lt;/li&gt;
&lt;li&gt;Marker mesajı gelmeden önce alınan mesajları ilgili kanalın parçası olarak kaydeder.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Eğer süreç zaten bir snapshot başlatmışsa ve marker mesajını ikinci kez görüyorsa, bu marker sadece kanal durumunu tamamlamak için kullanılır.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Kanal Durumunu Kaydetme&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Bir kanalın durumu, marker mesajı geldiği andan itibaren veya marker’ı gönderdikten hemen sonraki mesaj trafiği ile ilişkilendirilir.&lt;/li&gt;
&lt;li&gt;Böylece, kanalın o anki içeriği (gelen ama henüz işlenmemiş mesajlar) kaydedilmiş olur.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;kanal-channel-durumlarının-kaydedilmesi&quot;&gt;&lt;a href=&quot;#kanal-channel-durumlar%C4%B1n%C4%B1n-kaydedilmesi&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kanal (Channel) Durumlarının Kaydedilmesi&lt;/h2&gt;
&lt;p&gt;Kanal durumu bir sürecin marker mesajını gönderdikten (veya aldıktan) sonra kanal üzerinden geçen mesajlarla ilişkilendirilir.
Daha kesin olmak gerekirse:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Bir süreç marker’ı kaydedip gönderene kadar kanal durumu kendi içinde “tamamlanmamış” kabul edilir.&lt;/li&gt;
&lt;li&gt;Marker mesajı alındıktan sonra başka bir süreç, bu kanaldan gelen mesajları biriktirmeye başlar. O mesajlar snapshot’ın parçası haline gelir.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Özellikle marker mesajı almadan önce gelen mesajlar, kanal durumunun kaydedilmesine dahil olmaz. Çünkü o mesajlar zaten o kanalın önceki snapshot ile ilişkilendirilmiş ya da sürecin yerel durumuna dahil edilmiştir.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;ayrıntılı-bir-örnek-senaryo&quot;&gt;&lt;a href=&quot;#ayr%C4%B1nt%C4%B1l%C4%B1-bir-%C3%B6rnek-senaryo&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Ayrıntılı Bir Örnek Senaryo&lt;/h2&gt;
&lt;p&gt;Üç süreçten oluşan (&lt;code class=&quot;language-text&quot;&gt;P_1&lt;/code&gt;, &lt;code class=&quot;language-text&quot;&gt;P_2&lt;/code&gt;, &lt;code class=&quot;language-text&quot;&gt;P_3&lt;/code&gt;) bir dağıtık sistem düşünelim. Her bir sürecin birbiriyle etkileşimi şu şekilde olsun:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;P_1&lt;/code&gt; ↔ &lt;code class=&quot;language-text&quot;&gt;P_2&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;P_2&lt;/code&gt; ↔ &lt;code class=&quot;language-text&quot;&gt;P_3&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;P_1&lt;/code&gt; ↔ &lt;code class=&quot;language-text&quot;&gt;P_3&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Yani, tam bağlı (fully connected) bir topolojiye sahibiz.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Snapshot Başlatma (&lt;code class=&quot;language-text&quot;&gt;P_1&lt;/code&gt;)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;P_1&lt;/code&gt; kendi durumunu kaydeder. Diyelim ki &lt;code class=&quot;language-text&quot;&gt;P_1&lt;/code&gt;’in “belleğindeki değer: x=10”, “işlem sayısı: 3” olsun.&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;P_1&lt;/code&gt;, &lt;code class=&quot;language-text&quot;&gt;P_2&lt;/code&gt; ve &lt;code class=&quot;language-text&quot;&gt;P_3&lt;/code&gt;‘e marker mesajları gönderir.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Marker Mesajını &lt;code class=&quot;language-text&quot;&gt;P_2&lt;/code&gt; Alır&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Eğer &lt;code class=&quot;language-text&quot;&gt;P_2&lt;/code&gt; daha önce marker mesajı almadıysa (ilk defa alıyor):&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;P_2&lt;/code&gt; kendi durumunu kaydeder. (Örneğin: y=20, işlemler=5)&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;P_2&lt;/code&gt;, hem &lt;code class=&quot;language-text&quot;&gt;P_1&lt;/code&gt; hem &lt;code class=&quot;language-text&quot;&gt;P_3&lt;/code&gt;‘e marker mesajı gönderir. (Aslında &lt;code class=&quot;language-text&quot;&gt;P_1&lt;/code&gt;’e de gönderir ancak &lt;code class=&quot;language-text&quot;&gt;P_1&lt;/code&gt; marker’a sahip olduğu için sadece kanal durumunu tamamlar.)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Marker Mesajını &lt;code class=&quot;language-text&quot;&gt;P_3&lt;/code&gt; Alır&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Aynı mantıkla, &lt;code class=&quot;language-text&quot;&gt;P_3&lt;/code&gt; kendi durumunu kaydeder. (z=15, işlemler=7)&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;P_3&lt;/code&gt;, diğer iki sürece marker gönderir.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Kanal Durumlarının Kaydedilmesi&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;P_2&lt;/code&gt;, &lt;code class=&quot;language-text&quot;&gt;P_3&lt;/code&gt;’ten marker gelmeden önce &lt;code class=&quot;language-text&quot;&gt;P_3&lt;/code&gt;’e bazı mesajlar göndermiş olabilir. Eğer bu mesajlar marker’dan önce çıktı ve marker’dan sonra teslim alındıysa, bu mesajlar “giden ama henüz işlenmemiş” bir duruma düşebilir. Dolayısıyla kanal durumuna dahil edilir.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Bu adımların tamamlanmasıyla üç sürecin de yerel durumları ve aralarındaki kanallarda “bekleyen” mesajlar kaydedilerek tam, tutarlı bir snapshot oluşturulur.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;golang-ile-kod-örneği&quot;&gt;&lt;a href=&quot;#golang-ile-kod-%C3%B6rne%C4%9Fi&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;GoLang ile Kod Örneği&lt;/h2&gt;
&lt;p&gt;Aşağıda Chandy-Lamport algoritmasının basitleştirilmiş bir simülasyonunu kodlamaya çalışacağız. Örnek üç süreç (goroutine) arasında mesaj alışverişini ve bir marker mesajını nasıl işlediklerini göstermektedir.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Lütfen dikkat: Aşağıdaki kod tam bir üretim kodu değildir, daha çok eğitici bir amaç taşır. Dağıtık sistemlerde gerçek mesajlaşma genellikle ağ üzerinden gerçekleşir; burada, Go’nun chan (channel) mekanizması ile bir benzetim (simulation) yapıyoruz.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;fmt&quot;&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;sync&quot;&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;time&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// We will define a simple structure to hold the state of each process&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; Process &lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    id            &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;
    localState    &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;
    hasRecorded   &lt;span class=&quot;token builtin&quot;&gt;bool&lt;/span&gt;
    markerChannel &lt;span class=&quot;token keyword&quot;&gt;chan&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;bool&lt;/span&gt;
    messageChan   &lt;span class=&quot;token keyword&quot;&gt;chan&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;
    wg            &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;sync&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;WaitGroup
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Global wait group for all processes&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; wg sync&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;WaitGroup

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// Create 3 processes&lt;/span&gt;
    process1 &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; Process&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        id&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;            &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        localState&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;    &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        hasRecorded&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;   &lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        markerChannel&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;chan&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;bool&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        messageChan&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;   &lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;chan&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        wg&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;            &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;wg&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    process2 &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; Process&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        id&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;            &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        localState&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;    &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        hasRecorded&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;   &lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        markerChannel&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;chan&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;bool&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        messageChan&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;   &lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;chan&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        wg&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;            &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;wg&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    process3 &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; Process&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        id&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;            &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        localState&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;    &lt;span class=&quot;token number&quot;&gt;30&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        hasRecorded&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;   &lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        markerChannel&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;chan&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;bool&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        messageChan&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;   &lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;chan&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        wg&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;            &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;wg&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;// We will use one channel to simulate message passing between each pair&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// But for clarity, let&apos;s just consider processes sending messages to each other in a ring or fully connected scenario&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// Here, we simulate a fully connected pattern in a simplistic manner&lt;/span&gt;

    wg&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;go&lt;/span&gt; process1&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;run&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;process2&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;process3&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;go&lt;/span&gt; process2&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;run&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;process1&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;process3&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;go&lt;/span&gt; process3&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;run&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;process1&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;process2&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;// Start the system for a bit, then initiate a snapshot from process1&lt;/span&gt;
    time&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Sleep&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; time&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Second&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;=== Starting Snapshot from Process 1 ===&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    process1&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;markerChannel &lt;span class=&quot;token operator&quot;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// send a marker to process1&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;// Wait for all processes to finish&lt;/span&gt;
    wg&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Wait&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// run is the main loop for each process&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;p &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;Process&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;run&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;p2&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; p3 &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;Process&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;defer&lt;/span&gt; p&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;wg&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Done&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;// Start a ticker that sends a message to p2 and p3 every 500ms&lt;/span&gt;
    ticker &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; time&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;NewTicker&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;500&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; time&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Millisecond&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;select&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;lt;-&lt;/span&gt;ticker&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;C&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
            &lt;span class=&quot;token comment&quot;&gt;// Send a random message (here, just localState) to p2 and p3&lt;/span&gt;
            p2&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;messageChan &lt;span class=&quot;token operator&quot;&gt;&amp;lt;-&lt;/span&gt; p&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;localState
            p3&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;messageChan &lt;span class=&quot;token operator&quot;&gt;&amp;lt;-&lt;/span&gt; p&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;localState
            fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Process %d sends message with content %d\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; p&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;id&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; p&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;localState&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

        &lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; marker &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;lt;-&lt;/span&gt;p&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;markerChannel&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
            &lt;span class=&quot;token comment&quot;&gt;// If marker is received, handle the snapshot logic&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; marker &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;p&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;hasRecorded &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                    p&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;takeSnapshot&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
                    &lt;span class=&quot;token comment&quot;&gt;// Send marker to other processes&lt;/span&gt;
                    p2&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;markerChannel &lt;span class=&quot;token operator&quot;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;
                    p3&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;markerChannel &lt;span class=&quot;token operator&quot;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                    &lt;span class=&quot;token comment&quot;&gt;// If already recorded, do nothing special&lt;/span&gt;
                    &lt;span class=&quot;token comment&quot;&gt;// except acknowledging we received a marker&lt;/span&gt;
                    fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Process %d already recorded a snapshot\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; p&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;id&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

        &lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; msg &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;lt;-&lt;/span&gt;p&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;messageChan&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
            &lt;span class=&quot;token comment&quot;&gt;// We receive a normal message&lt;/span&gt;
            fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Process %d receives message with content %d\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; p&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;id&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; msg&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token comment&quot;&gt;// If we haven&apos;t recorded yet, this message belongs to the channel state&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;p&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;hasRecorded &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Process %d: This message is stored as part of the channel state for snapshot.\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; p&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;id&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

        &lt;span class=&quot;token comment&quot;&gt;// We add a timeout or some condition to exit&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;lt;-&lt;/span&gt;time&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;After&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; time&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Second&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
            fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Process %d shutting down.\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; p&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;id&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// takeSnapshot simulates recording the local state&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;p &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;Process&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;takeSnapshot&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    p&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;hasRecorded &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;
    fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Process %d is recording local state: %d\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; p&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;id&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; p&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;localState&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// In a real scenario, we would also store the channel states here&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Program çalıştırıldığında çıktısı aşağıdaki gibi olacaktır.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;json&quot;&gt;&lt;pre class=&quot;language-json&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;Process &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; sends message with content &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;
Process &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; receives message with content &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;
Process &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; This message is stored as part of the channel state for snapshot.
Process &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; sends message with content &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;
Process &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt; receives message with content &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;
Process &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; This message is stored as part of the channel state for snapshot.
Process &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt; sends message with content &lt;span class=&quot;token number&quot;&gt;30&lt;/span&gt;
Process &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt; receives message with content &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;
Process &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; This message is stored as part of the channel state for snapshot.
Process &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; receives message with content &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;
Process &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; This message is stored as part of the channel state for snapshot.
Process &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; receives message with content &lt;span class=&quot;token number&quot;&gt;30&lt;/span&gt;
Process &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; This message is stored as part of the channel state for snapshot.
Process &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; receives message with content &lt;span class=&quot;token number&quot;&gt;30&lt;/span&gt;
Process &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; This message is stored as part of the channel state for snapshot.
Process &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; sends message with content &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;
Process &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; receives message with content &lt;span class=&quot;token number&quot;&gt;30&lt;/span&gt;
Process &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; This message is stored as part of the channel state for snapshot.
Process &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; receives message with content &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;
Process &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt; sends message with content &lt;span class=&quot;token number&quot;&gt;30&lt;/span&gt;
Process &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt; receives message with content &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;
Process &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; This message is stored as part of the channel state for snapshot.
Process &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt; receives message with content &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;
Process &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; This message is stored as part of the channel state for snapshot.
Process &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; This message is stored as part of the channel state for snapshot.
Process &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; sends message with content &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;
Process &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; receives message with content &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;
..........&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Programın çalışır haline &lt;a href=&quot;https://go.dev/play/p/veMD3BcCy9H&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;şuradan&lt;/a&gt; erişilebilir.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Bu örnek tüm Chandy-Lamport sürecinin basitleştirilmiş bir versiyonudur. Gerçek dünyada ağ gecikmeleri, yeniden iletim, hata durumları gibi karmaşık konular eklenir ve ele alınır.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&quot;gerçek-dünya-uygulamaları&quot;&gt;&lt;a href=&quot;#ger%C3%A7ek-d%C3%BCnya-uygulamalar%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Gerçek Dünya Uygulamaları&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Dağıtık Veritabanlarında Checkpointing&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Önemli veritabanları zaman zaman anlık görüntüler alarak veri bütünlüğünü korurlar. Böylece bir hata olması durumunda sistem bu kayda geri dönebilir.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Hata Tespiti ve Kurtarma&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Dağıtık sistemler sürekli çevrimiçi olmayı hedeflediğinden, belirli zamanlarda alınan snapshot’lar sayesinde hangi süreçlerin çalıştığı, hangi kanallarda mesajların takılıp kaldığı gibi durumlar kolayca tespit edilir.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Dağıtık Sistemlerde Tutarlılık Kontrolü&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Örneğin blockchain gibi çoğaltılmış defter (ledger) yapıları, dönemsel olarak küresel durum bilgisine ihtiyaç duyarlar.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;IoT ve Mikroservis Mimarisi&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sensör verilerinin toplanması veya çok sayıda mikroservisin iletişimi sırasında, sistemin belirli bir anlık durumunu analiz etmek için snapshot’lar alınır.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;sık-karşılaşılan-sorular-ve-yanıtları&quot;&gt;&lt;a href=&quot;#s%C4%B1k-kar%C5%9F%C4%B1la%C5%9F%C4%B1lan-sorular-ve-yan%C4%B1tlar%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Sık Karşılaşılan Sorular ve Yanıtları&lt;/h2&gt;
&lt;p&gt;Soru 1: Algoritma eşzamanlı (synchronous) veya eşzamanlı olmayan (asynchronous) ağlarda çalışır mı?
Yanıt: Chandy-Lamport Algoritması, eşzamanlı olmayan (asynchronous) sistemlerde de çalışabilir. Hatta bu algoritmanın güzelliği iletişim gecikmelerinin belirsiz olduğu ortamlarda bile tutarlı snapshot alınmasını garanti etmesidir.&lt;/p&gt;
&lt;p&gt;Soru 2: Marker mesajının kendisi bir durumu nasıl temsil ediyor?
Yanıt: Marker mesajı “Bu kanalda snapshot başlıyor” anlamını taşır. Her süreç marker mesajını aldığında (eğer ilk kez görüyorsa) kendi yerel durumunu kaydeder ve süreci başlatır.&lt;/p&gt;
&lt;p&gt;Soru 3: Tüm süreçler snapshot’ı tamamlayana kadar sistemi durdurmamız gerekir mi?
Yanıt: Hayır. Chandy-Lamport Algoritması dağıtık çalışır ve süreçlerin normal çalışmasını engellemez. Süreçler snapshot alırken mesaj göndermeye ve almaya devam edebilir.&lt;/p&gt;
&lt;p&gt;Soru 4: Diğer snapshot algoritmalarıyla farkı nedir?
Yanıt: Chandy-Lamport marker kullanımıyla basit, genişletilebilir ve tutarlı snapshot alır. Başka algoritmalar da vardır (örneğin Mattern’ın renkli marker algoritması) ancak çoğu Chandy-Lamport fikrinden esinlenmiştir.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Chandy-Lamport Algoritması dağıtık sistemlerdeki küresel durum (global state) problemini ustalıkla çözen, marker-passing (işaretleyici iletme) temelli bir yöntemdir. Esas başarısı herhangi bir merkezi denetleyici kullanmadan, süreçlerin birbirlerini bloke etmeden, tutarlı bir snapshot yaratmaya olanak sağlamasıdır.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Chandy%E2%80%93Lamport_algorithm&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/Chandy%E2%80%93Lamport_algorithm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://lamport.azurewebsites.net/pubs/chandy.pdf&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://lamport.azurewebsites.net/pubs/chandy.pdf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.sciencedirect.com/science/article/abs/pii/S0743731583710750&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.sciencedirect.com/science/article/abs/pii/S0743731583710750&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://decomposition.al/blog/2019/04/26/an-example-run-of-the-chandy-lamport-snapshot-algorithm/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://decomposition.al/blog/2019/04/26/an-example-run-of-the-chandy-lamport-snapshot-algorithm/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2025/chandy-lamport-algoritmasi-dagitik-sistemlerde-kuresel-durum-nasil-goruntulenir/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Byzantine Generals Problemi: Dağıtık Sistemlerde Hata Toleransı]]></title><description><![CDATA[Dağıtık sistemler günümüzün en kritik teknolojik yapı taşlarından biridir. Veritabanları, blok zincir ağları (blockchain), çok katmanlı kurumsal yazılım mimarileri, bulut bilişim altyapıları ve daha pek çok alanda, farklı fiziksel veya sanal düğümlerin (nodes) birlikte çalışması esasına dayanan sistemler kullanırız. Ancak bu sistemlerde iletişim kopuklukları, donanım hataları, kötü niyetli saldırılar veya yazılım hataları gibi pek çok sorun ortaya çıkabilir. Bu sorunlar dağıtık sistemin genel işleyişini ve güvenilirliğini doğrudan etkiler.]]></description><link>https://blog.hkucuk.com/2025/byzantine-generals-problemi-dagitik-sistemlerde-hata-toleransi/</link><guid isPermaLink="false">https://blog.hkucuk.com/2025/byzantine-generals-problemi-dagitik-sistemlerde-hata-toleransi/</guid><pubDate>Wed, 08 Jan 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Dağıtık sistemler günümüzün en kritik teknolojik yapı taşlarından biridir. Veritabanları, blok zincir ağları (blockchain), çok katmanlı kurumsal yazılım mimarileri, bulut bilişim altyapıları ve daha pek çok alanda, farklı fiziksel veya sanal düğümlerin (nodes) birlikte çalışması esasına dayanan sistemler kullanırız. Ancak bu sistemlerde iletişim kopuklukları, donanım hataları, kötü niyetli saldırılar veya yazılım hataları gibi pek çok sorun ortaya çıkabilir. Bu sorunlar dağıtık sistemin genel işleyişini ve güvenilirliğini doğrudan etkiler.&lt;/p&gt;
&lt;p&gt;Dağıtık bir sistemin tasarımında cevaplanması gereken en önemli sorulardan biri “Sistem bileşenlerinin bir kısmı arızalansa veya kasıtlı olarak kötü niyetli davransa bile sistem nasıl doğru çalışabilir?” sorusudur. Bu sorunun en klasik ve çarpıcı örneği, Leslie Lamport, Robert Shostak ve Marshall Pease tarafından 1982’de ortaya konan ve literatüre “Byzantine Generals Problem” (Bizans Generalleri Problemi) olarak geçen problem tanımıdır.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/4fe1d283a31462fe19f66708d696d561/8c557/image.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 56.08108108108109%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABwElEQVR42o1Sy4rUQBTNvw3iV4jMV7gTXIlLQZmd6MqFzE4EEcQRYTo905lM0j3pdNLpvDqZ6rxTVXlUJRUzXUP7AMELdbmXcw/3ck4Jw9/Bhn8FY/vUk7biQ8L4up7puoZgxmeaGrlrsaPtfduSpb4YCbwti0ienhLSHMj9fDFLst3QNgzmJcpW2g/yi9woqogqyFDBakwQxCngkNAxZnoGiIE9Ocvev3BePjG/fIzSNFjJA6U1paar76Kdc/Y5efPUOnmWyNMkBqGh3pEJpfLNeZTH6w/vzOMj6dGD5dtXeRHpV99o26Aaq9okybPF6+fW8dHF44fOp9Nd7K/k733fC2wvQxh7xmreuRbUlOVCKbJyr80dNN6flQnLEuaYkSqtjSWGNUcFfr2iT0C04bW9ntuWwYUdMwCbmfJ1IISjpiaBYPsHualbd+NubS9w/K27bermsLltW9v3LM9zPT8Ib90gyMuCWyqwvbEpTiXvStxMZef62lfyqjiQO0KApoaKZF+cA21+e6OiCHDb7zdTRlGPIIP16AbD3dD9/jdYhQcMGYZDXXWwxEWOMCaECMN/Bz8kiuOJKM4uL8Mw/AmWMmOfcq8M0wAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Byzantine Generals Problemi&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/4fe1d283a31462fe19f66708d696d561/fcda8/image.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/4fe1d283a31462fe19f66708d696d561/12f09/image.png 148w,https://blog.hkucuk.com/static/4fe1d283a31462fe19f66708d696d561/e4a3f/image.png 295w,https://blog.hkucuk.com/static/4fe1d283a31462fe19f66708d696d561/fcda8/image.png 590w,https://blog.hkucuk.com/static/4fe1d283a31462fe19f66708d696d561/8c557/image.png 700w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;hr&gt;
&lt;h1 id=&quot;byzantine-generals-problemi-nedir&quot;&gt;&lt;a href=&quot;#byzantine-generals-problemi-nedir&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Byzantine Generals Problemi Nedir?&lt;/h1&gt;
&lt;p&gt;Byzantine Generals Problemi, özünde güvenilmez iletişim kanalları ve potansiyel olarak kötü niyetli katılımcıların bulunduğu bir dağıtık sistemde uzlaşmaya (konsensüs) varmanın zorluğunu anlatan mecazi bir hikâye üzerinden sunulur. Problemin ana fikri şöyle özetlenebilir:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Bizans İmparatorluğu’nda farklı ordu birliklerine komuta eden generaller vardır.&lt;/li&gt;
&lt;li&gt;Bu generaller farklı konumlarda konuşlanmıştır ve ortak bir hedefe (örneğin bir kaleye) saldırı düzenlemek veya geri çekilmek gibi bir strateji kararı almak zorundadırlar.&lt;/li&gt;
&lt;li&gt;Generallerin saldırı veya geri çekilme kararı ortak olmalıdır; eğer bazıları saldırırken bazıları geri çekilirse ordu parçalanacak ve büyük bir yenilgi yaşanacaktır.&lt;/li&gt;
&lt;li&gt;Generaller sadece haberci (mesaj taşıyan elçi) aracılığıyla birbirleriyle iletişim kurabilmektedir.&lt;/li&gt;
&lt;li&gt;Haberci yolda yakalanıp mesajı değiştirebilir veya herhangi bir general kasıtlı olarak yanlış bilgi yayabilir (kötü niyetli olabilir).&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Bu senaryoda “Her bir general, çoğunluk kararını doğru olarak öğrenerek aynı sonuca varabilir mi?” sorusu, çözülmesi gereken temel meseledir. Eğer sistemde bir veya daha fazla hilekâr/kötü niyetli general varsa, bu generaller yanlış mesaj göndererek sistemin uzlaşmaya varmasını engellemeye çalışabilir. Byzantine Generals Problemi işte bu “herhangi bir sayıda hatalı veya kötü niyetli düğüme karşı sistemdeki doğru (dürüst) düğümlerin ortak bir karara varması nasıl sağlanır?” sorusunu temsil eder.&lt;/p&gt;
&lt;h1 id=&quot;sorunun-tarihçesi-ve-önemi&quot;&gt;&lt;a href=&quot;#sorunun-tarih%C3%A7esi-ve-%C3%B6nemi&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Sorunun Tarihçesi ve Önemi&lt;/h1&gt;
&lt;p&gt;Byzantine Generals Problemi, ilk olarak 1982 yılında Leslie Lamport, Robert Shostak ve Marshall Pease tarafından “The Byzantine Generals Problem” başlıklı makalede detaylı şekilde açıklanmıştır. Dağıtık sistemler ve hata toleransı konularında bir dönüm noktasıdır. O döneme kadar “hata toleransı” çoğunlukla “düğüm çökerse ne olur?” sorusuna odaklanıyordu (örneğin bir sunucu aniden kapanırsa). Ancak kötü niyetli davranışlar da dahil olmak üzere daha karmaşık hata biçimlerini ele almak için yeni bir bakış açısı lazımdı. Bu problem, özellikle şu kritik noktalarda önemlidir:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Güvenli Dağıtık Hesaplama:&lt;/strong&gt; Finansal sistemler, askeri sistemler, kritik altyapılar gibi ortamlarda güvenlik ve doğruluk (correctness) esastır.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Blok Zincir Teknolojisi:&lt;/strong&gt; Bitcoin gibi blok zincirlerde, ağ katılımcılarının (madenciler, doğrulayıcılar) dürüst olup olmadığı belirsizdir. Byzantine hata toleransını sağlamak, blok zincirlerin devamlılığında temel bir gerekliliktir.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bulut Bilişim ve Mikro Hizmet Mimarisi:&lt;/strong&gt; Birçok farklı sunucunun ve hizmetin birbiriyle iletişim halinde olduğu bulut ortamlarında, söz konusu düğümlerin bir kısmı ağ veya yazılım sorunları yaşayabilir.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dağıtık Veritabanları:&lt;/strong&gt; Bir veritabanı kümesi üzerinde farklı kopyalara (replica) sahip düğümler, doğru bir çoğunluk kararı (konsensüs) üretmek zorundadır.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&quot;hata-türleri-ve-byzantine-hatalar&quot;&gt;&lt;a href=&quot;#hata-t%C3%BCrleri-ve-byzantine-hatalar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Hata Türleri ve Byzantine Hatalar&lt;/h1&gt;
&lt;p&gt;Dağıtık sistemlerdeki olası hata türlerini kabaca ikiye ayırabiliriz:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Çökme (Crash) veya Pasif Hatalar:&lt;/strong&gt; Bir düğüm tamamen çalışmayı bırakır, mesaj göndermez veya yanıt vermez. Diğer tüm dürüst düğümler “Bu düğüm yok hükmündedir, dikkate almayalım” diyerek bir strateji geliştirebilir.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Byzantine (Aktif ve Kötü Niyetli) Hatalar:&lt;/strong&gt; Düğüm çalışmayı bırakmak yerine kötü niyetli davranışlar (mesajları değiştirmek, çelişkili mesajlar göndermek, mesajları gereksiz yere çoğaltmak vb.) veya beklenmedik arızalar (yanlış hesaplama sonucu yanlış veri yollamak, iletişim kanalını kasıtlı olarak sabote etmek vb.) sergiler.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Byzantine hatalar klasik çökme hatalarına göre çok daha tehlikelidir. Çünkü kötü niyetli veya arızalı düğüm, sadece tek bir davranış biçiminde sabit kalmak zorunda değildir; sistemin işleyişine kasıtlı zarar vermek adına çeşitli yöntemler deneyebilir. Bu da konsensüs protokolleri tasarlarken son derece karmaşık önlemler alınmasını gerektirir.&lt;/p&gt;
&lt;h1 id=&quot;byzantine-generals-probleminin-resmi-tanımı&quot;&gt;&lt;a href=&quot;#byzantine-generals-probleminin-resmi-tan%C4%B1m%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Byzantine Generals Problemi’nin Resmi Tanımı&lt;/h1&gt;
&lt;p&gt;Sorunu biraz daha resmi hale getirelim:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sistemde &lt;code class=&quot;language-text&quot;&gt;𝑛&lt;/code&gt; tane düğüm (node) olsun.&lt;/li&gt;
&lt;li&gt;Bu düğümlerden bazıları Byzantine davranışlar sergileyebilir (kötü niyetli, arızalı, tutarsız vb.).&lt;/li&gt;
&lt;li&gt;Her düğüm, belirli bir mesaj (örneğin, “Saldır”, “Saldırma” veya “0” / “1” gibi) değeriyle başlar.&lt;/li&gt;
&lt;li&gt;Amaç mümkünse tüm dürüst düğümlerin aynı ortak değerde (örneğin “Saldır”) uzlaşmasıdır.&lt;/li&gt;
&lt;li&gt;Dürüst düğümler protokole sadık kalırken, Byzantine düğümler herhangi bir kural tanımadan hareket edebilir.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bu uzlaşmayı sağlamak, özellikle &lt;code class=&quot;language-text&quot;&gt;𝑛&lt;/code&gt; düğümün en azından &lt;code class=&quot;language-text&quot;&gt;𝑓&lt;/code&gt; tanesi Byzantine (kötü niyetli) olabilirken nasıl gerçekleşecektir? Problemin çözüm koşulları, aşağıdaki şartları karşılamak zorundadır:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Bütünlük (Integrity):&lt;/strong&gt; Eğer bir dürüst düğümün karar mesajı &lt;code class=&quot;language-text&quot;&gt;𝑣&lt;/code&gt; ise, diğer tüm dürüst düğümler de &lt;code class=&quot;language-text&quot;&gt;𝑣&lt;/code&gt; üzerinde uzlaşmalıdır.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Konsensüs (Agreement):&lt;/strong&gt; Bütün dürüst düğümlerin çıktısı (kararı) aynıdır.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Geçerlilik (Validity):&lt;/strong&gt; Eğer girdide geçerli bir mesaj değeri varsa, sistem bu mesaj değerinden uzaklaşmadan bir karar vermelidir. (Örneğin hiçbir kötü niyetli düğüm yoksa, bütün dürüst düğümler kendi girdilerinde bir uzlaşmaya varabilmelidir.)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Teorik olarak kanıtlanmıştır ki, senkron bir ağda &lt;code class=&quot;language-text&quot;&gt;𝑓&lt;/code&gt; adet Byzantine hata toleransı sağlamak için en az &lt;code class=&quot;language-text&quot;&gt;3f+1&lt;/code&gt; düğüm gereklidir. Bu pek çok konsensüs protokolünün tasarımı için temel bir referans noktasıdır.&lt;/p&gt;
&lt;h1 id=&quot;dağıtık-sistemlerde-hata-toleransı&quot;&gt;&lt;a href=&quot;#da%C4%9F%C4%B1t%C4%B1k-sistemlerde-hata-tolerans%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Dağıtık Sistemlerde Hata Toleransı&lt;/h1&gt;
&lt;p&gt;Byzantine Generals Problemi’nden yola çıkarak dağıtık sistemlerde hata toleransı (fault tolerance) kavramını daha iyi anlayabiliriz. Hata toleransı sistemin bir kısmı arızalansa veya kasıtlı olarak sabote edilmeye çalışılsa bile, sistemin genel olarak doğru sonuçlar üretebilmesini ifade eder.&lt;/p&gt;
&lt;h2 id=&quot;gereksinimler&quot;&gt;&lt;a href=&quot;#gereksinimler&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Gereksinimler&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fazladan Kaynak (Redundancy):&lt;/strong&gt; Dağıtık sistemler tek bir hata noktasından (single point of failure) kaçınmak için aynı görevi birden fazla düğüme dağıtır. Böylece bir düğümün çökmesi veya yalan söylemesi diğer dürüst düğümlerin doğru bilgiyi korumasını sağlar.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Güvenli İletişim Kanalları:&lt;/strong&gt; Kriptografik yöntemler mesaj bütünlüğü ve kimlik doğrulama (authentication) gibi teknikler mesaj manipülasyonunu zorlaştırır.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Konsensüs Protokolü:&lt;/strong&gt; Düğümlerin çoğunluk oyu ile veya başka matematiksel mekanizmalarla ortak bir karara varması gerekir.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;crash-fault-tolerance-vs-byzantine-fault-tolerance&quot;&gt;&lt;a href=&quot;#crash-fault-tolerance-vs-byzantine-fault-tolerance&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Crash Fault Tolerance vs. Byzantine Fault Tolerance&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Crash Fault Tolerance (CFT):&lt;/strong&gt; Yalnızca düğümlerin çökmesini ve mesaj yollamamasını (veya gecikmeli mesaj yollamasını) ele alır.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Byzantine Fault Tolerance (BFT):&lt;/strong&gt; Düğümlerin kasıtlı olarak yanıltıcı veya tutarsız mesajlar gönderebileceği durumu ele alır. Bu nedenle BFT mekanizmaları CFT’den daha karmaşık ve maliyetlidir.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h1 id=&quot;byzantine-hata-toleransını-sağlamaya-yönelik-yaklaşımlar&quot;&gt;&lt;a href=&quot;#byzantine-hata-tolerans%C4%B1n%C4%B1-sa%C4%9Flamaya-y%C3%B6nelik-yakla%C5%9F%C4%B1mlar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Byzantine Hata Toleransını Sağlamaya Yönelik Yaklaşımlar&lt;/h1&gt;
&lt;h2 id=&quot;1-klasik-algoritmalar&quot;&gt;&lt;a href=&quot;#1-klasik-algoritmalar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;1. Klasik Algoritmalar&lt;/h2&gt;
&lt;p&gt;Byzantine Generals Problem makalesinde, senkron bir model altında, &lt;code class=&quot;language-text&quot;&gt;n≥3f+1&lt;/code&gt; koşuluyla belirli bir iletişim turu sayısında (round) uzlaşmaya varan algoritmalar önerilmiştir. Ancak bu algoritmalar pratikte çok maliyetli (ağ trafiği ve hesaplama yükü bakımından) olabilmektedir.&lt;/p&gt;
&lt;p&gt;Örneğin orijinal “Oral Message” (OM) ve “Signed Message” (SM) protokolleri; hatalı düğümlerin (generallerin) yarattığı etkiyi kısıtlamak için genele yayılmış mesaj kopyalarını, imzaları, doğrulayıcı listelerini vb. içerir. Her bir adımda mesajlar çoğaltılır ve dağıtılır, böylece bir genel inanç (global belief) oluşturulur.&lt;/p&gt;
&lt;h2 id=&quot;2-practical-byzantine-fault-tolerance-pbft&quot;&gt;&lt;a href=&quot;#2-practical-byzantine-fault-tolerance-pbft&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;2. Practical Byzantine Fault Tolerance (PBFT)&lt;/h2&gt;
&lt;p&gt;1999 yılında Miguel Castro ve Barbara Liskov tarafından önerilen &lt;em&gt;PBFT (Practical Byzantine Fault Tolerance)&lt;/em&gt; protokolü, dağıtık sistemler dünyasında oldukça büyük bir etki yarattı. Çünkü PBFT kısmen “pratik” bir çözüm olmayı hedefliyordu; yani gerçekçi bir ağ modelinde (kısmen senkron) düşük gecikmeyle çalışacak bir protokol geliştirme amacı güdüyordu.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;İşleyiş Özet:
*&lt;em&gt;İstemci (Client)&lt;/em&gt;, bir isteği (örneğin, bir işlem, bir veri güncellemesi) sisteme yollar.
*&lt;em&gt;Primary (Lider) Düğüm&lt;/em&gt; isteği alır ve diğer replikalara dağıtır.
*Replikalar, liderin ilettiği isteğin geçerli olduğuna dair bir “pre-prepare” ve “prepare” aşamalarını yürütür, bir nevi oy birliği (çoğunluk) sağlanır.
*Yeterli çoğunluk sağlandığında, “commit” aşamasına geçilir ve işlem doğrulanır.
*Sonuç, istemciye geri döner.&lt;/li&gt;
&lt;li&gt;Byzantine Hata Toleransı: PBFT &lt;code class=&quot;language-text&quot;&gt;𝑛&lt;/code&gt; toplam düğüm sayısı içinde en fazla &lt;code class=&quot;language-text&quot;&gt;𝑓&lt;/code&gt; Byzantine hataya tolerans gösterir. Bu protokol için de &lt;code class=&quot;language-text&quot;&gt;n≥3f+1&lt;/code&gt; koşulu aranır.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;PBFT ve türevleri günümüzde pek çok izinli (permissioned) blok zincirinde, kurumsal veri paylaşım sistemlerinde ve hata toleransının kritik olduğu diğer uygulamalarda kullanılmaktadır.&lt;/p&gt;
&lt;h2 id=&quot;3-raft-paxos-ve-bft-türevleri&quot;&gt;&lt;a href=&quot;#3-raft-paxos-ve-bft-t%C3%BCrevleri&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;3. Raft, Paxos ve BFT Türevleri&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Paxos&lt;/em&gt; ve &lt;em&gt;Raft&lt;/em&gt;, aslında çökme hatalarına (CFT) dayanıklı konsensüs protokolleridir. Yani Byzantine hatalara karşı direkt olarak güvence sağlamazlar. Fakat farklı eklemeler ve güçlendirilmiş sürümleriyle &lt;em&gt;BFT-Paxos&lt;/em&gt; gibi yaklaşımlar ortaya çıkmıştır.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Tendermint&lt;/em&gt; (bir blok zincir konsensüs mekanizması), PBFT’ye benzer bir BFT yaklaşımı kullanarak hız ve yüksek doğrulama garantisi sağlar.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Honey Badger BFT&lt;/em&gt; gibi yeni nesil protokoller kısmen senkron veya asenkron ağlarda bile BFT konsensüsü sağlamaya odaklanır.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h1 id=&quot;örnekler-ve-uygulama-alanları&quot;&gt;&lt;a href=&quot;#%C3%B6rnekler-ve-uygulama-alanlar%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Örnekler ve Uygulama Alanları&lt;/h1&gt;
&lt;h2 id=&quot;1-blok-zincirler&quot;&gt;&lt;a href=&quot;#1-blok-zincirler&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;1. Blok Zincirler&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Bitcoin:&lt;/strong&gt; Doğrudan PBFT kullanmaz bunun yerine Proof-of-Work (PoW) mekanizmasına dayanarak bir nevi “ekonomik” BFT sağlamaya çalışır. Saldırganlar %51 oranında madencilik gücünü ele geçirirse ağı manipüle edebilir.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ethereum:&lt;/strong&gt; Başlangıçta PoW üzerineydi ancak Ethereum 2.0 geçişiyle birlikte Proof-of-Stake (PoS) ve içerisinde BFT prensiplerini barındıran Casper gibi protokollere yönelmiştir.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hyperledger Fabric:&lt;/strong&gt; İzinli (permissioned) bir blok zinciri platformu olup PBFT gibi Bizans hata toleransına sahip konsensüs mekanizmalarına olanak tanır.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;2-dağıtık-veritabanları-ve-kurumsal-sistemler&quot;&gt;&lt;a href=&quot;#2-da%C4%9F%C4%B1t%C4%B1k-veritabanlar%C4%B1-ve-kurumsal-sistemler&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;2. Dağıtık Veritabanları ve Kurumsal Sistemler&lt;/h2&gt;
&lt;p&gt;Büyük kurumsal veri merkezleri, yüksek mevcudiyet (availability) ve tutarlılık (consistency) sağlamak amacıyla farklı replikasyon stratejileri kullanır. Bazıları çökme hatası toleransıyla yetinirken, güvenliğin üst düzeyde kritik olduğu (örneğin finans, savunma, sağlık) ortamlarda BFT çözümleri tercih edilebilir.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Örneğin, Google Spanner, CFT tabanlı bir sistemdir ancak çok yüksek doğruluk ve süreklilik gerektiren bir yapıdadır. Gerektiğinde kriptografik imza ve veri bütünlüğü doğrulama teknikleriyle Byzantine davranışları da kısmen engelleyebilir.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;3-askerî-ve-uzay-uygulamaları&quot;&gt;&lt;a href=&quot;#3-asker%C3%AE-ve-uzay-uygulamalar%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;3. Askerî ve Uzay Uygulamaları&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;NASA&lt;/strong&gt; gibi kurumlar uzay araçlarının ve roketlerin kontrol sistemlerinde farklı bileşenlerin birbirinden bağımsız çalışıp veri doğrulaması yapabilmesini önemser. Örneğin çok kritik bir sistemde aynı sensör verisi farklı bilgisayarlar tarafından işlenir ve bunlar arasında bir çeşit oylama mekanizması (aynı Paxos veya PBFT benzeri bir yaklaşım) çalıştırılabilir.&lt;/li&gt;
&lt;li&gt;Askerî ortamlarda, düşman tarafından gönderilen sahte komutlar veya yanlış istihbarat bilgileri, Byzantine hatalara benzerdir. Dolayısıyla merkezi emir-komuta zincirlerinde verinin bütünlüğünü sağlamak, bu problemin gerçek hayattaki bir yansımasıdır.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;4-iot-nesnelerin-i̇nterneti&quot;&gt;&lt;a href=&quot;#4-iot-nesnelerin-i%CC%87nterneti&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;4. IoT (Nesnelerin İnterneti)&lt;/h2&gt;
&lt;p&gt;Akıllı şehirler, sağlık sensörleri, üretim hatları gibi IoT cihazlarının oluşturduğu ağlarda, cihazların bir kısmının saldırıya uğraması veya arızalanması olasıdır. Bazı IoT platformları hafifletilmiş (lightweight) BFT mekanizmalarına ihtiyaç duyar.&lt;/p&gt;
&lt;hr&gt;
&lt;h1 id=&quot;ayrıntılı-bir-senaryo-örneği&quot;&gt;&lt;a href=&quot;#ayr%C4%B1nt%C4%B1l%C4%B1-bir-senaryo-%C3%B6rne%C4%9Fi&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Ayrıntılı Bir Senaryo Örneği&lt;/h1&gt;
&lt;p&gt;Bu senaryoda bir şehirdeki akıllı trafik ışıkları sistemini düşünelim:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Düğümler:&lt;/strong&gt; Şehrin farklı kavşaklarındaki kontrol üniteleri (trafik ışıkları), merkezi yönetim sunucuları ve bölgesel yönetim cihazları.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Konsensüs İhtiyacı:&lt;/strong&gt; Belli saatlerde trafik yoğunluğunu dengelemek için belirli bir yeşil ışık süresi kararı alınması gerekiyor. Örneğin kavşaklar arası yeşil ışık süreleri senkronize olmalı ki trafik akışı optimize edilsin.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Olası Byzantine Hata:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Bir trafik ışığı kontrol ünitesi, yanlış rapor veriyor veya hiç veri göndermiyor.&lt;/li&gt;
&lt;li&gt;Kötü niyetli bir saldırgan, ağda paketleri değiştirerek gerçek verileri manipüle ediyor.&lt;/li&gt;
&lt;li&gt;Bir yönetim cihazı, kasıtlı olarak farklı kavşaklara çelişkili talimatlar yolluyor.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Çözüm Yaklaşımı:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Her kontrol ünitesi diğer tüm ünitelere (veya bir çoğunluk alt kümesine) sensör verilerini dijital imza ile birlikte gönderir.&lt;/li&gt;
&lt;li&gt;PBFT benzeri bir algoritma, bu verileri toplayıp bir “çoğunluk kararı” ile bir sonraki sinyalizasyon süresini belirler.&lt;/li&gt;
&lt;li&gt;Eğer bazı ünitelerden veya sunuculardan tutarsız veriler geliyorsa, bunlar çoğunluk tarafından tespit edilir (imza takibi, veri geçerlilik kontrolü) ve görmezden gelinir.&lt;/li&gt;
&lt;li&gt;Sonuçta saldırıya uğrayan veya arızalanan bir üniteye rağmen sistemin tamamı doğru ayarlama yapabilir.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Bu senaryo, karmaşık olsa da gerçek hayatta geniş çaplı IoT projelerinde veya akıllı trafik sistemlerinde karşımıza çıkabilecek tipik bir Byzantine hata toleransı problemine örnek olarak gösterilebilir.&lt;/p&gt;
&lt;hr&gt;
&lt;h1 id=&quot;golang-ile-basit-bir-byzantine-örneği&quot;&gt;&lt;a href=&quot;#golang-ile-basit-bir-byzantine-%C3%B6rne%C4%9Fi&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Golang ile Basit Bir “Byzantine” Örneği&lt;/h1&gt;
&lt;p&gt;Aşağıdaki kodda şu bileşenler yer almaktadır:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Node (Düğüm):&lt;/strong&gt; Her düğümün bir kimliği (ID), sahip olduğu “öneri” (örneğin “Saldır” veya “Çekil”), bir “Byzantine (kötü niyetli) olma” durumu ve gelen mesajları sakladığı bir dizisi vardır.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Broadcast (Yayın):&lt;/strong&gt; Düğümler birbirlerine mesaj gönderir. Byzantine (kötü niyetli) olan düğüm, gelen istek doğrultusunda manipüle edilmiş veya farklı mesajlar gönderebilir.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Consensus (Konsensüs Arayışı):&lt;/strong&gt; En basit haliyle, her dürüst düğüm, aldığı mesajların çoğunluğunu dikkate alarak kendi kararını günceller.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Önemli Not: Bu kod örneği, gerçek bir PBFT ya da BFT algoritmasının “tam” implementasyonu değildir. Amaç, kavramları ve potansiyel manipülasyonları gösterecek bir mini-senaryo sunmaktır. Üretim (production) ortamında, kriptografik imzalar, iletişim protokolleri, zamanlayıcı (timeout) mekanizmaları, hata tespiti gibi çok daha karmaşık yapılar gerekir.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;fmt&quot;&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;math/rand&quot;&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;time&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Message represents a simple structure that one node sends to another node.&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; Message &lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    From    &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;    &lt;span class=&quot;token comment&quot;&gt;// ID of the sender&lt;/span&gt;
    Content &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Proposal (&quot;Attack&quot; or &quot;Retreat&quot;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Node represents a general (node) in the system.&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; Node &lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    ID            &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;
    Proposal      &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;   &lt;span class=&quot;token comment&quot;&gt;// This node&apos;s initial proposal&lt;/span&gt;
    IsByzantine   &lt;span class=&quot;token builtin&quot;&gt;bool&lt;/span&gt;     &lt;span class=&quot;token comment&quot;&gt;// Is this node malicious?&lt;/span&gt;
    ReceivedMsgs  &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;Message
    FinalDecision &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;   &lt;span class=&quot;token comment&quot;&gt;// Final decision after consensus&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Broadcast allows each node to send messages to other nodes.&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Byzantine behavior is simplified to &quot;manipulate the message&quot; here.&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;n &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;Node&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Broadcast&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;nodes &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;Node&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; other &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;range&lt;/span&gt; nodes &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; other&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ID &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ID &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;continue&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Skip sending a message to itself&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

        &lt;span class=&quot;token comment&quot;&gt;// The message content to be sent&lt;/span&gt;
        msgContent &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Proposal

        &lt;span class=&quot;token comment&quot;&gt;// If this node is Byzantine, it may manipulate the message&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;IsByzantine &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token comment&quot;&gt;// For example, with a random probability, flip the message&lt;/span&gt;
            &lt;span class=&quot;token comment&quot;&gt;// (Attack -&gt; Retreat, Retreat -&gt; Attack)&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; rand&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Float64&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0.5&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; msgContent &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Attack&quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                    msgContent &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Retreat&quot;&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                    msgContent &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Attack&quot;&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

        &lt;span class=&quot;token comment&quot;&gt;// &quot;Send&quot; the message to the other node&lt;/span&gt;
        other&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Receive&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;Message&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            From&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;    n&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ID&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            Content&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; msgContent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Receive stores incoming messages from other nodes.&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;n &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;Node&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Receive&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;msg Message&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    n&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ReceivedMsgs &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;n&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ReceivedMsgs&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; msg&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Decide makes a final decision based on all received messages.&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// It simply checks which proposal is in the majority (Attack or Retreat)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// and updates its own decision accordingly.&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;n &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;Node&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Decide&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    attackCount &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;
    retreatCount &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; msg &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;range&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ReceivedMsgs &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; msg&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Content &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Attack&quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            attackCount&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; msg&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Content &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Retreat&quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            retreatCount&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;// Also consider the node&apos;s own initial proposal in the count&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Proposal &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Attack&quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        attackCount&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        retreatCount&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;// The final decision is assigned based on the majority&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; attackCount &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; retreatCount &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        n&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;FinalDecision &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Attack&quot;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; retreatCount &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; attackCount &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        n&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;FinalDecision &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Retreat&quot;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;// In case of a tie, keep its original proposal&lt;/span&gt;
        n&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;FinalDecision &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Proposal
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// NewNode is a helper function to create a new Node.&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;NewNode&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;id &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; proposal &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; isByzantine &lt;span class=&quot;token builtin&quot;&gt;bool&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;Node &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;Node&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        ID&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;          id&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        Proposal&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;    proposal&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        IsByzantine&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; isByzantine&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    rand&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Seed&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;time&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Now&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;UnixNano&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;// Example scenario:&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// Let&apos;s create a total of 5 nodes. One of them will be Byzantine.&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// Each node will initially propose either &quot;Attack&quot; or &quot;Retreat&quot;.&lt;/span&gt;
    nodes &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;Node&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;NewNode&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Attack&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;  &lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;NewNode&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Attack&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;  &lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;NewNode&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Retreat&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;NewNode&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Attack&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;  &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// Malicious (Byzantine)&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;NewNode&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Retreat&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;// Round 1: Each node broadcasts its current proposal to others&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; node &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;range&lt;/span&gt; nodes &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        node&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Broadcast&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;nodes&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;// Round 2 (Optional): If you want multiple rounds, you could&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// update each node’s Proposal based on received messages&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// and broadcast again. In this simple example, we do just one round.&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;// Now each node decides based on the messages it received&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; node &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;range&lt;/span&gt; nodes &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        node&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Decide&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;// Print results&lt;/span&gt;
    fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;=== Final Decisions ===&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; node &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;range&lt;/span&gt; nodes &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Node %d [Byzantine=%v] | Initial Proposal: %s | Final Decision: %s\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            node&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ID&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; node&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;IsByzantine&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; node&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Proposal&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; node&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;FinalDecision&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Program çalıştırıldığında çıktısı aşağıdaki gibi olacaktır.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;json&quot;&gt;&lt;pre class=&quot;language-json&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;=== Final Decisions ===
Node &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;Byzantine=&lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; | Initial Proposal&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; Attack  | Final Decision&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; Attack
Node &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;Byzantine=&lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; | Initial Proposal&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; Attack  | Final Decision&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; Attack
Node &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;Byzantine=&lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; | Initial Proposal&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; Retreat | Final Decision&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; Attack
Node &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;Byzantine=&lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;  | Initial Proposal&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; Attack  | Final Decision&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; Retreat
Node &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;Byzantine=&lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; | Initial Proposal&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; Retreat | Final Decision&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; Attack&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Burada 5 düğümün 3’ünün nihai kararı “Attack”, 1 tanesi “Retreat” şeklinde; hatta Byzantine düğümün kendisi bile gelen mesajların çoğunluğundan (ve kendi manipüle ettiği mesajlardan) etkilenerek ters bir sonuca varmış olabilir.&lt;/p&gt;
&lt;p&gt;Programın çalışır haline &lt;a href=&quot;https://go.dev/play/p/d6XqOPBNFZJ&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;şuradan&lt;/a&gt; erişilebilir.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Not: Gerçek bir BFT protokolünde, imzalar ve tutarlı mesaj yayılımı (consistent broadcast) mekanizmaları kullanılarak, düğümlerin farklı node’lara farklı mesajlar göndermesi engellenmeye (veya yakalanmaya) çalışılır. Burada ise konuyu basitçe göstermek için “herkese aynı mesaj” varsayımına kısmi bir manipülasyon ekledik.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&quot;performans-ve-maliyet&quot;&gt;&lt;a href=&quot;#performans-ve-maliyet&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Performans ve Maliyet&lt;/h2&gt;
&lt;p&gt;Byzantine hatalara karşı koruma sağlamak her zaman ilave bir hesaplama, iletişim ve yönetim maliyeti demektir. Protokoller bir işlemi onaylamak için birden fazla tur (round) mesaj alışverişi gerektirebilir. Ayrıca imza doğrulama gibi kriptografik işlemler ek yük getirir. Bu nedenle tasarımcılar sistemin gereksinimlerine göre şu soruları göz önünde bulundurur:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Kaç düğüm çalıştırılacak?&lt;/li&gt;
&lt;li&gt;Beklenen saldırı veya arıza oranı nedir?&lt;/li&gt;
&lt;li&gt;Gerçek zamanlı bir sistem mi, gecikmeye (latency) ne kadar tolerans var?&lt;/li&gt;
&lt;li&gt;Donanım kaynakları ve bant genişliği yeterli mi?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Büyük boyutlu (örneğin yüzlerce, binlerce) düğümde BFT sağlamak halen zorlayıcı olabilir. Bu yüzden pratikte daha küçük, izinli ağlarda (konsorsiyum blok zincirleri, kurumsal veri merkezleri vb.) BFT protokolleri daha fazla görülür.&lt;/p&gt;
&lt;h3 id=&quot;gelecek-eğilimleri&quot;&gt;&lt;a href=&quot;#gelecek-e%C4%9Filimleri&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Gelecek Eğilimleri&lt;/h3&gt;
&lt;p&gt;Dağıtık sistemlerin her geçen gün daha da önem kazandığı çağımızda, Byzantine Generals Problemi ve BFT protokolleri gelecekte de kritik rol oynamayı sürdürecektir. Özellikle şu alanlarda yoğun araştırma ve geliştirme çalışmaları devam etmektedir:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Asenkron BFT Protokolleri:&lt;/strong&gt; Tamamen asenkron ağlarda (gecikme sınırı yok, mesaj sıralaması muğlak) BFT sağlamak daha da zordur. Bu konuda Honey Badger BFT gibi yeni yaklaşımlar öne çıkıyor.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Zero-Knowledge ve Kriptografik Gelişmeler:&lt;/strong&gt; Düğümlerin veriyi ifşa etmeden doğrulamaya katkı sağlayacağı, gizlilik odaklı BFT protokolleri geliştirilmektedir.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Quantum Dirençli İmza Şemaları:&lt;/strong&gt; Gelecekte kuantum bilgisayarların gelişmesiyle mevcut kriptografik imza şemalarının kırılabilir hale gelmesi olasılığı var. BFT protokolleri de kuantum dirençli imza yöntemlerine ihtiyaç duyabilir.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enerji Verimliliği ve Yeşil Bilişim:&lt;/strong&gt; Blok zincir ve dağıtık konsensüs protokollerinin yoğun enerji tüketimi eleştiri konusu. Daha verimli BFT mekanizmaları ve Proof-of-Stake tarzı protokoller geliştirilmeye devam ediyor.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;p&gt;Byzantine Generals Problemi, dağıtık sistemlerde hata toleransı ve özellikle kötü niyetli veya arızalı düğümlere karşı alınacak önlemler noktasında temel referans niteliğindedir. Bu problem sayesinde sistem tasarımcıları ve araştırmacılar, “en kötü” senaryolara rağmen doğru çalışabilen protokoller üzerinde çalışmış ve ortaya PBFT, Tendermint, Honey Badger BFT gibi güçlü çözümler çıkmıştır.&lt;/p&gt;
&lt;p&gt;Günümüzün blok zincir teknolojilerinden kurumsal veri merkezlerine, IoT ağlarından askerî sistemlere kadar pek çok alanda “çok sayıdaki düğümün aynı zamanda doğru karar vermesi” gerektiği durumlar vardır. Bu noktada Byzantine Generals Problemi, “dağıtık mutabakat nasıl sağlanır?” sorusuna teorik ve pratik çerçevede yanıt sunan en önemli rehberlerden biri olmaya devam etmektedir.&lt;/p&gt;
&lt;p&gt;Özetle dağıtık sistemlerde Byzantine hata toleransı elde etmek kolay değildir; ek maliyet, komplekslik ve titiz bir protokol tasarımı gerektirir. Ancak, bu zorluklar aşıldığında elde edilen kazanç (yüksek güvenlik, doğruluk, kesintisiz çalışma) kritik öneme sahip projelerde vazgeçilmezdir. Bu nedenle, önümüzdeki yıllarda da Byzantine Generals Problemi ve BFT protokollerinin gelişimini yakından takip etmek, dağıtık sistemlerin geleceğini şekillendirmede kilit rol oynayacaktır.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Byzantine_fault&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/Byzantine_fault&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://lamport.azurewebsites.net/pubs/byz.pdf&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://lamport.azurewebsites.net/pubs/byz.pdf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pmg.csail.mit.edu/papers/osdi99.pdf&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://pmg.csail.mit.edu/papers/osdi99.pdf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bitcoin.org/bitcoin.pdf&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://bitcoin.org/bitcoin.pdf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bitcoinmagazine.com/glossary/what-is-the-byzantine-generals-problem&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://bitcoinmagazine.com/glossary/what-is-the-byzantine-generals-problem&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2025/byzantine-generals-problemi-dagitik-sistemlerde-hata-toleransi/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[PAXOS Algoritması: Dağıtık Sistemlerde Konsensus Sağlama]]></title><description><![CDATA[Dağıtık sistemlerde birden fazla düğüm (node) arasında karar birliğine varmak (konsensus) zor bir problemdir. PAXOS algoritması, dağıtık sistemlerde güvenilir bir şekilde konsensus sağlamak için geliştirilmiş, akademik dünyada oldukça kabul görmüş bir protokoldür. Leslie Lamport tarafından 1990'larda tanıtılmış olan bu algoritma özellikle hata toleransının kritik olduğu sistemlerde kullanılır.]]></description><link>https://blog.hkucuk.com/2025/paxos-algoritmasi-dagitik-sistemlerde-konsensus-saglama/</link><guid isPermaLink="false">https://blog.hkucuk.com/2025/paxos-algoritmasi-dagitik-sistemlerde-konsensus-saglama/</guid><pubDate>Sun, 05 Jan 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Distributed_computing&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Dağıtık sistemlerde&lt;/a&gt; birden fazla düğüm (node) arasında karar birliğine varmak (konsensus) zor bir problemdir. &lt;a href=&quot;https://en.wikipedia.org/wiki/Paxos_(computer_science)&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;PAXOS algoritması&lt;/a&gt;, dağıtık sistemlerde güvenilir bir şekilde konsensus sağlamak için geliştirilmiş, akademik dünyada oldukça kabul görmüş bir protokoldür. Leslie Lamport tarafından 1990’larda tanıtılmış olan bu algoritma özellikle hata toleransının kritik olduğu sistemlerde kullanılır.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/99bb7ee7263c93dd0fa9f44d78e387a5/29beb/image.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 64.86486486486486%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAIAAAAmMtkJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB9nRFWHRSYXcACmV4aWYKICAgICAyMzgKNDU3ODY5NjYwMDAwNDk0OTJhMDAwODAwMDAwMDBhMDAwMDAxMDQwMDAxMDAwMDAwMjYwNzAwMDAwMTAxMDQwMDAxMDAwMDAwCmEwMDQwMDAwMDIwMTAzMDAwMzAwMDAwMDg2MDAwMDAwMTIwMTAzMDAwMTAwMDAwMDAxMDAwMDAwMWEwMTA1MDAwMTAwMDAwMAo4YzAwMDAwMDFiMDEwNTAwMDEwMDAwMDA5NDAwMDAwMDI4MDEwMzAwMDEwMDAwMDAwMjAwMDAwMDMxMDEwMjAwMGQwMDAwMDAKOWMwMDAwMDAzMjAxMDIwMDE0MDAwMDAwYWEwMDAwMDA2OTg3MDQwMDAxMDAwMDAwYmUwMDAwMDAwMDAwMDAwMDA4MDAwODAwCjA4MDA0ODAwMDAwMDAxMDAwMDAwNDgwMDAwMDAwMTAwMDAwMDQ3NDk0ZDUwMjAzMjJlMzEzMDJlMzMzODAwMDAzMjMwMzIzNQozYTMwMzEzYTMwMzcyMDMxMzczYTMzMzgzYTM1MzYwMDAzMDAwMWEwMDMwMDAxMDAwMDAwMDEwMDAwMDAwMmEwMDQwMDAxMDAKMDAwMDI2MDcwMDAwMDNhMDA0MDAwMTAwMDAwMGEwMDQwMDAwMDAwMDAwMDAKwelZWgAAAfhJREFUeNqFUn9vmzAQ5ft/ok2dtGqT0jSbqjbd0mVKgIDBxtgG22DMr9KXZu0/m7QToAfcu3f3zsGyLHEcc86b13DO4dn3/fNrLG/xTxzgnqZpnmcQvPd4BX5nPr/F3/hC/lMGJaDZtm1d14SQJEnQkRACv9DX8XjEd+RorU+nk1IKGoEwE5W+0q2qG6GMqlvoZ1kWRVGe5wAYBOQ0TQvGUL0sS8YYCp2V73Z0dZ9khTrGWYyE0qB/6A/DUIBDSJqQMIygBs1hHLUx4zSN04yGg+ubH5/XT1w1SS5SKqkwne+1scM42aYthYzi0+3m28PD1lgLhrEN5p1mjL0Eh7T9FRnGdZJxXKJqu67b7/eUMs7LNCVZllNKYQGQlLIouNZGSIn5g6TK9uxYaMG1xLO0svP+cAhBQZJUlapqkuVhGKNOwUtgtIOmzsrrn1+v769oTaM8TEXKbN4PmNn5vi+KAobDud1ut318hD5Mhmbr3GWbwaf1x6vbD9xyIkgmM5ChXOvzzK7zEAmjeHWz3nzf0DL3Q4/JYRUOxtmwbXy3evqSy/zEEsIJMww+/97vsabzSqra+w7bgmbT2tqJlMSiFJVS2FbgJteOtp99jzM2ez979GOthR/vhxEWjuMIMM2j6xx2hgQch2D5X4AWhqEx5sIBQCOX0i9hiNrHz6Of/gAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Paxos Algoritması&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/99bb7ee7263c93dd0fa9f44d78e387a5/fcda8/image.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/99bb7ee7263c93dd0fa9f44d78e387a5/12f09/image.png 148w,https://blog.hkucuk.com/static/99bb7ee7263c93dd0fa9f44d78e387a5/e4a3f/image.png 295w,https://blog.hkucuk.com/static/99bb7ee7263c93dd0fa9f44d78e387a5/fcda8/image.png 590w,https://blog.hkucuk.com/static/99bb7ee7263c93dd0fa9f44d78e387a5/efc66/image.png 885w,https://blog.hkucuk.com/static/99bb7ee7263c93dd0fa9f44d78e387a5/c83ae/image.png 1180w,https://blog.hkucuk.com/static/99bb7ee7263c93dd0fa9f44d78e387a5/29beb/image.png 1830w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;1-dağıtık-sistemlerde-konsensusun-önemi&quot;&gt;&lt;a href=&quot;#1-da%C4%9F%C4%B1t%C4%B1k-sistemlerde-konsensusun-%C3%B6nemi&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;1. Dağıtık Sistemlerde Konsensusun Önemi&lt;/h2&gt;
&lt;p&gt;Dağıtık sistemler farklı coğrafi konumlarda veya farklı fiziksel makinelere yayılan bileşenlerden oluşan sistemlerdir.&lt;/p&gt;
&lt;p&gt;Örnek: Mikro hizmet mimarisi, büyük veri işleme kümeleri, veritabanı replikasyonu gibi pek çok senaryoda dağıtık yaklaşımlar kullanılmaktadır.
Konsensus (consensus) dağıtık bir sistemdeki node’ların (düğümlerin), belirli bir değerin veya durumun üzerinde ortak bir karara varma sürecini ifade eder.&lt;/p&gt;
&lt;p&gt;Örnek: Aynı verinin birçok kopyası (replicas) varsa bunların tutarlı olması için bir karara varmak gerekir.
Sorun: Ağ hataları, gecikmeler ve node hataları bu süreci karmaşıklaştırır.
Özetle, dağıtık sistemlerdeki en kritik problemlerden biri, farklı node’ların aynı zamanda tek bir gerçeğe (ground truth) ulaşmasını sağlamaktır.&lt;/p&gt;
&lt;h2 id=&quot;2-paxos-nedir&quot;&gt;&lt;a href=&quot;#2-paxos-nedir&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;2. Paxos Nedir?&lt;/h2&gt;
&lt;p&gt;Paxos, dağıtık sistemlerde fault-tolerant bir şekilde ortak bir karara varmak için Leslie Lamport tarafından önerilmiş bir konsensus algoritmasıdır. 1990’ların sonunda ortaya atılan bu fikir, günümüzün modern dağıtık sistemlerinde hâlâ geçerliliğini korur ve benzeri algoritmaların çoğunun temelini oluşturur.&lt;/p&gt;
&lt;p&gt;Amaç: Sistem içindeki çoğunluk (majority) node’un aynı değeri kabul etmesini sağlamak.
Önemli Not: Paxos asenkron ağ modelinde (network’teki mesajların gecikmesi bilinemez) çalışmaya uygun bir şekilde tasarlanmıştır ve “Bir değer kabul edilirse, onu garanti altına al” mantığı üzerine kurulur.&lt;/p&gt;
&lt;h2 id=&quot;3-temel-bileşenler-ve-roller&quot;&gt;&lt;a href=&quot;#3-temel-bile%C5%9Fenler-ve-roller&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;3. Temel Bileşenler ve Roller&lt;/h2&gt;
&lt;p&gt;Paxos’ta üç temel rol vardır:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Proposer (Önerici)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Yeni bir değer önermekten sorumludur.&lt;/li&gt;
&lt;li&gt;Sistemde bir veya birden fazla Proposer olabilir.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Acceptor (Kabul Edici)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Önerileri kabul veya reddetme kararı veren node’lardır.&lt;/li&gt;
&lt;li&gt;Bir öneriyi kabul ederse, o önerinin değerini diğer node’lara aktarır.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Learner (Öğrenici)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Kabul edilen değeri öğrenmekle yükümlüdür.&lt;/li&gt;
&lt;li&gt;Tipik olarak sistemin geri kalanına son kararın ne olduğunu bildirmekle görevlidir.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Gerçek hayatta bazı node’lar aynı anda hem Proposer hem Acceptor hem de Learner rollerini üstlenebilir. Ancak algoritmanın mantığı anlaşılır olması için bu roller kavramsal olarak ayrılmıştır.&lt;/p&gt;
&lt;h2 id=&quot;4-paxos-algoritmasının-adımları&quot;&gt;&lt;a href=&quot;#4-paxos-algoritmas%C4%B1n%C4%B1n-ad%C4%B1mlar%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;4. Paxos Algoritmasının Adımları&lt;/h2&gt;
&lt;p&gt;Paxos süreci kabaca iki (bazı modellerde üç) temel fazdan oluşur. Literatürde bu fazlar genelde Prepare ve Accept olarak geçer. Kabul edilen değer tüm Learner’lara bildirildiği aşama da Learn olarak adlandırılır.&lt;/p&gt;
&lt;h3 id=&quot;41-faz-1-prepare-hazırlık&quot;&gt;&lt;a href=&quot;#41-faz-1-prepare-haz%C4%B1rl%C4%B1k&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;4.1 Faz 1: Prepare (Hazırlık)&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Öneri Numarası (Proposal Number):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Her Proposer benzersiz ve monoton artan bir öneri numarası seçer (örnek: 1, 2, 3…).&lt;/li&gt;
&lt;li&gt;Öneri numarasının benzersiz olması önemlidir; genelde node_id + timestamp gibi stratejilerle üretilir.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Prepare Mesajı:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Proposer “prepare(n)” mesajını, bir çoğunluk (majority) kümedeki Acceptor’lara gönderir. Burada n öneri numarasıdır.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Promise (Söz Verme):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Eğer bir Acceptor daha önce bir öneri numarası m ≥ n ile bir söz (promise) vermediyse, Proposer’a bir “promise” mesajı yollar. Bu “Bundan daha düşük numaralı başka hiçbir öneriyi kabul etmeyeceğim” anlamına gelir.&lt;/li&gt;
&lt;li&gt;Ayrıca Acceptor daha önce kabul ettiği en yüksek öneri numarasına (eğer varsa) ait değeri Proposer’a bildirir.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Amaç: Proposer yeterli sayıda Acceptor’dan “promise” cevabı alarak, bundan sonraki adımda sunacağı değerin çoğunluk tarafından dikkate alındığından emin olur.&lt;/p&gt;
&lt;h3 id=&quot;42-faz-2-accept-kabul&quot;&gt;&lt;a href=&quot;#42-faz-2-accept-kabul&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;4.2 Faz 2: Accept (Kabul)&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Değer Belirleme:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Proposer Faz 1’de Acceptor’lardan aldığı yanıtları inceler.&lt;/li&gt;
&lt;li&gt;Eğer Acceptor’lar daha önce belirli bir değer içeren bir öneriyi kabul etmişse, Proposer bu değeri en yüksek öneri numarasına sahip olan değeri seçerek tekrar önermek durumundadır.&lt;/li&gt;
&lt;li&gt;Eğer hiçbir Acceptor’dan önce kabul edilmiş bir değer bilgisi gelmezse, Proposer kendi önerdiği değeri sunabilir.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Accept Mesajı:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Proposer “accept(n, v)” (öneri numarası n, değer v) şeklinde bir mesajı aynı çoğunluk kümesine (Acceptor’lara) gönderir.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Kabul (Accept):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Acceptor eğer “promise” gönderdiği n numaralı öneriden daha yüksek numaralı bir öneriye “promise” vermediyse, bu değeri kabul eder ve kabul ettiğini Proposer’a (ve/veya Learner’lara) iletir.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Amaç: Faz 2 sonucunda, çoğunluk en az bir kere aynı değeri kabul etmiş olur. Bir değeri çoğunluk kabul ettiğinde, o değer Paxos tarafından seçilmiş (chosen) sayılır.&lt;/p&gt;
&lt;h3 id=&quot;43-faz-3-learn-öğrenme&quot;&gt;&lt;a href=&quot;#43-faz-3-learn-%C3%B6%C4%9Frenme&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;4.3 Faz 3: Learn (Öğrenme)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Kabul edilen (chosen) değer, Learner’lara dağıtılır.&lt;/li&gt;
&lt;li&gt;Learner’lar Acceptor’lardan gelen “accepted” mesajına dayanarak sonucun ne olduğunu öğrenir.&lt;/li&gt;
&lt;li&gt;Sistemin geri kalanı da bu değer üzerinde mutabık kalmış olur.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;5-paxosun-özellikleri&quot;&gt;&lt;a href=&quot;#5-paxosun-%C3%B6zellikleri&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;5. Paxos’un Özellikleri&lt;/h2&gt;
&lt;p&gt;Paxos, iki kritik özelliği hedefler:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Safety (Güvenlik)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Aynı tur içinde veya farklı turlarda olsun, iki farklı değerin aynı anda seçilmesini önler.&lt;/li&gt;
&lt;li&gt;Bir değer seçildiyse sistemde o değerin yerine geçecek bir başka değerin seçilmesi mümkün değildir.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Liveness (Canlılık)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sistem yeterince istikrarlı (stable) durumda olduğunda, önerilen değerlerin bir süre sonra mutlaka seçilmesini garanti altına alır.&lt;/li&gt;
&lt;li&gt;Ancak ağda kalıcı bölünmeler (network partition) veya çok sık tekrar eden hatalar varsa liveness gecikebilir.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Paxos’un güvenlik özelliği, “aynı anda iki farklı değeri seçmeme” şeklinde garanti sunarken; liveness özelliği, “eninde sonunda bir değer seçilmesi”ni garanti eder.&lt;/p&gt;
&lt;h2 id=&quot;6-multi-paxos-ve-gelişmiş-versiyonlar&quot;&gt;&lt;a href=&quot;#6-multi-paxos-ve-geli%C5%9Fmi%C5%9F-versiyonlar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;6. Multi-Paxos ve Gelişmiş Versiyonlar&lt;/h2&gt;
&lt;p&gt;Tek bir değer üzerinde konsensus sağlamak yerine, bir dizi değer veya bir komut dizisi üzerinde anlaşılıyor olabilir. Örneğin; bir dağıtık veritabanında sıralı bir dizi komutun (insert, update, delete) sırasını belirlemek isteyebilirsiniz.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Multi-Paxos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Aynı node’lar tekrar tekrar Paxos çalıştırmak yerine, lider (leader) olarak adlandırılan sabit bir Proposer atanır ve bir dizi değeri sırayla kabul ettirmeye çalışır.&lt;/li&gt;
&lt;li&gt;Bu sayede her turda yeni bir lider seçme işlemi yapılmaz, performans artar.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Raft, Zab vb.:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Paxos’tan esinlenen diğer konsensus algoritmaları da “lider seçimi”, “log replikasyonu” gibi benzer adımlarla yüksek performans ve basitlik sunmaya çalışır.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;7-paxosun-avantajları-ve-dezavantajları&quot;&gt;&lt;a href=&quot;#7-paxosun-avantajlar%C4%B1-ve-dezavantajlar%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;7. Paxos’un Avantajları ve Dezavantajları&lt;/h2&gt;
&lt;p&gt;Avantajları:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Temel Teorik Dayanak: Literatürde en çok incelenen ve ispatlanmış konsensus algoritmalarından biri olması.&lt;/li&gt;
&lt;li&gt;Güvenlik Garantisi: Asenkron ağ ortamlarında bile tutarlı sonuçlar vermesi.&lt;/li&gt;
&lt;li&gt;Esneklik: Birçok senaryoya ve farklı uygulama mimarilerine uyarlanabilir.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dezavantajları:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Uygulama Karmaşıklığı: Paxos akademik makalelerde net olsa da uygulamada kodlamak ve yönetmek zordur.&lt;/li&gt;
&lt;li&gt;Fazlar Arasındaki Mesaj Trafiği: Faz 1 ve Faz 2 mesajlaşmalarının maliyeti yüksektir. Özellikle yüksek performans gereken sistemlerde dikkatli tasarım ister.&lt;/li&gt;
&lt;li&gt;Liderlik Seçimi Gerekebilir: Multi-Paxos’ta lider seçimi ve liderin başarısız olması gibi ek yönetim ve hata toleransı katmanları tasarlamak gerekir.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;8-gerçek-hayat-uygulamaları&quot;&gt;&lt;a href=&quot;#8-ger%C3%A7ek-hayat-uygulamalar%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;8. Gerçek Hayat Uygulamaları&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Google Chubby: Google’ın dahili dağıtık kilit sistemi, Paxos temelli bir mekanizma kullanır.&lt;/li&gt;
&lt;li&gt;Microsoft Azure: Dağıtık veritabanı ve blob saklama altyapısında benzer algoritmalara başvurulur.&lt;/li&gt;
&lt;li&gt;Temel Veritabanı Replikasyonu: Büyük ölçekli, yüksek erişilebilirlik gerektiren kritik sistemlerde sıklıkla Paxos ya da benzer konsensus algoritmalarından yararlanılır.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Günümüzde Paxos’un sadeleştirilmiş ve üretim ortamlarında daha kolay yönetilebilen varyantları (örn. Raft) daha popüler hale gelmiş olsa da, Paxos’un teorik altyapısı hâlâ pek çok konsensus algoritmasının temelini oluşturmaktadır.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Paxos Algoritması dağıtık sistemlerde konsensus sağlamak için en önde gelen klasik çözümlerden biridir. Ağ gecikmeleri, node arızaları ve asenkron iletişim gibi zorluklara rağmen çoğunluğun ortak bir değeri kabul etmesini garanti altına alır.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Güvenlik (Safety) ve Canlılık (Liveness) garantisi sunar.&lt;/li&gt;
&lt;li&gt;Multi-Paxos gibi geliştirilmiş sürümleri, pratik kullanımda birden fazla değeri sırayla kabul etmede yaygın olarak kullanılır.&lt;/li&gt;
&lt;li&gt;Tasarım ve uygulama açısından karmaşık olduğu için, pratikte Raft gibi daha anlaşılır alternatifler de tercih edilir.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Yine de Paxos, dağıtık konsensus denince akla ilk gelen ve farklı algoritmaların atası sayılan çok önemli bir paradigmadır. Özellikle yüksek erişilebilirlik ve tutarlılık gerektiren sistemlerde, Paxos benzeri mekanizmalar inşa etmek kaçınılmaz bir gereksinim haline gelmiştir.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Paxos_(computer_science&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/Paxos_(computer_science&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.sciencedirect.com/topics/computer-science/paxos-algorithm&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.sciencedirect.com/topics/computer-science/paxos-algorithm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://lamport.azurewebsites.net/pubs/lamport-paxos.pdf&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://lamport.azurewebsites.net/pubs/lamport-paxos.pdf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://dl.acm.org/doi/10.1145/226643.226647&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://dl.acm.org/doi/10.1145/226643.226647&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://raft.github.io/raft.pdf&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://raft.github.io/raft.pdf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://gyuho.dev/consensus-systems/paxos-etcd-vs-nakamoto-bitcoin/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://gyuho.dev/consensus-systems/paxos-etcd-vs-nakamoto-bitcoin/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2025/paxos-algoritmasi-dagitik-sistemlerde-konsensus-saglama/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Go'da Concurrency: Channels, Goroutines ve Senkronizasyon Mekanizmaları]]></title><description><![CDATA[Go (Golang), Google tarafından 2007 yılında tasarlanmaya başlayan ve 2009'da açık kaynak olarak yayınlanan, özellikle yüksek performanslı ve ölçeklenebilir yazılımlar geliştirmeye odaklanmış modern bir programlama dilidir. Basit ve anlaşılır sözdizimi sayesinde hem deneyimli hem de yeni başlayan geliştiriciler tarafından kolayca öğrenilebilir. Aynı zamanda, hafif ve hızlı bir şekilde derlenebilen bir dil olduğu için C benzeri bir performans elde edilebilir.]]></description><link>https://blog.hkucuk.com/2024/go-da-concurrency-channels-goroutines-ve-senkronizasyon-mekanizmalari/</link><guid isPermaLink="false">https://blog.hkucuk.com/2024/go-da-concurrency-channels-goroutines-ve-senkronizasyon-mekanizmalari/</guid><pubDate>Sat, 23 Nov 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://go.dev/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Go (Golang)&lt;/a&gt;, Google tarafından 2007 yılında tasarlanmaya başlayan ve 2009’da açık kaynak olarak yayınlanan, özellikle yüksek performanslı ve ölçeklenebilir yazılımlar geliştirmeye odaklanmış modern bir programlama dilidir. Basit ve anlaşılır sözdizimi sayesinde hem deneyimli hem de yeni başlayan geliştiriciler tarafından kolayca öğrenilebilir. Aynı zamanda, hafif ve hızlı bir şekilde derlenebilen bir dil olduğu için C benzeri bir performans elde edilebilir.&lt;/p&gt;
&lt;p&gt;Go’nun en güçlü özelliklerinden biri de dil seviyesinde gömülü olarak gelen concurrency (eşzamanlılık) desteğidir. Concurrency kavramı, modern uygulamalarda yüksek verimlilik ve ölçeklenebilirlik sağlamak açısından kritik öneme sahiptir. Go’da concurrency kullanımını mümkün kılan temel yapı taşı olan goroutine’ler, geleneksel iş parçacıklarına (thread) göre çok daha hafif ve kolay yönetilebilir bir yaklaşım sunar. Ayrıca, eşzamanlı çalışan parçaların kendi aralarındaki iletişim ve senkronizasyonunu basitleştirmek için channel gibi mekanizmalar sağlanır. Bu sayede, paylaşımlı veri yönetimi yerine “iletişim kurarak paylaşım” yaklaşımına dayanan güvenilir ve temiz bir tasarım uygulanabilir.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/ed73f3308931c2ef13176746af9bcf0d/4ad3a/image.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 76.35135135135135%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAIAAABr+ngCAAAACXBIWXMAAAsTAAALEwEAmpwYAAACVElEQVR42o1SS28SURSeH6G/QF3qpgurLmziSl25MCamVRM3Jj4an5FIfCQ1JLYhsYm2aCoLiUrbSGgrHbCjKIJCKU07EwqFMOPAPBgekRlggHngmZI0IWjCzc3Nufec755zvvMh7b6XqqqpVIplGY7jcgxDURSi96z/gcFFUST6eQXAPM8zDIP0mVZRVTjnPb49A0Ojj56qrZamaUitVmNZNp+Hv3gwZFn+Z05V08BYQL0Xb945PHKFIGm4IgaIF6AQksxQJFUsFuFV0xSI34GonUYkSYqEw4l06tqbuVNmy4zPvwPmONurcS7Plkpl+KbRaPRmrtfr4FIUo3KLy7f/wnXbAmqAE6n49Mt7n1yzoiR2QjkhHs84krRzO+uMxd9L1YogFOpyveOd86CXTA+93mUDjEWjNyxTI3fNTvdrpSmLFcW/9uDr1iEMP4oRR+YDBzfjPklsQuMQDXWJlT8Cx0qiCGQhpYp0evLdSevM92i4KVeTW1kXdjnKDGL48WB6CF0fWCcWVcVgDeacIUmaonK5HBixWAxhePac1TZstW1sxjqFEekPfvxMgBgOJc67v52laKJQKOu6wXaWTDuWPP5fP8uVIswaia0GQsEv9O8MvvajIxIgptVUWi1jNxtGUkEQRKkKhgNdvvpi+vbzyYjjY1vTER0G2K2qXpEB26DJdlMem3UP3n9ybNRkNz1rq5qhMA3CNa0bo3fvdrFcxqORx07X3ltjB8wTARw32O5Hm7sKs/uwfeP2ExPTNJXpF7zbzOLbqeR2YmM1GFpZgre/E6YYzZW8B8cAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Go&apos;da Concurrency&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/ed73f3308931c2ef13176746af9bcf0d/fcda8/image.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/ed73f3308931c2ef13176746af9bcf0d/12f09/image.png 148w,https://blog.hkucuk.com/static/ed73f3308931c2ef13176746af9bcf0d/e4a3f/image.png 295w,https://blog.hkucuk.com/static/ed73f3308931c2ef13176746af9bcf0d/fcda8/image.png 590w,https://blog.hkucuk.com/static/ed73f3308931c2ef13176746af9bcf0d/efc66/image.png 885w,https://blog.hkucuk.com/static/ed73f3308931c2ef13176746af9bcf0d/4ad3a/image.png 1152w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;hr&gt;
&lt;h1 id=&quot;1-concurrency-nedir-parallelism-ile-farkları&quot;&gt;&lt;a href=&quot;#1-concurrency-nedir-parallelism-ile-farklar%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;1. Concurrency Nedir? Parallelism ile Farkları&lt;/h1&gt;
&lt;p&gt;Öncelikle sıkça karıştırılan iki terimi ayırt etmekte fayda var: concurrency ve parallelism.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Concurrency (Eşzamanlılık):&lt;/strong&gt; Bir programın birden fazla işi aynı zaman aralığında ilerletebilme (interleaving) yeteneğidir. İşler birbiri ardına kısa zaman dilimlerinde parçalar halinde çalıştırılır ve bu şekilde kullanıcıya aynı anda birden fazla işin yürütüldüğü hissi verilir. İşletim sistemi çekirdeği veya dilin çalışma zamanı (runtime), hangi işin ne zaman çalıştırılacağına (schedule) karar verir.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Parallelism (Paralellik):&lt;/strong&gt; Fiziksel olarak aynı anda birden fazla işin yürütülmesidir. Örneğin çok çekirdekli bir CPU’da, birden fazla çekirdek aynı anda farklı işlemler üzerinde çalışabilir.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Go concurrency’i çok kolay bir şekilde kullanılabilir hale getirir ancak bu concurrency özelliği aynı makinede her zaman “paralel” çalışacağı anlamına gelmez. Go runtime, hangi goroutine’in hangi çekirdekte veya ne zaman çalıştırılacağını belirler. Doğru şekilde konfigüre edildiğinde ve çok çekirdekli bir işlemci üzerinde çalıştığında, Go kodunuz hem concurrency hem de parallelism sağlayabilir.&lt;/p&gt;
&lt;h1 id=&quot;2-goroutine-nedir&quot;&gt;&lt;a href=&quot;#2-goroutine-nedir&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;2. Goroutine Nedir?&lt;/h1&gt;
&lt;p&gt;Go’da concurrency’nin temel yapı taşı goroutine’lerdir. Goroutine, Go runtime içinde çalışan hafif (lightweight) bir iş parçacığı olarak düşünülebilir. Go’da bir goroutine başlatmak oldukça basittir. Herhangi bir fonksiyonun başına go anahtar kelimesi getirerek o fonksiyonu ayrı bir goroutine’de çalıştırabilirsiniz.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;fmt&quot;&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;time&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;helloWorld&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Hello World!&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// Run the helloWorld function in a new goroutine&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;go&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;helloWorld&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;// Let&apos;s wait a bit in the main goroutine so that the other goroutine can run as well.&lt;/span&gt;
    time&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Sleep&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;time&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Second&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;The main goroutine has ended.&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Yukarıdaki örnekte &lt;code class=&quot;language-text&quot;&gt;helloWorld()&lt;/code&gt; fonksiyonunu &lt;code class=&quot;language-text&quot;&gt;go helloWorld()&lt;/code&gt; ifadesiyle çağırdığımızda, bu fonksiyon ana goroutine’den bağımsız bir şekilde çalışmaya başlar. Ana goroutine sona erer ermez, program sonlanacağı için diğer goroutine’in de çalışmasına imkân kalmaz. Bu nedenle, küçük de olsa bir &lt;code class=&quot;language-text&quot;&gt;time.Sleep()&lt;/code&gt; ekleyerek diğer goroutine’in sonuç üretmesini bekliyoruz.&lt;/p&gt;
&lt;p&gt;Önemli Not: Gerçek projelerde bekleme için &lt;code class=&quot;language-text&quot;&gt;time.Sleep()&lt;/code&gt; kullanmak yerine, genellikle senkronizasyon mekanizmalarından biri olan &lt;code class=&quot;language-text&quot;&gt;sync.WaitGroup&lt;/code&gt; veya benzer yapıları kullanmak daha doğru bir yaklaşımdır.&lt;/p&gt;
&lt;hr&gt;
&lt;h1 id=&quot;3-channellar-kanallar&quot;&gt;&lt;a href=&quot;#3-channellar-kanallar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;3. Channel’lar (Kanallar)&lt;/h1&gt;
&lt;p&gt;Channel, Go’da goroutine’ler arasında veri aktarımını güvenli ve senkronize bir şekilde yapmaya yarayan veri yapılarıdır. Channel’ların en büyük avantajı, paylaşılan değişkenler kullanarak kilit (lock) yönetimi yapmak yerine, verinin kendisini goroutine’ler arasında transfer etmeye olanak vermesidir. Bu yaklaşım “paylaşma yerine iletişim” (communicating by sharing vs. sharing by communicating) felsefesinin güzel bir örneğidir.&lt;/p&gt;
&lt;h2 id=&quot;31-kanal-oluşturma-ve-veri-göndermealma&quot;&gt;&lt;a href=&quot;#31-kanal-olu%C5%9Fturma-ve-veri-g%C3%B6ndermealma&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;3.1 Kanal Oluşturma ve Veri Gönderme/Alma&lt;/h2&gt;
&lt;p&gt;Bir kanal aşağıdaki gibi oluşturulur:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;ch &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;chan&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Creates a channel of type int (unbuffered channel)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Veri gönderimi ve alımı &lt;code class=&quot;language-text&quot;&gt;&amp;lt;-&lt;/code&gt; operatörü ile gerçekleştirilir:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Gönderim: &lt;code class=&quot;language-text&quot;&gt;ch &amp;lt;- x&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Alım: &lt;code class=&quot;language-text&quot;&gt;y := &amp;lt;-ch&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Örnek bir kullanım:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;fmt&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    ch &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;chan&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;go&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;// Sending data&lt;/span&gt;
        ch &lt;span class=&quot;token operator&quot;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Data from Goroutine&quot;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;// Receiving data&lt;/span&gt;
    data &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;lt;-&lt;/span&gt;ch
    fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;data&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Yukarıdaki örnekte, isimlendirilmemiş (anonymous) bir fonksiyonu goroutine olarak çalıştırıyoruz ve bu fonksiyon, &lt;code class=&quot;language-text&quot;&gt;ch&lt;/code&gt; kanalına bir string gönderiyor. Ana goroutine ise bu string’i &lt;code class=&quot;language-text&quot;&gt;data := &amp;lt;-ch&lt;/code&gt; ifadesiyle okuyor.&lt;/p&gt;
&lt;h2 id=&quot;32-buffered-channels&quot;&gt;&lt;a href=&quot;#32-buffered-channels&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;3.2 Buffered Channels&lt;/h2&gt;
&lt;p&gt;Standart olarak oluşturulan channel’lar “unbuffered” (tamponlanmamış) olarak adlandırılır ve gönderici ile alıcının aynı anda işlemi gerçekleştirmesini bekler. Yani kanalın her gönderimi bir alıcı tarafından okunana kadar bloklanır.&lt;/p&gt;
&lt;p&gt;Eğer belirli bir kapasiteye sahip bir kanal oluşturursanız, bu bir “buffered channel” olur. Bu kanal belirli sayıda mesajı okuyucu olmadan da tutabilir.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;ch &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;chan&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// A buffered channel with a capacity of 5&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Bu durumda &lt;code class=&quot;language-text&quot;&gt;ch&lt;/code&gt; kanalına en fazla 5 adet int değerini alıcı beklemese bile gönderebilirsiniz. Ancak 6. gönderim, kapasite dolduğu için, bir değer alana kadar bloklanacaktır.&lt;/p&gt;
&lt;h2 id=&quot;33-kanalın-kapatılması-close&quot;&gt;&lt;a href=&quot;#33-kanal%C4%B1n-kapat%C4%B1lmas%C4%B1-close&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;3.3 Kanalın Kapatılması (close)&lt;/h2&gt;
&lt;p&gt;Kanalı &lt;code class=&quot;language-text&quot;&gt;close(ch)&lt;/code&gt; fonksiyonu ile kapatabilirsiniz. Kapatılan bir kanala tekrar veri gönderilmeye çalışılırsa “panic” oluşur. Kapalı kanaldan veri okumaya devam edebilirsiniz, ancak okunabilecek veri kalmadığında “zero value” (int için 0, string için &quot;&quot; vb.) dönecektir.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;fmt&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    ch &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;chan&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    ch &lt;span class=&quot;token operator&quot;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;
    ch &lt;span class=&quot;token operator&quot;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;close&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;ch&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;// Since the channel is closed, we can continue to read data, &lt;/span&gt;
	&lt;span class=&quot;token comment&quot;&gt;// but as soon as we try to write, a panic occurs.&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; val &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;range&lt;/span&gt; ch &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;val&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Yukarıdaki örnekte &lt;code class=&quot;language-text&quot;&gt;range&lt;/code&gt; ifadesi kapatılmış kanaldaki mevcut tüm değerleri okur, yeni veri olmadığında döngüyü sonlandırır.&lt;/p&gt;
&lt;hr&gt;
&lt;h1 id=&quot;4-senkronizasyon-mekanizmaları&quot;&gt;&lt;a href=&quot;#4-senkronizasyon-mekanizmalar%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;4. Senkronizasyon Mekanizmaları&lt;/h1&gt;
&lt;p&gt;Concurrency ile ilgilenirken birden fazla goroutine’in aynı kaynağa erişmesi, paylaşımlı bir veriyi güncellemesi veya okuması gerekebilir. Bu durumlarda veri bütünlüğünü (data consistency) korumak için senkronizasyon yöntemlerine ihtiyaç duyarız.&lt;/p&gt;
&lt;h2 id=&quot;41-syncwaitgroup&quot;&gt;&lt;a href=&quot;#41-syncwaitgroup&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;4.1 &lt;code class=&quot;language-text&quot;&gt;sync.WaitGroup&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;Birden fazla goroutine’in tamamlanmasını beklemek için kullanılan en temel yapı &lt;code class=&quot;language-text&quot;&gt;sync.WaitGroup&lt;/code&gt;‘dır. Aşağıdaki örnekte, üç farklı fonksiyonu üç ayrı goroutine’de çalıştırıyoruz ve hepsinin bitmesini &lt;code class=&quot;language-text&quot;&gt;WaitGroup&lt;/code&gt; kullanarak bekliyoruz:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;fmt&quot;&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;sync&quot;&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;time&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;doWork&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;num &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; wg &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;sync&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;WaitGroup&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;defer&lt;/span&gt; wg&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Done&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// When the function finishes, the counter is decremented by calling Done().&lt;/span&gt;
    fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Goroutine %d started\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; num&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    time&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Sleep&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;time&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Millisecond &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;500&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// For example, let&apos;s wait 500 ms&lt;/span&gt;
    fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Goroutine %d finished\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; num&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; wg sync&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;WaitGroup
    toplamGoroutine &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;
    wg&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;toplamGoroutine&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// We are waiting for 3 goroutines&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;lt;=&lt;/span&gt; toplamGoroutine&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;go&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;doWork&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;wg&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;// Waits until all goroutines are finished&lt;/span&gt;
    wg&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Wait&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;All goroutines completed&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Yukarıda:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;wg.Add(n)&lt;/code&gt; ile bekleyeceğimiz goroutine sayısını belirtiyoruz.&lt;/li&gt;
&lt;li&gt;Her goroutine’in içinde &lt;code class=&quot;language-text&quot;&gt;defer wg.Done()&lt;/code&gt; diyerek, goroutine’in işi bittiğinde WaitGroup sayacını 1 azaltmasını sağlıyoruz.&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;wg.Wait()&lt;/code&gt; ifadesi, tüm goroutine’lerin (add ile eklenen) tamamlanmasını bekler.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;42-syncmutex-ve-syncrwmutex&quot;&gt;&lt;a href=&quot;#42-syncmutex-ve-syncrwmutex&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;4.2 &lt;code class=&quot;language-text&quot;&gt;sync.Mutex&lt;/code&gt; ve &lt;code class=&quot;language-text&quot;&gt;sync.RWMutex&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;Paylaşımlı veriye aynı anda erişildiği durumlarda veri tutarlılığı sağlamak için &lt;code class=&quot;language-text&quot;&gt;sync.Mutex&lt;/code&gt; (mutual exclusion lock) kullanılır. Bir “mutex” aynı anda yalnızca bir goroutine’in paylaşımlı kaynağa erişmesine izin verir.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;fmt&quot;&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;sync&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; SafeCounter &lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    mu    sync&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Mutex
    count &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;sc &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;SafeCounter&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Increment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    sc&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;mu&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Lock&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;defer&lt;/span&gt; sc&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;mu&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Unlock&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    sc&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;count&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;sc &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;SafeCounter&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Value&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    sc&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;mu&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Lock&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;defer&lt;/span&gt; sc&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;mu&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Unlock&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; sc&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;count
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; wg sync&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;WaitGroup
    sc &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; SafeCounter&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    goroutineCount &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;
    wg&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;goroutineCount&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; goroutineCount&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;go&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;defer&lt;/span&gt; wg&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Done&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; j&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                sc&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Increment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    wg&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Wait&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Total:&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; sc&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Value&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;Increment()&lt;/code&gt; ve &lt;code class=&quot;language-text&quot;&gt;Value()&lt;/code&gt; metodlarında &lt;code class=&quot;language-text&quot;&gt;Lock()&lt;/code&gt; ve &lt;code class=&quot;language-text&quot;&gt;Unlock()&lt;/code&gt; ile verilere tek seferde sadece bir goroutine’in erişmesini sağlıyoruz.
Böylece veri tutarlılığı korunuyor.&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;RWMutex&lt;/code&gt;, okuma-yazma kilidi (read-write lock) olup, birden çok okuyucu goroutine’e aynı anda izin verir ancak bir yazıcı girince sadece yazıcıya izin verir. Böylece genellikle ağırlıklı olarak okuma işlemlerinin yapıldığı durumlarda performans kazandırır.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;43-synconce&quot;&gt;&lt;a href=&quot;#43-synconce&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;4.3 &lt;code class=&quot;language-text&quot;&gt;sync.Once&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;Bazen belirli bir fonksiyonun veya işlemin program boyunca yalnızca bir kez çalışmasını isteyebilirsiniz. Bu durum için &lt;code class=&quot;language-text&quot;&gt;sync.Once&lt;/code&gt; yapısı kullanılır. Özellikle konfigürasyon, cache inicializasyonu gibi işlemler sadece bir kez yapılmak isteniyorsa oldukça faydalıdır.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;fmt&quot;&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;sync&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; once sync&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Once

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;initConfig&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;The configuration is started.&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; wg sync&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;WaitGroup
    wg&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;go&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;id &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;defer&lt;/span&gt; wg&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Done&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            once&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Do&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;initConfig&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Goroutine %d is running.\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; id&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    wg&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Wait&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Bu örnekte &lt;code class=&quot;language-text&quot;&gt;initConfig()&lt;/code&gt; fonksiyonu kaç tane goroutine çağırırsa çağırsın yalnızca bir kez çalıştırılacaktır.&lt;/p&gt;
&lt;hr&gt;
&lt;h1 id=&quot;5-concurrencyde-dikkat-edilmesi-gerekenler&quot;&gt;&lt;a href=&quot;#5-concurrencyde-dikkat-edilmesi-gerekenler&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;5. Concurrency’de Dikkat Edilmesi Gerekenler&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Data Race (Veri Yarışı):&lt;/strong&gt; Birden fazla goroutine aynı değişkeni aynı anda okuyup yazmaya çalışırsa veri yarışı oluşur. Bu durumda beklenmedik sonuçlar alabilirsiniz. &lt;code class=&quot;language-text&quot;&gt;go run -race main.go&lt;/code&gt; komutu ile Go programınızda veri yarışı test edebilirsiniz.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kilitlerin Unutulması:&lt;/strong&gt; &lt;code class=&quot;language-text&quot;&gt;Mutex&lt;/code&gt; kullanırken kilidi açmayı (unlock) unutursanız, diğer goroutine’ler sonsuza kadar bekleyebilir. Bu nedenle &lt;code class=&quot;language-text&quot;&gt;defer mu.Unlock()&lt;/code&gt; gibi yaklaşımlar önerilir.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ölçeklenebilirlik:&lt;/strong&gt; Goroutine’ler çok hafif olsa da, aşırı sayıda goroutine kullanımı sistem kaynaklarının tükenmesine neden olabilir. Milyonlarca goroutine başlatmak teoride mümkün olsa da pratikte göz önünde bulundurulması gereken bellek ve işlemci limitleri vardır.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kapanmamış Kanallar:&lt;/strong&gt; Özellikle uzun ömürlü servislerde, kanal kullanımını dikkatli yönetmek gerekir. İhtiyaç kalmayan kanallar doğru zamanda kapatılmazsa bekleyen goroutine’ler bloklanabilir veya “goroutine leak” (sızıntı) yaşanabilir.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Zamanlama ve Yarış Koşulları:&lt;/strong&gt; Concurrency, karmaşıklığı artırır. Kodun hangi sırayla çalışacağını tam olarak kestirmek güçtür. Bu nedenle test stratejileri, logging ve bellek izleme (profiling) önemlidir.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h1 id=&quot;6-örnek-i̇şleyiciler-worker-ve-kanal-tabanlı-sıra&quot;&gt;&lt;a href=&quot;#6-%C3%B6rnek-i%CC%87%C5%9Fleyiciler-worker-ve-kanal-tabanl%C4%B1-s%C4%B1ra&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;6. Örnek: İşleyiciler (Worker) ve Kanal Tabanlı Sıra&lt;/h1&gt;
&lt;p&gt;Aşağıda, 10 adet işi işlemesi için 3 adet “worker” (işleyici) goroutine başlatan, işleri bir kanaldan okuyan ve işleyen örnek bir kod bulunuyor:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;fmt&quot;&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;sync&quot;&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;time&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Task represents an item or job to be processed&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; Task &lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    ID &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// worker function processes tasks from the channel&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;worker&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;id &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; taskChan &lt;span class=&quot;token operator&quot;&gt;&amp;lt;-&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;chan&lt;/span&gt; Task&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; wg &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;sync&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;WaitGroup&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;defer&lt;/span&gt; wg&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Done&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; task &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;range&lt;/span&gt; taskChan &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Worker %d is processing task %d...\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; id&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; task&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ID&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;// Simulate some work&lt;/span&gt;
        time&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Sleep&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;time&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Millisecond &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Worker %d has completed task %d.\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; id&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; task&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ID&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    taskCount &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;
    workerCount &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;// Create a channel to send tasks&lt;/span&gt;
    taskChan &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;chan&lt;/span&gt; Task&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; taskCount&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;// A WaitGroup will ensure that all tasks and workers finish&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; wg sync&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;WaitGroup

    &lt;span class=&quot;token comment&quot;&gt;// Start 3 workers&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;lt;=&lt;/span&gt; workerCount&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        wg&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;go&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;worker&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; taskChan&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;wg&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;// Send 10 tasks to the channel&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;lt;=&lt;/span&gt; taskCount&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        taskChan &lt;span class=&quot;token operator&quot;&gt;&amp;lt;-&lt;/span&gt; Task&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;ID&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;// Close the channel once all tasks have been sent&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;close&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;taskChan&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;// Wait for all workers to finish&lt;/span&gt;
    wg&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Wait&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;All tasks have been processed, the program is now terminating.&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;worker&lt;/code&gt; fonksiyonu kendisine gelen &lt;code class=&quot;language-text&quot;&gt;taskChan&lt;/code&gt;‘dan görevleri alarak (range ile) işliyor. Kanal kapatıldığında range döngüsü sonlanıyor ve fonksiyon çıkıyor.
Ana fonksiyonda &lt;code class=&quot;language-text&quot;&gt;wg.Add(1)&lt;/code&gt; yaparak 3 worker başlatılıyor. Her worker tamamlandığında &lt;code class=&quot;language-text&quot;&gt;wg.Done()&lt;/code&gt; çağırıyor. Görevler tamamlandığında, program sonlanıyor.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Program çalıştırıldığında çıktısı aşağıdaki gibi olacaktır.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;json&quot;&gt;&lt;pre class=&quot;language-json&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;Worker &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt; is processing task &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;...
Worker &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; is processing task &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;...
Worker &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; is processing task &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;...
Worker &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; has completed task &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;.
Worker &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; is processing task &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;...
Worker &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt; has completed task &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;.
Worker &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt; is processing task &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;...
Worker &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; has completed task &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;.
Worker &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; is processing task &lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt;...
Worker &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; has completed task &lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt;.
Worker &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; is processing task &lt;span class=&quot;token number&quot;&gt;7&lt;/span&gt;...
Worker &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; has completed task &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;.
Worker &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; is processing task &lt;span class=&quot;token number&quot;&gt;8&lt;/span&gt;...
Worker &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt; has completed task &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;.
Worker &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt; is processing task &lt;span class=&quot;token number&quot;&gt;9&lt;/span&gt;...
Worker &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; has completed task &lt;span class=&quot;token number&quot;&gt;8&lt;/span&gt;.
Worker &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; is processing task &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;...
Worker &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt; has completed task &lt;span class=&quot;token number&quot;&gt;9&lt;/span&gt;.
Worker &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; has completed task &lt;span class=&quot;token number&quot;&gt;7&lt;/span&gt;.
Worker &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; has completed task &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;.
All tasks have been processed&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; the program is now terminating.&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Programın çalışır haline &lt;a href=&quot;https://go.dev/play/p/eFGjP96Nhd-&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;şuradan&lt;/a&gt; erişilebilir.&lt;/p&gt;
&lt;p&gt;Bu yaklaşım, “worker pool” (işleyici havuzu) olarak bilinir ve genellikle büyük miktarda işi, belirli sayıda eşzamanlı çalışan işleyici ile paylaşmak için idealdir. Böylece kaynak kullanımını düzenler ve performans ile ölçeklenebilirlik sağlar.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Go basitlik ve verimlilik odaklı bir dil olarak concurrency konusunu dil seviyesinde mükemmel şekilde desteklemektedir.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Goroutine&lt;/strong&gt;‘ler, sistem iş parçacıklarına (thread) göre çok daha hafif ve kolay yönetilebilir yapılardır.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Channel&lt;/strong&gt;‘lar, veriyi paylaşmak yerine mesajlaşma paradigmasını benimser ve goroutine’ler arası iletişimi güvenli hale getirir.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;sync&lt;/strong&gt; paketi (WaitGroup, Mutex, RWMutex, Once gibi yapılar) concurrency senaryolarında yaygın kullanılan senkronizasyon mekanizmalarını içerir.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bu araçları doğru ve bilinçli kullanarak, yüksek performanslı ve ölçeklenebilir Go uygulamaları geliştirebilirsiniz. Ancak concurrency, beraberinde karmaşıklığı da getirir. Veri yarışı (race condition), kilitlenme (deadlock) gibi sorunlar çıkmaması için kodunuzu dikkatle tasarlamalı, test etmeli ve gerekli profil (profiling) araçlarını kullanmalısınız.&lt;/p&gt;
&lt;p&gt;Unutmayın: Concurrency doğru kullanıldığında çok güçlü bir araçtır; yanlış kullanıldığında ise hataları takip etmesi ve gidermesi zor bir kabusa dönüşebilir. Go’nun basit concurrency modeli ve zengin standard kütüphanesi, bu yolda büyük kolaylıklar sunuyor.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://go.dev/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://go.dev/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://medium.com/@gopinathr143/go-concurrency-patterns-a-deep-dive-a2750f98a102&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://medium.com/@gopinathr143/go-concurrency-patterns-a-deep-dive-a2750f98a102&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.stackademic.com/go-concurrency-visually-explained-channel-c6f88070aafa&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://blog.stackademic.com/go-concurrency-visually-explained-channel-c6f88070aafa&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2024/go-da-concurrency-channels-goroutines-ve-senkronizasyon-mekanizmalari/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[CRDT'ler (Conflict-free Replicated Data Types): Dağıtık Sistemlerde Veri Tutarlılığı]]></title><description><![CDATA[Dağıtık sistemler günümüzde giderek daha fazla popüler hâle gelmiştir. Mikroservis mimarileri, veri merkezleri arası replikasyonlar, coğrafi olarak dağıtık veri tabanları, çoklu erişim noktalarına sahip uygulamalar ve benzeri senaryolar, veri tutarlılığının sağlanmasını oldukça karmaşık bir hâle getirir. Verinin aynı anda birden fazla lokasyonda bulunması, güncellenmesi veya okunması sırasında çatışmalar (conflicts) ortaya çıkabilir. İşte bu noktada CRDT (Conflict-free Replicated Data Types) kavramı devreye girer.]]></description><link>https://blog.hkucuk.com/2024/crdtler-conflict-free-replicated-data-types-dagitik-sistemlerde-veri-tutarliligi/</link><guid isPermaLink="false">https://blog.hkucuk.com/2024/crdtler-conflict-free-replicated-data-types-dagitik-sistemlerde-veri-tutarliligi/</guid><pubDate>Tue, 15 Oct 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Dağıtık sistemler günümüzde giderek daha fazla popüler hâle gelmiştir. Mikroservis mimarileri, veri merkezleri arası replikasyonlar, coğrafi olarak dağıtık veri tabanları, çoklu erişim noktalarına sahip uygulamalar ve benzeri senaryolar, veri tutarlılığının sağlanmasını oldukça karmaşık bir hâle getirir. Verinin aynı anda birden fazla lokasyonda bulunması, güncellenmesi veya okunması sırasında çatışmalar (conflicts) ortaya çıkabilir. İşte bu noktada CRDT (Conflict-free Replicated Data Types) kavramı devreye girer.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Conflict-free_replicated_data_type&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;CRDT’ler&lt;/a&gt;, dağıtık ortamda veri kopyaları (replica) arasında sonunda güçlü tutarlılık (Strong Eventual Consistency) sağlamayı amaçlayan özel veri yapılarıdır. Bu tür veri yapılarını kullanarak, kopyalar arasında tutarlılığın sağlanması için sürekli bir senkronizasyon veya pahalı bir küresel kilit (global lock) mekanizmasına başvurulmaksızın, veri güncellemelerinin bir şekilde deterministik olarak birleştirilmesi (merge) mümkün olmaktadır.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/5011750b95fa1a2ba4165f7692535e7d/80d71/image.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 43.24324324324324%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAAAsTAAALEwEAmpwYAAABWElEQVR42oVRy24bMQz0/39Kzz0WOeRQIL0kMFoHeTiIHe8jWq2WkpZ6UBLVXcdoDy2QAUHMkByQADf1DGZeMmI5dTSZfK5copRa+K/801qwSSkT0YdQU7q+gX6IHxP/ImWeMUe69Db7g9i/DtbiUpJT/rHNFou2RZukTXYu/Xykty67wOjL7sl++QoPL37hq/nQQiNQKe1jFTLe3nVSBY3VYJ1MxcDPR/71MHbCnnr79AqHpkioYNflG6vVrCdjgHP0um1238iDg0Y195xwOGwttKDa9u2FnOZkS5oJZY52NWvZIHQAkBJR9G5eSUA9vjejFFq2MfjkdfQ4iD54T8vJRlIMqznarrhOg2LOlWO95FRrSdEBTO54TccrDlMueez31H5fJZnz5n5nxW6eTSVTsCv4fo5+4dWLZFsS2+KHPPfVj0k9ZtiX+cR+WM0hhMXJ//3MZ/gNl6IEKLr7tT4AAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;CRDT&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/5011750b95fa1a2ba4165f7692535e7d/fcda8/image.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/5011750b95fa1a2ba4165f7692535e7d/12f09/image.png 148w,https://blog.hkucuk.com/static/5011750b95fa1a2ba4165f7692535e7d/e4a3f/image.png 295w,https://blog.hkucuk.com/static/5011750b95fa1a2ba4165f7692535e7d/fcda8/image.png 590w,https://blog.hkucuk.com/static/5011750b95fa1a2ba4165f7692535e7d/80d71/image.png 625w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;hr&gt;
&lt;h1 id=&quot;1-crdt-nedir-ve-özellikleri&quot;&gt;&lt;a href=&quot;#1-crdt-nedir-ve-%C3%B6zellikleri&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;1. CRDT Nedir ve Özellikleri&lt;/h1&gt;
&lt;p&gt;CRDT (Conflict-free Replicated Data Type), bir veri tipinin dağıtık ortamlarda tutarsızlıklar yaşanmadan replikasyonunun yapılabilmesi için tasarlanmış bir türüdür. Geleneksel yöntemlerde farklı kopyalardaki değişikliklerin bir araya getirilmesi, çatışmaların (conflicts) çözümü esnasında karmaşık algoritmalar veya ek bir koordinasyon gerektirir. CRDT’ler ise bu çatışmaları en aza indirebilecek (veya tamamen ortadan kaldırabilecek) şekilde tasarlanmışlardır.&lt;/p&gt;
&lt;h3 id=&quot;temel-özellikler&quot;&gt;&lt;a href=&quot;#temel-%C3%B6zellikler&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Temel Özellikler&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Idempotent Operasyonlar: CRDT’lerdeki birleşme (merge) fonksiyonları sıklıkla idempotent olarak tasarlanır. Yani aynı güncelleme birden fazla kez uygulanırsa aynı sonuca ulaşılır.&lt;/li&gt;
&lt;li&gt;Commutativity (Değişme Özelliği): Operasyonlar farklı sırayla uygulanırsa da nihai durum aynı kalır.&lt;/li&gt;
&lt;li&gt;Monotonik Büyüme: Bazı CRDT türlerinde (özellikle state-based CRDT’lerde) veri yapısı her zaman büyüyormuş gibi görülür. Güncellemeler eklemeler veya işaretlemeler şeklinde yapılır, ancak bu daha sonra farklı bir formülasyonla “çıkarmalara” (removals) da izin verir (örn: OR-Set).&lt;/li&gt;
&lt;li&gt;Güçlü Sonunda Tutarlılık (Strong Eventual Consistency): Belirli bir zaman diliminde, tüm kopyalar birbirlerinden güncellemeleri alıp birleştirdiklerinde, nihai durumda hepsi aynı veriye ulaşırlar.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;CRDT’lerin sağladığı bu özellikler, dağıtık sistemlerin en büyük zorluklarından biri olan tutarlılık problemini hafifletmeyi amaçlar. Özellikle CAP Teoremi gereği, bir sistemi hem yüksek erişilebilirlik (availability) hem de bölünme toleransı (partition tolerance) yüksek biçimde tasarlamak istersek, tutarlılık sorunlarına ayrı bir özen göstermemiz gerekir. CRDT’ler, “eventual consistency” yaklaşımı içinde çatışma çözümünü basitleştirerek bu soruna kısmi ama etkili bir çözüm sunar.&lt;/p&gt;
&lt;h1 id=&quot;2-crdt-türleri&quot;&gt;&lt;a href=&quot;#2-crdt-t%C3%BCrleri&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;2. CRDT Türleri&lt;/h1&gt;
&lt;p&gt;CRDT’ler genel olarak Operation-based ve State-based olmak üzere iki temel kategoride incelenir. Ayrıca Delta-based denilen bir yaklaşım da vardır.&lt;/p&gt;
&lt;h2 id=&quot;21-operation-based-op-based-crdtler&quot;&gt;&lt;a href=&quot;#21-operation-based-op-based-crdtler&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;2.1. Operation-based (Op-based) CRDT’ler&lt;/h2&gt;
&lt;p&gt;Op-based CRDT’lerde, gerçekleşen her bir değişiklik (örneğin bir sayının artırılması, bir elemana ekleme yapılması) “operation log” benzeri bir sistem aracılığıyla diğer replikalara gönderilir. Bu replikalar gelen güncellemeyi uygular ve kendi durumlarını güncel tutarlar.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Örnek: GCounter (Grow-only Counter), PN-Counter (Positive-Negative Counter).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;22-state-based-convergent-crdtler&quot;&gt;&lt;a href=&quot;#22-state-based-convergent-crdtler&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;2.2. State-based (Convergent) CRDT’ler&lt;/h2&gt;
&lt;p&gt;State-based CRDT’lerde, her replikada bir “durum” (state) tutulur. Farklı replikalar zaman zaman birbirlerinin durumunu kopyalar (gossip mekanizması gibi) ve durumu birleştirir (merge). Bu birleşme işlemi idempotent, değişmeli (commutative) ve birleşmeli (associative) olduğundan, sıralama farkı gözetmeksizin aynı nihai duruma ulaşılabilir.”&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Örnek: OR-Set (Observed-Removed Set), MV-Register (Multi-Value Register).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;23-delta-based-crdtler&quot;&gt;&lt;a href=&quot;#23-delta-based-crdtler&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;2.3. Delta-based CRDT’ler&lt;/h2&gt;
&lt;p&gt;Delta-based CRDT’ler, state-based yaklaşımın daha verimli hâlidir. Tam durumu göndermek yerine, sadece “delta” denilen özet (küçük bir parça) paylaşılır. Böylece bant genişliği ve senkronizasyon maliyeti azalır. Büyük veri setlerinde oldukça kullanışlıdır.&lt;/p&gt;
&lt;h2 id=&quot;24-bazı-popüler-crdt-örnekleri&quot;&gt;&lt;a href=&quot;#24-baz%C4%B1-pop%C3%BCler-crdt-%C3%B6rnekleri&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;2.4. Bazı Popüler CRDT Örnekleri&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;G-Counter:&lt;/strong&gt; Yalnızca artırım (increment) işlemlerini destekleyen bir sayaçtır.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PN-Counter:&lt;/strong&gt; Hem artırım hem de eksiltme (decrement) işlemlerini destekler.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OR-Set (Observed-Removed Set):&lt;/strong&gt; Eleman ekleme ve çıkarma operasyonlarını destekleyen bir küme yapısıdır. Aynı elemanın farklı zamanlardaki eklenme/çıkarılma bilgisini tutmak için ek metadata içerir.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LWW-Register (Last-Write-Wins Register):&lt;/strong&gt; Son yazılan değerin baskın geldiği bir kayıt yapısıdır. Bir tür “en son değiştiren kazanır” (last-writer-wins) mantığı kullanır.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MV-Register (Multi-Value Register):&lt;/strong&gt; Aynı anda farklı replikalarda farklı değerler yazıldığında birden fazla değeri tutar ve uygulamanın bu değerler arasındaki seçimi yapmasına izin verir.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RGA (Replicated Growable Array):&lt;/strong&gt; Metin düzenleme veya doküman paylaşımı gibi senaryolarda kullanılır.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&quot;3-crdtlerin-kullanım-alanları-ve-avantajları&quot;&gt;&lt;a href=&quot;#3-crdtlerin-kullan%C4%B1m-alanlar%C4%B1-ve-avantajlar%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;3. CRDT’lerin Kullanım Alanları ve Avantajları&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Veri Tabanları ve Data Stores:&lt;/strong&gt; Riak gibi bazı veritabanları CRDT kavramlarını benimsemiş veya kısmen kullanmıştır. Redis gibi bellek içi veri yapısı kullanan teknoloji stack’lerinde de CRDT kütüphaneleri bulunmaktadır.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gerçek Zamanlı İşbirliği Uygulamaları:&lt;/strong&gt; Google Docs benzeri uygulamalarda aynı dokümanı birden fazla kişi eş zamanlı olarak düzenler. CRDT’ler, bu senaryolarda çatışmaların çözümlenmesini kolaylaştırabilir.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Oyun Sunucuları ve Multiplayer Senaryolar:&lt;/strong&gt; Oyuncuların hareketleri, skor tablosu, envanter bilgileri gibi gerçek zamanlı güncellemelerin yapıldığı ortamlarda CRDT’ler kullanılabilir.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dağıtık Cache Sistemleri:&lt;/strong&gt; Coğrafi olarak dağınık bölgelerde cache tutmak ve senkronize etmek için CRDT’ler, yüksek performans ve veri bütünlüğü sunar.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;31-avantajlar&quot;&gt;&lt;a href=&quot;#31-avantajlar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;3.1. Avantajlar&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Basit Çatışma Çözümü:&lt;/strong&gt; CRDT’ler, tasarımları gereği çatışmaları minimize eder veya tamamen ortadan kaldırır.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Eventual Consistency:&lt;/strong&gt; CRDT’ler, CAP Teoremi bağlamında erişilebilirlik (availability) ve bölünme toleransını (partition tolerance) öne çıkarmak isteyen sistemlerde tutarlılığı “eventually” düzeyinde sağlar.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kolay Geliştirilebilirlik:&lt;/strong&gt; CRDT yapıları bir kez anlaşıldığında, uygulamada karmaşık çatışma çözümü algoritmaları yazmaya gerek kalmaz.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Idempotent ve Commutative Operasyonlar:&lt;/strong&gt; Dağıtık sistemlerde mesaj kaybı, tekrar iletimi veya farklı sıralama gibi durumlar yaşandığında, CRDT’ler aynı veriyi tekrarlayarak veya farklı sıralarla işleme almaktan etkilenmez.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;32-dezavantajlar&quot;&gt;&lt;a href=&quot;#32-dezavantajlar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;3.2. Dezavantajlar&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Ek Metadata:&lt;/strong&gt; CRDT’ler genellikle ek metadata tutar. Bu, bellek kullanımı açısından ek yük oluşturabilir.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Her Türlü Operasyonu Kapsamaz:&lt;/strong&gt; CRDT modelleri, tüm veri yapısı türleri veya tüm uygulama ihtiyaçları için en uygun çözüm olmayabilir.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;İşlemin “Son Hali” Anlamı Değişebilir:&lt;/strong&gt; Eventual consistency doğası gereği, veri durumunun “anlık” hâli sistem genelinde tutarlı olmayabilir. Zamanla tutarlı hâle gelir.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h1 id=&quot;4-örnek-crdt-uygulaması&quot;&gt;&lt;a href=&quot;#4-%C3%B6rnek-crdt-uygulamas%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;4. Örnek CRDT Uygulaması&lt;/h1&gt;
&lt;p&gt;Aşağıdaki örnekte, dağıtık ortamda G-Counter (sadece artım yapan sayaç) mantığını Go diliyle basit bir şekilde göstereceğiz. Bu sayaç, her bir replikada artan değerleri tutar ve replikalar arasındaki değerler birleştirilerek (merge) toplam sonuca ulaşır.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Not: Bu kod örneği tümüyle “production-grade” düzeyde bir CRDT olmayıp, konsepti açıklamaya yöneliktir.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;fmt&quot;&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;sync&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// GCounter represents a simple grow-only counter CRDT.&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; GCounter &lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// internal slice holds the counters for each replica&lt;/span&gt;
    values &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;
    mu     sync&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Mutex
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// NewGCounter initializes a GCounter with a given number of replicas.&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;NewGCounter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;numReplicas &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;GCounter &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;GCounter&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        values&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; numReplicas&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Increment increments the counter for the given replica ID.&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;c &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;GCounter&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Increment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;replicaID &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    c&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;mu&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Lock&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;defer&lt;/span&gt; c&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;mu&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Unlock&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    c&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;values&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;replicaID&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Value returns the total count by summing all replica counters.&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;c &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;GCounter&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Value&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    c&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;mu&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Lock&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;defer&lt;/span&gt; c&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;mu&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Unlock&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    total &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; v &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;range&lt;/span&gt; c&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;values &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        total &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; v
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; total
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Merge merges another GCounter into the current one. &lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// It takes the maximum value for each replica index.&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;c &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;GCounter&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Merge&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;other &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;GCounter&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    c&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;mu&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Lock&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;defer&lt;/span&gt; c&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;mu&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Unlock&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;// We assume both counters have the same length.&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;c&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;values&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; other&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;values&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; c&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;values&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            c&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;values&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; other&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;values&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// Suppose we have 3 replicas in the system&lt;/span&gt;
    gc1 &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;NewGCounter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    gc2 &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;NewGCounter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    gc3 &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;NewGCounter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;// Replica 1 increments its local counter&lt;/span&gt;
    gc1&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Increment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// increment by replicaID = 0&lt;/span&gt;
    gc1&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Increment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    gc1&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Increment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;// Replica 2 increments its local counter&lt;/span&gt;
    gc2&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Increment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// increment by replicaID = 1&lt;/span&gt;
    gc2&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Increment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;// Replica 3 increments its local counter&lt;/span&gt;
    gc3&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Increment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// increment by replicaID = 2&lt;/span&gt;
    gc3&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Increment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    gc3&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Increment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    gc3&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Increment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;// Let&apos;s merge them to simulate synchronization&lt;/span&gt;
    gc1&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Merge&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;gc2&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    gc1&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Merge&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;gc3&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;// Now all replicas would eventually do the same merges:&lt;/span&gt;
    gc2&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Merge&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;gc1&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    gc3&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Merge&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;gc1&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;// The total value of any merged replica should be:&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// gc1 replica: 3 increments (by replica 0)&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// gc2 replica: 2 increments (by replica 1)&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// gc3 replica: 4 increments (by replica 2)&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// =&gt; total = 3 + 2 + 4 = 9&lt;/span&gt;
    fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Final merged value at gc1:&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; gc1&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Value&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Final merged value at gc2:&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; gc2&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Value&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Final merged value at gc3:&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; gc3&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Value&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Program çalıştırıldığında çıktısı aşağıdaki gibi olacaktır.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;json&quot;&gt;&lt;pre class=&quot;language-json&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;Final merged value at gc1&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;9&lt;/span&gt;
Final merged value at gc2&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;9&lt;/span&gt;
Final merged value at gc3&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;9&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Programın çalışır haline &lt;a href=&quot;https://go.dev/play/p/sApSJpKuCO2&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;şuradan&lt;/a&gt; erişilebilir.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;GCounter Yapısı (Struct): values dizisi her bir replikanın kendi lokal sayacını tutar.&lt;/li&gt;
&lt;li&gt;Increment: Belirtilen replicaID’nin sayacını artırır.&lt;/li&gt;
&lt;li&gt;Value: Tüm replikaların sayacını toplayarak o anki toplam değeri döndürür.&lt;/li&gt;
&lt;li&gt;Merge: İki GCounter’ı birleştirir. Aynı index (replicaID) için maksimum değeri alır. Böylece kimsenin yaptığı artış kaybolmaz. Bu, “grow-only” mantığına dayanır.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Gerçek bir sistemde bu değerlerin ağ üzerinden diğer replikalara taşınması, gossip protokolleri veya bir mesajlaşma sistemiyle yapılabilir. Ayrıca, replikalarda belirli aralıklarla gelen güncellemeler birleştirilebilir.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;CRDT’ler (Conflict-free Replicated Data Types), günümüz dağıtık sistemlerinde sık sık karşılaşılan veri tutarlılığı ve çatışma (conflict) problemlerine etkin çözümler sunarlar. Geleneksel dağıtık veri yapılarına göre daha fazla metadata gerektirmelerine rağmen, güçlü sonunda tutarlılık (Strong Eventual Consistency) sağlamada önemli bir kavramdır.&lt;/p&gt;
&lt;p&gt;CRDT yaklaşımı, mikroservisler, gerçek zamanlı işbirliği (collaborative editing) ortamları ve veri tutarlılığının kritik olduğu birçok senaryoda sıklıkla karşımıza çıkmaktadır. Uygulama gereksinimlerinize uygun CRDT yapısını seçerek, dağıtık ortamdaki veri tutarlılığı sorunlarını büyük oranda yönetilebilir bir seviyeye çekebilirsiniz. Özellikle artan kullanıcı sayısı, veri merkezi sayısı ve coğrafi dağıtım gibi karmaşık problemlerin yaşandığı ortamlarda CRDT’lerin sağladığı kolaylıklar son derece değerlidir.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Conflict-free_replicated_data_type&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/Conflict-free_replicated_data_type&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://inria.hal.science/inria-00555588v1/document&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://inria.hal.science/inria-00555588v1/document&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.oreilly.com/library/view/designing-data-intensive-applications/9781491903063/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.oreilly.com/library/view/designing-data-intensive-applications/9781491903063/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://medium.com/@istanbul_techie/a-look-at-conflict-free-replicated-data-types-crdt-221a5f629e7e&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://medium.com/@istanbul_techie/a-look-at-conflict-free-replicated-data-types-crdt-221a5f629e7e&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2024/crdtler-conflict-free-replicated-data-types-dagitik-sistemlerde-veri-tutarliligi/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[UNIX: Modern İşletim Sistemlerinin Temeli]]></title><description><![CDATA[Bilgisayar dünyasında bazı teknolojiler zamanla unutulsa da bazıları kök salıp diğer birçok yeniliğin temelini oluşturur. UNIX işletim sistemi işte tam da bu kategoriye girer. Dennis M. Ritchie ve Ken Thompson tarafından 1970'lerin başında geliştirilen UNIX, bugün modern işletim sistemlerinin birçoğunun temelini oluşturan devrim niteliğinde bir yazılımdır.]]></description><link>https://blog.hkucuk.com/2024/unix-modern-isletim-sistemlerinin-temeli/</link><guid isPermaLink="false">https://blog.hkucuk.com/2024/unix-modern-isletim-sistemlerinin-temeli/</guid><pubDate>Mon, 19 Aug 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Bilgisayar dünyasında bazı teknolojiler zamanla unutulsa da bazıları kök salıp diğer birçok yeniliğin temelini oluşturur. &lt;a href=&quot;https://en.wikipedia.org/wiki/Unix&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;UNIX&lt;/a&gt; işletim sistemi işte tam da bu kategoriye girer. Dennis M. Ritchie ve Ken Thompson tarafından 1970’lerin başında geliştirilen &lt;a href=&quot;https://en.wikipedia.org/wiki/Unix&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;UNIX&lt;/a&gt;, bugün modern işletim sistemlerinin birçoğunun temelini oluşturan devrim niteliğinde bir yazılımdır.&lt;/p&gt;
&lt;h3 id=&quot;unixin-doğuşu-basitlikten-güce&quot;&gt;&lt;a href=&quot;#unixin-do%C4%9Fu%C5%9Fu-basitlikten-g%C3%BCce&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;UNIX’in Doğuşu: Basitlikten Güce&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Unix&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;UNIX&lt;/a&gt;, başlangıçta Bell Labs’de küçük bir ekip tarafından mütevazı bir zaman paylaşımı sistemi olarak geliştirildi. Ritchie ve Thompson’un öncelikli amacı, kullanıcıların bilgisayar kaynaklarını verimli bir şekilde paylaşmalarını sağlamak ve aynı anda birden çok işlemi yönetebilen bir sistem oluşturmaktı. UNIX’in başarısının arkasındaki en büyük etkenlerden biri sistemin tasarım felsefesiydi: Basitlik, modülerlik ve taşınabilirlik.&lt;/p&gt;
&lt;h3 id=&quot;tasarım-felsefesi-kapsamlı-bir-minimalizm&quot;&gt;&lt;a href=&quot;#tasar%C4%B1m-felsefesi-kapsaml%C4%B1-bir-minimalizm&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Tasarım Felsefesi: Kapsamlı Bir Minimalizm&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Unix&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;UNIX&lt;/a&gt;’in tasarım felsefesi, sistemi hem kullanıcılar hem de geliştiriciler için mümkün olduğunca sade tutmaktı. Sistem her bir bileşenin yalnızca tek bir işi yapmasına ancak bunu en iyi şekilde yapmasına dayanıyordu. Bu felsefe UNIX’in temel araçlarının ve komutlarının her biri için geçerlidir. Örneğin; grep, find ve cat gibi UNIX komutları kendi başlarına küçük görevleri yerine getirirler ancak bu komutlar bir araya getirilerek son derece karmaşık işlemler gerçekleştirilebilir.&lt;/p&gt;
&lt;p&gt;Bu modüler yaklaşım UNIX’i diğer işletim sistemlerinden ayırdı. Kullanıcılar kendi ihtiyaçlarına göre sistemi özelleştirebilir, yeni araçlar geliştirebilir ve bunları mevcut sistemle sorunsuz bir şekilde entegre edebilirlerdi. Bu esneklik UNIX’in popülaritesinin hızla artmasına neden oldu.&lt;/p&gt;
&lt;h3 id=&quot;dosya-sistemi-her-şeyin-dosya-olduğu-bir-dünya&quot;&gt;&lt;a href=&quot;#dosya-sistemi-her-%C5%9Feyin-dosya-oldu%C4%9Fu-bir-d%C3%BCnya&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Dosya Sistemi: Her Şeyin Dosya Olduğu Bir Dünya&lt;/h3&gt;
&lt;p&gt;UNIX dosya sistemini bir hiyerarşi içinde organize ederek, kullanıcıların ve süreçlerin dosyalarla etkileşimini son derece kolaylaştırdı. UNIX dünyasında hemen her şey bir dosya olarak kabul edilir: Veriler, cihazlar, süreçler ve hatta ağ bağlantıları. Bu yaklaşım sistemin kullanımını ve genişletilmesini son derece kolay hale getirdi.&lt;/p&gt;
&lt;p&gt;Bu hiyerarşik dosya sistemi yapısı kullanıcıların ve uygulamaların dosyaları ve dizinleri mantıksal bir şekilde düzenlemesine olanak tanıdı. Bu düzenleme şekli modern işletim sistemlerinde hala yaygın olarak kullanılmaktadır ve UNIX’in bu alandaki öncülüğünü gösterir.&lt;/p&gt;
&lt;h3 id=&quot;süreç-yönetimi-zaman-paylaşımından-çoklu-görevlere&quot;&gt;&lt;a href=&quot;#s%C3%BCre%C3%A7-y%C3%B6netimi-zaman-payla%C5%9F%C4%B1m%C4%B1ndan-%C3%A7oklu-g%C3%B6revlere&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Süreç Yönetimi: Zaman Paylaşımından Çoklu Görevlere&lt;/h3&gt;
&lt;p&gt;UNIX’in en dikkat çekici özelliklerinden biri süreç yönetimindeki yenilikleridir. UNIX çoklu görev (multitasking) ve zaman paylaşımı gibi kavramları etkili bir şekilde uygulayarak birden fazla kullanıcının aynı anda sistemi kullanabilmesini sağladı. Bu süreç yönetimi bilgisayar kaynaklarının verimli kullanımını mümkün kıldı ve UNIX’in performansını zirveye taşıdı.&lt;/p&gt;
&lt;p&gt;Süreçlerin hafifliği ve yönetim kolaylığı, UNIX’in çok kullanıcıyı desteklemesini ve aynı anda birçok işlemi yerine getirebilmesini sağladı. Bu özellikler UNIX’in zamanla birçok farklı platformda kullanılabilmesini mümkün kıldı.&lt;/p&gt;
&lt;h3 id=&quot;unix-ve-c-dili-taşınabilirliğin-gücü&quot;&gt;&lt;a href=&quot;#unix-ve-c-dili-ta%C5%9F%C4%B1nabilirli%C4%9Fin-g%C3%BCc%C3%BC&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;UNIX ve C Dili: Taşınabilirliğin Gücü&lt;/h3&gt;
&lt;p&gt;UNIX’in gelişimi aynı zamanda C programlama diliyle yakından ilişkilidir. UNIX’in büyük bir kısmı C diliyle yazıldı ve bu sayede sistemin farklı donanım platformlarına taşınması kolaylaştı. Bu taşınabilirlik UNIX’in yayılmasını hızlandırdı ve farklı bilgisayar sistemlerinde standart bir işletim sistemi haline gelmesini sağladı.&lt;/p&gt;
&lt;p&gt;C dili ve UNIX birbiriyle adeta iç içe geçmiş iki teknoloji olarak bilgisayar dünyasında önemli bir yer edindi. UNIX’in taşınabilirliği sayesinde bu işletim sistemi sadece Bell Labs’in sınırları içinde kalmadı; üniversitelerde, araştırma kurumlarında ve hatta ticari ortamlarda da yaygın olarak kullanılmaya başlandı.&lt;/p&gt;
&lt;h3 id=&quot;sonuç-unixin-mirası&quot;&gt;&lt;a href=&quot;#sonu%C3%A7-unixin-miras%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Sonuç: UNIX’in Mirası&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/papers-we-love/papers-we-love/blob/main/operating_systems/unix-time-sharing-system.pdf&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;“The UNIX Time-Sharing System”&lt;/a&gt; makalesi, sadece UNIX’in teknik detaylarını sunmakla kalmaz, aynı zamanda bilgisayar biliminde devrim niteliğindeki bu sistemin etkilerini de gözler önüne serer. UNIX’in basitlik ve taşınabilirlik ilkeleri, modern işletim sistemlerinin tasarımında temel rol oynamış ve bugünün teknoloji dünyasında bile geçerliliğini korumuştur.&lt;/p&gt;
&lt;p&gt;UNIX’in mirası Linux, macOS ve hatta Windows’un çeşitli unsurlarında yaşamaya devam ediyor. Geliştiriciler ve teknoloji meraklıları için UNIX sadece bir işletim sistemi değil, aynı zamanda bir tasarım felsefesi ve bir düşünme biçimidir. Bu nedenle UNIX’i anlamak, modern bilgisayar biliminin kökenlerine bir yolculuk yapmaktır.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Unix&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/Unix&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/papers-we-love/papers-we-love/blob/main/operating_systems/unix-time-sharing-system.pdf&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://github.com/papers-we-love/papers-we-love/blob/main/operating_systems/unix-time-sharing-system.pdf&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2024/unix-modern-isletim-sistemlerinin-temeli/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[OSI Modeli: Derinlemesine Bir İnceleme]]></title><description><![CDATA[Ağ iletişimi ve bilgi teknolojileri alanında, farklı sistemlerin birbirleriyle uyum içinde çalışabilmesi için ortak bir çerçeveye ihtiyaç duyulmaktadır. Bu bağlamda OSI (Open Systems Interconnection) Modeli, çeşitli ağ ve iletişim protokollerinin nasıl çalıştığını ve nasıl birbiriyle etkileşime girdiğini anlamak için kullanılan temel bir kavramsal modeldir.]]></description><link>https://blog.hkucuk.com/2024/osi-modeli/</link><guid isPermaLink="false">https://blog.hkucuk.com/2024/osi-modeli/</guid><pubDate>Sat, 08 Jun 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Ağ iletişimi ve bilgi teknolojileri alanında, farklı sistemlerin birbirleriyle uyum içinde çalışabilmesi için ortak bir çerçeveye ihtiyaç duyulmaktadır. Bu bağlamda &lt;a href=&quot;https://en.wikipedia.org/wiki/OSI_model&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;OSI (Open Systems Interconnection) Modeli&lt;/a&gt;, çeşitli ağ ve iletişim protokollerinin nasıl çalıştığını ve nasıl birbiriyle etkileşime girdiğini anlamak için kullanılan temel bir kavramsal modeldir. OSI Modeli, Uluslararası Standardizasyon Örgütü (ISO) tarafından geliştirilmiş ve 1984 yılında yayınlanmıştır.&lt;/p&gt;
&lt;p&gt;OSI Modeli yedi katmandan oluşur ve her katman belirli bir ağ fonksiyonunu temsil eder. Bu katmanlar donanım ve yazılım bileşenlerinin birbirleriyle nasıl etkileşime girdiğini açıklar ve ağ iletişimini daha iyi yönetmek için bir referans noktası sağlar.&lt;/p&gt;
&lt;p&gt;Modern İnternet OSI’ye değil, daha basit olan &lt;a href=&quot;https://tr.wikipedia.org/wiki/TCP/IP_Protokol_Yap%C4%B1s%C4%B1&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;TCP/IP&lt;/a&gt; modeline dayanmaktadır. Ancak OSI 7 katmanlı modeli, ağların nasıl çalıştığını görselleştirmeye ve iletmeye yardımcı olduğu ve ağ sorunlarını izole etmeye ve gidermeye yardımcı olduğundan hala yaygın olarak kullanılmaktadır. Günümüzde OSI modeli öncelikle bilgisayar uzmanlarına bilgisayar ağlarının temellerini öğretmek için bir referans modeli olarak kullanılmaktadır.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/675976af104b7201d845290160488a01/8c557/image.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 78.37837837837837%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAYAAAAWGF8bAAAACXBIWXMAAAsTAAALEwEAmpwYAAAEzklEQVR42lWSa0yTdxTGD9RNM0CkRUXclSgTZMmyaFSmc04U3dQIUzMBjdcs0QUshVJtAZFSZGABJ/Sy9u2VtvT2FhFvoGCvWJCKNy6KFpzOOC9U0Ok0O3th8YMffjnPk/yf58P/HCgTVgUIpTJgNBoDKrU6IBaLAxKJ5B3E4rdTHBCJpaO1Y4ikw+OIxwlQPKfePQN+uZBOqDWM5pZzDJPZzKBCDCo8NuljUPotDIlUykCEIHwNk+7ZObMeOrNjbp7+OWa4bftMAISzcmYooIqSGAz4hAd4bR/86/yJ8gBOxR4QVktBJpeCQk2ATCkHkcYKE/fi5ujcN7lxvFFeTN4oL44bODg3/8WBaTmY+V35y0/g8yIqTbXjk8VTsG/DVOxLioQFCGuPBqjiDDCRigmExRqislqijiklEZ9xcehLPuLcIsSEQ//zEQdxSuYb3Cm6z4LZ+bgmOg9L5wvw0NdlWDK/BPlTc7F4tfBFfL9HECE1n5hOlTG0DY0TTzr6YMG+NjJpv/3Bkpy2gRUHHHeWsVuHlhX02pIOP605pLu1BGbv81XTd196Hs/y3V1ceOV+XHbX3YhdXSNJRZfWIIYFl2tt4XJzPUNtI6OECmV4zHqmb+E2Hs7dxH4Vvyn35bTkXzCFLcgJSTLA+F+tWr2tcFHij30/rN3p3bGbfWnp8oyOhYtSb2zblbMScTSM0KsiZEbjBHNTI22k5zKkbGI1pm3lPN66gzv4fSrTn7wu62FeelaZGmASVRgE2oT4CsXMGU81XyTcNiz9dlAdO+s2ER31qD555SoC8T25WBKpNBsiFWbLVEmjLqzx4087m+IT8MSs2JdNc+KQnBOLitAQ1CUm6iUfhABkV+Zy9/6a1c+u5nSUykq7mMKczj1lmb1FUv4yl3sgTGLQfai11c8wNJrpipaG93lpa07xd28ezt+a8pcgPbXDumELp37d+vKT2cyNZGoKwDP9LuaIJqN9RL+zeYRknhvVbmke0Wa4/zDnLc048yiUtKgmaxssk7U2U6TUop14sCa3vlxWOFhUy/YLiUIbItLnUXdCJn4FttgZQdC7n5/fwyq43cMp6uoXVHTfYOX7eliFt64VV3yThsOTNDpdlJY0hVObplearCFYt6MTTZmI5qwXlP4bZRvxiYEjwNN58Po4mwZ2dbWgjah47NDUDHiMcv8FZdUA5R+26qWreOeuhOgseobKYqHX2Wzh66vLgofEPNMdovTeHXlJv1/G7xsScR/0G46x7ooOQ6+xagJ4rgpXOK8cPtDZ9zuze0DPuthTk015jsMnja3RtE7R2MzTCaM5VEOSEb9Z9SGnNxRcbt7Cx7Ppxf+cTSt+1Zicg2f2Vua3Vh6hlkydjb2nBFqv50OHXwbX/iTBM1BNeS60dInA/3o7qKzHQwmTNYowkYyVR6qD7bVCg1NWM+giaq875TXXHeKjfhcpFbf7qpY720TRYLeXBJ0/z6N5vRLa1asWmttdSWs9z6U1t4qDVnMRlJYGEOkbQG07EValVIS3+2pvervlePGyFL1jdEvR1S5El6sS3Z66POjsVEJHh/wdvF45NF8wUGXm8UItWQeVaiOcamkCl51IdzvUBW6HJs/jrON4HFqOy6lku1xKbnt707z/AHbVwit27CKmAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;OSI Model&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/675976af104b7201d845290160488a01/fcda8/image.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/675976af104b7201d845290160488a01/12f09/image.png 148w,https://blog.hkucuk.com/static/675976af104b7201d845290160488a01/e4a3f/image.png 295w,https://blog.hkucuk.com/static/675976af104b7201d845290160488a01/fcda8/image.png 590w,https://blog.hkucuk.com/static/675976af104b7201d845290160488a01/8c557/image.png 700w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;h3 id=&quot;1-fiziksel-katman-physical-layer&quot;&gt;&lt;a href=&quot;#1-fiziksel-katman-physical-layer&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;1. Fiziksel Katman (Physical Layer)&lt;/h3&gt;
&lt;p&gt;Fiziksel Katman, OSI Modeli’nin en alt katmanıdır ve fiziksel iletişim ortamının özelliklerini tanımlar. Bu katman veri iletiminin fiziksel yönlerini ele alır ve kablolar, konektörler, elektriksel sinyaller, optik sinyaller gibi fiziksel bileşenlerle ilgilenir. Fiziksel Katman’ın temel görevleri şunlardır:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;- Fiziksel Ortamın Seçimi:&lt;/strong&gt; Veri iletimi için kullanılacak ortamın belirlenmesi (örneğin, bakır kablolar, fiber optik kablolar, radyo dalgaları).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;- Sinyal İletimi:&lt;/strong&gt; Dijital verilerin analog sinyallere dönüştürülmesi ve bu sinyallerin fiziksel ortam üzerinden iletilmesi.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;- Bağlantı Uçları:&lt;/strong&gt; Cihazların fiziksel bağlantı noktalarının (portlar) yönetimi ve tanımlanması.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;- Kablo Bağlantıları:&lt;/strong&gt; Kabloların ve konektörlerin fiziksel yapılandırılması ve yönetimi.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/5d851fdc4a86cb3ccd4eac7e4c5a8d2d/93d1b/image-7.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 31.756756756756754%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAIAAABM9SnKAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAo0lEQVR42oVQ2w6DIAz1//9SuRlNpkNgBaHbCV18mcnOC2l7LqXD+w7neSqlxnHUWltrUd7ShtsuM6eUYowhhOM4Wmt/xM/YtlibgLnW6jtKKfCS9iNUn9qvmPdY570QZQACIsLCxhgko8yZXpTnrXQxf8VwxQOGVpPRyvunDJDjnFuWBStIZ13X2VmlJqwjXxsuKgKRdlExyx3iLlekzrlO8AEvL17a08R11gAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Physical Layer&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/5d851fdc4a86cb3ccd4eac7e4c5a8d2d/fcda8/image-7.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/5d851fdc4a86cb3ccd4eac7e4c5a8d2d/12f09/image-7.png 148w,https://blog.hkucuk.com/static/5d851fdc4a86cb3ccd4eac7e4c5a8d2d/e4a3f/image-7.png 295w,https://blog.hkucuk.com/static/5d851fdc4a86cb3ccd4eac7e4c5a8d2d/fcda8/image-7.png 590w,https://blog.hkucuk.com/static/5d851fdc4a86cb3ccd4eac7e4c5a8d2d/efc66/image-7.png 885w,https://blog.hkucuk.com/static/5d851fdc4a86cb3ccd4eac7e4c5a8d2d/c83ae/image-7.png 1180w,https://blog.hkucuk.com/static/5d851fdc4a86cb3ccd4eac7e4c5a8d2d/93d1b/image-7.png 5667w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Örnek protokoller: IEEE 1394, DSL, ISDN&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;2-veri-bağlantı-katmanı-data-link-layer&quot;&gt;&lt;a href=&quot;#2-veri-ba%C4%9Flant%C4%B1-katman%C4%B1-data-link-layer&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;2. Veri Bağlantı Katmanı (Data Link Layer)&lt;/h3&gt;
&lt;p&gt;Veri Bağlantı Katmanı, veri iletiminin güvenilir bir şekilde gerçekleşmesini sağlar ve fiziksel katmanın sunduğu hizmetleri kullanarak çerçeve (frame) adı verilen veri birimlerinin iletimini gerçekleştirir. Bu katmanın temel görevleri şunlardır:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;- Çerçeveleme (Framing)&lt;/strong&gt; Verilerin çerçeveler halinde paketlenmesi.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;- Hata Kontrolü:&lt;/strong&gt; İletim sırasında meydana gelebilecek hataların tespiti ve düzeltilmesi (örneğin, CRC - Düzeltme Kodları).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;- Akış Kontrolü:&lt;/strong&gt; Verilerin alıcı ve verici arasında dengeli bir şekilde iletilmesini sağlama.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;- MAC Adresi Yönetimi:&lt;/strong&gt; Fiziksel adresleme ile veri paketlerinin doğru hedefe yönlendirilmesi.&lt;/p&gt;
&lt;p&gt;Veri Bağlantı Katmanı, ayrıca iki alt katmana ayrılabilir:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;-MAC (Media Access Control) Alt Katmanı:&lt;/strong&gt; Veri iletim ortamına erişimi kontrol eder ve çerçevelerin fiziksel adresleme işlevini yürütür.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;-LLC (Logical Link Control) Alt Katmanı:&lt;/strong&gt; Hata kontrolü ve akış kontrolü işlevlerini yönetir.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/450b69b6a64950afb53a154d2da77eee/93d1b/image-6.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 31.756756756756754%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAIAAABM9SnKAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA20lEQVR42m2QUU4DIRBA93K9mdfwAiaewU+NP/rVRNOk7S7sbtGYLjAwFAY6W+ymMT5IgIEHwzTlSs6/nUHEtm0FI2XXiRDCnwOVptywbBARWGuNcWCmaeJl+Y9mcb51fPl0e3XiQGIoY8xKU72rZDpCet/i4Rhn4+LMMl3kty2u7uT9k+aA9zg5Wov48GwxpBCQg+KHHl/9Rx8XpbkmnJX62uyGfSdi5MfLKdFmJ4dR8Zzz6Pt+GMdODnIeR631rVy8d+gBwKb6w5wdWOdcTdsYA44bzLUAqCU8A1a6WcSSG7CEAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Data Link Layer&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/450b69b6a64950afb53a154d2da77eee/fcda8/image-6.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/450b69b6a64950afb53a154d2da77eee/12f09/image-6.png 148w,https://blog.hkucuk.com/static/450b69b6a64950afb53a154d2da77eee/e4a3f/image-6.png 295w,https://blog.hkucuk.com/static/450b69b6a64950afb53a154d2da77eee/fcda8/image-6.png 590w,https://blog.hkucuk.com/static/450b69b6a64950afb53a154d2da77eee/efc66/image-6.png 885w,https://blog.hkucuk.com/static/450b69b6a64950afb53a154d2da77eee/c83ae/image-6.png 1180w,https://blog.hkucuk.com/static/450b69b6a64950afb53a154d2da77eee/93d1b/image-6.png 5667w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Örnek protokoller: SLIP, PPP&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;3-ağ-katmanı-network-layer&quot;&gt;&lt;a href=&quot;#3-a%C4%9F-katman%C4%B1-network-layer&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;3. Ağ Katmanı (Network Layer)&lt;/h3&gt;
&lt;p&gt;Ağ Katmanı, veri paketlerinin ağlar arasında yönlendirilmesi ve iletilmesi ile ilgilenir. Bu katman kaynak ve hedef cihazlar arasında en uygun yolun seçilmesi ve veri paketlerinin bu yol üzerinden iletilmesini sağlar. Ağ Katmanı’nın temel görevleri şunlardır:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;- Yönlendirme (Routing):&lt;/strong&gt; Veri paketlerinin kaynak ve hedef arasında en uygun yoldan iletilmesi.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;- Mantıksal Adresleme:&lt;/strong&gt; IP adresleri gibi mantıksal adreslerin kullanımı ve yönetimi.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;- Paketleme (Packetizing):&lt;/strong&gt; Verilerin paketler halinde düzenlenmesi.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;- Trafik Kontrolü:&lt;/strong&gt; Ağ trafiğinin yönetimi ve veri iletim yollarının optimize edilmesi.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/e42c91c3b32e2eff91d7e69a888a6770/93d1b/image-5.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 31.756756756756754%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAIAAABM9SnKAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAt0lEQVR42m1QSw6CMBDl/kfxJJ7AuHBBCC0UWQi0pe186gBR0PBWk5n3yZsiH8CfAQCqqirLsq5rrXVKabty/kGRz8DM1rlpmry34zgS0SltFwOSecEciVnIhMQh5W5AiUNcli7Q4PAYv4sT8l3D4EUKMYbB003B5WpDxBgCEz4nrno8SZaoptFta5RS3vvFC/BRqqbtNkLf91oYujHG/IuXklZqLj3lW9vGOzuvRgJxtCuE8xW/AQNyXhcPXliFAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Network Layer&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/e42c91c3b32e2eff91d7e69a888a6770/fcda8/image-5.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/e42c91c3b32e2eff91d7e69a888a6770/12f09/image-5.png 148w,https://blog.hkucuk.com/static/e42c91c3b32e2eff91d7e69a888a6770/e4a3f/image-5.png 295w,https://blog.hkucuk.com/static/e42c91c3b32e2eff91d7e69a888a6770/fcda8/image-5.png 590w,https://blog.hkucuk.com/static/e42c91c3b32e2eff91d7e69a888a6770/efc66/image-5.png 885w,https://blog.hkucuk.com/static/e42c91c3b32e2eff91d7e69a888a6770/c83ae/image-5.png 1180w,https://blog.hkucuk.com/static/e42c91c3b32e2eff91d7e69a888a6770/93d1b/image-5.png 5667w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Örnek protokoller: IP, ARP, RARP, BOOTP, ICMP&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;4-taşıma-katmanı-transport-layer&quot;&gt;&lt;a href=&quot;#4-ta%C5%9F%C4%B1ma-katman%C4%B1-transport-layer&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;4. Taşıma Katmanı (Transport Layer)&lt;/h3&gt;
&lt;p&gt;Taşıma Katmanı, uçtan uca veri iletimini sağlar ve verilerin doğru bir şekilde iletilmesi için güvenilirlik, hata kontrolü ve akış kontrolü gibi işlevleri yerine getirir. Bu katmanın temel görevleri şunlardır:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;- Bağlantı Kontrolü:&lt;/strong&gt; Uç cihazlar arasında bağlantı kurulması, yönetilmesi ve sonlandırılması.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;- Hata Kontrolü:&lt;/strong&gt; Verilerin bütünlüğünün sağlanması ve iletim hatalarının düzeltilmesi.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;- Akış Kontrolü:&lt;/strong&gt; Verilerin dengeli bir şekilde iletilmesi ve tampon taşmalarının önlenmesi.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;- Segmentasyon ve Yeniden Birleştirme:&lt;/strong&gt; Büyük veri bloklarının daha küçük segmentlere bölünmesi ve alıcıda yeniden birleştirilmesi.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/6f32b2f57ec62d2ae365877914c053b7/93d1b/image-4.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 31.756756756756754%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAIAAABM9SnKAAAACXBIWXMAAAsTAAALEwEAmpwYAAAApUlEQVR42o2PawrCQAyEe/97eBPvICiIu9a1bB+03Uf2kWaNFsQfLTi/ksl8MKnKjrRuhZAPpbTWe5lq7wAA0zRZY5xz/8A0e4x5KUQLiyhjgUQLlc/GJvn4njZg9i5NHj2nMIQAEUWHh6M91bFQiimFTCNQwi2473sh70o9EXF1pGrP1xpiXte2625CDsOwAfOTxszOWS65OjGAd5ab/Aa41Bd5AeeOX2LgDun7AAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Transport Layer&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/6f32b2f57ec62d2ae365877914c053b7/fcda8/image-4.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/6f32b2f57ec62d2ae365877914c053b7/12f09/image-4.png 148w,https://blog.hkucuk.com/static/6f32b2f57ec62d2ae365877914c053b7/e4a3f/image-4.png 295w,https://blog.hkucuk.com/static/6f32b2f57ec62d2ae365877914c053b7/fcda8/image-4.png 590w,https://blog.hkucuk.com/static/6f32b2f57ec62d2ae365877914c053b7/efc66/image-4.png 885w,https://blog.hkucuk.com/static/6f32b2f57ec62d2ae365877914c053b7/c83ae/image-4.png 1180w,https://blog.hkucuk.com/static/6f32b2f57ec62d2ae365877914c053b7/93d1b/image-4.png 5667w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Örnek protokoller: TCP, UDP&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;5-oturum-katmanı-session-layer&quot;&gt;&lt;a href=&quot;#5-oturum-katman%C4%B1-session-layer&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;5. Oturum Katmanı (Session Layer)&lt;/h3&gt;
&lt;p&gt;Oturum Katmanı, iki cihaz arasındaki iletişim oturumlarını yönetir. Bu katman oturumların kurulması, yönetilmesi ve sonlandırılması ile ilgilenir. Oturum Katmanı’nın temel görevleri şunlardır:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;- Oturum Kurulumu ve Yönetimi:&lt;/strong&gt; İki cihaz arasında iletişim oturumlarının başlatılması ve yönetilmesi.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;- Senkronizasyon:&lt;/strong&gt; Verilerin doğru sırayla iletilmesi için senkronizasyon noktalarının belirlenmesi.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;- Oturum Kontrolü:&lt;/strong&gt; Oturumların devamlılığının sağlanması ve gerektiğinde yeniden başlatılması.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/b3db097fe52570113f8927211475ac84/93d1b/image-3.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 31.756756756756754%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAIAAABM9SnKAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAlUlEQVR42oWQ0Q3CMAxEOzS7MAArICExBIxAAKdSiygkaRM5dhxC+Q3KfVnWu5N9Xa4pRgbQSimtdd/3zKmKdfmPQvDGGOectVZylqb5R1CS/cldxljm9FWeHJdly7wC7yVtduPhPBcvRbw+4vb4UmuWSOvsgBKQESMRMdPi0cxILO2fZQ33fgGAYRhKW3C/TdOz2ssHGsVe2vy1rIsAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Session Layer&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/b3db097fe52570113f8927211475ac84/fcda8/image-3.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/b3db097fe52570113f8927211475ac84/12f09/image-3.png 148w,https://blog.hkucuk.com/static/b3db097fe52570113f8927211475ac84/e4a3f/image-3.png 295w,https://blog.hkucuk.com/static/b3db097fe52570113f8927211475ac84/fcda8/image-3.png 590w,https://blog.hkucuk.com/static/b3db097fe52570113f8927211475ac84/efc66/image-3.png 885w,https://blog.hkucuk.com/static/b3db097fe52570113f8927211475ac84/c83ae/image-3.png 1180w,https://blog.hkucuk.com/static/b3db097fe52570113f8927211475ac84/93d1b/image-3.png 5667w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Örnek protokoller: NFS, RPC, X WİNDOWS SYSTEM, APPLE TALK SESSİON PROTOCOL&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;6-sunum-katmanı-presentation-layer&quot;&gt;&lt;a href=&quot;#6-sunum-katman%C4%B1-presentation-layer&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;6. Sunum Katmanı (Presentation Layer)&lt;/h3&gt;
&lt;p&gt;Sunum Katmanı, verilerin uygulama katmanında anlaşılabilir hale getirilmesi için gereken işlemleri gerçekleştirir. Bu katman veri biçimlendirme, şifreleme ve sıkıştırma gibi işlemlerden sorumludur. Sunum Katmanı’nın temel görevleri şunlardır:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;- Veri Biçimlendirme:&lt;/strong&gt; Farklı veri formatlarının (örneğin, ASCII, EBCDIC, JPEG) dönüştürülmesi.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;- Şifreleme:&lt;/strong&gt; Verilerin güvenliğini sağlamak için şifreleme işlemleri.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;- Sıkıştırma:&lt;/strong&gt; Veri boyutunu küçültmek için sıkıştırma işlemleri.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/4ab3e440fbe61937c2e4577a4ae71cc2/93d1b/image-2.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 31.756756756756754%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAIAAABM9SnKAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAtklEQVR42m1Qyw6CMBDk/z/KiwevXkz0JJUUKyZt04ctfSwuFFASJj1sZnc6s1sNfwDAB1hwzgkhTdPUNaGUSinLQIbSn1ENewihN8ZYaz5WK6W897tjP3HOIExK4+cZgYww+d7F0oopYXG62ce7Lxk3YuXgpfJkG5xDK6AinUmYmdEcjld/uLgdZyFE27bOuSVIZozhwtbalZG8Y+yZphQbMS6mtY4xLscDlOHmaLsy2ozMerQvjfpea0lJCNgAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Presentation Layer&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/4ab3e440fbe61937c2e4577a4ae71cc2/fcda8/image-2.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/4ab3e440fbe61937c2e4577a4ae71cc2/12f09/image-2.png 148w,https://blog.hkucuk.com/static/4ab3e440fbe61937c2e4577a4ae71cc2/e4a3f/image-2.png 295w,https://blog.hkucuk.com/static/4ab3e440fbe61937c2e4577a4ae71cc2/fcda8/image-2.png 590w,https://blog.hkucuk.com/static/4ab3e440fbe61937c2e4577a4ae71cc2/efc66/image-2.png 885w,https://blog.hkucuk.com/static/4ab3e440fbe61937c2e4577a4ae71cc2/c83ae/image-2.png 1180w,https://blog.hkucuk.com/static/4ab3e440fbe61937c2e4577a4ae71cc2/93d1b/image-2.png 5667w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Örnek protokoller: GIF, JPEG, TIFF, EBCDIC, ASCII&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;7-uygulama-katmanı-application-layer&quot;&gt;&lt;a href=&quot;#7-uygulama-katman%C4%B1-application-layer&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;7. Uygulama Katmanı (Application Layer)&lt;/h3&gt;
&lt;p&gt;Uygulama Katmanı, kullanıcıların ve uygulamaların ağ hizmetlerine doğrudan erişim sağladığı katmandır. Bu katman çeşitli ağ hizmetleri ve protokoller aracılığıyla uygulamalar arasında veri alışverişini gerçekleştirir. Uygulama Katmanı’nın temel görevleri şunlardır:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;- Ağ Hizmetleri:&lt;/strong&gt; E-posta, dosya transferi, uzaktan erişim gibi ağ hizmetlerinin sağlanması.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;- Uygulama Protokolleri:&lt;/strong&gt; HTTP, FTP, SMTP gibi protokoller aracılığıyla veri iletimi.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;- Kullanıcı Arayüzleri:&lt;/strong&gt; Kullanıcıların ağ hizmetlerine erişim sağladığı arayüzlerin yönetimi.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/b91a8ec349e4811700f496027fac8c2f/93d1b/image-1.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 29.054054054054056%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAIAAABM9SnKAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAyElEQVR42n2PywrCQAxF53PduNHPEQTdiQu/QUXFnSuxVloQGUo7Q6vT1kznZWi1+AAPWSSXhHtDnHP2sxAAYIylaZplmZTSvbDuA2Kts2+arYc8z8MwjKKIUlqWZat/QX4lY0yzio3WWimFDZ6XlV0c8vWxEHfTpCC7ELrDuD9OeqOkM0iW+0KDSLMr2gZB4Hme7/voj/kB5JkXJwagninIkVbj+W22FdONmKzEhStUtTH4alUja9Afdc45jfm/2H9QqsI/2vEBtZJYAkgTF4AAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Application Layer&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/b91a8ec349e4811700f496027fac8c2f/fcda8/image-1.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/b91a8ec349e4811700f496027fac8c2f/12f09/image-1.png 148w,https://blog.hkucuk.com/static/b91a8ec349e4811700f496027fac8c2f/e4a3f/image-1.png 295w,https://blog.hkucuk.com/static/b91a8ec349e4811700f496027fac8c2f/fcda8/image-1.png 590w,https://blog.hkucuk.com/static/b91a8ec349e4811700f496027fac8c2f/efc66/image-1.png 885w,https://blog.hkucuk.com/static/b91a8ec349e4811700f496027fac8c2f/c83ae/image-1.png 1180w,https://blog.hkucuk.com/static/b91a8ec349e4811700f496027fac8c2f/93d1b/image-1.png 5667w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Örnek protokoller: SSH, Telnet, FTP, DNS, HTTP&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&quot;osi-modelinin-önemi&quot;&gt;&lt;a href=&quot;#osi-modelinin-%C3%B6nemi&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;OSI Modelinin Önemi&lt;/h2&gt;
&lt;p&gt;OSI (Open Systems Interconnection) Modeli, bilgi teknolojileri alanında birçok önemli rol oynamaktadır. İşte bu modelin bazı temel avantajları ve detayları:&lt;/p&gt;
&lt;h4 id=&quot;standartlaşma&quot;&gt;&lt;a href=&quot;#standartla%C5%9Fma&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Standartlaşma&lt;/h4&gt;
&lt;p&gt;OSI Modeli, farklı üreticiler tarafından geliştirilen sistemlerin ve protokollerin birlikte çalışabilirliğini sağlar. Bu, ağ cihazlarının ve yazılımlarının evrensel olarak uyumlu olmasına olanak tanır. Örneğin, bir üretici tarafından geliştirilen bir yönlendirici, başka bir üretici tarafından geliştirilen bir anahtar ile sorunsuz bir şekilde iletişim kurabilir. Bu standartlaşma, pazarın genişlemesini ve daha yenilikçi çözümler geliştirilmesini teşvik eder.&lt;/p&gt;
&lt;h4 id=&quot;eğitim&quot;&gt;&lt;a href=&quot;#e%C4%9Fitim&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Eğitim&lt;/h4&gt;
&lt;p&gt;OSI Modeli, ağ iletişimi konularının anlaşılmasını ve öğretilmesini kolaylaştırır. Modelin yedi katmanlı yapısı, karmaşık ağ süreçlerinin daha basit ve anlaşılır parçalara ayrılmasını sağlar. Bu, öğrencilere ve yeni başlayanlara ağ teknolojilerini anlamada büyük kolaylık sağlar. Örneğin, fiziksel katmandan uygulama katmanına kadar olan her bir katman, belirli işlevlere ve görevlere odaklanır, böylece eğitim materyallerinin ve ders planlarının yapılandırılmasını basitleştirir.&lt;/p&gt;
&lt;h4 id=&quot;sorun-giderme&quot;&gt;&lt;a href=&quot;#sorun-giderme&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Sorun Giderme&lt;/h4&gt;
&lt;p&gt;Ağ sorunlarının belirlenmesi ve çözülmesi sürecinde yapılandırılmış bir yaklaşım sunar. OSI Modeli, ağ sorunlarını belirli katmanlar üzerinden izole ederek çözme olanağı tanır. Bu, ağ yöneticilerinin ve teknisyenlerinin sorunun kaynağını hızlı ve etkili bir şekilde tespit etmelerine yardımcı olur. Örneğin, bir bağlantı sorunu yaşandığında, sorun fiziksel katmandan mı yoksa daha üst katmanlardan mı kaynaklandığını belirlemek için sistematik bir yaklaşım benimsenir.&lt;/p&gt;
&lt;h4 id=&quot;geliştirme&quot;&gt;&lt;a href=&quot;#geli%C5%9Ftirme&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Geliştirme&lt;/h4&gt;
&lt;p&gt;Yeni ağ protokollerinin ve teknolojilerinin geliştirilmesi için bir referans çerçevesi sağlar. OSI Modeli, yeni teknolojilerin ve protokollerin mevcut sistemlerle uyumlu olmasını sağlayacak bir yapı sunar. Bu, geliştiricilerin ve mühendislerin, yenilikçi çözümler üretirken belirli standartlara uyum sağlamalarını kolaylaştırır. Örneğin, yeni bir iletişim protokolü geliştirildiğinde, bu protokolün OSI Modeli’nin belirli katmanlarına nasıl uyum sağlayacağı ve diğer protokollerle nasıl etkileşime gireceği belirlenir.&lt;/p&gt;
&lt;h4 id=&quot;katmanlar-arası-bağımsızlık&quot;&gt;&lt;a href=&quot;#katmanlar-aras%C4%B1-ba%C4%9F%C4%B1ms%C4%B1zl%C4%B1k&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Katmanlar Arası Bağımsızlık&lt;/h4&gt;
&lt;p&gt;OSI Modeli, her bir katmanın belirli bir işlevi yerine getirmesini sağlar ve bu katmanların birbirinden bağımsız çalışmasına olanak tanır. Bu bağımsızlık, bir katmanda yapılan değişikliklerin diğer katmanları etkilememesini sağlar. Örneğin, veri bağlantı katmanında yapılan bir iyileştirme, uygulama katmanındaki işlemleri etkilemez, bu da esneklik ve sürdürülebilirlik sağlar.&lt;/p&gt;
&lt;h4 id=&quot;evrensel-kabul&quot;&gt;&lt;a href=&quot;#evrensel-kabul&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Evrensel Kabul&lt;/h4&gt;
&lt;p&gt;OSI Modeli, dünya çapında kabul görmüş bir standart olarak, küresel ağ iletişiminin temeli olarak hizmet eder. Bu evrensel kabul, farklı ülkeler ve organizasyonlar arasında uyumlu ve sorunsuz iletişim kurulmasını sağlar. Örneğin, uluslararası bir şirket, farklı ülkelerdeki şubeleri arasında güvenilir ve uyumlu bir ağ altyapısı kurabilir.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;OSI Modeli, ağ iletişimi ve bilgi teknolojileri dünyasında hayati bir rol oynamaktadır. Yedi katmandan oluşan bu model, veri iletiminin her aşamasını detaylı bir şekilde açıklar ve ağ bileşenlerinin birlikte nasıl çalıştığını anlamamıza yardımcı olur. OSI Modeli sayesinde ağ sorunları daha hızlı ve etkili bir şekilde çözülebilir, yeni teknolojiler geliştirilebilir ve ağ iletişimi daha güvenilir hale getirilebilir. Bu nedenle OSI Modeli, ağ uzmanları ve bilgi teknolojileri profesyonelleri için vazgeçilmez bir araçtır.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/OSI_model&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/OSI_model&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://aws.amazon.com/tr/what-is/osi-model/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://aws.amazon.com/tr/what-is/osi-model/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.cloudflare.com/learning/ddos/glossary/open-systems-interconnection-model-osi/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.cloudflare.com/learning/ddos/glossary/open-systems-interconnection-model-osi/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://medium.com/@hakankygazi/osi-tcp-ip-modelleri-ead276bb455&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://medium.com/@hakankygazi/osi-tcp-ip-modelleri-ead276bb455&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2024/osi-modeli/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[MoSCoW Önceliklendirmesi Nedir?]]></title><description><![CDATA[MoSCoW, yazılım projelerinde ve diğer proje yönetimi süreçlerinde öncelikleri belirlemek için kullanılan bir metodolojidir. Bu yöntem projenin gereksinimlerini ve özelliklerini sınıflandırarak hangi öğelerin öncelikli olduğunu netleştirmeye yardımcı olur.]]></description><link>https://blog.hkucuk.com/2024/moscow/</link><guid isPermaLink="false">https://blog.hkucuk.com/2024/moscow/</guid><pubDate>Wed, 05 Jun 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/MoSCoW_method&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;MoSCoW&lt;/a&gt;, yazılım projelerinde ve diğer proje yönetimi süreçlerinde öncelikleri belirlemek için kullanılan bir metodolojidir. Bu yöntem projenin gereksinimlerini ve özelliklerini sınıflandırarak hangi öğelerin öncelikli olduğunu netleştirmeye yardımcı olur. MoSCoW yöntemi dört ana kategoriden oluşur: Must have (Olmazsa Olmaz), Should have (Olmalı), Could have (Olabilir) ve Won’t have (Olmayacak). Bu kategoriler projenin başarıya ulaşması için gerekli olan gereksinimlerin önem derecesine göre sıralanmasına olanak tanır.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/8988421b8510220812a81fd47a5faf58/2bef9/image.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 66.89189189189189%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAIAAAAmMtkJAAAACXBIWXMAAAsTAAALEwEAmpwYAAACvUlEQVR42lWR309ScRjGuetPaLO6KC2l5mVduOVwrqWb5soBozSdsulMAU1zWhIoc6XJkF+1qfgLAbVkA0yboGuh4slz4JyjgQo6GwIuTJ0CK36czjlOXduzZ+/F89nzfr8vhcpB087ERVOq0Vs89InEWdjpLFOslcpdD9+uspWu9Fo0+RmCZ1I5KJWLhxHcKZfYEK4k0q+wodQq6L4QLmh3sMTIYzFa2IHQOxHmO+SeEL5aCV4sA5PY4AmCi1IqWyPlKpevF3StPhCjQp2nZWRDoPPwNW7+iKd9fEuo3ez4tMXt9VQo3WzFeon0BFmjYBiWSCRw3z06zh+1ZKjN/RD68stXgcUqMFtZo1N5Q4YCtTF/yEDXmnIGJyZW1/FwjEQouMfixAT7g8XG+bJpgKYyXJdoqbKxNKkuWaJL7h6/JhlL6R6/If14oXVAsrCCh//GiMbz5qPIkW5GqTJ0LLisM9DkLDxtcUyZIYNhUW2yaU6knx907/w4Q87hQHBj0NCk0jepjTz5SJFCW6TUPpUMM1/JM/iKuy3yDMEHWn1X+izQh4fj8dgpjJHN4d/2RbHDKvoOa2zQAOBQL9mHAagftA+BDkJ2eBgA+3wB5L9mjISxiHffytud42AOXnSeFf/2KLZQlDBnYsZUzHQTM1GxyXRMfznh7iEJsjlBNuMeDXvDQFsEeBNabgot1YSBmpCtOrzMDYG8EMQL425vCNvKozufCSRBfDLZTO6QCP5yNjbbK6uP9fqg4v1et2yvV7UvFB1y6w6eNxzW1R/WNRxUcSKWOYx89Ona5PTH5Qy8aPQ3twRKSrw5Ob7c3J28PF92to9G82Vl+TMz/TSa9/adfbWGuHOUuC+FJd0mJPvJ7HIz22CmaIXOBxkCO0PgYLyGGEKY3oowCMGFbSvFIqBWtljZt13Vu1nRs/UP61IcUbkLGpQAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;MoSCoW Method&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/8988421b8510220812a81fd47a5faf58/fcda8/image.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/8988421b8510220812a81fd47a5faf58/12f09/image.png 148w,https://blog.hkucuk.com/static/8988421b8510220812a81fd47a5faf58/e4a3f/image.png 295w,https://blog.hkucuk.com/static/8988421b8510220812a81fd47a5faf58/fcda8/image.png 590w,https://blog.hkucuk.com/static/8988421b8510220812a81fd47a5faf58/efc66/image.png 885w,https://blog.hkucuk.com/static/8988421b8510220812a81fd47a5faf58/2bef9/image.png 1024w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;h2 id=&quot;moscow-yönteminin-kategorileri&quot;&gt;&lt;a href=&quot;#moscow-y%C3%B6nteminin-kategorileri&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;MoSCoW Yönteminin Kategorileri&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;1. Must have (Olmazsa Olmaz):&lt;/strong&gt; Bu kategoride yer alan gereksinimler, projenin tamamlanabilmesi için mutlak surette karşılanması gereken öğelerdir. Bu gereksinimler karşılanmadığı takdirde, projenin teslim edilemeyeceği veya beklenen işlevselliği yerine getiremeyeceği kabul edilir.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Should have (Olmalı):&lt;/strong&gt; Bu gereksinimler önemli olup, projenin başarısını artıran ve kullanılabilirliğini yükselten özelliklerdir. Must have gereksinimlerinin ardından gelmekle birlikte, zaman veya kaynak sıkıntısı yaşanmadıkça projeye dahil edilmelidirler.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Could have (Olabilir):&lt;/strong&gt; Bu kategoride yer alan gereksinimler, projenin genel performansını veya kullanıcı deneyimini iyileştiren ancak zorunlu olmayan özelliklerdir. Eğer zaman ve kaynak izin verirse, projeye dahil edilebilirler.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. Won’t have (Olmayacak):&lt;/strong&gt; Bu gereksinimler mevcut proje döngüsünde ele alınmayacak olan ancak gelecekteki versiyonlarda veya projelerde değerlendirilebilecek özelliklerdir. Bu kategori, proje kapsamını daraltmak ve öncelikleri netleştirmek için kullanılır.&lt;/p&gt;
&lt;h2 id=&quot;yazılım-mühendisliğinde-moscow-örnekleri&quot;&gt;&lt;a href=&quot;#yaz%C4%B1l%C4%B1m-m%C3%BChendisli%C4%9Finde-moscow-%C3%B6rnekleri&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Yazılım Mühendisliğinde MoSCoW Örnekleri&lt;/h2&gt;
&lt;p&gt;Bir yazılım projesinde MoSCoW metodolojisinin nasıl uygulanabileceğini açıklamak için bir örnek üzerinden ilerleyelim. Diyelim ki bir e-ticaret platformu geliştiriyorsunuz.&lt;/p&gt;
&lt;h3 id=&quot;must-have&quot;&gt;&lt;a href=&quot;#must-have&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Must Have&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;1. Kullanıcı Kaydı ve Giriş Sistemi:&lt;/strong&gt; Kullanıcıların platforma kayıt olabilmesi ve giriş yapabilmesi temel bir gereksinimdir. Bu özellik olmadan, kullanıcılar alışveriş yapamaz ve sistem kullanılabilir olmaz.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Ürün Kataloğu ve Arama Fonksiyonu:&lt;/strong&gt; Kullanıcılar, ürünleri görüntüleyebilmek ve arama yaparak istedikleri ürünlere ulaşabilmek zorundadır. Bu özellik, alışveriş deneyiminin temelini oluşturur.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Sepet ve Ödeme Sistemi:&lt;/strong&gt; Kullanıcıların seçtikleri ürünleri sepete ekleyip güvenli bir şekilde ödeme yapabilmesi, e-ticaret platformunun olmazsa olmazıdır.&lt;/p&gt;
&lt;h3 id=&quot;should-have&quot;&gt;&lt;a href=&quot;#should-have&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Should Have&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;1. Ürün İncelemeleri ve Puanlama Sistemi:&lt;/strong&gt; Kullanıcıların ürünler hakkında inceleme yazabilmesi ve puanlama yapabilmesi, satın alma kararlarını etkileyen önemli bir özellik olup, kullanıcı memnuniyetini artırır.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Sipariş Takip Sistemi:&lt;/strong&gt; Kullanıcılar, verdikleri siparişlerin durumunu takip edebilmelidir. Bu özellik, müşteri deneyimini iyileştiren önemli bir unsurdur.&lt;/p&gt;
&lt;h3 id=&quot;could-have&quot;&gt;&lt;a href=&quot;#could-have&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Could Have&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;1. Kişisel Öneri Sistemi:&lt;/strong&gt; Kullanıcıların alışveriş geçmişine ve ilgi alanlarına göre ürün önerileri almak, deneyimi zenginleştiren bir özellik olup, satışları artırabilir.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Sosyal Medya Entegrasyonu:&lt;/strong&gt; Kullanıcıların, ürünleri sosyal medya hesaplarında paylaşabilmesi veya sosyal medya ile giriş yapabilmesi, kullanıcı etkileşimini artırabilir.&lt;/p&gt;
&lt;h3 id=&quot;wont-have&quot;&gt;&lt;a href=&quot;#wont-have&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Won’t Have&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;1. Sanal Deneme Kabini:&lt;/strong&gt; Kullanıcıların kıyafetleri sanal olarak üzerlerinde denemelerini sağlayan bir özellik, ileri seviyede teknoloji ve kaynak gerektirebilir. Bu özellik, mevcut proje döngüsünde planlanmayabilir ancak gelecekte değerlendirilebilir.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Blockchain Tabanlı Ödeme Sistemleri:&lt;/strong&gt; Alternatif ödeme yöntemleri olarak blockchain teknolojisinin entegrasyonu, mevcut projenin kapsamı dışında kalabilir ve gelecekteki versiyonlar için düşünülebilir.&lt;/p&gt;
&lt;h2 id=&quot;moscow-yönteminin-avantajları&quot;&gt;&lt;a href=&quot;#moscow-y%C3%B6nteminin-avantajlar%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;MoSCoW Yönteminin Avantajları&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;1. Önceliklerin Netleşmesi:&lt;/strong&gt; Gereksinimlerin önem sırasına göre kategorize edilmesi, ekiplerin en kritik öğelere odaklanmasını sağlar.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Esneklik:&lt;/strong&gt; Projenin ilerleme aşamasında zaman ve kaynak yönetimine esneklik kazandırır, böylece gereksinimlerin karşılanma sırası değişebilir.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Kaynak Yönetimi:&lt;/strong&gt; Zaman, para ve insan kaynakları gibi sınırlı kaynakların etkin bir şekilde kullanılmasına yardımcı olur.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. Kapsam Yönetimi:&lt;/strong&gt; Proje kapsamının net bir şekilde tanımlanmasına ve gereksiz özelliklerin eklenmemesine olanak tanır.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;sonuç&quot;&gt;&lt;a href=&quot;#sonu%C3%A7&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Sonuç&lt;/h2&gt;
&lt;p&gt;MoSCoW yöntemi, yazılım projelerinde gereksinimlerin ve özelliklerin önceliklendirilmesi sürecinde etkili bir araçtır. Projenin başarısı için kritik olan öğeleri belirlemek, ekiplerin doğru yönlendirilmesi ve kaynakların verimli kullanılması açısından büyük önem taşır. Bu metodoloji projelerin zamanında ve bütçe dahilinde tamamlanmasına yardımcı olurken, aynı zamanda kullanıcı memnuniyetini de artırır. E-ticaret platformu örneğinde olduğu gibi, MoSCoW yöntemi her tür yazılım projesine uygulanabilir ve projelerin daha başarılı olmasını sağlayabilir.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/MoSCoW_method&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/MoSCoW_method&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.productplan.com/glossary/moscow-prioritization/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.productplan.com/glossary/moscow-prioritization/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://community.atlassian.com/t5/App-Central/Understanding-the-MoSCoW-prioritization-How-to-implement-it-into/ba-p/2463999&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://community.atlassian.com/t5/App-Central/Understanding-the-MoSCoW-prioritization-How-to-implement-it-into/ba-p/2463999&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2024/moscow/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Event Sourcing]]></title><description><![CDATA[Event sourcing, veri yönetimi ve sistem tasarımında kullanılan modern ve etkili bir desendir. Geleneksel veri yönetimi yaklaşımlarından önemli ölçüde farklılık gösterir. Geleneksel yöntemlerde veriler genellikle son durumlarıyla saklanır; yani bir nesnenin güncel durumu doğrudan veri tabanında tutulur ve herhangi bir değişiklik yapıldığında bu son durum güncellenir.]]></description><link>https://blog.hkucuk.com/2024/event-sourcing/</link><guid isPermaLink="false">https://blog.hkucuk.com/2024/event-sourcing/</guid><pubDate>Sun, 02 Jun 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://microservices.io/patterns/data/event-sourcing.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Event sourcing&lt;/a&gt;, veri yönetimi ve sistem tasarımında kullanılan modern ve etkili bir desendir. Geleneksel veri yönetimi yaklaşımlarından önemli ölçüde farklılık gösterir. Geleneksel yöntemlerde veriler genellikle son durumlarıyla saklanır; yani bir nesnenin güncel durumu doğrudan veri tabanında tutulur ve herhangi bir değişiklik yapıldığında bu son durum güncellenir. Ancak event sourcing yaklaşımında veriler bir dizi olay (event) olarak saklanır. Her olay sistemde gerçekleşen bir değişikliği veya eylemi temsil eder. Bu olaylar kronolojik bir sırayla kaydedilir ve saklanır.&lt;/p&gt;
&lt;p&gt;Event sourcing’in temel ilkesi, bir nesnenin mevcut durumunu doğrudan saklamak yerine, bu durumu belirleyen tüm olayların bir listesini saklamaktır. Bir nesnenin durumu, bu olayların sıralı bir şekilde yeniden oynatılması (replay) ile yeniden oluşturulur. Bu sayede herhangi bir anda bir nesnenin geçmişteki herhangi bir durumuna erişmek veya belirli bir zaman dilimindeki değişiklikleri izlemek mümkün hale gelir.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/869c943123e4bb2b9de1f9829ebf32e3/e3189/image.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 56.08108108108109%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABq0lEQVR42oWRz0rjQBzH8wI+gg/gY3jZF/ARxIOHvQgL4mUvvoGX3cMKiwguq6CLN0GQlVL/IbRamzaNbdLETJvJNJ2ZZJLMZJwku1L14OeUmd/vM98vRIv7feY4PC+QUl4a7KQRGV4qSxCdNEHLm47SJGEs3amRr0fBjcHUSORSg7e3qN1+0HW908HQX9oGcxv2j1NoP+rO0LV9Z7/+pzlo3TfvLMv+9G2krVmH10TJXOTapNHAuk7jGBMieba8F8xvevv1KQl9Fif+NDjvXXSBKXMpuFj9NVrYHNQ67J/MEEoRUoeqdu8JH9eMCeVVbZELliVc8GoKwLh1344jWu1r8jU8SzGC5aggy7KkhFIaRRFjSqSEEPWtLjW1JstXixwhAAADy37yvDRNlem47l3rwXw0u92u67phGEIIxyUY47fJyvEhVGL+H5kXndW78h2zcpHPKAydq2Tq8HJ575Ks7Pq/L0jZK5/llVydoddrnn0f9+uGaZEAfDlC2ufB+kFQ/dgPkmMM8PAcQ5PGiRTJzxpa3Bru/P1YrvLlSytFRMnQtlAAX25meQZ9J2RavXm8dAAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Event Sourcing&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/869c943123e4bb2b9de1f9829ebf32e3/fcda8/image.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/869c943123e4bb2b9de1f9829ebf32e3/12f09/image.png 148w,https://blog.hkucuk.com/static/869c943123e4bb2b9de1f9829ebf32e3/e4a3f/image.png 295w,https://blog.hkucuk.com/static/869c943123e4bb2b9de1f9829ebf32e3/fcda8/image.png 590w,https://blog.hkucuk.com/static/869c943123e4bb2b9de1f9829ebf32e3/efc66/image.png 885w,https://blog.hkucuk.com/static/869c943123e4bb2b9de1f9829ebf32e3/e3189/image.png 1035w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;p&gt;Bu yaklaşımın birçok avantajı vardır. İlk olarak, veri tutarlılığı sağlanır çünkü her değişiklik bir olay olarak kaydedilir ve bu olaylar sıralı bir şekilde işlenir. İkinci olarak, sistem izlemesi ve hata toleransı artar; çünkü sistemde meydana gelen tüm değişiklikler olaylar üzerinden izlenebilir ve gerektiğinde geri alınabilir. Üçüncü olarak, denetlenebilirlik ve şeffaflık sağlanır; çünkü tüm olaylar kaydedildiğinden dolayı, sistemin nasıl ve neden bu duruma geldiği detaylı bir şekilde incelenebilir.&lt;/p&gt;
&lt;p&gt;Event sourcing ayrıca, özellikle dağıtık sistemlerde, veri senkronizasyonu ve tutarlılığı konularında da büyük avantajlar sunar. Her olay merkezi bir olay günlüğüne kaydedilir ve bu olaylar farklı bileşenler arasında paylaşılabilir. Bu sayede sistemin farklı parçaları arasında tutarlı bir veri durumu sağlanabilir. Ayrıca event sourcing, CQRS (Command Query Responsibility Segregation) gibi diğer modern mimari desenlerle birlikte kullanıldığında, sistemin performansını ve ölçeklenebilirliğini artırabilir.&lt;/p&gt;
&lt;p&gt;Event sourcing, modern yazılım mimarilerinde önemli bir rol oynayan, güçlü ve esnek bir veri yönetim yaklaşımıdır. Veri tutarlılığı, sistem izlemesi, hata toleransı ve denetlenebilirlik gibi avantajları sayesinde, özellikle karmaşık ve büyük ölçekli sistemlerde tercih edilen bir yöntemdir.&lt;/p&gt;
&lt;h2 id=&quot;temel-kavramlar&quot;&gt;&lt;a href=&quot;#temel-kavramlar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Temel Kavramlar&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Event (Olay):&lt;/strong&gt; Sistem içerisinde gerçekleşen her türlü değişiklik bir olay olarak kaydedilir. Örneğin, bir kullanıcının kaydedilmesi, bir ürünün eklenmesi veya bir siparişin tamamlanması bir olaydır.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Event Store:&lt;/strong&gt; Olayların kalıcı olarak saklandığı yerdir. Geleneksel veritabanlarından farklı olarak, burada sadece olaylar saklanır.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Aggregate:&lt;/strong&gt; Bir dizi olayı temsil eden ve bu olayları işleyerek bir durumu (state) oluşturan yapı.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Command (Komut):&lt;/strong&gt; Sistem tarafından gerçekleştirilecek işlemleri tanımlar. Örneğin, “Sipariş Ver” bir komuttur.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Projection (Projeksiyon):&lt;/strong&gt; Olaylardan durumu oluşturur ve bu durumu farklı veri modellerine dönüştürür.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;event-sourcingin-avantajları&quot;&gt;&lt;a href=&quot;#event-sourcingin-avantajlar%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Event Sourcing’in Avantajları&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Denetlenebilirlik:&lt;/strong&gt; Geçmişte ne olduğunu anlamak için tüm olaylar kaydedilir. Böylece, sistemin nasıl bu duruma geldiği izlenebilir.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Esneklik:&lt;/strong&gt; Yeni veri modelleri oluşturmak veya mevcutları değiştirmek daha kolaydır. Projeksiyonlar sayesinde veriyi farklı şekillerde sunabilirsiniz.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gerçek Zamanlı İşleme:&lt;/strong&gt; Olaylar anında işlenebilir ve sistemin diğer parçalarına iletilebilir.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;event-sourcing-ile-geleneksel-veri-yönetimi-arasındaki-fark&quot;&gt;&lt;a href=&quot;#event-sourcing-ile-geleneksel-veri-y%C3%B6netimi-aras%C4%B1ndaki-fark&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Event Sourcing ile Geleneksel Veri Yönetimi Arasındaki Fark&lt;/h2&gt;
&lt;p&gt;Geleneksel veri yönetimi, genellikle bir veritabanı modeline doğrudan erişim sağlayarak çalışır ve bu model üzerinde yapılan güncellemeleri anında uygular. Bu yaklaşımda, veritabanı tabloları belirli bir anlık durumun yansımasıdır ve her veri güncellemesi, önceki durumun üzerine yazılarak gerçekleştirilir. Bu yöntem veri tutarlılığını sağlamak ve veri işlemlerini basit ve hızlı bir şekilde gerçekleştirmek için yaygın olarak kullanılır. Ancak geçmişe dönük değişikliklerin izlenmesi veya belirli bir zaman dilimindeki verinin yeniden oluşturulması gerektiğinde bazı zorluklar ortaya çıkabilir.&lt;/p&gt;
&lt;p&gt;Event sourcing ise tamamen farklı bir yaklaşım sunar. Bu modelde veri yönetimi, gerçekleştirilen her değişikliği bağımsız bir olay (event) olarak kaydeder. Her olay sistemde gerçekleşen bir işlemi veya değişikliği temsil eder ve olaylar kronolojik sırayla kaydedilir. Bu olaylar daha sonra verinin o andaki durumunu yeniden oluşturmak için kullanılabilir. Böylece sistemin belirli bir zamandaki durumunu yeniden oluşturmak sadece ilgili olayları yeniden işlemekle mümkündür. Bu yaklaşım verinin değişim sürecini tam olarak izlemeyi sağlar ve geçmişe dönük analizler yapmak, hata ayıklamak veya belirli bir zamana geri dönmek için büyük avantajlar sunar. Ayrıca event sourcing, mikro hizmet mimarileri ve dağıtık sistemler için de uyumlu bir model olup, ölçeklenebilirlik ve esneklik açısından da önemli faydalar sağlar.&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Bu iki yaklaşım arasındaki temel fark, geleneksel veri yönetiminin mevcut durumu korurken, event sourcing’in verinin evrimini ve değişim sürecini korumasıdır. Geleneksel modelde, anlık durumu kaydetmek ön plandayken, event sourcing’de her değişiklik adım adım kaydedilir ve bu sayede verinin tüm geçmişi detaylı bir şekilde izlenebilir.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;golang-ve-redis-ile-event-sourcing-örneği&quot;&gt;&lt;a href=&quot;#golang-ve-redis-ile-event-sourcing-%C3%B6rne%C4%9Fi&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Golang ve Redis ile Event Sourcing Örneği&lt;/h2&gt;
&lt;p&gt;Golang ve Redis kullanarak basit bir event sourcing uygulaması yapalım. Bu örnekte bir sipariş yönetim sistemi oluşturacağız. Kullanıcılar sipariş verecek ve bu siparişler olaylar olarak kaydedilecek.&lt;/p&gt;
&lt;h3 id=&quot;adım-1-proje-kurulumu&quot;&gt;&lt;a href=&quot;#ad%C4%B1m-1-proje-kurulumu&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Adım 1: Proje Kurulumu&lt;/h3&gt;
&lt;p&gt;Öncelikle, gerekli bağımlılıkları yükleyelim:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;shell&quot;&gt;&lt;pre class=&quot;language-shell&quot;&gt;&lt;code class=&quot;language-shell&quot;&gt;go mod init event-sourcing-example
go get github.com/go-redis/redis/v8&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id=&quot;adım-2-redis-bağlantısı&quot;&gt;&lt;a href=&quot;#ad%C4%B1m-2-redis-ba%C4%9Flant%C4%B1s%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Adım 2: Redis Bağlantısı&lt;/h3&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;context&quot;&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;github.com/go-redis/redis/v8&quot;&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;log&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; ctx &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Background&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    rdb &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; redis&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;NewClient&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;redis&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Options&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        Addr&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;localhost:6379&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;token boolean&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; rdb&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Ping&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;ctx&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Result&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;nil&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        log&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Fatalf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Could not connect to Redis: %v&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; err&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    log&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Connected to Redis&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id=&quot;adım-3-event-yapısı&quot;&gt;&lt;a href=&quot;#ad%C4%B1m-3-event-yap%C4%B1s%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Adım 3: Event Yapısı&lt;/h3&gt;
&lt;p&gt;Olayları temsil eden bir yapı tanımlayalım:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;time&quot;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; Event &lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    EventType &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;
    Data      &lt;span class=&quot;token keyword&quot;&gt;interface&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    Timestamp time&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Time
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; OrderCreated &lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    OrderID &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;
    UserID  &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;
    Amount  &lt;span class=&quot;token builtin&quot;&gt;float64&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id=&quot;adım-4-olay-kaydetme-ve-yükleme&quot;&gt;&lt;a href=&quot;#ad%C4%B1m-4-olay-kaydetme-ve-y%C3%BCkleme&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Adım 4: Olay Kaydetme ve Yükleme&lt;/h3&gt;
&lt;p&gt;Olayları Redis’e kaydedecek ve yükleyecek fonksiyonları yazalım:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;encoding/json&quot;&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;fmt&quot;&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;github.com/go-redis/redis/v8&quot;&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;log&quot;&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;time&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;SaveEvent&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;rdb &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;redis&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Client&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; event Event&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;error&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    key &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Sprintf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;events:%s&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; event&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;EventType&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    data&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; json&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Marshal&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;event&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;nil&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; err
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; rdb&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;RPush&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;ctx&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; key&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; data&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Err&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;LoadEvents&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;rdb &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;redis&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Client&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; eventType &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;Event&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;error&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    key &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Sprintf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;events:%s&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; eventType&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    data&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; rdb&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;LRange&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;ctx&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; key&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Result&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;nil&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;nil&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; err
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; events &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;Event
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; d &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;range&lt;/span&gt; data &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; event Event
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; json&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Unmarshal&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;byte&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;d&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;event&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;nil&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;nil&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; err
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        events &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;events&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; event&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; events&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;nil&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id=&quot;adım-5-komut-ve-projeksiyonlar&quot;&gt;&lt;a href=&quot;#ad%C4%B1m-5-komut-ve-projeksiyonlar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Adım 5: Komut ve Projeksiyonlar&lt;/h3&gt;
&lt;p&gt;Sipariş oluşturma komutunu ve projeksiyonu yazalım:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;log&quot;&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;time&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;CreateOrder&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;rdb &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;redis&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Client&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; orderID&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; userID &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; amount &lt;span class=&quot;token builtin&quot;&gt;float64&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;error&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    event &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; Event&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        EventType&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;OrderCreated&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        Data&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; OrderCreated&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            OrderID&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; orderID&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            UserID&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;  userID&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            Amount&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;  amount&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        Timestamp&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; time&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Now&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;SaveEvent&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;rdb&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; event&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;GetOrderSummary&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;rdb &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;redis&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Client&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    events&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;LoadEvents&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;rdb&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;OrderCreated&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;nil&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        log&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Fatalf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Could not load events: %v&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; err&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; event &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;range&lt;/span&gt; events &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        order &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; event&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Data&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;interface&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        log&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Order ID: %s, User ID: %s, Amount: %v&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; order&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;OrderID&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; order&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;UserID&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; order&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Amount&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id=&quot;adım-6-uygulamayı-çalıştırma&quot;&gt;&lt;a href=&quot;#ad%C4%B1m-6-uygulamay%C4%B1-%C3%A7al%C4%B1%C5%9Ft%C4%B1rma&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Adım 6: Uygulamayı Çalıştırma&lt;/h3&gt;
&lt;p&gt;Son olarak, ana fonksiyonda sipariş oluşturup özetini alalım:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    rdb &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; redis&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;NewClient&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;redis&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Options&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        Addr&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;localhost:6379&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;token boolean&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; rdb&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Ping&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;ctx&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Result&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;nil&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        log&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Fatalf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Could not connect to Redis: %v&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; err&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token function&quot;&gt;CreateOrder&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;rdb&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;1&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;user1&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;99.99&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;CreateOrder&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;rdb&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;2&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;user2&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;49.99&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;token function&quot;&gt;GetOrderSummary&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;rdb&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Bu kod, Redis’e bağlanarak iki sipariş oluşturur ve ardından bu siparişlerin özetini ekrana yazdırır.&lt;/p&gt;
&lt;p&gt;Program çalıştırıldığında çıktısı aşağıdaki gibi olacaktır.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;json&quot;&gt;&lt;pre class=&quot;language-json&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;Order ID&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; User ID&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; user1&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; Amount&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;99.99&lt;/span&gt;
Order ID&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; User ID&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; user2&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; Amount&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;49.99&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;p&gt;Event sourcing, veri yönetimi ve sistem tasarımında güçlü bir desendir. Golang ve Redis kullanarak basit bir event sourcing uygulaması oluşturduk. Bu yaklaşımın avantajlarını, olayların nasıl saklandığını ve yüklendiğini gördük. Event sourcing ile ilgili daha ileri konular arasında olay işleme, dağıtık sistemler ve mikro servis mimarileri bulunmaktadır. Bu temel örnek, event sourcing’i anlamanıza ve uygulamanıza yardımcı olacaktır.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://microservices.io/patterns/data/event-sourcing.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://microservices.io/patterns/data/event-sourcing.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.martinfowler.com/eaaDev/EventSourcing.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.martinfowler.com/eaaDev/EventSourcing.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.linkedin.com/pulse/event-sourcing-pattern-distributed-designpatterns-pratik-pandey/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.linkedin.com/pulse/event-sourcing-pattern-distributed-designpatterns-pratik-pandey/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2024/event-sourcing/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Banker Algoritması: Deadlock Önleme Algoritması]]></title><description><![CDATA[Banker Algoritması, işletim sistemlerinde kullanılan ve deadlock (kilitlenme) olasılığını azaltmaya yardımcı olan bir algoritmadır. Deadlock, birbirlerine ihtiyaç duyan işlemlerin veya kaynakların birbirini beklemesi sonucunda oluşan ve sistemde ilerleme engelleyen bir durumdur. Banker Algoritması, bu tür kilitlenmeleri önlemek için tasarlanmıştır ve özellikle kaynak yönetimi gerektiren sistemlerde kullanılır.]]></description><link>https://blog.hkucuk.com/2024/banker-algoritmasi/</link><guid isPermaLink="false">https://blog.hkucuk.com/2024/banker-algoritmasi/</guid><pubDate>Wed, 27 Mar 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Banker%27s_algorithm&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Banker Algoritması&lt;/a&gt;, işletim sistemlerinde kullanılan ve &lt;a href=&quot;https://www.theknowledgeacademy.com/blog/deadlock-in-os/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;deadlock (kilitlenme)&lt;/a&gt; olasılığını azaltmaya yardımcı olan bir algoritmadır. Deadlock birbirlerine ihtiyaç duyan işlemlerin veya kaynakların birbirini beklemesi sonucunda oluşan ve sistemde ilerleme engelleyen bir durumdur. Banker Algoritması bu tür kilitlenmeleri önlemek için tasarlanmıştır ve özellikle kaynak yönetimi gerektiren sistemlerde kullanılır.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Banker%27s_algorithm&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Banker Algoritması&lt;/a&gt; bir sistemdeki kaynakları ve bu kaynakların işlemler tarafından talep edilen miktarlarını izler. Herhangi bir zamanda sistemdeki toplam kaynak miktarı bilinir. Algoritma her işlem için talep edilen kaynak miktarını takip eder ve işlemlerin belirli kaynakları ne kadar süreyle veya miktarlarda talep edebileceğini sınırlar. Bu sınırlar sistemdeki mevcut kaynakların talep edilen kaynak miktarını karşılayabilecek durumda olmasını sağlar.&lt;/p&gt;
&lt;h2 id=&quot;çalışma-adımları&quot;&gt;&lt;a href=&quot;#%C3%A7al%C4%B1%C5%9Fma-ad%C4%B1mlar%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Çalışma Adımları&lt;/h2&gt;
&lt;p&gt;Banker Algoritması’nın çalışma adımları şu şekildedir:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Başlangıçta sistemdeki toplam kaynak miktarı ve her işlemin talep edebileceği maksimum kaynak miktarı belirlenir.&lt;/li&gt;
&lt;li&gt;Bir işlem kaynakları talep etmek için Banker Algoritması’na başvurduğunda, sistemdeki mevcut kaynak miktarıyla işlemin talep ettiği kaynak miktarı karşılaştırılır.&lt;/li&gt;
&lt;li&gt;Eğer sistemdeki mevcut kaynaklar, işlemin talep ettiği kaynakları karşılayabiliyorsa, işlem çalıştırılır ve kaynaklar işlem tarafından kullanılır. Aksi takdirde işlem bekleme moduna alınır.&lt;/li&gt;
&lt;li&gt;Bir işlem kaynakları serbest bıraktığında, serbest bırakılan kaynaklar diğer işlemlerin kullanımına açılır.&lt;/li&gt;
&lt;li&gt;Sistemde herhangi bir zaman işlemler için gerekli minimum kaynak miktarı hesaplanır. Bu hesaplama sonucunda, sistemdeki kaynakların kullanımı optimize edilir ve deadlock riski azaltılır.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;algoritma-karmaşıklığı&quot;&gt;&lt;a href=&quot;#algoritma-karma%C5%9F%C4%B1kl%C4%B1%C4%9F%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Algoritma Karmaşıklığı&lt;/h2&gt;
&lt;p&gt;Banker Algoritması’nın zaman karmaşıklığı &lt;code class=&quot;language-text&quot;&gt;O(n^2)&lt;/code&gt; veya daha azdır, burada &lt;code class=&quot;language-text&quot;&gt;n&lt;/code&gt; sistemdeki işlem sayısını temsil eder.&lt;/p&gt;
&lt;h2 id=&quot;kullanım-alanları&quot;&gt;&lt;a href=&quot;#kullan%C4%B1m-alanlar%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kullanım Alanları&lt;/h2&gt;
&lt;p&gt;Banker Algoritması özellikle çoklu işlemci sistemlerinde ve dağıtık sistemlerde kullanılır. Örneğin çoklu kullanıcılı işletim sistemlerinde, aynı anda birden fazla kullanıcı tarafından kaynak talebinde bulunulabilir. Banker Algoritması, bu talepleri yönetir ve kaynakları etkin bir şekilde dağıtarak sistemdeki performansı optimize eder.&lt;/p&gt;
&lt;p&gt;Bir diğer örnek ise veritabanı yönetim sistemleridir. Birden fazla kullanıcı veritabanı kaynaklarına ihtiyaç duyabilir ve bu kaynakların etkin bir şekilde yönetilmesi gerekir. Banker Algoritması, veritabanı sistemlerinde deadlock riskini azaltmak için kullanılabilir.&lt;/p&gt;
&lt;h2 id=&quot;golangde-banker-algoritması-uygulaması&quot;&gt;&lt;a href=&quot;#golangde-banker-algoritmas%C4%B1-uygulamas%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;GoLang’de Banker Algoritması uygulaması:&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;fmt&quot;&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Function to check if the system is in a safe state&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;isSafe&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;processes &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; avail &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; need &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; finish &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;bool&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;bool&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    work &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;avail&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;copy&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;work&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; avail&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; count &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; count &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;processes&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; count&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        found &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; p &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; p &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;processes&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; p&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;finish&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;p&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                canAllocate &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; r &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; r &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;avail&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; r&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; need&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;p&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;r&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; work&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;r&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                        canAllocate &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;
                        &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;
                    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; canAllocate &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; r &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; r &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;avail&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; r&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                        work&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;r&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; processes&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;p&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;r&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
                    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
                    finish&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;p&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;
                    found &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;found &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// Example data&lt;/span&gt;
    processes &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    avail &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    max &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;// Calculate need matrix&lt;/span&gt;
    need &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;processes&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;range&lt;/span&gt; need &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        need&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;avail&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;range&lt;/span&gt; need&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            need&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; max&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; processes&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;// Initialize finish array&lt;/span&gt;
    finish &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;bool&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;processes&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;// Check if system is in a safe state&lt;/span&gt;
    safe &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;isSafe&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;processes&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; avail&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; need&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; finish&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;// Print result&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; safe &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Safe state&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Unsafe state&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Program çalıştırıldığında çıktısı aşağıdaki gibi olacaktır.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;json&quot;&gt;&lt;pre class=&quot;language-json&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;Safe state or Unsafe state&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Programın çalışır haline &lt;a href=&quot;https://go.dev/play/p/lixRR5z0t7G&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;şuradan&lt;/a&gt; erişilebilir.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Banker Algoritması deadlock olasılığını azaltmaya yardımcı olan önemli bir algoritmadır. Ancak her zaman işe yarar olmayabilir ve bazı durumlarda sistem performansını etkileyebilir. Bu nedenle kullanılacağı sistem ve koşullar dikkatlice değerlendirilmelidir. Ayrıca algoritmanın karmaşıklığı ve uygulanabilirliği göz önünde bulundurulmalıdır.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Banker%27s_algorithm&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/Banker%27s_algorithm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.hackerearth.com/blog/developers/dijkstras-bankers-algorithm-detailed-explaination/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.hackerearth.com/blog/developers/dijkstras-bankers-algorithm-detailed-explaination/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.cs.colostate.edu/~cs551/CourseNotes/Bankers.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.cs.colostate.edu/~cs551/CourseNotes/Bankers.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.sciencedirect.com/science/article/abs/pii/0020019093902558&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.sciencedirect.com/science/article/abs/pii/0020019093902558&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2024/banker-algoritmasi/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Borůvka'nın Algoritması: Minimum Kapsayan Ağaçları Bulmak İçin Etkili Bir Yöntem]]></title><description><![CDATA[Borůvka'nın algoritması, minimum kapsayan ağaçları bulmak için kullanılan etkili bir graf algoritmasıdır. Graf teorisinde önemli bir yere sahip olan bu algoritma, bir graf içindeki en küçük ağırlıklı kenarları seçerek ve bu kenarları birleştirerek minimum kapsayan ağaçları oluşturur. Temel prensibi graf içindeki her bir düğümü kapsayan ağaçlara ayırmak ve ardından bu ağaçları birleştirerek birbirine bağlamaktır.]]></description><link>https://blog.hkucuk.com/2024/boruvka-nin-algoritmasi/</link><guid isPermaLink="false">https://blog.hkucuk.com/2024/boruvka-nin-algoritmasi/</guid><pubDate>Wed, 20 Mar 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Bor%C5%AFvka%27s_algorithm&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Borůvka’nın algoritması&lt;/a&gt;, minimum kapsayan ağaçları bulmak için kullanılan etkili bir &lt;a href=&quot;https://en.wikipedia.org/wiki/Graph_(abstract_data_type)&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;&lt;strong&gt;graf&lt;/strong&gt;&lt;/a&gt; algoritmasıdır. &lt;a href=&quot;https://en.wikipedia.org/wiki/Graph_(abstract_data_type)&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;&lt;strong&gt;Graf&lt;/strong&gt;&lt;/a&gt; teorisinde önemli bir yere sahip olan bu algoritma, bir graf içindeki en küçük ağırlıklı kenarları seçerek ve bu kenarları birleştirerek minimum kapsayan ağaçları oluşturur. Temel prensibi graf içindeki her bir düğümü kapsayan ağaçlara ayırmak ve ardından bu ağaçları birleştirerek birbirine bağlamaktır.&lt;/p&gt;
&lt;p&gt;Algoritmanın işleyişi oldukça basittir ancak etkilidir. İlk adımda, her bir düğüm bir minimum kapsayan ağacın kökü olarak kabul edilir. Daha sonra &lt;a href=&quot;https://en.wikipedia.org/wiki/Graph_(abstract_data_type)&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;&lt;strong&gt;graf&lt;/strong&gt;&lt;/a&gt; içindeki en düşük ağırlıklı kenarlar seçilir ve bu kenarlar kullanılarak minimum kapsayan ağaçlar oluşturulur. Bu süreç &lt;a href=&quot;https://en.wikipedia.org/wiki/Graph_(abstract_data_type)&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;&lt;strong&gt;graf&lt;/strong&gt;&lt;/a&gt; içindeki minimum kapsayan ağaç sayısı azaldıkça tekrarlanır.&lt;/p&gt;
&lt;p&gt;Borůvka’nın algoritmasının verimliliği grafın büyüklüğüne bağlı olarak değişkenlik gösterebilir. Özellikle büyük ve yoğun &lt;a href=&quot;https://en.wikipedia.org/wiki/Graph_(abstract_data_type)&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;&lt;strong&gt;graf&lt;/strong&gt;&lt;/a&gt; yapıları için daha hızlı sonuçlar elde edilebilirken, daha küçük ve seyrek &lt;a href=&quot;https://en.wikipedia.org/wiki/Graph_(abstract_data_type)&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;&lt;strong&gt;graf&lt;/strong&gt;&lt;/a&gt; yapıları için daha uzun sürebilir. Ancak paralel hesaplama olanaklarından faydalanılarak algoritmanın performansı artırılabilir.&lt;/p&gt;
&lt;p&gt;Bu algoritmanın avantajlarından biri paralel hesaplama için uygun olmasıdır. Adımların bağımsız olarak yürütülebilmesi, paralel işlemcilerde verimliliği artırabilir. Ayrıca, minimum kapsayan ağaçları bulma problemlerinde geniş bir uygulama alanı bulunmaktadır. İletişim ağlarının oluşturulması, elektrik şebekelerinin planlanması gibi alanlarda minimum kapsayan ağaçlar önemli bir rol oynamaktadır.&lt;/p&gt;
&lt;p&gt;Borůvka’nın algoritması, minimum kapsayan ağaçları bulma problemlerinde etkili bir çözüm sunar. Graf teorisindeki önemli bir araç olarak kabul edilir ve çeşitli uygulama alanlarında kullanılmaktadır. Ancak grafın büyüklüğüne ve yapısına bağlı olarak algoritmanın verimliliği değişebilir.&lt;/p&gt;
&lt;h2 id=&quot;algoritmanın-çalışma-prensibi&quot;&gt;&lt;a href=&quot;#algoritman%C4%B1n-%C3%A7al%C4%B1%C5%9Fma-prensibi&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Algoritmanın Çalışma Prensibi&lt;/h2&gt;
&lt;p&gt;Borůvka’nın algoritması, aşağıdaki adımları takip eder:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Başlangıç Adımı: Köklerin Belirlenmesi&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Algoritma başlangıcında, her düğüm kendine ait bir minimum kapsayan ağacın kökü olarak kabul edilir.&lt;/li&gt;
&lt;li&gt;Grafın her bir düğümü, kendi kendine bir ağacın kökü olarak işaretlenir.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Kenar Seçme Adımı: En Küçük Ağırlıklı Kenarların Belirlenmesi&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Graf içindeki her ağacın kökünden dışa doğru giden kenarlardan en küçük ağırlıklı olanları belirlenir.&lt;/li&gt;
&lt;li&gt;Her ağacın kökünden, o ağaca bağlı olan kenarlardan en küçük ağırlığa sahip olanı seçilir.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Kenarları Birleştirme Adımı: Ağaçların Birleştirilmesi&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Belirlenen en küçük ağırlıklı kenarlar kullanılarak minimum kapsayan ağaçlar birleştirilir.&lt;/li&gt;
&lt;li&gt;Seçilen her kenar, iki farklı ağacı birleştirerek daha büyük bir ağaç oluşturur.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Tekrarlama Adımı: Yeniden Değerlendirme&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Eğer graf içinde birden fazla minimum kapsayan ağaç varsa, bu adımlar tekrarlanır.&lt;/li&gt;
&lt;li&gt;Yeniden değerlendirme adımında, her bir ağaç kökünden en küçük ağırlıklı kenarlar seçilerek ve ağaçlar birleştirilerek işlem devam ettirilir.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Bitiş Adımı: Minimum Kapsayan Ağaçların Oluşumu&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Graf içinde sadece bir minimum kapsayan ağaç kaldığında veya belirlenen bir kriter karşılandığında algoritma sonlanır.&lt;/li&gt;
&lt;li&gt;Algoritma sonucunda, graf içindeki en küçük ağırlıklı kenarlar kullanılarak minimum kapsayan ağaçlar oluşturulur.&lt;/li&gt;
&lt;li&gt;Bu adımlar sonucunda graf içindeki minimum kapsayan ağaçlar tamamlanmış olur.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;algoritma-karmaşıklığı&quot;&gt;&lt;a href=&quot;#algoritma-karma%C5%9F%C4%B1kl%C4%B1%C4%9F%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Algoritma Karmaşıklığı&lt;/h2&gt;
&lt;p&gt;Borůvka’nın algoritmasının karmaşıklığı, genellikle &lt;code class=&quot;language-text&quot;&gt;O(E log V)&lt;/code&gt; olarak ifade edilir, burada &lt;code class=&quot;language-text&quot;&gt;E&lt;/code&gt;, kenar sayısı ve &lt;code class=&quot;language-text&quot;&gt;V&lt;/code&gt;, düğüm sayısıdır. Ancak, grafın yoğunluğuna ve yapısal özelliklerine bağlı olarak bu karmaşıklık değişebilir.&lt;/p&gt;
&lt;h2 id=&quot;önemli-bilgiler&quot;&gt;&lt;a href=&quot;#%C3%B6nemli-bilgiler&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Önemli Bilgiler&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Borůvka’nın algoritması, paralel hesaplama için uygundur çünkü adımlar bağımsız olarak yürütülebilir.&lt;/li&gt;
&lt;li&gt;Bu algoritma, ağaç tabanlı ağ yapısı gerektiren problemlerde yaygın olarak kullanılır.&lt;/li&gt;
&lt;li&gt;Borůvka’nın algoritması, belirli koşullar altında diğer minimum kapsayan ağaç algoritmalarından daha hızlı olabilir.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Borůvka’nın algoritması, minimum kapsayan ağaçları bulmak için etkili bir yöntem olmasının yanı sıra, graf teorisine olan katkılarıyla da bilinir. Karmaşıklığı ve performans avantajları, çeşitli problemlerde kullanılmasını sağlar.&lt;/p&gt;
&lt;h2 id=&quot;golangde-borůvkanın-algoritması-uygulaması&quot;&gt;&lt;a href=&quot;#golangde-bor%C5%AFvkan%C4%B1n-algoritmas%C4%B1-uygulamas%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;GoLang’de Borůvka’nın Algoritması uygulaması:&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;fmt&quot;&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;sort&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; Edge &lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	src&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; dest&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; weight &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; Graph &lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	V&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; E &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;
	edge &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;Edge
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;createGraph&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;V&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; E &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;Graph &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	graph &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;Graph&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;V&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; V&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; E&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; E&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	graph&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;edge &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;Edge&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; E&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; graph
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;find&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;parent &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; i &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; parent&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; i
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;find&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;parent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; parent&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;union&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;parent &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; x&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; y &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	xset &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;find&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;parent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; x&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	yset &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;find&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;parent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; y&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	parent&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;xset&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; yset
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;boruvkaMST&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;graph &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;Graph&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	V&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; E &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; graph&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;V&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; graph&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;E
	parent &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; V&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;range&lt;/span&gt; parent &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		parent&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	cheapest &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; V&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;range&lt;/span&gt; cheapest &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		cheapest&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	numTrees &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; V
	minimumCost &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; numTrees &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;range&lt;/span&gt; cheapest &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			cheapest&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

		&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; E&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			set1 &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;find&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;parent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; graph&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;edge&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;src&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
			set2 &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;find&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;parent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; graph&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;edge&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;dest&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

			&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; set1 &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; set2 &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
				&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; cheapest&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;set1&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;||&lt;/span&gt; graph&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;edge&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;cheapest&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;set1&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;weight &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; graph&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;edge&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;weight &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
					cheapest&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;set1&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; i
				&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
				&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; cheapest&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;set2&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;||&lt;/span&gt; graph&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;edge&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;cheapest&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;set2&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;weight &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; graph&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;edge&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;weight &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
					cheapest&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;set2&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; i
				&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
			&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

		&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; V&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; cheapest&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
				set1 &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;find&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;parent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; graph&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;edge&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;cheapest&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;src&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
				set2 &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;find&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;parent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; graph&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;edge&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;cheapest&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;dest&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

				&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; set1 &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; set2 &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
					minimumCost &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; graph&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;edge&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;cheapest&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;weight
					fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Edge %d-%d included in MST\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; graph&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;edge&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;cheapest&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;src&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; graph&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;edge&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;cheapest&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;dest&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
					&lt;span class=&quot;token function&quot;&gt;union&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;parent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; set1&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; set2&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
					numTrees&lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;
				&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
			&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Minimum Cost Spanning Tree: %d\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; minimumCost&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	V&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; E &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;
	graph &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;createGraph&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;V&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; E&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

	graph&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;edge&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; Edge&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;src&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; dest&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; weight&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	graph&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;edge&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; Edge&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;src&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; dest&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; weight&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	graph&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;edge&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; Edge&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;src&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; dest&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; weight&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	graph&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;edge&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; Edge&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;src&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; dest&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; weight&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	graph&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;edge&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; Edge&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;src&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; dest&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; weight&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	&lt;span class=&quot;token function&quot;&gt;boruvkaMST&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;graph&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Program çalıştırıldığında çıktısı aşağıdaki gibi olacaktır.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;json&quot;&gt;&lt;pre class=&quot;language-json&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;Edge &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;-3&lt;/span&gt; included in MST
Edge &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;-1&lt;/span&gt; included in MST
Edge &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;-3&lt;/span&gt; included in MST
Minimum Cost Spanning Tree&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;19&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Programın çalışır haline &lt;a href=&quot;https://go.dev/play/p/n0kLR0A_iTX&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;şuradan&lt;/a&gt; erişilebilir.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Bor%C5%AFvka%27s_algorithm&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/Bor%C5%AFvka%27s_algorithm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www-student.cse.buffalo.edu/~atri/cse331/fall16/recitations/Recitation10.pdf&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www-student.cse.buffalo.edu/~atri/cse331/fall16/recitations/Recitation10.pdf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://stackabuse.com/courses/graphs-in-python-theory-and-implementation/lessons/minimum-spanning-trees-boruvkas-algorithm/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://stackabuse.com/courses/graphs-in-python-theory-and-implementation/lessons/minimum-spanning-trees-boruvkas-algorithm/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2024/boruvka-nin-algoritmasi/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Ford-Fulkerson Algoritması: Maksimum Akış Bulma]]></title><description><![CDATA[Ford-Fulkerson algoritması, ağ teorisinde önemli bir yere sahip olan ve bir ağdaki maksimum akışı belirlemeyi amaçlayan bir graf algoritmasıdır. Akış ağlarındaki bir kaynaktan bir hedefe ulaşan en büyük akışı bulmak için kullanılır. Algoritma bu maksimum akışı bulmak için artan yolları keşfeder ve bu yollar boyunca akışı artırır.]]></description><link>https://blog.hkucuk.com/2024/ford-fulkerson-algoritmasi/</link><guid isPermaLink="false">https://blog.hkucuk.com/2024/ford-fulkerson-algoritmasi/</guid><pubDate>Sun, 10 Mar 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Ford%E2%80%93Fulkerson_algorithm&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Ford-Fulkerson algoritması&lt;/a&gt;, ağ teorisinde önemli bir yere sahip olan ve bir ağdaki maksimum akışı belirlemeyi amaçlayan bir &lt;a href=&quot;https://en.wikipedia.org/wiki/Graph_(abstract_data_type)&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;&lt;strong&gt;graf&lt;/strong&gt;&lt;/a&gt; algoritmasıdır. Akış ağlarındaki bir kaynaktan bir hedefe ulaşan en büyük akışı bulmak için kullanılır. Algoritma bu maksimum akışı bulmak için artan yolları keşfeder ve bu yollar boyunca akışı artırır.&lt;/p&gt;
&lt;p&gt;Algoritmanın başlangıç noktası, maksimum akışın sıfır olduğu varsayımıdır. Başlangıçta ağdaki hiçbir akış yoktur ve algoritma bu akışı kademeli olarak artırarak maksimum akışı bulmaya çalışır. Her artış adımında, bir artan yol bulunur ve bu yol boyunca akış artırılır. Bu artan yol, kaynaktan hedefe ulaşan bir yol olup, bu yol boyunca akış artırılabilir. Ford-Fulkerson algoritması, genellikle genişletilmiş &lt;a href=&quot;https://en.wikipedia.org/wiki/Depth-first_search&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Derinlik Öncelikli Arama (DFS)&lt;/a&gt; algoritması ile uygulanır. Bu algoritma, ağdaki her bir düğümü ziyaret ederek artan yolları bulur ve akışı artırmak için kullanılır. Algoritmanın karmaşıklığı ağ yapısına ve maksimum akışın boyutuna bağlı olarak değişir. Ancak genellikle zaman karmaşıklığı, ağdaki kenar sayısına ve maksimum akışın büyüklüğüne bağlı olarak ifade edilir.&lt;/p&gt;
&lt;h2 id=&quot;nasıl-çalışır&quot;&gt;&lt;a href=&quot;#nas%C4%B1l-%C3%A7al%C4%B1%C5%9F%C4%B1r&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Nasıl Çalışır?&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Başlangıçta maksimum akış sıfır olarak varsayılır.&lt;/li&gt;
&lt;li&gt;Artan yollar bulunmaya çalışılır. Artan yol kaynaktan hedefe bir yol olup, bu yol boyunca akış artırılabilir.&lt;/li&gt;
&lt;li&gt;Bir artan yol bulunduğunda, bu yol boyunca akış artırılır.&lt;/li&gt;
&lt;li&gt;Akış artırılamadığı sürece yani artan yol bulunamadığı durumda, algoritma sona erer.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;çalışma-adımları&quot;&gt;&lt;a href=&quot;#%C3%A7al%C4%B1%C5%9Fma-ad%C4%B1mlar%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Çalışma Adımları&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Başlangıç Durumu ve Başlangıç Noktası Belirleme:&lt;/strong&gt;&lt;br&gt;
Ford-Fulkerson algoritması, bir ağdaki maksimum akışı bulmayı amaçlar. Bu süreçte ilk adım, ağın başlangıç durumunu ve başlangıç noktasını belirlemektir. Başlangıç noktası, genellikle ağın kaynağıdır ve akışın başladığı yerdir.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Artan Yolların Bulunması:&lt;/strong&gt;&lt;br&gt;
Algoritmanın ana işleyişini oluşturan adımlardan biri, artan yolların keşfedilmesidir. Bu adımda, başlangıç noktasından hedef noktaya kadar olan potansiyel artan yollar aranır. Genellikle, genişletilmiş Derinlik Öncelikli Arama (DFS) veya Genişlik Öncelikli Arama (BFS) gibi graf gezme algoritmaları kullanılarak bu artan yollar bulunur.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Artan Yolların Belirlenmesi ve Analizi:&lt;/strong&gt;&lt;br&gt;
Bulunan artan yollar üzerinde analiz yapılır. Her bir artan yolun kapasitesi belirlenir ve bu kapasiteler arasından en düşük olanı seçilir. Bu, akışın artırılacağı miktarı belirlemek için kullanılır.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Akışın Artırılması:&lt;/strong&gt;&lt;br&gt;
En zayıf bağlantının kapasitesi kadar akış artırılır. Bu, belirlenen artan yol boyunca akışın güncellenmesi anlamına gelir. Akış, başlangıç noktasından hedef noktaya doğru ilerlerken artırılır.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Yeniden Düzenleme ve Yeniden Değerlendirme:&lt;/strong&gt;&lt;br&gt;
Akışın artırılmasıyla birlikte, ağdaki kapasiteler güncellenir ve artık kullanılamayan yollar işaretlenir. Bu adımda, akışın güncellenmesi sonucunda ağın yeniden düzenlenmesi ve akışın yeniden değerlendirilmesi gerekebilir.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tekrarlama ve Sonlandırma:&lt;/strong&gt;&lt;br&gt;
Artan yolların bulunması, akışın artırılması ve ağın güncellenmesi adımları tekrarlanır. Bu işlem, artık artan yol bulunamadığı ve akış artırılamadığı zaman sona erer. Algoritma, maksimum akış bulunduğunda veya akış artırılamadığında sonlanır.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;algoritma-karmaşıklığı&quot;&gt;&lt;a href=&quot;#algoritma-karma%C5%9F%C4%B1kl%C4%B1%C4%9F%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Algoritma Karmaşıklığı&lt;/h2&gt;
&lt;p&gt;Ford-Fulkerson algoritmasının karmaşıklığı, genellikle ağ yapısına ve maksimum akış boyutuna bağlıdır. En kötü durumda, zaman karmaşıklığı &lt;code class=&quot;language-text&quot;&gt;O(Ef)&lt;/code&gt; olabilir. Burada &lt;code class=&quot;language-text&quot;&gt;E&lt;/code&gt; ağdaki kenar sayısını ve &lt;code class=&quot;language-text&quot;&gt;f&lt;/code&gt; maksimum akışı temsil eder.&lt;/p&gt;
&lt;h2 id=&quot;kullanım-alanları&quot;&gt;&lt;a href=&quot;#kullan%C4%B1m-alanlar%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kullanım Alanları&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Ağ akışı yönetimi&lt;/li&gt;
&lt;li&gt;Taşıma ve lojistik sistemleri&lt;/li&gt;
&lt;li&gt;Telekomünikasyon ağları&lt;/li&gt;
&lt;li&gt;Veri iletimi ve ağ optimizasyonu&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;golangde-ford-fulkerson-algoritması-uygulaması&quot;&gt;&lt;a href=&quot;#golangde-ford-fulkerson-algoritmas%C4%B1-uygulamas%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;GoLang’de Ford-Fulkerson Algoritması uygulaması:&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;fmt&quot;&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// FordFulkerson is the implementation of Ford-Fulkerson algorithm&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;FordFulkerson&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;graph &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; source&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; sink &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	maxFlow &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;
	parent &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;graph&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		flow &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;bfs&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;graph&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; source&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; sink&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; parent&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; flow &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			&lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
		maxFlow &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; flow

		&lt;span class=&quot;token comment&quot;&gt;// Update the residual capacities of the edges and reverse edges along the path&lt;/span&gt;
		v &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; sink
		&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; v &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; source &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			u &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; parent&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;v&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
			graph&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;u&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;v&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-=&lt;/span&gt; flow
			graph&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;v&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;u&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; flow
			v &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; u
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; maxFlow
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Breadth First Search to find augmenting path&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;bfs&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;graph &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; source&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; sink &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; parent &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	visited &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;bool&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;graph&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	queue &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;source&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	visited&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;source&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;
	parent&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;source&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;queue&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		u &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; queue&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
		queue &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; queue&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;

		&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; v&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; capacity &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;range&lt;/span&gt; graph&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;u&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;visited&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;v&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; capacity &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
				queue &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;queue&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; v&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
				parent&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;v&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; u
				visited&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;v&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;
			&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; visited&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;sink&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		pathFlow &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;32&lt;/span&gt;
		v &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; sink
		&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; v &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; source &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			u &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; parent&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;v&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
			pathFlow &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;min&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;pathFlow&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; graph&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;u&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;v&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
			v &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; u
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; pathFlow
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Helper function to find minimum of two integers&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;min&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; b &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; a &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; b &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; a
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; b
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	graph &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	source&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; sink &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;
	maxFlow &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;FordFulkerson&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;graph&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; source&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; sink&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Maximum Flow:&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; maxFlow&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Program çalıştırıldığında çıktısı aşağıdaki gibi olacaktır.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;json&quot;&gt;&lt;pre class=&quot;language-json&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;Maximum Flow&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;23&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Programın çalışır haline &lt;a href=&quot;https://go.dev/play/p/CTkHuJhAL0G&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;şuradan&lt;/a&gt; erişilebilir.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Ford-Fulkerson algoritması, bir ağdaki maksimum akışı bulmak için yaygın olarak kullanılan etkili bir algoritmadır. Graf teorisinde önemli bir yere sahiptir ve birçok farklı alanda uygulanabilir. Bu algoritmanın anlaşılması ve uygulanması, ağ optimizasyonu, taşıma ve lojistik problemleri gibi çeşitli alanlarda önemli katkılar sağlayabilir.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Ford%E2%80%93Fulkerson_algorithm&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/Ford%E2%80%93Fulkerson_algorithm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.cs.cmu.edu/~15451-s23/lectures/lec11-flow1.pdf&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.cs.cmu.edu/~15451-s23/lectures/lec11-flow1.pdf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://brilliant.org/wiki/ford-fulkerson-algorithm/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://brilliant.org/wiki/ford-fulkerson-algorithm/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.researchgate.net/publication/300408801_An_Approach_Based_on_Ford-Fulkerson_Algorithm_to_Optimize_Network_Bandwidth_Usage&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.researchgate.net/publication/300408801_An_Approach_Based_on_Ford-Fulkerson_Algorithm_to_Optimize_Network_Bandwidth_Usage&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2024/ford-fulkerson-algoritmasi/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Elipsoidal Mesafe Algoritması: Hassas Coğrafi Mesafe Hesaplama]]></title><description><![CDATA[Coğrafi mesafe hesaplamaları, dünya yüzeyinin karmaşıklığını ve eğriliğini dikkate alarak noktalar arasındaki mesafeyi doğru bir şekilde hesaplamak için önemlidir. Bu tür hassas hesaplamalar için Lambert'ın ellipsoidal mesafe algoritması sıklıkla tercih edilir. Lambert'ın algoritması, dünya yüzeyinin elipsoidal şeklini hesaba katarak iki nokta arasındaki mesafeyi hesaplar.]]></description><link>https://blog.hkucuk.com/2024/elipsoidal-mesafe-algoritmasi/</link><guid isPermaLink="false">https://blog.hkucuk.com/2024/elipsoidal-mesafe-algoritmasi/</guid><pubDate>Fri, 09 Feb 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Coğrafi mesafe hesaplamaları, dünya yüzeyinin karmaşıklığını ve eğriliğini dikkate alarak noktalar arasındaki mesafeyi doğru bir şekilde hesaplamak için önemlidir. Bu tür hassas hesaplamalar için &lt;a href=&quot;https://en.wikipedia.org/wiki/Geographical_distance#Lambert&amp;#x27;s_formula_for_long_lines&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Lambert’ın ellipsoidal mesafe algoritması&lt;/a&gt; sıklıkla tercih edilir. Lambert’ın algoritması, dünya yüzeyinin elipsoidal şeklini hesaba katarak iki nokta arasındaki mesafeyi hesaplar. Bu algoritma coğrafi bilgi sistemleri (GIS), harita projeleri, navigasyon yazılımları ve uzay teknolojileri gibi birçok alanda kullanılır.&lt;/p&gt;
&lt;p&gt;Lambert’ın ellipsoidal mesafe algoritması, iki nokta arasındaki mesafeyi ve yönü hesaplamak için matematiksel formüller kullanır. Bu formüller dünya yüzeyinin eğrisini ve elipsoid şeklini dikkate alarak mesafeyi daha doğru bir şekilde hesaplar. Algoritmanın karmaşıklığı genellikle sabittir ve hesaplanan mesafe çeşitli uygulamalarda kullanılabilir. Örneğin, Google Haritalar ve ArcGIS gibi popüler haritalama platformları bu algoritmayı mesafe hesaplamalarında kullanabilir. Ayrıca, gemi ve uçak rotalarının planlanması, arazi haritalama ve jeodezi çalışmaları gibi alanlarda da kullanımı yaygındır.&lt;/p&gt;
&lt;h2 id=&quot;çalışma-adımları&quot;&gt;&lt;a href=&quot;#%C3%A7al%C4%B1%C5%9Fma-ad%C4%B1mlar%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Çalışma Adımları&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Noktaların Koordinatlarının Alınması:&lt;/strong&gt;&lt;br&gt;
İki noktanın enlem ve boylam koordinatları alınır. Bu koordinatlar genellikle derece cinsinden ifade edilir ve ardından radyan cinsine dönüştürülür.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Meridyen Çemberleri Arası Uzaklığın Hesaplanması:&lt;/strong&gt;&lt;br&gt;
İki noktanın meridyen çemberleri arasındaki uzaklık hesaplanır. Bu iki noktanın boylam farkının mutlak değerini almakla başlar.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Azimut Açılarının Hesaplanması:&lt;/strong&gt;&lt;br&gt;
İki noktanın azimut açıları hesaplanır. Bu iki noktanın koordinatlarından türetilir ve genellikle trigonometrik formüller kullanılarak hesaplanır.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mesafenin Hesaplanması:&lt;/strong&gt;&lt;br&gt;
Belirli bir elipsoid modeline göre iki nokta arasındaki mesafe hesaplanır. Bu Vincenty formülü gibi karmaşık matematiksel formüller kullanılarak gerçekleştirilir. Bu formüller dünya yüzeyinin eğrisini ve elipsoid şeklini dikkate alarak daha doğru sonuçlar sağlar.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sonuçların Dönüştürülmesi:&lt;/strong&gt;&lt;br&gt;
Elde edilen mesafe istenilen formatta sunulmak üzere gerekirse dönüştürülür. Örneğin mesafe metre cinsinden hesaplanmış olabilir ancak kilometre cinsine dönüştürülerek kullanıcıya sunulabilir.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;algoritma-karmaşıklığı&quot;&gt;&lt;a href=&quot;#algoritma-karma%C5%9F%C4%B1kl%C4%B1%C4%9F%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Algoritma Karmaşıklığı&lt;/h2&gt;
&lt;p&gt;Lambert’ın ellipsoidal mesafe algoritmasının karmaşıklığı genellikle &lt;code class=&quot;language-text&quot;&gt;O(1)&lt;/code&gt; veya sabittir. Bu algoritmanın girdi boyutundan bağımsız olarak sabit bir zaman alması anlamına gelir. Ancak bazı hesaplama adımları sabit olmayabilir, özellikle noktalar arasındaki azimut açılarının hesaplanması gibi.&lt;/p&gt;
&lt;h2 id=&quot;kullanım-alanları&quot;&gt;&lt;a href=&quot;#kullan%C4%B1m-alanlar%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kullanım Alanları&lt;/h2&gt;
&lt;p&gt;Lambert’ın algoritması coğrafi bilgi sistemleri (GIS), harita projeleri, navigasyon yazılımları ve uzay teknolojileri gibi çeşitli alanlarda kullanılır.&lt;/p&gt;
&lt;h2 id=&quot;golangde-elipsoidal-mesafe-algoritması-uygulaması&quot;&gt;&lt;a href=&quot;#golangde-elipsoidal-mesafe-algoritmas%C4%B1-uygulamas%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;GoLang’de Elipsoidal Mesafe Algoritması uygulaması:&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;fmt&quot;&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;math&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    a &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;6378137.0&lt;/span&gt;      &lt;span class=&quot;token comment&quot;&gt;// semi-major axis (in meters)&lt;/span&gt;
    f &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;298.257223563&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// flattening&lt;/span&gt;
    b &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; a &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; f&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;    &lt;span class=&quot;token comment&quot;&gt;// semi-minor axis (in meters)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    lat1 &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;40.7128&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// latitude of New York City&lt;/span&gt;
    lon1 &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;74.0060&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// longitude of New York City&lt;/span&gt;
    lat2 &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;34.0522&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// latitude of Los Angeles&lt;/span&gt;
    lon2 &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;118.2437&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// longitude of Los Angeles&lt;/span&gt;

    distance &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;calculateDistance&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;lat1&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; lon1&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; lat2&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; lon2&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Distance between New York City and Los Angeles: %.2f km\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; distance&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;calculateDistance&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;lat1&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; lon1&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; lat2&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; lon2 &lt;span class=&quot;token builtin&quot;&gt;float64&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;float64&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    phi1 &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;toRadians&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;lat1&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    lambda1 &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;toRadians&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;lon1&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    phi2 &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;toRadians&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;lat2&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    lambda2 &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;toRadians&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;lon2&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    deltaLambda &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Abs&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;lambda1 &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; lambda2&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    sigma &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Atan&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Sqrt&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Pow&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Cos&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;phi2&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Sin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;deltaLambda&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;
        math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Pow&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Cos&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;phi1&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Sin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;phi2&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Sin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;phi1&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Cos&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;phi2&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Cos&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;deltaLambda&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Sin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;phi1&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Sin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;phi2&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Cos&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;phi1&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Cos&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;phi2&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Cos&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;deltaLambda&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    alpha &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Atan2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Cos&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;phi1&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Sin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;phi2&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Sin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;phi1&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Cos&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;phi2&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Cos&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;deltaLambda&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Sin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;deltaLambda&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Cos&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;phi2&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; alpha &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        alpha &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Pi
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    u2 &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Pow&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Cos&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;alpha&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Pow&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Pow&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;b&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt; math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Pow&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;b&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    A &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;u2 &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;16384&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;4096&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; u2 &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;768&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; u2 &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;320&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;175&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; u2&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    B &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;u2 &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1024&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;256&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; u2 &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;128&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; u2 &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;74&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;47&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; u2&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    deltaSigma &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; B &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Sin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;sigma&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Cos&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; sigma&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;B &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Cos&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;sigma&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Pow&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Cos&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; sigma&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;B &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Cos&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; sigma&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Pow&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Sin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;sigma&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Pow&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Cos&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; sigma&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    s &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; b &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; A &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;sigma &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; deltaSigma&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; s
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;toRadians&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;degrees &lt;span class=&quot;token builtin&quot;&gt;float64&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;float64&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; degrees &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Pi &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;180&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Program çalıştırıldığında çıktısı aşağıdaki gibi olacaktır.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;json&quot;&gt;&lt;pre class=&quot;language-json&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;Distance between New York City and Los Angeles&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3931.50&lt;/span&gt; km&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Programın çalışır haline &lt;a href=&quot;https://go.dev/play/p/zBmufBZLNjM&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;şuradan&lt;/a&gt; erişilebilir.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Algoritma, dünya yüzeyinin eğriliğini ve elipsoid şeklini dikkate alarak mesafe hesaplamalarını gerçekleştirir. İki nokta arasındaki mesafeyi hesaplarken Vincenty formülü gibi matematiksel formülleri kullanır. Bu formüller dünya yüzeyinin eğrisini daha doğru bir şekilde hesaplamak için çeşitli trigonometrik ve geometrik hesaplamaları içerir.&lt;/p&gt;
&lt;p&gt;Kullanım alanları arasında coğrafi bilgi sistemleri (GIS), harita projeleri, navigasyon yazılımları ve uzay teknolojileri bulunur. Örneğin; gemilerin ve uçakların rotalarını planlarken, arazi haritalama ve jeodezi çalışmalarında bu algoritma kullanılabilir. Ayrıca coğrafi mesafelerin doğru bir şekilde hesaplanması gereken herhangi bir alanda bu algoritma değerlidir.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://python.algorithmexamples.com/web/geodesy/lamberts_ellipsoidal_distance.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://python.algorithmexamples.com/web/geodesy/lamberts_ellipsoidal_distance.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://community.esri.com/t5/coordinate-reference-systems-blog/distance-on-an-ellipsoid-vincenty-s-formulae/ba-p/902053&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://community.esri.com/t5/coordinate-reference-systems-blog/distance-on-an-ellipsoid-vincenty-s-formulae/ba-p/902053&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Vincenty%27s_formulae&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/Vincenty%27s_formulae&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.sciencedirect.com/science/article/abs/pii/S0021999122001620&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.sciencedirect.com/science/article/abs/pii/S0021999122001620&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2024/elipsoidal-mesafe-algoritmasi/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[C4 Modeli ile Yazılım Mimarisi]]></title><description><![CDATA[Yazılım geliştirme sürecinde, bir projenin karmaşıklığını anlamak, tasarım kararlarını iletmek ve ekip içinde etkili iletişimi sağlamak başarılı bir projenin temel unsurlarıdır. Bu noktada yazılım mimarisini anlamak ve görselleştirmek, proje paydaşları arasında ortak bir anlayış oluşturmanın kritik bir adımıdır. C4 Modeli, yazılım mimarisini basitleştirmek ve görselleştirmek için güçlü bir araç olarak ön plana çıkmaktadır.]]></description><link>https://blog.hkucuk.com/2024/c4-modeli-ile-yazilim-mimarisi/</link><guid isPermaLink="false">https://blog.hkucuk.com/2024/c4-modeli-ile-yazilim-mimarisi/</guid><pubDate>Tue, 02 Jan 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Yazılım geliştirme sürecinde, bir projenin karmaşıklığını anlamak, tasarım kararlarını iletmek ve ekip içinde etkili iletişimi sağlamak başarılı bir projenin temel unsurlarıdır. Bu noktada yazılım mimarisini anlamak ve görselleştirmek, proje paydaşları arasında ortak bir anlayış oluşturmanın kritik bir adımıdır. C4 Modeli, yazılım mimarisini basitleştirmek ve görselleştirmek için güçlü bir araç olarak ön plana çıkmaktadır.&lt;/p&gt;
&lt;h2 id=&quot;c4-modeli-nedir&quot;&gt;&lt;a href=&quot;#c4-modeli-nedir&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;C4 Modeli Nedir?&lt;/h2&gt;
&lt;p&gt;C4 Modeli, yazılım mimarisini dört temel düzeyde açıklamak için tasarlanmış bir metodolojidir: Context, Containers, Components, ve Code. Bu düzeyler, yazılım sistemini anlamak ve tasarlamak için farklı perspektifler sunar, böylece proje paydaşları arasında ortak bir dil oluşturulabilir.&lt;/p&gt;
&lt;h3 id=&quot;context-düzeyi&quot;&gt;&lt;a href=&quot;#context-d%C3%BCzeyi&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Context Düzeyi&lt;/h3&gt;
&lt;p&gt;Context Düzeyi, yazılım sisteminin dış dünyasıyla olan ilişkilerini ayrıntılı bir şekilde açıklar. Bu düzey projenin genel amaçlarını belirlemeye ve sistemin çevresindeki faktörleri anlamaya odaklanır. Bu aşamada, projenin amaçları ve kapsamı net bir şekilde belirlenir. Yazılım sistemi, hangi sorunları çözmeyi amaçlıyor? Hangi ihtiyaçlara yanıt veriyor? Bu soruların cevapları sistemin geliştirme sürecinde belirleyici olacaktır.&lt;/p&gt;
&lt;p&gt;Paydaşlar, Context Düzeyi içinde özel bir öneme sahiptir. Bu, kullanıcılar, müşteriler, projenin finansal destekçileri gibi sistemle etkileşime girecek olan herkesi içerir. Paydaşların beklentileri projenin başarısını büyük ölçüde etkiler, bu nedenle bu aşamada bu beklentilerin anlaşılması ve belgelenmesi kritiktir. Bu düzeyde sistemle etkileşimde bulunan diğer yazılım sistemleri, mevcut regulasyonlar ve dış dünyanın genel yapısı da göz önüne alınır. Bu faktörler sistemin gereksinimlerini ve tasarımını doğrudan etkileyebilir.&lt;/p&gt;
&lt;p&gt;Context Düzeyi, yazılım sisteminin genel amacını belirleyerek, dış dünyayla olan ilişkilerini haritalayarak, projenin başlangıcında bir rehber oluşturur. Bu aşama projenin genel hedeflerini netleştirmek ve paydaşların beklentilerini anlamak için hayati bir öneme sahiptir. Başarılı bir mimari tasarım sürecinin temel taşlarından biri olan Context Düzeyi, proje ekibine ortak bir vizyon sağlamak için kullanılır ve projenin geri kalanında takip edilecek olan yolu belirler.&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Hedef Kitlesi: Yazılım geliştirme ekibinin içindeki ve dışındaki teknik ve teknik olmayan herkes.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/2e84c78091154e870b626f149f9d04de/07fc0/context.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 70.27027027027026%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAIAAACgpqunAAAACXBIWXMAAAsTAAALEwEAmpwYAAABVElEQVR42mP4jwr+/fs3ac3RK/deANl///37jxcwIGkDkRdvP+N2qq6csR0uQlgzRN33n790Ynq1Y/tEvRqX7zoHFPnz5y9RNoPc+fdf/dzdCa0rE1pXnbv5GKT5L9GaIeDj+3e/fv4AMn6BAbHOfvb+R/q8K6lzLoVPubDm1AuI1I0bN7Zs2bJ79+6dO3d++fIFi2ZIwF5/+lkiZ59GxRGelD01q26B/fH/4MGDkyZNWrJkyfTp09+9eweJEew2Zy64mjn/csz0C6tPPYdI3bp1a9u2bXv27Nm7d+/Xr1/x+Rlo6vu3r3/8+P6fCAC3GWT158+f9+7dt3//gR07d968dQsijgzwaX779u2MGTOWLVs2derUI0eOgCOP6KgCegkYPAcOHACG7e3bt5HDBrvm379//0IC+K1C1wx06msYePny5fv374HG/fnz5x/BlP3/PwCACQ3xehCqEwAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Context&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/2e84c78091154e870b626f149f9d04de/fcda8/context.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/2e84c78091154e870b626f149f9d04de/12f09/context.png 148w,https://blog.hkucuk.com/static/2e84c78091154e870b626f149f9d04de/e4a3f/context.png 295w,https://blog.hkucuk.com/static/2e84c78091154e870b626f149f9d04de/fcda8/context.png 590w,https://blog.hkucuk.com/static/2e84c78091154e870b626f149f9d04de/efc66/context.png 885w,https://blog.hkucuk.com/static/2e84c78091154e870b626f149f9d04de/c83ae/context.png 1180w,https://blog.hkucuk.com/static/2e84c78091154e870b626f149f9d04de/07fc0/context.png 2480w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;h3 id=&quot;containers-düzeyi&quot;&gt;&lt;a href=&quot;#containers-d%C3%BCzeyi&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Containers Düzeyi&lt;/h3&gt;
&lt;p&gt;Containers düzey, projenin teknik yönünü belirlemekte ve sistemin nasıl çalışacağını görsel bir harita üzerinde ortaya koymaktadır. Sunucular, veritabanları, mesaj kuyrukları gibi temel bileşenlerin, yani “konteyner”ların bu düzeyde detaylı bir şekilde tasarlanması, sisteminin temel altyapısını oluşturur.&lt;/p&gt;
&lt;p&gt;Containers Düzeyi fiziksel altyapıyı ve sistemde kullanılacak teknolojileri belirleme amacı güder. Hangi sunucuların kullanılacağı, veritabanı yönetim sistemi seçimleri, mesajlaşma protokolleri gibi detaylar bu düzeyde açıklığa kavuşturulur. Bu, proje ekibine, sistemin teknik gereksinimlerini ve çalışma prensiplerini net bir şekilde iletmek için kullanılır. Ayrıca bu düzeyde, projenin dağıtım stratejisi de belirlenir. Sistem bulut tabanlı bir altyapı üzerine mi kurulacak, yoksa yerel sunucular üzerinde mi çalışacak gibi soruların yanıtları Containers Düzeyi içinde şekillenir. Containers Düzeyi aynı zamanda sistemin güvenlik önlemlerini ve performans gereksinimlerini belirlemede de kritik bir rol oynar. Bu düzeyde yapılan kararlar projenin başarı kriterlerini doğrudan etkiler.&lt;/p&gt;
&lt;p&gt;Containers Düzeyi, yazılım sisteminin çalışma ortamını belirleyerek, projenin teknik yönünü yönlendirir. Bu aşama sistemin temel altyapısını oluşturmak ve fiziksel dünyadaki kaynakları etkili bir şekilde kullanmak adına kritik bir rol oynar. Projeyi ileriye taşıyan temel kararların alındığı bu düzey, sistemin güçlü ve sağlam bir temel üzerine inşa edilmesini sağlar.&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Hedef Kitlesi: Yazılım geliştirme ekibinin içindeki ve dışındaki teknik kişiler; yazılım mimarları, geliştiriciler ve operasyon/destek personeli dahil.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/9ec25869a4dd2a9a2d7049d3711df440/07fc0/container.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 70.27027027027026%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAIAAACgpqunAAAACXBIWXMAAAsTAAALEwEAmpwYAAACQ0lEQVR42oVSW28SURDeV/+ED/6TPmijxku09sknjcakppo+qPVBjSYm2kR7U5akSCGUNVwSIZGmAsXoSmoCVaACW662xYJdaC3u7jl7zi7OLn3pLU7mnMyZOXP7ZpjOQUQ1HW7X3OIwO9s5nJj9Kk03PFcam71DU8f6n/GpCjx1U/l/Z0I0uB9ZZ4/03D964enJQeuhmaFAKLLLRlpNU7AKQiK/9mQ68tgeCXxagidWKZi6JWgmgbA3M0YIyZLxiSo6hShUJ7LpQwkhezMHvzVfza+zH+t2vq5gw/z++8b4h9XRuZ9OvvYuUR8JVS2xX9bYGjbbSafTPM/H4/FkMsncfls5M5HrY4WLFkHcaitSe9hXPjWWPTeZv/JmecgtnHjxo9+6fPz54rZstOP1elmWtdlsdrudGYvUrk4Xb7hKd3xVpEJs/fV8bWCmeIsrPwxUrbHV647CIFe66ynImIJzNBr1eDw+ny8UCjH7JwBIEMCPYI1gaFsjCKBEyECjo++aGZOstrmvG+6FjVh+q6vvGj8Lm84v6+6Fuj/xm1CjIs0cR7FYTKVSmUwml8tBz+WekaXT49mzE1kJERVjSTLgveev9r7M9lmE85O5v4iCATJDWr/f73A4XCYxAPU1Z+mmu/IgsIIphKeqOZLRcO0SK1yeKgzMlBGB4VJCKTiHw2GO46DtYDDINP/INbHd2lYUWA5V7bYEBxFNwhRYVo19NXhn/wjGxk8QmFar2RTFVlNsNOqiKIKB0p1l2oXiQev5D7fo4XSS5bFEAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Container&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/9ec25869a4dd2a9a2d7049d3711df440/fcda8/container.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/9ec25869a4dd2a9a2d7049d3711df440/12f09/container.png 148w,https://blog.hkucuk.com/static/9ec25869a4dd2a9a2d7049d3711df440/e4a3f/container.png 295w,https://blog.hkucuk.com/static/9ec25869a4dd2a9a2d7049d3711df440/fcda8/container.png 590w,https://blog.hkucuk.com/static/9ec25869a4dd2a9a2d7049d3711df440/efc66/container.png 885w,https://blog.hkucuk.com/static/9ec25869a4dd2a9a2d7049d3711df440/c83ae/container.png 1180w,https://blog.hkucuk.com/static/9ec25869a4dd2a9a2d7049d3711df440/07fc0/container.png 2480w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;h3 id=&quot;components-düzeyi&quot;&gt;&lt;a href=&quot;#components-d%C3%BCzeyi&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Components Düzeyi&lt;/h3&gt;
&lt;p&gt;Bu düzey, yazılım sisteminin ana bileşenlerini tanımlar. Modüller, sınıflar, fonksiyonlar gibi temel yapı taşları Components Düzeyi içinde detaylı bir şekilde incelenir. Bu düzey, projenin kod yapısını oluşturan temel bileşenlerin ne olduğunu belirleyerek geliştiricilere rehberlik eder. &lt;/p&gt;
&lt;p&gt;Components Düzeyi aynı zamanda farklı bileşenler arasındaki ilişkileri ortaya koymak adına kullanılır. Hangi bileşenlerin birbirleriyle etkileşimde bulunacağı, hangi bileşenlerin diğerlerine bağımlı olduğu gibi konular bu düzeyde belirlenir. Bu, sistemin genel işleyişini anlamak ve tasarlamak açısından önemlidir. Bu düzey aynı zamanda, yazılımın genel tasarım prensiplerini belirlemede de kritik bir rol oynar. Her bir bileşenin sorumlulukları, arayüzleri ve işlevselliği bu aşamada belirlenir. Bu, geliştiricilerin belirlenen tasarım hedeflerine uygun bir şekilde kod yazmalarını sağlar.&lt;/p&gt;
&lt;p&gt;Components Düzeyi, yazılımın işlevsel yapısını detaylı bir şekilde inceleyerek sistemin genel işleyişini belirler. Projedeki kod yapısının temelini oluşturan bu düzey, yazılım geliştirme ekibine, sistemdeki temel bileşenleri anlama ve birbirleriyle nasıl etkileşimde bulunduklarını anlama konusunda rehberlik eder.&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Hedef Kitlesi: Yazılım mimarları ve geliştiricileri.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/e80d5fb513f03d75db0e0b12a217f802/07fc0/component.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 70.27027027027026%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAIAAACgpqunAAAACXBIWXMAAAsTAAALEwEAmpwYAAACaElEQVR42nVS30/aUBTu/+aTxjcTH23AGE00Mf6Ir74ZTUyYCgIvWoEJ4ccGKg0QaZAMVqd0QsAAwqAOssKgxY5NSkrrae/Cnvbl5Obcc77v3u+eFlN1yIoMK1kkFz4ubEY218g1VmBRq87XF4OLW7EtPIAH80GNPJJRC1NUZaSMhvIQNu6ce8o1NfdhbtY7W/5ZRoxiqzhzPoMH8UnnpDPjhAqQQQJCDDFgA2uhWfBkPRfFC3/Oz//iUasrdgO5QKgYgla+kR+TtZtFSaRYKl6Pk1Wy0q1ASdFBN+hoNRqpROgmjSrQqnQq4afwdfUa+CDEmr+bq+TqknfJ4DfE6jFV0V2po8PMIe7EIY4yR7IqS7IErVgthntwI2EESaPfwDqvHUfBcfpwan+w5zo5zRVAGV0+Xdrv7BBXlStkB9ZsO2vNWE+YEyJHgFCznXhOUHUKTq31amiYQGXaDPVMQUCiiVVNzIps9FuUqlEg0W33mxvkxopvxeg1wkvG8zhmjpeDyxCQjIuJ7wn8PT5PzK+H1+G9GNfnTF9MB3cHu/Tu7Y9bxIN7fGUf1CEgQZ8TWvet+73Pe6aUycyYW39aGDjUvrM01CS6PX2yCvIP+FfUnw0DkYYSImC9197Z1zNL2mKmzY/tx7+zUVSGYSgdkCC19maWvUncpFPpVColiiJW6pSmz6cNIcOEY8KVdaFfFahut9tqs9psNkg0dyPNNk3TpncmgiAsFgvHcRj3wu1/2t9J7GzHt2mWBsZAGoDbZDIZ1AHJ2HOpVIJKJBIhSVIQBEx8EXtCj+d5gRcgQRgMBur/gQ4CvAH9Vb1ym9GwIwAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Component&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/e80d5fb513f03d75db0e0b12a217f802/fcda8/component.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/e80d5fb513f03d75db0e0b12a217f802/12f09/component.png 148w,https://blog.hkucuk.com/static/e80d5fb513f03d75db0e0b12a217f802/e4a3f/component.png 295w,https://blog.hkucuk.com/static/e80d5fb513f03d75db0e0b12a217f802/fcda8/component.png 590w,https://blog.hkucuk.com/static/e80d5fb513f03d75db0e0b12a217f802/efc66/component.png 885w,https://blog.hkucuk.com/static/e80d5fb513f03d75db0e0b12a217f802/c83ae/component.png 1180w,https://blog.hkucuk.com/static/e80d5fb513f03d75db0e0b12a217f802/07fc0/component.png 2480w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;h3 id=&quot;code-düzeyi&quot;&gt;&lt;a href=&quot;#code-d%C3%BCzeyi&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Code Düzeyi&lt;/h3&gt;
&lt;p&gt;Yazılım geliştirme sürecinin en alt düzeyinde yer alan “Code Düzeyi”, yazılım sisteminin gerçek kodunu ve bu kodun nasıl çalıştığını detaylı bir şekilde açıklar. Bu düzey, geliştiricilerin yazılımın iç yapısını anlamalarını sağlar ve projenin başarılı bir şekilde geliştirilmesine rehberlik eder. Bu aşama yazılımın koduna odaklanır ve sistemdeki her bir bileşenin nasıl uygulandığını, hangi programlama dilleri ve tekniklerin kullanıldığını inceler. Geliştiriciler için kritik bir öneme sahip olan Code Düzeyi, kodun doğru bir şekilde yazılması ve sürdürülebilir bir yapı oluşturulması için temel bilgileri sağlar.&lt;/p&gt;
&lt;p&gt;Code Düzeyi, sistemin içindeki farklı bileşenler arasındaki etkileşimleri detaylı bir şekilde ortaya koyar. Her bir fonksiyonun, sınıfın veya modülün işlevselliği ve bu işlevselliğin diğer bileşenlerle olan entegrasyonu bu aşamada incelenir. Bu, geliştiricilere sistemin nasıl çalıştığını ve farklı bileşenlerin birbirleriyle nasıl etkileşimde bulunduğunu anlama imkanı tanır. Ayrıca Code Düzeyi, yazılımın performansı, güvenliği ve sürdürülebilirliği gibi konuları da kapsar. Bu düzeyde yapılan kararlar yazılımın güvenilirliğini artırmaya ve gelecekteki değişikliklere uyum sağlamaya yöneliktir.&lt;/p&gt;
&lt;p&gt;Sonuç olarak, Code Düzeyi, yazılım sisteminin en derin noktasına inerek kodun iç yapısını açıklar. Bu düzey, geliştiricilere projedeki kodun nasıl yazılması gerektiği, hangi tasarım prensiplerine uyulması gerektiği konusunda rehberlik eder ve yazılımın uzun vadeli başarısını sağlamak adına temel bilgileri sunar.&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Hedef Kitlesi: Yazılım mimarları ve geliştiricileri.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/3bd3e965df352a43f55842be7937ce9f/07fc0/code.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 70.27027027027026%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAIAAACgpqunAAAACXBIWXMAAAsTAAALEwEAmpwYAAABGklEQVR42o2SiW6EMBBD9/+/EZVLVFDY5YZyhPZt3HIVVWuJUTTYE8ea29cLmOc5juN3i7Zt1/6Nb1mW+QhjDM29+PHIkyRJ0/Qsnqap7/vPHT4s7hYI6rqGNo4jI5nLgXGbeH+POowQiTOCPU36azGCqqqyLKPu+y+Jh2FAlud5WZacmQUV50VR0KcD+UKsisZ13TAMfd/nzcTRNE1oEQQBQ6ExYhPjRDlz7rpO5lURwzbLlv/BNgwmeZ7nvrnkJBId5QQw7DgO1zL66s1m0dtknmWASlUHth7/X2Dkwc3Y5mFKiNp1/Sn2s1jmcR5F0epWv4gNF4pAOKStZdBKPpMhvN/8fpp2sVYwcVjFsgEGi/GIv53nnlp334roMqFKcNrSAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Code&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/3bd3e965df352a43f55842be7937ce9f/fcda8/code.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/3bd3e965df352a43f55842be7937ce9f/12f09/code.png 148w,https://blog.hkucuk.com/static/3bd3e965df352a43f55842be7937ce9f/e4a3f/code.png 295w,https://blog.hkucuk.com/static/3bd3e965df352a43f55842be7937ce9f/fcda8/code.png 590w,https://blog.hkucuk.com/static/3bd3e965df352a43f55842be7937ce9f/efc66/code.png 885w,https://blog.hkucuk.com/static/3bd3e965df352a43f55842be7937ce9f/c83ae/code.png 1180w,https://blog.hkucuk.com/static/3bd3e965df352a43f55842be7937ce9f/07fc0/code.png 2480w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;c4-modelinin-avantajları&quot;&gt;&lt;a href=&quot;#c4-modelinin-avantajlar%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;C4 Modeli’nin Avantajları&lt;/h2&gt;
&lt;p&gt;Yazılım geliştirme sürecinde mimari tasarımın etkili bir şekilde yönetilmesi ve paydaşlar arasında ortak bir anlayışın oluşturulması, projenin başarısı için kritik bir faktördür. C4 Modeli, yazılım mimarisini görselleştirmek ve iletişimi güçlendirmek adına kullanılan bir metodoloji olarak ön plana çıkarken bir dizi avantaj sunar.&lt;/p&gt;
&lt;h3 id=&quot;1-i̇letişimi-kolaylaştırma&quot;&gt;&lt;a href=&quot;#1-i%CC%87leti%C5%9Fimi-kolayla%C5%9Ft%C4%B1rma&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;1. İletişimi Kolaylaştırma&lt;/h3&gt;
&lt;p&gt;C4 Modeli, farklı paydaşlar arasında ortak bir dil oluşturarak iletişimi kolaylaştırır. Yazılım geliştirme sürecinde yer alan tasarım kararlarını ve mimari kavramları anlamak, proje ekibinin yanı sıra yöneticiler, müşteriler ve diğer paydaşlar arasındaki etkileşimi güçlendirir. Bu sayede proje sürecinde ortaya çıkabilecek anlaşmazlıkların önüne geçilir.&lt;/p&gt;
&lt;h3 id=&quot;2-karmaşıklığı-yönetme&quot;&gt;&lt;a href=&quot;#2-karma%C5%9F%C4%B1kl%C4%B1%C4%9F%C4%B1-y%C3%B6netme&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;2. Karmaşıklığı Yönetme&lt;/h3&gt;
&lt;p&gt;C4 Modeli, yazılım sisteminin farklı düzeylerde görselleştirilmesi sayesinde karmaşıklığı yönetilebilir bir seviyeye indirir. Context, Containers, Components, ve Code düzeyleri, sistemi genel bir bakıştan başlayarak giderek daha fazla detay ekleyerek görselleştirme imkanı tanır. Bu da projedeki karmaşıklığı anlamak ve yönetmek adına güçlü bir araç sağlar.&lt;/p&gt;
&lt;h3 id=&quot;3-tasarım-kararlarını-belirtme&quot;&gt;&lt;a href=&quot;#3-tasar%C4%B1m-kararlar%C4%B1n%C4%B1-belirtme&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;3. Tasarım Kararlarını Belirtme&lt;/h3&gt;
&lt;p&gt;Her bir düzeyi ile C4 Modeli, tasarım kararlarını belirleme konusunda rehberlik eder. Context düzeyinde genel amaçlar ve ilişkiler belirlenirken, Containers düzeyinde teknoloji seçimleri ve dağıtım stratejileri ele alınır. Components düzeyi, yazılımın işlevsel yapısını belirlerken, Code düzeyi yazılımın gerçek kodunu detaylı bir şekilde açıklar. Bu proje ekibine tutarlı bir tasarım ve geliştirme süreci sağlamak adına önemlidir.&lt;/p&gt;
&lt;h3 id=&quot;4-dinamik-değişiklere-uyum-sağlama&quot;&gt;&lt;a href=&quot;#4-dinamik-de%C4%9Fi%C5%9Fiklere-uyum-sa%C4%9Flama&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;4. Dinamik Değişiklere Uyum Sağlama&lt;/h3&gt;
&lt;p&gt;C4 Modeli, sistemin evrimi ve değişikliklere uyum sağlama yeteneği konusunda avantaj sağlar. Her bir düzeyde yapılan belirlemeler, projenin gelecekteki değişikliklere rahatça adapte olabilmesini sağlar. Bu da yazılımın sürdürülebilirliğini artırır ve projenin yaşam döngüsü boyunca esnekliği sağlar.&lt;/p&gt;
&lt;h3 id=&quot;5-yazılımın-güvenliği-ve-performansını-artırma&quot;&gt;&lt;a href=&quot;#5-yaz%C4%B1l%C4%B1m%C4%B1n-g%C3%BCvenli%C4%9Fi-ve-performans%C4%B1n%C4%B1-art%C4%B1rma&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;5. Yazılımın Güvenliği ve Performansını Artırma&lt;/h3&gt;
&lt;p&gt;C4 Modeli, yazılımın güvenliği ve performansını artırmak adına tasarım kararlarını belirleme konusunda etkilidir. Her bir düzeyde yapılan analizler, güvenlik önlemleri, performans gereksinimleri ve sürdürülebilir tasarım prensipleri konusunda rehberlik eder. Bu, yazılımın uzun vadeli başarısını güvence altına alır.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;sonuç&quot;&gt;&lt;a href=&quot;#sonu%C3%A7&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Sonuç&lt;/h2&gt;
&lt;p&gt;Yazılım geliştirme sürecinde başarılı bir şekilde ilerlemek, etkili bir mimari tasarımın yanı sıra proje paydaşları arasında güçlü bir iletişim ve ortak bir anlayışın oluşturulmasını gerektirir. C4 Modeli, bu ihtiyaçları karşılamak adına sağladığı avantajlarla birlikte, yazılım mimarisini yönetme ve görselleştirme konusunda güçlü bir araç olarak öne çıkıyor.&lt;/p&gt;
&lt;p&gt;Bu metodolojinin sunduğu avantajlar, projenin başarısına önemli katkılarda bulunur. İletişimi kolaylaştırma özelliği, farklı paydaşlar arasında ortak bir dil oluşturarak proje ekibinin tutarlı bir vizyon etrafında birleşmesini sağlar. Bu da projede koordinasyonu ve işbirliğini artırır.&lt;/p&gt;
&lt;p&gt;C4 Modeli’nin karmaşıklığı yönetme yeteneği, yazılım sisteminin farklı düzeylerde görselleştirilmesi sayesinde mümkün olur. Context, Containers, Components ve Code düzeyleri, sistemi genel bir bakıştan başlayarak giderek daha fazla detay ekleyerek anlamamıza imkan tanır. Bu da projenin karmaşık yapılarını anlamak ve yönetmek açısından güçlü bir temel oluşturur.&lt;/p&gt;
&lt;p&gt;Tasarım kararlarını belirleme konusundaki etkisi, her bir düzeyin belirli bir yönüyle ilgilenmesi ve bu sayede sistemin genel tasarımının tutarlılığını sağlamasıdır. Her bir düzeyde belirlenen prensipler, sistemin işlevselliği, güvenliği ve performansı üzerinde doğrudan bir etkiye sahiptir. Bu da yazılımın uzun vadeli başarısını güvence altına alır.&lt;/p&gt;
&lt;p&gt;C4 Modeli’nin dinamik değişikliklere uyum sağlama yeteneği, projenin evrimi ve değişen ihtiyaçlara hızlı bir şekilde adapte olabilme esnekliği sağlar. Her bir düzeyde yapılan belirlemeler projenin gelecekteki değişikliklere rahatça uyum sağlamasını mümkün kılar.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://c4model.com/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://c4model.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.mohanraj.dev/blogs/c4model&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.mohanraj.dev/blogs/c4model&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://crashedmind.github.io/PlantUMLHitchhikersGuide/C4/c4.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://crashedmind.github.io/PlantUMLHitchhikersGuide/C4/c4.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2024/c4-modeli-ile-yazilim-mimarisi/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Aho-Corasick Algoritması: Çoklu Anahtar Kelime Arama Tekniği]]></title><description><![CDATA[Metin işleme ve metin madenciliği disiplinlerinde, belirli anahtar kelimeleri metin içinde hızlı ve etkili bir biçimde tespit etme gerekliliği sıklıkla karşılaşılan bir zorunluluktur. Bu bağlamda, Aho-Corasick algoritması, bu tür metin işleme görevleri için geliştirilmiş güçlü bir algoritma olarak öne çıkar.]]></description><link>https://blog.hkucuk.com/2023/aho-corasick/</link><guid isPermaLink="false">https://blog.hkucuk.com/2023/aho-corasick/</guid><pubDate>Mon, 11 Sep 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Metin işleme ve metin madenciliği disiplinlerinde, belirli anahtar kelimeleri metin içinde hızlı ve etkili bir biçimde tespit etme gerekliliği sıklıkla karşılaşılan bir zorunluluktur. Bu bağlamda, &lt;a href=&quot;https://en.wikipedia.org/wiki/Aho%E2%80%93Corasick_algorithm&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Aho-Corasick algoritması&lt;/a&gt;, bu tür metin işleme görevleri için geliştirilmiş güçlü bir algoritma olarak öne çıkar.&lt;/p&gt;
&lt;p&gt;Metin madenciliği, metin içeriğinin detaylı bir analizini yapmayı ve özellikle büyük metin koleksiyonlarında belirli örüntüleri, kelimeleri veya terimleri tespit etmeyi amaçlayan bir veri madenciliği disiplinidir. Bu bağlamda, büyük metin kümesi üzerinde belirli anahtar kelimeleri tespit etmek, metin madenciliği uygulamalarının önemli bir bileşenidir. Bu tür görevler için, Aho-Corasick algoritması metin içerisinde aynı anda birden fazla anahtar kelimeyi arayıp bulma işleminde etkili bir yaklaşım sunmaktadır.&lt;/p&gt;
&lt;h2 id=&quot;trie-veri-yapısı&quot;&gt;&lt;a href=&quot;#trie-veri-yap%C4%B1s%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Trie Veri Yapısı&lt;/h2&gt;
&lt;p&gt;Aho-Corasick algoritmasının temel yapısı &lt;a href=&quot;https://en.wikipedia.org/wiki/Trie&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Trie (ağaç) veri yapısına&lt;/a&gt; dayanmaktadır. Trie, metin işleme alanında etkili bir biçimde kullanılan bir veri yapısıdır. Kelimeleri veya karakter dizilerini temsil etmek için tasarlanmış olan Trie, metin içinde bu kelimeleri hızlı bir şekilde tespit etme amacıyla kullanılır. Trie yapısındaki her bir düğüm, bir karakteri veya kelimenin bir parçasını sembolize eder ve bir kelimenin sonunu işaretler. Bu özelliği sayesinde, Trie yapısı metin içindeki kelimeleri hiyerarşik bir şekilde organize eder ve arama işlemini optimize eder.&lt;/p&gt;
&lt;h2 id=&quot;aho-corasick-algoritması-nasıl-çalışır&quot;&gt;&lt;a href=&quot;#aho-corasick-algoritmas%C4%B1-nas%C4%B1l-%C3%A7al%C4%B1%C5%9F%C4%B1r&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Aho-Corasick Algoritması Nasıl Çalışır?&lt;/h2&gt;
&lt;p&gt;Aho-Corasick algoritması, metin içindeki anahtar kelimeleri bulma görevini gerçekleştirirken Trie veri yapısını kullanır. Bu algoritma, anahtar kelimelerin Trie’deki yollarını oluşturur ve bu yolları gezerek metin içindeki anahtar kelimeleri bulur. Ayrıca, başarısız geçişleri (fail transitions) hesaplayarak arama süresini optimize eder.&lt;/p&gt;
&lt;h3 id=&quot;1-trie-yapısının-oluşturulması&quot;&gt;&lt;a href=&quot;#1-trie-yap%C4%B1s%C4%B1n%C4%B1n-olu%C5%9Fturulmas%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;1. Trie Yapısının Oluşturulması&lt;/h3&gt;
&lt;p&gt;İlk adım, metin içinde aranacak anahtar kelimelerin Trie veri yapısına eklenmesidir. Her bir anahtar kelime, Trie’deki bir yol olarak temsil edilir. Örnek bir Trie yapısı oluşturmak için şu adımları takip ederiz:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Trie veri yapısının kök düğümünü oluştur.&lt;/li&gt;
&lt;li&gt;Anahtar kelimeleri sırayla Trie’ye eklerken her karakter için bir düğüm oluştururuz ve bu düğümü Trie’deki ilgili düğüme bağlarız.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;2-başarısız-geçişlerin-hesaplanması&quot;&gt;&lt;a href=&quot;#2-ba%C5%9Far%C4%B1s%C4%B1z-ge%C3%A7i%C5%9Flerin-hesaplanmas%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;2. Başarısız Geçişlerin Hesaplanması&lt;/h3&gt;
&lt;p&gt;Başarısız geçişler (fail transitions), metin içinde aranacak anahtar kelimelerin Trie yapısında hızlı bir şekilde gezilmesini sağlar. Her düğümün bir “fail_state” (başarısız geçiş) bağlantısı vardır ve bu bağlantılar Trie’deki başarısız geçişleri yönlendirir. Başarısız geçişler hesaplanırken şu adımlar takip edilir:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Kök düğümünün tüm çocukları için fail_state bağlantıları başlangıçta kök düğüme yönlendirilir.&lt;/li&gt;
&lt;li&gt;BFS (breadth-first search) algoritması kullanılarak Trie yapısı üzerinde gezilir ve her düğüm için fail_state bağlantıları hesaplanır. Bu bağlantılar, başarısız geçişlerin doğru bir şekilde yönlendirilmesini sağlar.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;3-metin-i̇çinde-anahtar-kelimelerin-aranması&quot;&gt;&lt;a href=&quot;#3-metin-i%CC%87%C3%A7inde-anahtar-kelimelerin-aranmas%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;3. Metin İçinde Anahtar Kelimelerin Aranması&lt;/h3&gt;
&lt;p&gt;Metin içinde anahtar kelimeleri aramak için Trie yapısını kullanırız. Metin üzerinde gezinirken her karakter için şu adımları izleriz:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Mevcut durumu (state) Trie yapısındaki kök düğüm olarak başlatırız.&lt;/li&gt;
&lt;li&gt;Mevcut karakteri alırız ve bu karakteri Trie’de bir sonraki durumu (state) bulmak için kullanırız.&lt;/li&gt;
&lt;li&gt;Eğer bir sonraki durum (state) yoksa veya anahtar kelimenin sonu değilse, fail_state bağlantılarını takip ederiz.&lt;/li&gt;
&lt;li&gt;Anahtar kelimenin sonu bulunursa, bu kelimenin pozisyonunu kaydederiz.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Aşağıda, Aho-Corasick algoritmasının basit bir pseudocode örneği verilmiştir:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;function &lt;span class=&quot;token function&quot;&gt;AhoCorasick&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;text&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; keywords&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
    create Trie from keywords
    set fail transitions in Trie
    result &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; empty dictionary
    
    state &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; root of Trie
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; to &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;text&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
        while state is not found in Trie and state is not root&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
            state &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; state&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;fail_state
        
        state &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;find_next_state&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;state&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; text&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; state is None&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
            state &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; root of Trie
        
        &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; output in state&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;outputs&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; output not in result&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
                result&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;output&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; empty list
            result&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;output&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;output&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; result&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Bu pseudocode, Aho-Corasick algoritmasının ana mantığını ve işleyişini göstermektedir. Algoritma, metin içindeki anahtar kelimeleri hızlı bir şekilde bulmak için Trie yapısını kullanır ve başarısız geçişlerin hesaplanmasıyla performansını optimize eder.&lt;/p&gt;
&lt;h2 id=&quot;golangde-aho-corasick-uygulaması&quot;&gt;&lt;a href=&quot;#golangde-aho-corasick-uygulamas%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;GoLang’de Aho-Corasick uygulaması:&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;fmt&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; TrieNode &lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	children    &lt;span class=&quot;token keyword&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;rune&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;TrieNode
	fail        &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;TrieNode
	isEndOfWord &lt;span class=&quot;token builtin&quot;&gt;bool&lt;/span&gt;
	keyword     &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; AhoCorasick &lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	root &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;TrieNode
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;newTrieNode&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;TrieNode &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;TrieNode&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		children&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;rune&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;TrieNode&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
		fail&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;     &lt;span class=&quot;token boolean&quot;&gt;nil&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;NewAhoCorasick&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;keywords &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;AhoCorasick &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	root &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;newTrieNode&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	ac &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;AhoCorasick&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;root&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; root&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; keyword &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;range&lt;/span&gt; keywords &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		ac&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;insert&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;keyword&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	ac&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;setFailTransitions&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; ac
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;ac &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;AhoCorasick&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;insert&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;keyword &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	node &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; ac&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;root
	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; char &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;range&lt;/span&gt; keyword &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; found &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; node&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;children&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;char&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;found &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			node&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;children&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;char&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;newTrieNode&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
		node &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; node&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;children&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;char&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	node&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;isEndOfWord &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;
	node&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;keyword &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; keyword
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;ac &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;AhoCorasick&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;setFailTransitions&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	queue &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;TrieNode&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	root &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; ac&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;root

	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; child &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;range&lt;/span&gt; root&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;children &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		child&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;fail &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; root
		queue &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;queue&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; child&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;queue&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		node &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; queue&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
		queue &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; queue&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;

		&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; char&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; child &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;range&lt;/span&gt; node&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;children &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			failNode &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; node&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;fail

			&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; failNode &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; root &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; failNode&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;children&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;char&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;nil&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
				failNode &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; failNode&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;fail
			&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

			&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; nextNode&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; found &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; failNode&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;children&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;char&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; found &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
				child&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;fail &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; nextNode
			&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
				child&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;fail &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; root
			&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

			queue &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;queue&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; child&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;ac &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;AhoCorasick&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Search&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;text &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	result &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	node &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; ac&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;root

	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; char &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;range&lt;/span&gt; text &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; node &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; ac&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;root &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; node&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;children&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;char&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;nil&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			node &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; node&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;fail
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

		&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; nextNode&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; found &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; node&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;children&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;char&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; found &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			node &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; nextNode
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			node &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; ac&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;root
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

		&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; node&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;isEndOfWord &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; exists &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; result&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;node&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;keyword&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;exists &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
				result&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;node&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;keyword&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
			&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
			result&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;node&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;keyword&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;result&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;node&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;keyword&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;node&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;keyword&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; result
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	keywords &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;what&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;hat&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;ver&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;er&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	text &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;whatever, err ... , wherever&quot;&lt;/span&gt;

	ac &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;NewAhoCorasick&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;keywords&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	results &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; ac&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Search&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;text&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

	fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;results&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Program çalıştırıldığında çıktısı aşağıdaki gibi olacaktır.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;json&quot;&gt;&lt;pre class=&quot;language-json&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;map&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;er&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;22&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; ver&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;25&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; what&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Programın çalışır haline &lt;a href=&quot;https://go.dev/play/p/il1VxMO6tgW&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;şuradan&lt;/a&gt; erişilebilir.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Aho%E2%80%93Corasick_algorithm&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/Aho%E2%80%93Corasick_algorithm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://cp-algorithms.com/string/aho_corasick.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://cp-algorithms.com/string/aho_corasick.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://web.stanford.edu/class/archive/cs/cs166/cs166.1186/lectures/02/Small02.pdf&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;http://web.stanford.edu/class/archive/cs/cs166/cs166.1186/lectures/02/Small02.pdf&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2023/aho-corasick/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Levenshtein Mesafesi Nedir, Nasıl Hesaplanır?]]></title><description><![CDATA[Levenshtein Mesafesi, metin veya dizgeler arasındaki benzerliği veya farklılığı ölçmenin temel bir yöntemidir ve genellikle bilgisayar bilimleri, doğal dil işleme ve genetik analiz gibi birçok farklı alanın yanı sıra günlük hayatta da yaygın olarak kullanılır. Bu metrik, iki dizge arasındaki karakterlerin kaç kez değiştirilmesi, eklenmesi veya çıkarılması gerektiğini belirleyerek bu dizgelerin ne kadar benzer veya farklı olduğunu nicel olarak ifade eder.]]></description><link>https://blog.hkucuk.com/2023/levenshtein-distance/</link><guid isPermaLink="false">https://blog.hkucuk.com/2023/levenshtein-distance/</guid><pubDate>Sat, 02 Sep 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Levenshtein_distance&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Levenshtein Mesafesi&lt;/a&gt;, metin veya dizgeler arasındaki benzerliği veya farklılığı ölçmenin temel bir yöntemidir ve genellikle bilgisayar bilimleri, doğal dil işleme ve genetik analiz gibi birçok farklı alanın yanı sıra günlük hayatta da yaygın olarak kullanılır. Bu metrik, iki dizge arasındaki karakterlerin kaç kez değiştirilmesi, eklenmesi veya çıkarılması gerektiğini belirleyerek bu dizgelerin ne kadar benzer veya farklı olduğunu nicel olarak ifade eder. Bu nedenle Levenshtein Mesafesi, veri madenciliği, otomatik düzeltme sistemleri, yazılı metin karşılaştırmaları ve hatta genetik dizilim analizinde önemli bir rol oynamaktadır. İlerleyen bölümlerde, Levenshtein Mesafesi’nin nasıl hesaplandığını ayrıntılı bir şekilde inceleyeceğiz ve bu metriği anlamanıza yardımcı olacak örnekler sunacağız.&lt;/p&gt;
&lt;h2 id=&quot;levenshtein-mesafesi-nedir&quot;&gt;&lt;a href=&quot;#levenshtein-mesafesi-nedir&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Levenshtein Mesafesi Nedir?&lt;/h2&gt;
&lt;p&gt;Levenshtein Mesafesi, metin veya dizgeler arasındaki benzerlik veya farklılık ölçümünü belirlemek amacıyla kullanılan bir metrik veya algoritmadır. Bu metrik, iki dizge arasındaki karakterlerin nasıl değiştirildiğini, eklenip çıkarıldığını belirleyerek bu iki dizgenin birbirine ne kadar benzediğini nicel olarak ifade eder. İki dizge arasındaki farkın veya benzerliğin ölçülmesinde oldukça kullanışlıdır ve birçok uygulama alanında kendini gösterir.&lt;/p&gt;
&lt;p&gt;Levenshtein Mesafesi, ilk olarak 1965 yılında Sovyet bilgisayar bilimcisi &lt;a href=&quot;https://en.wikipedia.org/wiki/Vladimir_Levenshtein&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Vladimir Levenshtein&lt;/a&gt; tarafından tanıtılmıştır. Bu nedenle bu metrik, onun adını taşır. Levenshtein, bu metriği yazım hatalarını düzeltme işlemlerini analiz etmek amacıyla geliştirdi, ancak daha sonra birçok farklı alanda kullanım potansiyeli keşfedildi.&lt;/p&gt;
&lt;p&gt;Bu mesafe hesaplanırken, iki dizge arasındaki karakter diziliminin nasıl değiştirildiğini, eklendiğini veya çıkarıldığını gözlemlemek esastır. Her bir karakter dizgesi birbirine dönüştürülmeye çalışıldığında ne kadar çok düzenleme işlemi gerekiyorsa, Levenshtein Mesafesi de o kadar büyük olur. Yani, iki dizge arasındaki mesafe, bu düzenleme işlemlerinin sayısını temsil eder.&lt;/p&gt;
&lt;p&gt;Levenshtein Mesafesi’nin temel amacı, iki dizge arasındaki farklılığı nicel olarak ifade ederek metin benzerliği analizi, yazım denetimi, veri eşleme, genetik dizilim karşılaştırmaları ve daha birçok alanda kullanım olanağı sunmaktır. Özellikle doğal dil işleme uygulamalarında ve veri analizi projelerinde sıkça kullanılır. Bu algoritma, metin madenciliği ve veri işleme alanlarında önemli bir araçtır ve çok sayıda kullanım senaryosu sunar. İlerleyen bölümlerde, Levenshtein Mesafesi’nin nasıl hesaplandığını ve uygulama örneklerini daha ayrıntılı bir şekilde inceleyeceğiz.&lt;/p&gt;
&lt;h2 id=&quot;levenshtein-mesafesi-nasıl-hesaplanır&quot;&gt;&lt;a href=&quot;#levenshtein-mesafesi-nas%C4%B1l-hesaplan%C4%B1r&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Levenshtein Mesafesi Nasıl Hesaplanır?&lt;/h2&gt;
&lt;p&gt;Levenshtein Mesafesi, dinamik programlama yöntemiyle hesaplanır. Temel fikir, iki dizgeyi karşılaştırarak ve her bir karakterin eşleşme durumunu izleyerek bir matris oluşturmaktır.&lt;/p&gt;
&lt;p&gt;Hesaplama adımları şunlardır:&lt;/p&gt;
&lt;h3 id=&quot;adım-1-i̇lk-matrisi-oluşturma&quot;&gt;&lt;a href=&quot;#ad%C4%B1m-1-i%CC%87lk-matrisi-olu%C5%9Fturma&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Adım 1: İlk Matrisi Oluşturma&lt;/h3&gt;
&lt;p&gt;İlk olarak, iki dizgeyi karşılaştırmak için bir matris oluşturuyoruz. Matrisin satırları birinci dizgeyi, sütunları ise ikinci dizgeyi temsil eder. Matrisin boyutları, her iki dizgenin uzunluğuna göre belirlenir. Matrisin ilk satırı ve ilk sütunu sıfır değerleri ile başlar. Bu matris, Levenshtein Mesafesi hesaplamasının temelini oluşturur.&lt;/p&gt;
&lt;p&gt;Örnek:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;json&quot;&gt;&lt;pre class=&quot;language-json&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;  |   | M | I | N | E
-----------------------
  | &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; | &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; | &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; | &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt; | &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;
-----------------------
H | &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; |   |   |   |  
-----------------------
O | &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; |   |   |   |  
-----------------------
U | &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt; |   |   |   |  
-----------------------
S | &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt; |   |   |   |  &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id=&quot;adım-2-matrisi-doldurma&quot;&gt;&lt;a href=&quot;#ad%C4%B1m-2-matrisi-doldurma&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Adım 2: Matrisi Doldurma&lt;/h3&gt;
&lt;p&gt;Matrisin oluşturulmasının ardından, her bir hücrenin değerini hesaplamaya başlarız. Her hücre, iki karşılaştırılan karakterin eşleşme durumuna göre değer alır. İki karakter aynı ise, o hücrenin değeri sol üst köşedeki hücrenin değeridir. Eğer karakterler eşleşmiyorsa, o hücrenin değeri sol, üst ve sol üst köşedeki hücrelerin en küçüğüne bir eklemesi yapılmasıyla belirlenir.&lt;/p&gt;
&lt;p&gt;Matematiksel olarak, iki karakter arasındaki mesafe (D) şu şekilde hesaplanır:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;json&quot;&gt;&lt;pre class=&quot;language-json&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;D(i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; j) = &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; eğer string1&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; = string2&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
D(i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; j) = min(D(i&lt;span class=&quot;token number&quot;&gt;-1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; j)&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; D(i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; j&lt;span class=&quot;token number&quot;&gt;-1&lt;/span&gt;)&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; D(i&lt;span class=&quot;token number&quot;&gt;-1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; j&lt;span class=&quot;token number&quot;&gt;-1&lt;/span&gt;)) + &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; eğer string1&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; ≠ string2&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Burada, i ve j, iki dizgeyi karşılaştırmada kullanılan indeksleri temsil eder.&lt;/p&gt;
&lt;p&gt;Örnek:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;json&quot;&gt;&lt;pre class=&quot;language-json&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;  |   | M | I | N | E
-----------------------
  | &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; | &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; | &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; | &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt; | &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;
-----------------------
H | &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; | &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; | &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; | &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt; | &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;
-----------------------
O | &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; | &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; | &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; | &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt; | &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;
-----------------------
U | &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt; | &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt; | &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt; | &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt; | &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;
-----------------------
S | &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt; | &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt; | &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt; | &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt; | &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id=&quot;adım-3-levenshtein-mesafesini-bulma&quot;&gt;&lt;a href=&quot;#ad%C4%B1m-3-levenshtein-mesafesini-bulma&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Adım 3: Levenshtein Mesafesini Bulma&lt;/h3&gt;
&lt;p&gt;Matrisin sağ alt köşesindeki değer, Levenshtein Mesafesi’ni temsil eder. Bu değer, iki dizge arasındaki minimum düzenleme işlemi sayısını ifade eder. İki dizge arasındaki benzerlik veya farklılığı ölçmek istediğinizde, bu değeri kullanabilirsiniz.&lt;/p&gt;
&lt;p&gt;Matematiksel olarak, Levenshtein Mesafesi (L) şu şekilde hesaplanır:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;json&quot;&gt;&lt;pre class=&quot;language-json&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;L = D(m&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; n)&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Burada, m ve n, sırasıyla birinci ve ikinci dizgenin uzunluğunu temsil eder.r&lt;/p&gt;
&lt;p&gt;Örnek:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;json&quot;&gt;&lt;pre class=&quot;language-json&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;Levenshtein Mesafesi = &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Levenshtein Mesafesi’nin hesaplanma süreci bu adımları izler ve sonuç olarak iki dizge arasındaki benzerlik veya farklılığı nicel olarak ifade eder.&lt;/p&gt;
&lt;p&gt;Levenshtein Mesafesi hesaplama işlemi, karakter dizgelerini karşılaştırmanın ve düzenleme işlemlerini belirlemenin güçlü bir yolunu sunar. Bu nedenle yazım denetimi, metin benzerliği analizi, veri eşleme ve genetik dizilim karşılaştırmaları gibi birçok farklı uygulama alanında yaygın olarak kullanılır.&lt;/p&gt;
&lt;h2 id=&quot;golangde-levenshtein-mesafesi-uygulaması&quot;&gt;&lt;a href=&quot;#golangde-levenshtein-mesafesi-uygulamas%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;GoLang’de Levenshtein Mesafesi uygulaması:&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;fmt&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Min&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; c &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; a &lt;span class=&quot;token operator&quot;&gt;&amp;lt;=&lt;/span&gt; b &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; a &lt;span class=&quot;token operator&quot;&gt;&amp;lt;=&lt;/span&gt; c &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; a
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; b &lt;span class=&quot;token operator&quot;&gt;&amp;lt;=&lt;/span&gt; a &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; b &lt;span class=&quot;token operator&quot;&gt;&amp;lt;=&lt;/span&gt; c &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; b
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; c
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;LevenshteinDistance&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;str1&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; str2 &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	m &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;str1&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	n &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;str2&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

	matrix &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; m&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;range&lt;/span&gt; matrix &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		matrix&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; n&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;lt;=&lt;/span&gt; m&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		matrix&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; i
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;&amp;lt;=&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; j&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		matrix&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; j
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;lt;=&lt;/span&gt; m&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;&amp;lt;=&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; j&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			cost &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;
			&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; str1&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; str2&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
				cost &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
			&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
			matrix&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Min&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
				matrix&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
				matrix&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
				matrix&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;cost&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
			&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; matrix&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;m&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;n&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	str1 &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;hors&quot;&lt;/span&gt;
	str2 &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;rose&quot;&lt;/span&gt;

	distance &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;LevenshteinDistance&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;str1&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; str2&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

	fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Levenshtein Distance between &apos;%s&apos; and &apos;%s&apos;: %d\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; str1&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; str2&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; distance&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Program çalıştırıldığında çıktısı aşağıdaki gibi olacaktır.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;json&quot;&gt;&lt;pre class=&quot;language-json&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;Levenshtein Distance between &apos;hors&apos; and &apos;rose&apos;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Çıktı, “hors” ve “rose” dizgeleri arasındaki Levenshtein Mesafesi’ni (Levenshtein Distance) gösterir ve sonucun 2 olduğunu belirtir. Bu, iki dizge arasında en az 2 düzenleme işlemi gerektiği anlamına gelir.&lt;/p&gt;
&lt;p&gt;Programın çalışır haline &lt;a href=&quot;https://go.dev/play/p/3zyfywozZAo&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;şuradan&lt;/a&gt; erişilebilir.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Levenshtein_distance&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/Levenshtein_distance&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://medium.com/@ethannam/understanding-the-levenshtein-distance-equation-for-beginners-c4285a5604f0&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://medium.com/@ethannam/understanding-the-levenshtein-distance-equation-for-beginners-c4285a5604f0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.paperspace.com/measuring-text-similarity-using-levenshtein-distance/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://blog.paperspace.com/measuring-text-similarity-using-levenshtein-distance/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2023/levenshtein-distance/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Yazılım Entropisi: Karmaşıklığın ve Bozulmanın Birleşimi]]></title><description><![CDATA[Yazılım geliştirme, günümüzün hızla dijitalleşen dünyasında kritik bir öneme sahiptir. Ancak yazılım projelerinin yaşam döngüsü boyunca karşılaştığı zorluklar ve sorunlar, yazılımın zaman içinde nasıl bozulabileceğini ve karmaşıklığın nasıl artabileceğini göstermektedir. Yazılım entropisi, yazılımın karmaşıklığının ve bozulmasının artışına işaret eden bir terimdir.]]></description><link>https://blog.hkucuk.com/2023/yazilim-entropisi/</link><guid isPermaLink="false">https://blog.hkucuk.com/2023/yazilim-entropisi/</guid><pubDate>Thu, 17 Aug 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Yazılım geliştirme, günümüzün hızla dijitalleşen dünyasında kritik bir öneme sahiptir. Ancak yazılım projelerinin yaşam döngüsü boyunca karşılaştığı zorluklar ve sorunlar, yazılımın zaman içinde nasıl bozulabileceğini ve karmaşıklığın nasıl artabileceğini göstermektedir. Yazılım entropisi, yazılımın karmaşıklığının ve bozulmasının artışına işaret eden bir terimdir. Bu kavramın arkasındaki temel prensipleri ve etkileri irdeleyerek, yazılım projelerinin neden zamanla karmaşıklık ve bozulma eğiliminde olduğunu anlamaya çalışacağız.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/d6c4fbcae783ab89e7bc5dd426bdbdbf/8369b/chaos.webp&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 66.89189189189189%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/webp;base64,UklGRpwAAABXRUJQVlA4IJAAAABQBACdASoUAA0APtFWpEwoJKOiMAgBABoJbACdMoADQxjvluVuwKv1VHwAAP6dm9URA0tpOi4/rCx+3ZDnac9/nlfPeRBWf2h2SYlTdR5kk9rQdGoqQwyfq07nY3EW2HZlUsMUY2u9TUCXIdKfSFocqfc7wpOPWLNGMm+oq7ckJkdiV85LQeexvipXR5wggAA=&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Yazılım Entropisi&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/d6c4fbcae783ab89e7bc5dd426bdbdbf/5ca24/chaos.webp&quot;
        srcset=&quot;https://blog.hkucuk.com/static/d6c4fbcae783ab89e7bc5dd426bdbdbf/cbe2e/chaos.webp 148w,https://blog.hkucuk.com/static/d6c4fbcae783ab89e7bc5dd426bdbdbf/3084c/chaos.webp 295w,https://blog.hkucuk.com/static/d6c4fbcae783ab89e7bc5dd426bdbdbf/5ca24/chaos.webp 590w,https://blog.hkucuk.com/static/d6c4fbcae783ab89e7bc5dd426bdbdbf/8369b/chaos.webp 780w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;h3 id=&quot;yazılım-entropisinin-tanımı&quot;&gt;&lt;a href=&quot;#yaz%C4%B1l%C4%B1m-entropisinin-tan%C4%B1m%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Yazılım Entropisinin Tanımı&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Software_entropy&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Yazılım entropisi&lt;/a&gt; kavramı, &lt;a href=&quot;https://en.wikipedia.org/wiki/Second_law_of_thermodynamics&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;termodinamikten&lt;/a&gt; türetilmiş bir terim olarak, yazılım geliştirme süreçlerinde meydana gelen düzensizlik, karmaşıklık ve bozulma eğilimini ifade eder. Termodinamikte entropi, bir sistemin düzensizlik derecesini ve enerjinin dağılımını ölçen bir terimdir. Sistem ne kadar düzenli ve düşük enerjili ise entropi düşüktür ancak düzensizlik ve enerji dağılımı arttıkça entropi yükselir. Yazılım entropisi bu termodinamik prensipleriyle paralellik gösterir. Yazılımın başlangıçta belirlenen tasarımlar ve hedeflere uygun olarak oluşturulsa da, zaman içinde çeşitli faktörler nedeniyle karmaşıklığı artar ve bozulma eğilimi gösterir.&lt;/p&gt;
&lt;p&gt;Termodinamikte entropi, bir sistemin düzensizlik seviyesini belirlerken; yazılım entropisi, yazılım projelerinin zaman içinde karmaşıklığının ve bozulmasının artma eğilimini tanımlar. Yazılım projeleri, genellikle belirli bir amacı veya işlevi yerine getirmek için kodlanır. Ancak bu süreç boyunca değişen gereksinimler, eklenen yeni özellikler, bakım eksiklikleri ve teknik borç gibi etkenler, yazılımın karmaşıklığını artırabilir. İşte termodinamik entropisinin yazılım entropisiyle olan ilişkisi burada devreye girer. Termodinamik entropi, düzensizlik ve enerji dağılımının artışını ifade ederken, yazılım entropisi de yazılımın zaman içinde düzensizleşmesi, karmaşıklığının ve hatalarının artması olarak görülebilir.&lt;/p&gt;
&lt;p&gt;Bu bağlamda, termodinamik entropi ile yazılım entropisi arasındaki ilişki, karmaşıklık ve düzensizliğin artması sonucu sistemlerin daha düşük verimlilik, güvenilmezlik ve bozulma eğilimi gösterme eğilimini içerir. Yazılım projeleri de başlangıçta iyi tasarlanmış olsa da, değişen gereksinimler ve sürekli gelişen doğası nedeniyle zamanla düzensizleşebilir, bakım eksiklikleri ve teknik borçlar birikerek entropiyi artırabilir.&lt;/p&gt;
&lt;h3 id=&quot;yazılım-entropisinin-nedenleri&quot;&gt;&lt;a href=&quot;#yaz%C4%B1l%C4%B1m-entropisinin-nedenleri&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Yazılım Entropisinin Nedenleri&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Değişen Gereksinimler:&lt;/strong&gt; Yazılım projeleri genellikle kullanıcı gereksinimlerine cevap vermek için başlar. Ancak, gereksinimler zaman içinde değişebilir ve bu değişiklikler yazılımın tasarımını ve kodunu etkileyebilir. Yeni özellikler eklemek veya mevcut olanları değiştirmek karmaşıklığı artırabilir.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Teknik Borç:&lt;/strong&gt; Proje hızını artırmak veya kısa vadeli çözümler bulmak amacıyla alınan teknik kısayollar, ileride daha fazla karmaşıklık yaratabilir. Bu tür teknik borçlar zamanla ödenmediğinde, yazılımın genel kalitesi düşebilir.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dokümantasyon Eksikliği:&lt;/strong&gt; İyi bir dokümantasyon olmadan, yeni geliştiricilerin projeye katılması veya mevcut kodun anlaşılması zorlaşabilir. Bu da yanlış anlamalara ve hatalı değişikliklere yol açabilir.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ekip Değişiklikleri:&lt;/strong&gt; Yazılım projelerinde ekip üyelerinin değişmesi kaçınılmazdır. Ancak, yeni geliştiricilerin mevcut kodu anlaması zaman alabilir ve hatalara yol açabilir.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;yazılım-entropisinin-sonuçları&quot;&gt;&lt;a href=&quot;#yaz%C4%B1l%C4%B1m-entropisinin-sonu%C3%A7lar%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Yazılım Entropisinin Sonuçları&lt;/h3&gt;
&lt;p&gt;Yazılım entropisi, yazılım projelerinin zaman içinde karmaşıklığının ve bozulmasının artması sonucu ortaya çıkar. Bu artışın projeye olan etkileri oldukça çeşitli ve genellikle olumsuz yönde olabilir. Aşağıda, yazılım entropisinin ortaya çıkardığı bazı önemli sonuçları bulabiliriz:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Bakım Güçlüğü:&lt;/strong&gt; Yazılım projeleri karmaşıklaştıkça ve bozulma eğilimi gösterdikçe, projenin bakımı daha zor hale gelir. Hataların tespiti ve düzeltilmesi uzun sürebilir çünkü artan karmaşıklık, sorunların kaynağını bulmayı güçleştirebilir.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Esneklik Azalması:&lt;/strong&gt; Yazılım projelerinin karmaşıklığı arttıkça, yeni özellikler eklemek veya mevcut olanları değiştirmek daha zor olabilir. Bu, projenin esnekliğini azaltır ve rekabetçi bir ortamda gelişime engel olabilir.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Güvenilirlik Azalması:&lt;/strong&gt; Karmaşık ve bozulmuş bir yazılım projesi, hataların ve hatalı davranışların daha sık görülmesine neden olabilir. Bu, kullanıcıların güvenini zedeler ve ürünün veya hizmetin itibarını olumsuz etkiler.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Performans Düşüşü:&lt;/strong&gt; Yazılım entropisi, gereksiz kod parçalarının birikmesi, düzensiz yapılar ve yavaş işleyen algoritmalar gibi etkenlerle performans düşüşüne yol açabilir. Bu da yazılımın genel performansını olumsuz etkiler.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Büyüme Engellemesi:&lt;/strong&gt; Yazılım projelerinde artan karmaşıklık ve bozulma, projenin büyümesini sınırlayabilir. Yeni özellikler eklemek veya daha fazla kullanıcıya hizmet vermek istendiğinde, mevcut yapının sınırlamaları nedeniyle zorluklar ortaya çıkabilir.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Maliyet Artışı:&lt;/strong&gt; Yazılım entropisi, bakım süreçlerinin zorlaşması, hataların daha fazla düzeltilmesi ve performans sorunlarının giderilmesi gibi faktörler nedeniyle maliyetleri artırabilir. Gereksiz zaman ve kaynak harcamalarıyla sonuçlanabilir.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;challenger-faciası-ve-yazılım-entropisi&quot;&gt;&lt;a href=&quot;#challenger-facias%C4%B1-ve-yaz%C4%B1l%C4%B1m-entropisi&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Challenger Faciası ve Yazılım Entropisi&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Space_Shuttle_Challenger_disaster&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Challenger faciası&lt;/a&gt;, 28 Ocak 1986 tarihinde gerçekleşen ve Uzay Mekiği Challenger’ın fırlatılması sırasında yaşanan trajik bir olaydır. Bu facia, Uzay Mekiği’nin patlaması sonucu 7 astronotun hayatını kaybetmesine yol açtı. Bu trajedi, bir dizi mühendislik, yönetim ve iletişim hatasının sonucuydu. Challenger faciasının ardında yatan nedenler ve yazılım entropisi arasında birçok benzerlik ve paralellik bulunmaktadır.&lt;/p&gt;
&lt;p&gt;Challenger faciasında, mühendislik hataları, iletişim eksikliği ve hızlı gelişim baskısı nedeniyle trajik bir olay yaşanmıştır. Bu olayda, önceden belirlenmiş tasarımlar ve riskler göz ardı edilerek uzun vadeli sürdürülebilirlik yerine kısa vadeli hedeflere odaklanılmıştır. Yazılım entropisi de benzer şekilde, yazılım projelerinin zaman içinde karmaşıklığının ve hatalarının artmasına neden olan faktörlerle ortaya çıkar. Değişen gereksinimler, teknik borç, iletişim eksikliği ve hızlı gelişim baskısı gibi etkenler yazılımın karmaşıklığını artırabilir. Her iki durumda da düzenli bakım, iyi iletişim, etkili dokümantasyon ve teknik borç yönetimi gibi stratejiler, olumsuz sonuçları minimize etmek ve projenin sürdürülebilirliğini sağlamak açısından önemlidir.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/e4f8d41460942801a8d14d9eaae53524/0f98f/challenger.jpg&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 79.72972972972973%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAQABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAIEA//EABUBAQEAAAAAAAAAAAAAAAAAAAIB/9oADAMBAAIQAxAAAAGXRmQlLSn/xAAaEAACAwEBAAAAAAAAAAAAAAAAAgEEERID/9oACAEBAAEFAucGTmMFsLI3vEjWU3//xAAWEQEBAQAAAAAAAAAAAAAAAAAAEhP/2gAIAQMBAT8BzQ//xAAWEQEBAQAAAAAAAAAAAAAAAAAAEhP/2gAIAQIBAT8B0W//xAAcEAABAwUAAAAAAAAAAAAAAAAAAQIiECEyQWH/2gAIAQEABj8CE7SaEm20YH//xAAbEAEAAgIDAAAAAAAAAAAAAAABABEhMRBBgf/aAAgBAQABPyFspjpTS+NBlhIYewdRup8n/9oADAMBAAIAAwAAABAgP//EABgRAAIDAAAAAAAAAAAAAAAAAAABESFx/9oACAEDAQE/EIJOzZ//xAAYEQACAwAAAAAAAAAAAAAAAAAAEQEhcf/aAAgBAgEBPxBnFGT/xAAaEAEBAQEAAwAAAAAAAAAAAAABEQAhQWGR/9oACAEBAAE/EEQUTTFc33PXjQc4Sh0yj3hEno6+BAApd//Z&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Challenger Faciası ve Yazılım Entropisi&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/e4f8d41460942801a8d14d9eaae53524/1c72d/challenger.jpg&quot;
        srcset=&quot;https://blog.hkucuk.com/static/e4f8d41460942801a8d14d9eaae53524/a80bd/challenger.jpg 148w,https://blog.hkucuk.com/static/e4f8d41460942801a8d14d9eaae53524/1c91a/challenger.jpg 295w,https://blog.hkucuk.com/static/e4f8d41460942801a8d14d9eaae53524/1c72d/challenger.jpg 590w,https://blog.hkucuk.com/static/e4f8d41460942801a8d14d9eaae53524/a8a14/challenger.jpg 885w,https://blog.hkucuk.com/static/e4f8d41460942801a8d14d9eaae53524/fbd2c/challenger.jpg 1180w,https://blog.hkucuk.com/static/e4f8d41460942801a8d14d9eaae53524/0f98f/challenger.jpg 1920w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;h3 id=&quot;yazılım-entropisini-yönetme-yolları&quot;&gt;&lt;a href=&quot;#yaz%C4%B1l%C4%B1m-entropisini-y%C3%B6netme-yollar%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Yazılım Entropisini Yönetme Yolları&lt;/h3&gt;
&lt;p&gt;Yazılım entropisinin olumsuz etkilerini minimize etmek ve yazılım projelerini sürdürülebilir kılmak için bazı yönetim stratejileri benimsenmelidir:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Sürekli Bakım ve Temizlik:&lt;/strong&gt; Yazılımın düzenli bakımı ve gereksiz kod parçalarının temizlenmesi, entropiyi azaltabilir. Teknik borçların ödenmesi, kodun güncel ve anlaşılır kalmasına yardımcı olur.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tasarım İyi Uygulamaları:&lt;/strong&gt; Başlangıçta iyi bir tasarım yapmak, ileride karmaşıklığı azaltabilir. Modüler bir yaklaşım benimsemek ve kodun ayrı işlevlere bölünmesi, entropiyi kontrol altında tutabilir.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dokümantasyon ve İletişim:&lt;/strong&gt; İyi bir dokümantasyon ve iletişim, projeye yeni katılan geliştiricilerin işleri hızla anlamasına yardımcı olur. Bu, hataların azaltılmasına ve yazılımın sürdürülebilirliğine katkı sağlar.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Otomatik Testler ve Sürekli Entegrasyon:&lt;/strong&gt; Otomatik testlerin kullanılması, hataların daha hızlı tespit edilmesini sağlar. Sürekli entegrasyon, yazılımın sürekli olarak test edilip entegre edilmesini kolaylaştırarak kaliteyi artırabilir.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Teknik Borç Yönetimi:&lt;/strong&gt; Teknik borçların sürekli takip edilmesi ve ödenmesi, entropiyi azaltır. Kısa vadeli kazanımlar yerine uzun vadeli sürdürülebilirlik gözetilmelidir.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Yazılım entropisi, yazılım projelerinin karmaşıklığının ve bozulmasının artmasına işaret eder. Bu artışın sonuçları, bakım güçlüğü, esneklik azalması, güvenilirlik kaybı, performans düşüşü, büyüme engellemesi ve maliyet artışı gibi olumsuz etkilerle kendini gösterebilir. Ancak, sürekli bakım, iyi tasarım uygulamaları, etkili dokümantasyon, otomatik testler ve teknik borç yönetimi gibi stratejiler benimsenerek entropi kontrol altına alınabilir ve yazılım projelerinin sürdürülebilirliği sağlanabilir. Bu nedenle, yazılım geliştiricilerinin entropiye karşı bilinçli ve sürekli bir çaba içinde olmaları önemlidir.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Software_entropy&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/Software_entropy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.researchgate.net/publication/224123299_Software_Entropy_in_Agile_Product_Evolution&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.researchgate.net/publication/224123299_Software_Entropy_in_Agile_Product_Evolution&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.methodsandtools.com/archive/softwareentropy.php&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.methodsandtools.com/archive/softwareentropy.php&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2023/yazilim-entropisi/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Bellman–Ford Algoritması]]></title><description><![CDATA[Bellman-Ford algoritması, ağırlıklı (weighted) graf içindeki en kısa yol problemini çözmek için kullanılan bir algoritmadır. En kısa yol problemi, bir başlangıç noktasından hedef noktaya en kısa yolun bulunması problemidir. Bellman-Ford algoritması, olası tüm yol kombinasyonlarını inceleyerek en kısa yolu bulur.]]></description><link>https://blog.hkucuk.com/2023/bellman–ford-algorithm/</link><guid isPermaLink="false">https://blog.hkucuk.com/2023/bellman–ford-algorithm/</guid><pubDate>Sat, 12 Aug 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Bellman-Ford algoritması, ağırlıklı (weighted) &lt;a href=&quot;https://en.wikipedia.org/wiki/Graph_(abstract_data_type)&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;&lt;strong&gt;graf&lt;/strong&gt;&lt;/a&gt; içindeki en kısa yol problemini çözmek için kullanılan bir algoritmadır. En kısa yol problemi, bir başlangıç noktasından hedef noktaya en kısa yolun bulunması problemidir. Bellman-Ford algoritması, olası tüm yol kombinasyonlarını inceleyerek en kısa yolu bulur. Bu algoritma negatif ağırlıklı kenarlara sahip graf gibi durumları da ele alabilir, bu nedenle &lt;a href=&quot;https://blog.hkucuk.com/dijkstranin-tek-kaynakli-en-kisa-yol-algoritmasi&quot;&gt;Dijkstra algoritmasından&lt;/a&gt; farklı olarak daha genel bir kullanıma sahiptir.&lt;/p&gt;
&lt;p&gt;Bellman-Ford algoritmasının çalışma prensibi şu şekildedir:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Başlangıç noktasına uzaklıkları sonsuz, kendisine olan uzaklığı ise 0 olarak ayarla.&lt;/li&gt;
&lt;li&gt;Tüm kenarları ve ağırlıkları gözden geçir ve her bir kenar için başlangıç noktasından gidilen bir yolun, hedef noktaya olan uzaklığını güncelle.&lt;/li&gt;
&lt;li&gt;Bu işlemi toplam düğüm sayısı - 1 defa tekrarla. N defa yapılmasının sebebi, en kısa yolun en fazla N-1 kenardan geçebileceği gerçeğidir. N defadan sonra hala daha kısa yollar güncellenebiliyorsa, bu grafın negatif ağırlıklı döngüye sahip olduğunu gösterir.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href=&quot;https://blog.hkucuk.com/dijkstranin-tek-kaynakli-en-kisa-yol-algoritmasi&quot;&gt;Dijkstra algoritması&lt;/a&gt;, pozitif ağırlıklı &lt;a href=&quot;https://en.wikipedia.org/wiki/Graph_(abstract_data_type)&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;&lt;strong&gt;graf&lt;/strong&gt;&lt;/a&gt; veya kenarlarda en kısa yolu bulmak için hızlı bir şekilde çalışan bir algoritmadır. Her adımda en küçük uzaklığa sahip düğüm seçilerek işlem yapar. Diğer yandan, Bellman-Ford algoritması negatif veya pozitif ağırlıklı graf ve kenarlarda kullanılabilir ve daha genel bir kullanıma sahiptir. Tüm kenarları ve ağırlıkları adım adım gözden geçirerek en kısa yolu bulur, ancak her adımda tüm kenarları incelediği için daha fazla zaman gerektirebilir. Bu nedenle Dijkstra genellikle daha hızlı çalışırken, Bellman-Ford algoritması daha geniş bir problem yelpazesini ele alabilir ve negatif ağırlıklı graf veya kenarları da işleyebilir.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://blog.hkucuk.com/a387bdc795c739c3c3230f0db2243595/bellman-ford.gif&quot; alt=&quot;Bellman–Ford Algoritması&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;karmaşıklık&quot;&gt;&lt;a href=&quot;#karma%C5%9F%C4%B1kl%C4%B1k&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Karmaşıklık&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Worst-case performance &lt;code class=&quot;language-text&quot;&gt;O(|V||E|)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Best-case performance &lt;code class=&quot;language-text&quot;&gt;O(|E|)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Worst-case space complexity &lt;code class=&quot;language-text&quot;&gt;O(|V|)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;golangde-bellmanford-algoritması-uygulaması&quot;&gt;&lt;a href=&quot;#golangde-bellmanford-algoritmas%C4%B1-uygulamas%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;GoLang’de Bellman–Ford Algoritması uygulaması:&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;fmt&quot;&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;math&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; Edge &lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	Source &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;
	Target &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;
	Weight &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;BellmanFord&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;edges &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;Edge&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; vertexCount &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; start &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	distances &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; vertexCount&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	predecessors &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; vertexCount&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;range&lt;/span&gt; distances &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		distances&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;MaxInt32
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	distances&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;start&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; vertexCount&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; edge &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;range&lt;/span&gt; edges &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; distances&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;edge&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Source&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;edge&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Weight &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; distances&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;edge&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Target&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
				distances&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;edge&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Target&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; distances&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;edge&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Source&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; edge&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Weight
				predecessors&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;edge&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Target&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; edge&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Source
			&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; edge &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;range&lt;/span&gt; edges &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; distances&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;edge&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Source&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;edge&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Weight &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; distances&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;edge&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Target&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Negative cycle detected. Bellman-Ford algorithm cannot be applied.&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
			&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;nil&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;nil&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; distances&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; predecessors
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	vertexCount &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;
	edges &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;Edge&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	startNode &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;
	distances&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; predecessors &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;BellmanFord&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;edges&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; vertexCount&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; startNode&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; distances &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;nil&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Shortest distances from node&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; startNode&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; distance &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;range&lt;/span&gt; distances &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Node %d: Distance %d, Path: &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; distance&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
			path &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
			&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; at &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; at &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; startNode&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; at &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; predecessors&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;at&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
				path &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;at&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; path&lt;span class=&quot;token operator&quot;&gt;...&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
			&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
			path &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;startNode&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; path&lt;span class=&quot;token operator&quot;&gt;...&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
			fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;path&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Program çalıştırıldığında çıktısı aşağıdaki gibi olacaktır.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;json&quot;&gt;&lt;pre class=&quot;language-json&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;Shortest distances from node &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;
Node &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; Distance &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; Path&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
Node &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; Distance &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; Path&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
Node &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; Distance &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; Path&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
Node &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; Distance &lt;span class=&quot;token number&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; Path&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
Node &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; Distance &lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; Path&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Programın çalışır haline &lt;a href=&quot;https://go.dev/play/p/AOP-cHA1oin&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;şuradan&lt;/a&gt; erişilebilir.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Bellman%E2%80%93Ford_algorithm&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/Bellman%E2%80%93Ford_algorithm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.baeldung.com/cs/bellman-ford&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.baeldung.com/cs/bellman-ford&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2023/bellman–ford-algorithm/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Bogo Sort - Saçma Sıralama]]></title><description><![CDATA[Bogo Sort (Saçma sıralam veya Permutation Sort olarak da bilinir), sıralanması gereken bir diziyi rastgele permütasyonlar oluşturarak doğru sıralama bulunana kadar karşılaştırmalar yaparak sıralamaya çalışan, son derece etkisiz ve rastgele bir sıralama algoritmasıdır.]]></description><link>https://blog.hkucuk.com/2023/bogo-sort/</link><guid isPermaLink="false">https://blog.hkucuk.com/2023/bogo-sort/</guid><pubDate>Fri, 28 Jul 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Bogo Sort (Saçma sıralam veya Permutation Sort olarak da bilinir), sıralanması gereken bir diziyi rastgele permütasyonlar oluşturarak doğru sıralama bulunana kadar karşılaştırmalar yaparak sıralamaya çalışan, son derece etkisiz ve rastgele bir sıralama algoritmasıdır. Bogo Sort, şaka amaçlı bir algoritma olarak ortaya çıkmıştır ve pratik kullanım için uygun değildir.&lt;/p&gt;
&lt;h3 id=&quot;çalışma-mantığı-ve-algoritma-adımları&quot;&gt;&lt;a href=&quot;#%C3%A7al%C4%B1%C5%9Fma-mant%C4%B1%C4%9F%C4%B1-ve-algoritma-ad%C4%B1mlar%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Çalışma Mantığı ve Algoritma Adımları:&lt;/h3&gt;
&lt;p&gt;Bogo Sort’un çalışma mantığı oldukça basittir, ancak etkisiz bir şekilde çalışır:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Rastgele bir permütasyon oluşturulur.&lt;/li&gt;
&lt;li&gt;Dizinin sıralı olup olmadığı kontrol edilir.&lt;/li&gt;
&lt;li&gt;Eğer dizi sıralı değilse, adım 1’e geri dönülür ve yeni bir rastgele permütasyon oluşturulur.&lt;/li&gt;
&lt;li&gt;Dizi sıralı olduğunda algoritma sonlanır.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;artı-yönleri&quot;&gt;&lt;a href=&quot;#art%C4%B1-y%C3%B6nleri&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Artı Yönleri:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Eğlenceli ve ilginç bir algoritma olarak görülebilir.&lt;/li&gt;
&lt;li&gt;Herhangi bir dizi üzerinde çalışabilir, çünkü sıralı olup olmadığı umursanmaz.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;eksi-yönleri&quot;&gt;&lt;a href=&quot;#eksi-y%C3%B6nleri&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Eksi Yönleri:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Bogo Sort, rastgele permütasyonlar oluşturduğu için son derece verimsizdir. Neredeyse her adımda diziyi doğru sıralamak için gerekli olan adımların sayısı ortalama ve en kötü durumlarda astronomik olabilir.&lt;/li&gt;
&lt;li&gt;Pratik kullanım için uygun değildir. Dizinin boyutu arttıkça algoritmanın çalışma süresi hızla artar.&lt;/li&gt;
&lt;li&gt;İyi bir zaman ve hafıza karmaşıklığına sahip değildir.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;zaman-ve-algoritma-karmaşıklığı-karşılaştırması&quot;&gt;&lt;a href=&quot;#zaman-ve-algoritma-karma%C5%9F%C4%B1kl%C4%B1%C4%9F%C4%B1-kar%C5%9F%C4%B1la%C5%9Ft%C4%B1rmas%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Zaman ve Algoritma Karmaşıklığı Karşılaştırması:&lt;/h3&gt;
&lt;p&gt;Bogo Sort’un ortalama ve en kötü durum zaman karmaşıklığı oldukça yüksektir. Ortalama durumda &lt;code class=&quot;language-text&quot;&gt;n!&lt;/code&gt; kadar adım gerekebilir. En iyi durumda bile &lt;code class=&quot;language-text&quot;&gt;O(n)&lt;/code&gt; zaman karmaşıklığı sağlayamaz.&lt;/p&gt;
&lt;p&gt;Diğer sıralama algoritmaları, genellikle daha etkili ve pratik sonuçlar sunar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Bubble Sort, Selection Sort gibi temel sıralama algoritmaları en azından &lt;code class=&quot;language-text&quot;&gt;O(n^2)&lt;/code&gt; zaman karmaşıklığına sahiptir, ancak Bogo Sort’un hızından daha iyidirler.&lt;/li&gt;
&lt;li&gt;Merge Sort, Quick Sort gibi daha verimli algoritmalar &lt;code class=&quot;language-text&quot;&gt;O(n log n)&lt;/code&gt; zaman karmaşıklığına sahiptirler ve daha büyük dizilerde bile hızlı sonuçlar sağlarlar.&lt;/li&gt;
&lt;li&gt;Bazı özel durumlar için optimize edilmiş algoritmalar, daha hızlı sonuçlar elde etmek için kullanılabilir (örneğin, Counting Sort veya Radix Sort gibi).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Genel olarak, Bogo Sort daha çok eğlence veya eğitim amaçlı bir algoritma olarak görülmektedir ve gerçek dünya uygulamalarında tercih edilen bir sıralama algoritması değildir.&lt;/p&gt;
&lt;h2 id=&quot;golangde-bogo-sort-uygulaması&quot;&gt;&lt;a href=&quot;#golangde-bogo-sort-uygulamas%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;GoLang’de Bogo Sort uygulaması:&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;fmt&quot;&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;math/rand&quot;&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;sort&quot;&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;time&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;isSorted&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;arr &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;bool&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	n &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;arr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; arr&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; arr&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;shuffle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;arr &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	n &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;arr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	rand&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Seed&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;time&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Now&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;UnixNano&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; n &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		j &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; rand&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Intn&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
		arr&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; arr&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; arr&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; arr&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;bogoSort&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;arr &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;isSorted&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;arr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token function&quot;&gt;shuffle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;arr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	arr &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Original Array:&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; arr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

	&lt;span class=&quot;token function&quot;&gt;bogoSort&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;arr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Sorted Array:&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; arr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

	&lt;span class=&quot;token comment&quot;&gt;// Checking with built-in sorting for verification&lt;/span&gt;
	sortedArr &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	sort&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Ints&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;sortedArr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Sorted Array (using built-in sort):&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; sortedArr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Bu örnekte, &lt;code class=&quot;language-text&quot;&gt;bogoSort&lt;/code&gt; fonksiyonu Bogo Sort algoritmasını uygular. &lt;code class=&quot;language-text&quot;&gt;isSorted&lt;/code&gt; fonksiyonu bir dizinin sıralı olup olmadığını kontrol eder. &lt;code class=&quot;language-text&quot;&gt;shuffle&lt;/code&gt; fonksiyonu diziyi karıştırır. Ana &lt;code class=&quot;language-text&quot;&gt;main&lt;/code&gt; fonksiyonda bir dizi oluşturulur, bu dizi önce Bogo Sort ile sıralanır, sonra doğrulama için Go’nun yerleşik sıralama fonksiyonu kullanılarak sıralanır.&lt;/p&gt;
&lt;p&gt;Program çalıştırıldığında çıktısı aşağıdaki gibi olacaktır.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;json&quot;&gt;&lt;pre class=&quot;language-json&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;Original Array&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;7&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;9&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
Sorted Array&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;7&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
Sorted Array (using built-in sort)&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;7&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Programın çalışır haline &lt;a href=&quot;https://go.dev/play/p/NkfJ3A3MvtT&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;şuradan&lt;/a&gt; erişilebilir.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Bogosort&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/Bogosort&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.interviewkickstart.com/learn/bogo-sort-algorithm&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.interviewkickstart.com/learn/bogo-sort-algorithm&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2023/bogo-sort/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Interpolation Arama Algoritması]]></title><description><![CDATA[Interpolation Arama, sıralı bir dizide hızlı bir şekilde arama yapmak için kullanılan bir arama algoritmasıdır. Bu algoritma, binary search gibi sıralı dizilerde çalışırken, aranan değeri bulmak için tahmini bir konum belirlemeye dayanır.]]></description><link>https://blog.hkucuk.com/2023/interpolation-search/</link><guid isPermaLink="false">https://blog.hkucuk.com/2023/interpolation-search/</guid><pubDate>Wed, 12 Jul 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Interpolation Arama, sıralı bir dizide hızlı bir şekilde arama yapmak için kullanılan bir arama algoritmasıdır. Bu algoritma, binary search gibi sıralı dizilerde çalışırken, aranan değeri bulmak için tahmini bir konum belirlemeye dayanır.&lt;/p&gt;
&lt;p&gt;İki temel koşula dayalıdır:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Dizi sıralı olmalıdır.&lt;/li&gt;
&lt;li&gt;Dizideki elemanlar arasındaki farklar tahmin edilebilir ve düzensiz olmamalıdır.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;interpolation-search-nasıl-çalışır&quot;&gt;&lt;a href=&quot;#interpolation-search-nas%C4%B1l-%C3%A7al%C4%B1%C5%9F%C4%B1r&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Interpolation Search Nasıl Çalışır?&lt;/h3&gt;
&lt;p&gt;Interpolation search algoritması, aranan değerin tahmini konumunu hesaplamak için bir formül kullanır. Bu formül genellikle aşağıdaki gibidir:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;json&quot;&gt;&lt;pre class=&quot;language-json&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;position = low + ((value - arr&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;low&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;) / (arr&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;high&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; - arr&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;low&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;)) * (high - low)&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Burada:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;arr[]&lt;/strong&gt; =&gt; öğelerin aranması gereken dizi.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;low&lt;/strong&gt; =&gt; başlangıç dizini indeksini temsil eder.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;high&lt;/strong&gt; =&gt; bitiş dizini indeksini temsil eder.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;value&lt;/strong&gt; =&gt; aranan değeri temsil eder.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Algoritma şu adımları izler:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Başlangıçta low ve high değerleri, dizinin başlangıç ve bitiş indekslerini temsil eder.&lt;/li&gt;
&lt;li&gt;Tahmini konumu hesaplamak için yukarıdaki formül kullanılır.&lt;/li&gt;
&lt;li&gt;Eğer tahmini değer aranan değere eşitse, arama başarılıdır ve tahmini konum döndürülür.&lt;/li&gt;
&lt;li&gt;Eğer tahmini değer aranan değerden küçükse, arama sağ tarafta devam eder, yani low değeri güncellenir.&lt;/li&gt;
&lt;li&gt;Eğer tahmini değer aranan değerden büyükse, arama sol tarafta devam eder, yani high değeri güncellenir.&lt;/li&gt;
&lt;li&gt;Bu işlem, aranan değer bulunana veya low değeri high değerinden büyük olana kadar devam eder.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;diğer-bazı-arama-algoritmalarıyla-karşılaştırma&quot;&gt;&lt;a href=&quot;#di%C4%9Fer-baz%C4%B1-arama-algoritmalar%C4%B1yla-kar%C5%9F%C4%B1la%C5%9Ft%C4%B1rma&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Diğer Bazı Arama Algoritmalarıyla Karşılaştırma&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Linear Search:&lt;/strong&gt; Linear search algoritması, sıralı olmayan veya sıralı olsa bile sıralı olduğu bilgisi kullanılmayan dizilerde kullanılır. Her elemanı sırayla kontrol eder. Interpolation search, daha hızlı bir alternatif sunar çünkü tahmini konumu kullanarak elemanları hızla yaklaştırabilir. Karmaşıklığı &lt;code class=&quot;language-text&quot;&gt;O(n)&lt;/code&gt;‘dir.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Binary Search:&lt;/strong&gt; Binary search, her adımda dizinin ortasındaki elemanı kontrol eder. Interpolation search, elemanlar arasındaki tahmini farkları kullanarak daha hızlı bir tahmin yapar. Ancak düzensiz aralıklara sahip dizilerde performansı düşebilir. Karmaşıklığı &lt;code class=&quot;language-text&quot;&gt;O(log n)&lt;/code&gt;‘dir.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Jump Search:&lt;/strong&gt; Jump search, bir aralığı atlama adımlarıyla tarar. Jump search’ün adımları sabitken, interpolation search adımları tahmini konumun farkına göre değişir. Karmaşıklığı &lt;code class=&quot;language-text&quot;&gt;O(√ n)&lt;/code&gt;‘dir.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Interpolation search, dizinin düzgün bir şekilde dağıldığı durumlarda binary search’ten daha hızlı olabilir. Ancak dizi elemanları arasındaki farklar büyük ve düzensizse, algoritma doğru tahminler yapamayabilir ve hatta binary search’ten daha yavaş olabilir.&lt;/p&gt;
&lt;h2 id=&quot;karmaşıklık&quot;&gt;&lt;a href=&quot;#karma%C5%9F%C4%B1kl%C4%B1k&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Karmaşıklık&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Time: &lt;code class=&quot;language-text&quot;&gt;O(log(log(n))&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;golangde-interpolation-search-algoritması-uygulaması&quot;&gt;&lt;a href=&quot;#golangde-interpolation-search-algoritmas%C4%B1-uygulamas%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;GoLang’de Interpolation Search Algoritması uygulaması:&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;fmt&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;interpolationSearch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;arr &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; target &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	low &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;
	high &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;arr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; low &lt;span class=&quot;token operator&quot;&gt;&amp;lt;=&lt;/span&gt; high &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; target &lt;span class=&quot;token operator&quot;&gt;&gt;=&lt;/span&gt; arr&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;low&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; target &lt;span class=&quot;token operator&quot;&gt;&amp;lt;=&lt;/span&gt; arr&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;high&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; low &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; high &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; arr&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;low&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; target &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
				&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; low
			&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
			&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

		pos &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; low &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;target &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; arr&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;low&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;high &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; low&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;arr&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;high&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; arr&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;low&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

		&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; arr&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;pos&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; target &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; pos
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

		&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; arr&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;pos&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; target &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			low &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; pos &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			high &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; pos &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	arr &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	target &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;11&lt;/span&gt;

	index &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;interpolationSearch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;arr&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; target&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; index &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Aranan değer %d indeksinde bulundu.\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; index&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Aranan değer bulunamadı.&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Bu örnek, verilen bir sıralı dizi üzerinde Interpolation Search algoritmasını uygular. &lt;strong&gt;interpolationSearch&lt;/strong&gt; fonksiyonu, dizi ve hedef değeri alır ve hedef değerin dizideki indeksini döndürür. Eğer hedef değer bulunamazsa -1 döner. Bu örnekte, aranan değer 11 ve verilen dizi [1, 3, 5, 7, 9, 11, 13, 15, 17, 19] şeklindedir.&lt;/p&gt;
&lt;p&gt;Program çalıştırıldığında çıktısı aşağıdaki gibi olacaktır.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;json&quot;&gt;&lt;pre class=&quot;language-json&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;Aranan değer &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt; indeksinde bulundu.&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Programın çalışır haline &lt;a href=&quot;https://go.dev/play/p/HLgd6hQt_KW&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;şuradan&lt;/a&gt; erişilebilir.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Interpolation_search&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/Interpolation_search&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.techiedelight.com/interpolation-search/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.techiedelight.com/interpolation-search/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.topcoder.com/thrive/articles/interpolation-search&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.topcoder.com/thrive/articles/interpolation-search&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2023/interpolation-search/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Haversine Mesafesi: Coğrafi Noktalar Arası Mesafe Hesaplama]]></title><description><![CDATA[Coğrafi bilgi işlem, modern teknoloji ve veri işleme yöntemlerinin gelişmesiyle büyük bir ivme kazanmış, coğrafi veri ve konum tabanlı hizmetlerin giderek artan bir öneme sahip olduğu bir alandır. Coğrafi veriler, günümüzde birçok sektörde kritik bir rol oynamaktadır.]]></description><link>https://blog.hkucuk.com/2023/haversine-distance/</link><guid isPermaLink="false">https://blog.hkucuk.com/2023/haversine-distance/</guid><pubDate>Tue, 27 Jun 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Coğrafi bilgi işlem, modern teknoloji ve veri işleme yöntemlerinin gelişmesiyle büyük bir ivme kazanmış, coğrafi veri ve konum tabanlı hizmetlerin giderek artan bir öneme sahip olduğu bir alandır. Coğrafi veriler, günümüzde birçok sektörde kritik bir rol oynamaktadır; coğrafi konum bilgileri, sadece harita uygulamalarında değil, aynı zamanda hava taşımacılığı, yolculuk planlaması, doğal afet tahmini, çevresel izleme, sağlık hizmetleri, coğrafi bilgi sistemleri (GIS) ve daha birçok alanda kullanılmaktadır.&lt;/p&gt;
&lt;p&gt;Bu coğrafi verilerle çalışırken, iki nokta arasındaki mesafeyi hesaplama ihtiyacı ortaya çıkar. Ancak Dünya’nın gerçekte yuvarlak bir şekle sahip olduğunu düşündüğümüzde, bu hesaplama daha karmaşık hale gelir. İşte bu noktada Haversine mesafesi devreye girer. &lt;a href=&quot;https://en.wikipedia.org/wiki/Haversine_formula&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Haversine mesafesi&lt;/a&gt;, yüzey eğriliğini dikkate alarak, iki coğrafi konum arasındaki doğrudan mesafeyi hesaplayan bir matematiksel yöntemdir. Bu yöntem, Dünya’nın yüzeyinin eğriliğini ve yuvarlaklığını hesaba katarak, iki nokta arasındaki mesafeyi daha hassas bir şekilde belirlememize olanak tanır. Bu nedenle, coğrafi bilgi işlemde ve konum tabanlı hizmetlerde temel bir araç olarak kabul edilir.&lt;/p&gt;
&lt;h2 id=&quot;haversine-mesafesinin-önemi&quot;&gt;&lt;a href=&quot;#haversine-mesafesinin-%C3%B6nemi&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Haversine Mesafesinin Önemi&lt;/h2&gt;
&lt;p&gt;Haversine mesafesi, coğrafi konum tabanlı uygulamalarda ve hizalama işlemlerinde kullanıldığında önemlidir. İşte Haversine mesafesinin neden önemli olduğuna dair bazı nedenler:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Gerçek Dünya Uygulamaları:&lt;/strong&gt; Haversine mesafesi, coğrafi konum tabanlı uygulamalarda gerçek dünya mesafelerini hesaplarken kullanılır. Bu tür uygulamalar, konum tabanlı hizmetler, seyahat planlaması, hava yolu taşımacılığı, denizcilik, jeodezi ve daha pek çok alanda kullanılır.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Doğruluk ve Hassasiyet:&lt;/strong&gt; Haversine mesafesi, Dünya’nın yuvarlak bir şekle sahip olduğunu dikkate alarak hesaplama yapar. Bu, iki nokta arasındaki mesafenin doğru ve hassas bir şekilde hesaplanmasını sağlar. Basit doğru çizgi hesaplamalarının aksine, Dünya’nın yüzeyindeki eğriliği göz önüne alır.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Harita Hizalaması:&lt;/strong&gt; Harita hizalaması, coğrafi verileri harita üzerine yerleştirme işlemidir. Haversine mesafesi, bu verilerin düzlem üzerinde doğru bir şekilde hizalanmasına yardımcı olur.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;haversine-mesafesi-nasıl-hesaplanır&quot;&gt;&lt;a href=&quot;#haversine-mesafesi-nas%C4%B1l-hesaplan%C4%B1r&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Haversine Mesafesi Nasıl Hesaplanır?&lt;/h2&gt;
&lt;p&gt;Haversine mesafesi hesaplamak için aşağıdaki adımları izlersiniz:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;İki noktanın enlem (latitude) ve boylam (longitude) koordinatlarını derece cinsinden alın.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Derece cinsinden verilen koordinatları radyan cinsine çevirin. Bu, enlem ve boylamı radian birimlerine dönüştürmek için aşağıdaki formülleri kullanarak yapılır:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Enlem (Latitude) Radyanı = Enlem (Latitude) Derecesi x (π / 180)&lt;/li&gt;
&lt;li&gt;Boylam (Longitude) Radyanı = Boylam (Longitude) Derecesi x (π / 180)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Haversine formülünü kullanarak iki nokta arasındaki mesafeyi hesaplayın:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Δlat = Enlem2 - Enlem1&lt;/li&gt;
&lt;li&gt;Δlon = Boylam2 - Boylam1&lt;/li&gt;
&lt;li&gt;a = sin²(Δlat/2) + cos(Enlem1) * cos(Enlem2) * sin²(Δlon/2)&lt;/li&gt;
&lt;li&gt;c = 2 * atan2(√a, √(1-a))&lt;/li&gt;
&lt;li&gt;Mesafe = R * c&lt;/li&gt;
&lt;li&gt;Burada, R Dünya’nın yarıçapıdır (ortalama olarak yaklaşık 6,371 km) ve atan2, arctangent işlemidir.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Hesaplanan mesafe, iki nokta arasındaki yüzey üzerindeki en kısa mesafeyi ifade eder.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Haversine mesafesi, coğrafi konum tabanlı uygulamalarda ve harita hizalamasında kullanılan önemli bir matematiksel yöntemdir. Bu yöntem, Dünya’nın yuvarlak bir şekle sahip olduğunu dikkate alarak iki nokta arasındaki gerçek mesafeyi hassas bir şekilde hesaplamamıza yardımcı olur. Bu nedenle, coğrafi veri işleme ve konum tabanlı hizmetler alanında temel bir araçtır.&lt;/p&gt;
&lt;h2 id=&quot;golangde-haversine-mesafesi-uygulaması&quot;&gt;&lt;a href=&quot;#golangde-haversine-mesafesi-uygulamas%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;GoLang’de Haversine Mesafesi uygulaması:&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;fmt&quot;&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;math&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; earthRadius &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;6371&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Average radius of the Earth (in kilometers)&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;haversine&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;lat1&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; lon1&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; lat2&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; lon2 &lt;span class=&quot;token builtin&quot;&gt;float64&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;float64&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token comment&quot;&gt;// Convert degrees to radians&lt;/span&gt;
	lat1 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; lat1 &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Pi &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;180&lt;/span&gt;
	lon1 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; lon1 &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Pi &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;180&lt;/span&gt;
	lat2 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; lat2 &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Pi &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;180&lt;/span&gt;
	lon2 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; lon2 &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Pi &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;180&lt;/span&gt;

	&lt;span class=&quot;token comment&quot;&gt;// Apply the Haversine formula&lt;/span&gt;
	dlat &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; lat2 &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; lat1
	dlon &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; lon2 &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; lon1
	a &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Sin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;dlat&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Sin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;dlat&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Cos&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;lat1&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Cos&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;lat2&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Sin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;dlon&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Sin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;dlon&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	c &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Atan2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Sqrt&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Sqrt&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	distance &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; earthRadius &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; c

	&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; distance
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token comment&quot;&gt;// Calculate the distance between two points&lt;/span&gt;
	lat1 &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;40.7128&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Latitude of New York&lt;/span&gt;
	lon1 &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;74.0060&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Longitude of New York&lt;/span&gt;
	lat2 &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;34.0522&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Latitude of Los Angeles&lt;/span&gt;
	lon2 &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;118.2437&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Longitude of Los Angeles&lt;/span&gt;

	result &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;haversine&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;lat1&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; lon1&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; lat2&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; lon2&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Distance between New York and Los Angeles: %.2f km\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; result&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Program çalıştırıldığında çıktısı aşağıdaki gibi olacaktır.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;json&quot;&gt;&lt;pre class=&quot;language-json&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;Distance between New York and Los Angeles&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3935.75&lt;/span&gt; km&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Programın çalışır haline &lt;a href=&quot;https://go.dev/play/p/btWcGZ6rXiz&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;şuradan&lt;/a&gt; erişilebilir.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Haversine_formula&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/Haversine_formula&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://scikit-learn.org/stable/modules/generated/sklearn.metrics.pairwise.haversine_distances.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://scikit-learn.org/stable/modules/generated/sklearn.metrics.pairwise.haversine_distances.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.vcalc.com/wiki/vcalc/haversine-distance&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.vcalc.com/wiki/vcalc/haversine-distance&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2023/haversine-distance/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Bloom Filtresi [Veri Yapıları]]]></title><description><![CDATA[Bloom Filtresi, veri yapıları içinde sıklıkla kullanılan ve özellikle veri arama işlemlerini hızlandırmak için kullanılan oluşturulabilir bir olasılık tabanlı veri yapısıdır. Bu veri yapısı, elemanların varlık durumunu (var olma veya yok olma) hızlı bir şekilde ve düşük bellek kullanımı ile kontrol etmek için kullanılır.]]></description><link>https://blog.hkucuk.com/2023/bloom-filter/</link><guid isPermaLink="false">https://blog.hkucuk.com/2023/bloom-filter/</guid><pubDate>Wed, 14 Jun 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Bloom Filtresi, veri yapıları içinde sıklıkla kullanılan ve özellikle veri arama işlemlerini hızlandırmak için kullanılan oluşturulabilir bir olasılık tabanlı veri yapısıdır. Bu veri yapısı, elemanların varlık durumunu (var olma veya yok olma) hızlı bir şekilde ve düşük bellek kullanımı ile kontrol etmek için kullanılır.&lt;/p&gt;
&lt;p&gt;Bloom Filtresi, 1970 yılında Burton Howard Bloom tarafından ortaya atılmıştır ve özellikle büyük veri kümeleri üzerinde etkili bir şekilde çalışır. Bloom Filtresi, yanıtın “kesin olmaması” durumunda kullanılır, yani belirli bir elemanın kümede kesinlikle bulunduğunu veya bulunmadığını belirtmek yerine, olasılıkla bulunduğunu ifade eder. Bu nedenle, Bloom Filtresi hızlı ve hafif olmasının yanı sıra, yanıtın olasılığını kabul edilebilir bir hata marjı ile sağlayabilir.&lt;/p&gt;
&lt;p&gt;Bloom Filter, probabilistik (olasılıksal) bir veri yapısıdır. Bir öğenin bir kümede olup olmadığını kontrol etmek için kullanılır. Bu, diğer veri yapıları kullanılarak da elde edilebilir. Ancak, Bloom filtresi bunu verimli bir şekilde yapar.&lt;/p&gt;
&lt;h2 id=&quot;algoritma&quot;&gt;&lt;a href=&quot;#algoritma&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Algoritma&lt;/h2&gt;
&lt;p&gt;Boş bir Bloom Filtresi, tümü 0 olarak ayarlanmış m bitlik bir bit dizisidir. Ayrıca, her biri bir m dizisi konumuna bazı set elemanını eşleyen veya karmaşıklaştıran k farklı hash fonksiyonu tanımlanmalıdır. Bu, uniform bir rastgele dağılım oluşturur. Genellikle k, m’den çok daha küçük bir sabittir ve eklenen elemanların sayısına orantılıdır; k’nın ve m’nin orantılı sabiti, filtrenin amaçlanan yanlış pozitif oranına göre belirlenir.&lt;/p&gt;
&lt;p&gt;Aşağıda {x, y, z} kümesini temsil eden bir Bloom Filtresi örneğini görebiliriz. Renkli oklar, her set elemanının bit dizisinde eşleştirildiği konumları gösterir. W elemanı {x, y, z} kümesinde bulunmamaktadır, çünkü 0 içeren bir bit-dizi konumuna karmaşıklaştırılmıştır. Bu şekil için m = 18 ve k = 3’tür.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/cb0451585c3c5e468934b2230e483752/21b4d/bloom-filter.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 35.810810810810814%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAYAAAAIy204AAAACXBIWXMAAAsTAAALEwEAmpwYAAAB7UlEQVR42m1Qz2vTcBT/JFmSNku7tklsu6ybbrSd0KrEKq6DQis6HdiVrlOMKP7C0VJE3E0QKTg97WDblLJYm8lEbCu91Iugp570uKsi3vwLPHip33UqO/iBD+/x3ud93uMBBFTyIbjCDvDgI6bTX3EjsoWrx54hFXsDDAQqOJ0KX6cXgj9mCihO3sOV+E1sTMbxk8x+pll8J3Ed+0ClHoHP7zAofRiZWP5in0+2lPOnzNDK0Za2pL2fy4c2z2zIa4n18dXY/eDqoadTx+VXroOuXwD7ieG4bwzNPNlvSKfrDugNVzDxTrk8Y02tBYpHroVrcT34eqI4WrFjMMAA26jZQtJjqRDR5tvewGLJW5IPe94CjhbgbgDiXz8f5NlxUPAr8PqjgOSQ/H6ik0nPQ3iAYmmvwNh8JFckwEuTGhi7BFHd1ShOQVBnAf/QCzRjIwnL0uxu5E6eXRDv3L6lzJ2IiMnEuTGPSxr2CRlCfjGXc124mJHuFvIBPZt2X8pm5eWVHNmDEYHjiJZi9v7459zY6QReWtu8uflCtLYswTRNsdlsOmu1mloulwPVcsVXrRi+qmFI5vPGaKfT4cLR6N7r8B9omgYigmVZ6PV64HkemUzGqeu6u9/vU+12G4ZhoF6vDzXdbheqqv6b/w3hOXS4UT6nXAAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Bloom Filter&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/cb0451585c3c5e468934b2230e483752/fcda8/bloom-filter.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/cb0451585c3c5e468934b2230e483752/12f09/bloom-filter.png 148w,https://blog.hkucuk.com/static/cb0451585c3c5e468934b2230e483752/e4a3f/bloom-filter.png 295w,https://blog.hkucuk.com/static/cb0451585c3c5e468934b2230e483752/fcda8/bloom-filter.png 590w,https://blog.hkucuk.com/static/cb0451585c3c5e468934b2230e483752/efc66/bloom-filter.png 885w,https://blog.hkucuk.com/static/cb0451585c3c5e468934b2230e483752/c83ae/bloom-filter.png 1180w,https://blog.hkucuk.com/static/cb0451585c3c5e468934b2230e483752/21b4d/bloom-filter.png 1280w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;p&gt;Bloom Filtresi, bir dizi k-bit uzunluğunda bir bit dizisi ve birkaç hash fonksiyonundan oluşur. İşleyişi şu şekildedir:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Önceden belirlenmiş k adet boş bit içeren bir dizi oluşturulur.&lt;/li&gt;
&lt;li&gt;Eklenecek bir eleman geldiğinde, bu eleman için k adet farklı hash fonksiyonu kullanılır. Her hash fonksiyonu elemanın bir pozisyonunu döndürür.&lt;/li&gt;
&lt;li&gt;Elde edilen bu pozisyonlar, bit dizisindeki ilgili pozisyonlara işaretlenir (1 değeri verilir).&lt;/li&gt;
&lt;li&gt;Arama yapmak istediğimizde, aynı hash fonksiyonları kullanarak elemanın k pozisyonunu elde ederiz. Eğer bu pozisyonlardaki bitlerin tamamı 1 ise, elemanın muhtemelen veri kümesinde olduğu sonucuna varırız. Ancak, eğer en az bir pozisyonda 0 varsa, elemanın veri kümesinde kesinlikle olmadığı sonucuna varırız.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;bloom-filtresi-operasyonları&quot;&gt;&lt;a href=&quot;#bloom-filtresi-operasyonlar%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Bloom Filtresi Operasyonları&lt;/h2&gt;
&lt;h3 id=&quot;1-ekleme-insertion&quot;&gt;&lt;a href=&quot;#1-ekleme-insertion&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;1. Ekleme (Insertion)&lt;/h3&gt;
&lt;p&gt;Bu işlem veri kümesine yeni bir elemanın eklenmesini ifade eder. Bu işlem, veri kümesine eleman eklemek için Bloom Filtresi’ni güncellemenin yollarından biridir.&lt;/p&gt;
&lt;p&gt;Ekleme işlemi, şu adımlarla gerçekleştirilir:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Veri kümesine eklemek istediğimiz bir eleman (örneğin, eleman X) belirlenir.&lt;/li&gt;
&lt;li&gt;Eleman X için Bloom Filtresi’nin içinde bulunan k farklı hash fonksiyonu kullanılır.&lt;/li&gt;
&lt;li&gt;Her bir hash fonksiyonu eleman X’in m bitlik Bloom Filtresi içindeki k farklı pozisyonlarını belirler.&lt;/li&gt;
&lt;li&gt;Belirlenen bu pozisyonlardaki bitler 1 olarak işaretlenir (set edilir).&lt;/li&gt;
&lt;li&gt;Bloom Filtresi, eleman X’i içeren veri kümesini temsil etmek üzere güncellenmiş olur.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Bu adımlar, elemanın olası pozisyonlarına işaretlenmesi sayesinde Bloom Filtresi’nin belirli bir elemanın varlığını belirleme yeteneğini sağlar. Ancak unutulmamalıdır ki Bloom Filtresi, eleman ekledikçe yanlış pozitif olasılığının artacağı bir özelliğe sahiptir. Bu nedenle, yanıtların kesin olmaması ve yanlış pozitif sonuçlarının olasılığı kabul edilebilir olduğu durumlarda kullanılması önemlidir.&lt;/p&gt;
&lt;h3 id=&quot;2-arama-search&quot;&gt;&lt;a href=&quot;#2-arama-search&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;2. Arama (Search)&lt;/h3&gt;
&lt;p&gt;Arama işlemi, bir elemanın Bloom Filtresi’nde var olup olmadığını sorgulamak için kullanılır. Bloom Filtresi, bir elemanın var olma ihtimalini yüksek hızda belirlemek için tasarlanmıştır, ancak yanıtların kesin olmaması kabul edilebilir. Yani, bir elemanın filtrenin içinde kesinlikle bulunup bulunmadığını söylemek yerine, muhtemelen var olduğunu veya kesinlikle olmadığını ifade eder.&lt;/p&gt;
&lt;p&gt;Arama işlemi, şu adımlarla gerçekleştirilir:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Aramak istediğimiz elemanın (örneğin, eleman Y) varlığını kontrol etmek için Bloom Filtresi’nin içinde bulunan k farklı hash fonksiyonu kullanılır.&lt;/li&gt;
&lt;li&gt;Her bir hash fonksiyonu, eleman Y’in Bloom Filtresi içindeki k farklı pozisyonlarını belirler.&lt;/li&gt;
&lt;li&gt;Belirlenen bu pozisyonlardaki bitlerin değerleri kontrol edilir. Eğer tüm pozisyonlardaki bitler 1 ise, eleman Y’ın muhtemelen filtrenin içinde olduğu sonucuna varılır. Ancak, en az bir pozisyondaki bit 0 ise, eleman Y’ın kesinlikle filtrenin içinde olmadığı sonucuna varılır.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Sorgulama işlemi, hızlı ve düşük bellek kullanımı sayesinde büyük veri kümeleri üzerinde etkili bir şekilde çalışır. Ancak, yanıtların kesin olmaması ve yanlış pozitif sonuçların (false positive) olasılığı göz önünde bulundurulmalıdır.&lt;/p&gt;
&lt;h2 id=&quot;false-positives&quot;&gt;&lt;a href=&quot;#false-positives&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;False Positives&lt;/h2&gt;
&lt;p&gt;False Positive (Yanlış Pozitif) kavramı, Bloom Filtresi’nde bir elemanın filtrenin içinde olmadığı halde, sorgulama işlemi sonucunda var olduğu yanıtının verilmesini ifade eder. Yani, aslında veri kümesinde bulunmayan bir elemanın, Bloom Filtresi sorgusunda olumlu sonuç vermesidir.&lt;/p&gt;
&lt;p&gt;Bu yanıltıcı pozitif sonuçlar, özellikle Bloom Filtresi’nin boyutu (m), hash fonksiyonu sayısı (k) ve veri kümesi boyutu arasındaki ilişki nedeniyle oluşur. Filtrenin boyutu (m) ve kullanılan hash fonksiyonları sayısı (k), Bloom Filtresi’nin yanıltıcı pozitif olasılığını etkiler. Yanıltıcı pozitif oranı, filtrenin dolum oranı ve hash fonksiyonlarının dağılımıyla ilişkilidir.&lt;/p&gt;
&lt;p&gt;Yanıltıcı pozitif sonuçlar, uygulamanın türüne ve hassasiyet gereksinimlerine bağlı olarak kabul edilebilir olabilir veya olmayabilir. Örneğin, bir veri kümesinde bulunmayan bir elemanın yanlışlıkla filtrede var olduğu belirlenirse, bu durumun uygulama için ciddi sonuçları olabilir. Bu nedenle, Bloom Filtresi kullanılırken yanıltıcı pozitif olasılığının tolerans düzeyi ve uygulama senaryosuna uygunluğu dikkate alınmalıdır.&lt;/p&gt;
&lt;p&gt;Yanıltıcı pozitif olasılığını düşürmek için, daha büyük bir Bloom Filtresi kullanmak, daha fazla hash fonksiyonu kullanmak veya veri kümesinin boyutunu optimize etmek gibi yöntemler uygulanabilir. Ancak, bu tür düzeltmeler genellikle Bloom Filtresi’nin bellek ve işlemci kullanımını artırabilir. Dolayısıyla, yanıltıcı pozitif olasılığını düşürmek ve yanıltıcı pozitiflerin kabul edilemez olduğu durumlarda, diğer veri yapıları veya filtreleme yöntemleri tercih edilmelidir.&lt;/p&gt;
&lt;h2 id=&quot;golangde-bloom-filtresi-uygulaması&quot;&gt;&lt;a href=&quot;#golangde-bloom-filtresi-uygulamas%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;GoLang’de Bloom Filtresi uygulaması:&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;fmt&quot;&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;hash/fnv&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; BloomFilter &lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	bitArray &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;bool&lt;/span&gt;
	hashFunc &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;uint32&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;NewBloomFilter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;size &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; numHashFunc &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;BloomFilter &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	bitArray &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;bool&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; size&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	hashFunc &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;uint32&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; numHashFunc&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; numHashFunc&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		hashFunc&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;createHashFunc&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; size&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;BloomFilter&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		bitArray&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; bitArray&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
		hashFunc&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; hashFunc&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;bf &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;BloomFilter&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;item &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; hf &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;range&lt;/span&gt; bf&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;hashFunc &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		index &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;hf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;item&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;uint32&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;bf&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;bitArray&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
		bf&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;bitArray&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;index&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;bf &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;BloomFilter&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Contains&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;item &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;bool&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; hf &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;range&lt;/span&gt; bf&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;hashFunc &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		index &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;hf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;item&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;uint32&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;bf&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;bitArray&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;bf&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;bitArray&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;index&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;createHashFunc&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;seed &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; size &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;uint32&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;data &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;uint32&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		hash &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; fnv&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;New32a&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
		hash&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Write&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;byte&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;data&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;uint32&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;seed&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; hash&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Sum32&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;uint32&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;size&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	filter &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;NewBloomFilter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

	&lt;span class=&quot;token comment&quot;&gt;// Elemanları filtreye ekleme&lt;/span&gt;
	filter&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;apple&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	filter&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;banana&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	filter&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;orange&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

	&lt;span class=&quot;token comment&quot;&gt;// Elemanların filtreye ait olup olmadığını sorgulama&lt;/span&gt;
	fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;filter&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Contains&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;apple&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// true&lt;/span&gt;
	fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;filter&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Contains&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;banana&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// true&lt;/span&gt;
	fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;filter&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Contains&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;orange&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// true&lt;/span&gt;
	fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;filter&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Contains&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;grape&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// false (yanlış pozitif)&lt;/span&gt;
	fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;filter&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Contains&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;cherry&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// false (yanlış pozitif)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Bu kod örneğinde, basit bir Bloom Filtresi implementasyonu yapılmıştır. &lt;strong&gt;NewBloomFilter&lt;/strong&gt; fonksiyonu ile Bloom Filtresi oluşturulurken, filtre boyutu (&lt;strong&gt;size&lt;/strong&gt;) ve kullanılacak hash fonksiyonu sayısı (&lt;strong&gt;numHashFunc&lt;/strong&gt;) belirtilmektedir. &lt;strong&gt;Add&lt;/strong&gt; fonksiyonu ile elemanlar filtre içine eklenir ve &lt;strong&gt;Contains&lt;/strong&gt; fonksiyonu ile elemanlar filtrenin içinde olup olmadığı sorgulanır. &lt;strong&gt;createHashFunc&lt;/strong&gt; fonksiyonu, hash fonksiyonlarını oluşturmak için kullanılır ve basit bir FNV (Fowler-Noll-Vo) hash algoritması kullanılmıştır.&lt;/p&gt;
&lt;p&gt;Program çalıştırıldığında çıktısı aşağıdaki gibi olacaktır.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;json&quot;&gt;&lt;pre class=&quot;language-json&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;&lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;
&lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;
&lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;
&lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;
&lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Programın çalışır haline &lt;a href=&quot;https://go.dev/play/p/4K49W76ixjK&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;şuradan&lt;/a&gt; erişilebilir.&lt;/p&gt;
&lt;h2 id=&quot;kullanım-alanları&quot;&gt;&lt;a href=&quot;#kullan%C4%B1m-alanlar%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kullanım Alanları&lt;/h2&gt;
&lt;p&gt;Bloom Filtresi, belirli özellikleri nedeniyle çeşitli kullanım alanlarında tercih edilen bir veri yapısıdır. Aşağıda, Bloom Filtresi’nin yaygın olarak kullanıldığı bazı alanlar bulunmaktadır:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Veri Tabanı ve Önbellek Yönetimi: Büyük veri tabanları üzerinde hızlı sorgulamalar yapmak için kullanılır. Özellikle veri tabanında bulunan veya henüz oluşturulmamış olası sorgulamaları hızlandırmak için Bloom Filtresi, veritabanının daha az yüklenmesini sağlar. Aynı şekilde, önbellek yönetiminde de sık kullanılır.&lt;/li&gt;
&lt;li&gt;Web Tarayıcılarında URL Geçmişi: Web tarayıcılarında, ziyaret edilen URL’leri veya web sayfalarını hafızada tutmak için Bloom Filtresi kullanılabilir. Bu, tarayıcıların ziyaret edilen sayfaları daha hızlı bir şekilde sorgulayabilmesine yardımcı olur.&lt;/li&gt;
&lt;li&gt;Dağıtık Sistemler: Dağıtık sistemlerde, verilerin varlığını hızlı bir şekilde sorgulamak için kullanılır. Örneğin, dağıtık dosya sistemlerinde veya dağıtık anahtar-değer depolama sistemlerinde anahtarların varlığını kontrol etmek için Bloom Filtresi kullanılabilir.&lt;/li&gt;
&lt;li&gt;Spam Filtreleme: E-posta veya mesaj uygulamalarında, spam e-postalarını veya spam mesajları hızlı bir şekilde filtrelemek için Bloom Filtresi kullanılabilir. Böylece, spam filtreleme işlemleri daha hızlı gerçekleştirilebilir.&lt;/li&gt;
&lt;li&gt;Grafik ve Ağ Algoritmaları: Grafiklerde ve ağ algoritmalarında kullanılan belirli veri yapılarını hızlandırmak için Bloom Filtresi tercih edilebilir. Örneğin, grafik veri yapısındaki düğümlerin varlığını kontrol etmek veya ağdaki bağlantıları takip etmek için kullanılabilir.&lt;/li&gt;
&lt;li&gt;Hafıza Verimliliği Gerektiren Uygulamalar: Bloom Filtresi, diğer veri yapılarına göre daha az bellek tüketir. Bu nedenle, hafıza verimliliğinin önemli olduğu uygulamalarda tercih edilir.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Bloom_filter&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/Bloom_filter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.baeldung.com/cs/bloom-filter&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.baeldung.com/cs/bloom-filter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://systemdesign.one/bloom-filters-explained/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://systemdesign.one/bloom-filters-explained/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.enjoyalgorithms.com/blog/bloom-filter&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.enjoyalgorithms.com/blog/bloom-filter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://brilliant.org/wiki/bloom-filter/#:~:text=A%20bloom%20filter%20is%20a,is%20added%20to%20the%20set&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://brilliant.org/wiki/bloom-filter/#:~:text=A%20bloom%20filter%20is%20a,is%20added%20to%20the%20set&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2023/bloom-filter/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Knuth-Morris-Pratt (KMP) Algoritması]]></title><description><![CDATA[Knuth-Morris-Pratt (KMP) algoritması, bir metin içinde verilen bir deseni (pattern) arama amacıyla kullanılan etkili bir dize arama algoritmasıdır. Özellikle büyük metinlerde veya metin koleksiyonlarında hızlı bir şekilde desen aramak için tercih edilen bir algoritmadır. KMP algoritması, özellikle veri sıkıştırma, metin düzenleme, veritabanı sorgulamaları ve genel olarak metin işleme alanlarında kullanılır.]]></description><link>https://blog.hkucuk.com/2023/knuth-morris-pratt-kmp-algoritmasi/</link><guid isPermaLink="false">https://blog.hkucuk.com/2023/knuth-morris-pratt-kmp-algoritmasi/</guid><pubDate>Fri, 21 Apr 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Knuth-Morris-Pratt (KMP) algoritması, bir metin içinde verilen bir deseni (pattern) arama amacıyla kullanılan etkili bir dize arama algoritmasıdır. Özellikle büyük metinlerde veya metin koleksiyonlarında hızlı bir şekilde desen aramak için tercih edilen bir algoritmadır. KMP algoritması, özellikle veri sıkıştırma, metin düzenleme, veritabanı sorgulamaları ve genel olarak metin işleme alanlarında kullanılır.&lt;/p&gt;
&lt;p&gt;KMP algoritmasının temel prensibi, normalde yapılan tüm karşılaştırmaları bir araya getirerek desen ve metin arasındaki ilişkileri kullanmaktır. Bu sayede gereksiz karşılaştırmaları önler ve daha hızlı bir arama sağlar. KMP algoritması, çalışma zamanı bakımından kötü durumlarda bile lineer zaman karmaşıklığına (O(m + n)) sahip olabilir, burada “m” desenin uzunluğunu, “n” metnin uzunluğunu ifade eder.&lt;/p&gt;
&lt;p&gt;KMP algoritmasının çalışma adımları şunlardır:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Deseni ve metni hazırla:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Desen: Aranacak dizeyi temsil eder.&lt;/li&gt;
&lt;li&gt;Metin: Deseni içinde arayacağımız ana dizeyi temsil eder.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Prefix Fonksiyonunu Hesapla:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Prefix fonksiyonu (veya başlangıç fonksiyonu), desen içindeki her bir pozisyona karşılık gelen en uzun önek (prefix) uzunluklarını hesaplar. Bu, desen içinde tekrar eden alt dizelerin tespit edilmesine yardımcı olur.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Deseni Metin Üzerinde Kaydırarak Arama:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Deseni metin üzerinde sola doğru kaydırarak arama yapılır.&lt;/li&gt;
&lt;li&gt;Eşleşen karakterlerde kayma yapılırken, eşleşmeyen karakterlerde prefix fonksiyonundan gelen bilgiler kullanılarak ilerleme sağlanır. Bu, gereksiz karşılaştırmaların önüne geçer.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Bu adımlar sayesinde KMP algoritması, desen-metin eşleştirmelerini hızlı bir şekilde bulabilir ve performansı artırabilir. KMP algoritması, Brute Force (Kaba Kuvvet) yöntemine göre daha hızlıdır ve genellikle büyük veri kümesinde dize aramak gerektiğinde tercih edilen bir çözümdür.&lt;/p&gt;
&lt;h2 id=&quot;karmaşıklık&quot;&gt;&lt;a href=&quot;#karma%C5%9F%C4%B1kl%C4%B1k&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Karmaşıklık&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Time: O(|m| + |n|)&lt;/li&gt;
&lt;li&gt;Space: O(|m|)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;golangde-knuth-morris-pratt-algoritması-uygulaması&quot;&gt;&lt;a href=&quot;#golangde-knuth-morris-pratt-algoritmas%C4%B1-uygulamas%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;GoLang’de Knuth-Morris-Pratt Algoritması uygulaması:&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;fmt&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;computePrefixFunction&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;pattern &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	length &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;pattern&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	prefixFunc &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; length&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	
	prefixLen &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;
	i &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
	
	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; length &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; pattern&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; pattern&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;prefixLen&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			prefixLen&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;
			prefixFunc&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; prefixLen
			i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; prefixLen &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
				prefixLen &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; prefixFunc&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;prefixLen&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
			&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
				prefixFunc&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;
				i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;
			&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	
	&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; prefixFunc
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;kmpSearch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;text&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pattern &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	prefixFunc &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;computePrefixFunction&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;pattern&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	
	textLen &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;text&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	patternLen &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;pattern&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	
	i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;
	indices &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	
	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; textLen &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; pattern&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; text&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;
			j&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
		
		&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; patternLen &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			indices &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;indices&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
			j &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; prefixFunc&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; textLen &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; pattern&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; text&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
				j &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; prefixFunc&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
			&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
				i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;
			&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	
	&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; indices
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	text &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;ababcababcabcabc&quot;&lt;/span&gt;
	pattern &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;abcabc&quot;&lt;/span&gt;
	
	indices &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;kmpSearch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;text&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pattern&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	
	&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;indices&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Desen metinde bulunamadı.&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Desen metinde bulundu, başlangıç indeksleri:&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; indices&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Bu örnek, KMP algoritmasının temel mantığını Go dilinde uygulamaktadır. &lt;strong&gt;computePrefixFunction&lt;/strong&gt; fonksiyonu, desen için önek fonksiyonunu hesaplar. &lt;strong&gt;kmpSearch&lt;/strong&gt; fonksiyonu ise KMP algoritmasının desen arama işlemini gerçekleştirir. &lt;strong&gt;main&lt;/strong&gt; fonksiyonunda ise örnek bir metin ve desen üzerinde algoritma çalıştırılmış ve sonuçları yazdırmıştır. Bu kodu kullanarak istediğiniz metin ve desende KMP algoritmasını deneyebilirsiniz.&lt;/p&gt;
&lt;p&gt;Program çalıştırıldığında çıktısı aşağıdaki gibi olacaktır.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;json&quot;&gt;&lt;pre class=&quot;language-json&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;Desen metinde bulundu&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; başlangıç indeksleri&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;7&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Programın çalışır haline &lt;a href=&quot;https://go.dev/play/p/1H7hyyKALCH&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;şuradan&lt;/a&gt; erişilebilir.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.educative.io/answers/what-is-the-knuth-morris-pratt-algorithm&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.educative.io/answers/what-is-the-knuth-morris-pratt-algorithm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.shiksha.com/online-courses/articles/introduction-to-kmp-algorithm/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.shiksha.com/online-courses/articles/introduction-to-kmp-algorithm/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2023/knuth-morris-pratt-kmp-algoritmasi/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Bremont Wright Flyer Saatinin Hikayesi ve Özellikleri]]></title><description><![CDATA[Bremont Wright Flyer Limited Edition saati, havacılık tarihinin en önemli olaylarından birine, Wright Kardeşler'in 1903 yılında gerçekleştirdikleri ilk motorlu uçuşa saygı duruşunda bulunmak amacıyla tasarlanmıştır. Orville ve Wilbur Wright, 17 Aralık 1903'te Kuzey Carolina, Kitty Hawk'ta yaptıkları bu uçuşla, modern havacılığın temelini atmışlardır.]]></description><link>https://blog.hkucuk.com/2023/bremont-wright-flyer/</link><guid isPermaLink="false">https://blog.hkucuk.com/2023/bremont-wright-flyer/</guid><pubDate>Wed, 05 Apr 2023 00:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;tarihi-arka-plan&quot;&gt;&lt;a href=&quot;#tarihi-arka-plan&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Tarihi Arka Plan&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://www.bremont.com/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Bremont&lt;/a&gt; Wright Flyer Limited Edition saati, havacılık tarihinin en önemli olaylarından birine, &lt;a href=&quot;https://en.wikipedia.org/wiki/Wright_brothers&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Wright Kardeşler&lt;/a&gt;‘in 1903 yılında gerçekleştirdikleri ilk motorlu uçuşa saygı duruşunda bulunmak amacıyla tasarlanmıştır. Orville ve Wilbur Wright, 17 Aralık 1903’te Kuzey Carolina, Kitty Hawk’ta yaptıkları bu uçuşla, modern havacılığın temelini atmışlardır. Bu uçuş sadece 12 saniye sürmüş ve 120 feet mesafe kat etmiştir ancak bu insanlık tarihinde bir dönüm noktası olmuştur. Bu olağanüstü başarı, havacılığın gelişimini hızlandırmış ve dünya genelinde seyahatin dönüşümünde kritik bir rol oynamıştır.&lt;/p&gt;
&lt;h2 id=&quot;saatin-hikayesi&quot;&gt;&lt;a href=&quot;#saatin-hikayesi&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Saatin Hikayesi&lt;/h2&gt;
&lt;p&gt;Bremont havacılık mirasını kutlamak ve &lt;a href=&quot;https://en.wikipedia.org/wiki/Wright_brothers&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Wright Kardeşler&lt;/a&gt;‘in bu önemli başarılarını onurlandırmak amacıyla, sınırlı sayıda üretilen &lt;a href=&quot;https://www.bremont.com/products/wf-ss&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Wright Flyer Limited Edition&lt;/a&gt; saatini tasarlamıştır. Bu özel saat, Wright Kardeşler’in ilk uçuşunda kullanılan orijinal Wright Flyer uçağının bir parçasını içermesiyle dikkat çekmektedir. Uçağın kanadından alınan orijinal bez parçası, saatin kadranında yer alarak ona eşsiz bir tarihsel değer katmaktadır. Bu saatin sadece bir zaman ölçme aracı değil, aynı zamanda havacılık tarihinin bir parçası olduğu anlamına gelir.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/455a5816eb4de0bf6d49d4fb1174e462/1dbe8/image.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 127.02702702702702%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAZCAIAAAC+dZmEAAAACXBIWXMAAAsTAAALEwEAmpwYAAADLUlEQVR42mP4jw7+AfH3b19ePLr57MHNp/evP7x16d7NSz9+fMdQ+Z8BXes/kOaP795cOX3g8un954/tOnVw65E9Gz9+fA+XJaD5yYNbGxZ0rpvfuXpW66JJtZNbCp88ug+W/YtX81+Q9N0bF+d15S3qLZzdlt1fnVCTHXzv9jWg+N+/+DWDzX546+KKicWLevJmtWb0VsZWZgTcvXmFCM1g6Wvnj3UUh+dHu8T7WOREOOXHuJ4/fYyAZoiHX796UZaX5mBhHOzvE+zv5+FsD2THRoZ9/PQRLcywaH786MHKZQtPnzq9Y8fWpUvmL5g/Z86cWWmpyc+ePiWs+fKlC3v37qmoKA8M9Hd1dXZ3c0xJjmtva9qxfStOzRDRb9++XTh/LiEu1tnFJSM3r6ymKj83NiM9PiEhZtbMac+fo1iOYjMwPD59+jRzxrQg/6CMrOyYxPiqurLKstS+7qb4WP/6htoTx49g1/z79+8jRw7fuX2jtbXVz9fH292ptKKqtaOjqiqnuiS+s72prb1144a16M6G8L9/+zZt6uQzp48lJydraWrGxcfk5OUWFJXW1JaXl+RkZmYVFuZt2LD2z58/2P387t37e3dvVlaWq6sq2TnYJ6Sl5BWkNzY3Bvp7S4gKREdFbt+2BbuzIUIPHtxbt3allaWZjpaanZ1dTEyYr4+bmoqCuZlxU2Pd2bNnkJMKuuafP3+sXrVi8qQJFhZmZkbaFQUxlqZ6Bvp6qSmJwID8/fsXgRR2+/atNatXrlixzNPD2UBfy9rStCA/Z0J/76NHDwknkh8/vs2bOzs+Lt7D3UNf38DJySkqKnrd2lW/fv3Epxkut3vbhpqc8NKM8OqCxJKMiKQQx93bNxFTGEDy8/kVk8tWTi6f15k7ozmjqzz2zvWLhLMkRPrK+eP9NYm9lfGtRZG12UFlqX63rhGt+fql09OaMqY0pvfWJLeVxtZkh9y6fonYkuTB3Rur53auntu1YlbbwskNUzvKHz+4S0QZBik937+9fv7YtXNHL58+dP74/lOHd3/++IFwgEHAj+9fXz59+OLJg+eP7z99eBeIfv74gakMAGL9woK9dSQ5AAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Bremont Wright Flyer Limited Edition&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/455a5816eb4de0bf6d49d4fb1174e462/fcda8/image.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/455a5816eb4de0bf6d49d4fb1174e462/12f09/image.png 148w,https://blog.hkucuk.com/static/455a5816eb4de0bf6d49d4fb1174e462/e4a3f/image.png 295w,https://blog.hkucuk.com/static/455a5816eb4de0bf6d49d4fb1174e462/fcda8/image.png 590w,https://blog.hkucuk.com/static/455a5816eb4de0bf6d49d4fb1174e462/efc66/image.png 885w,https://blog.hkucuk.com/static/455a5816eb4de0bf6d49d4fb1174e462/c83ae/image.png 1180w,https://blog.hkucuk.com/static/455a5816eb4de0bf6d49d4fb1174e462/1dbe8/image.png 1374w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;h2 id=&quot;saatin-özellikleri&quot;&gt;&lt;a href=&quot;#saatin-%C3%B6zellikleri&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Saatin Özellikleri&lt;/h2&gt;
&lt;p&gt;Bremont Wright Flyer Limited Edition saati, yüksek kaliteli malzemeler ve üstün saat yapım teknikleri kullanılarak üretilmiştir. Saatin özellikleri şu şekildedir:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Kasa Çapı: 43 mm&lt;/li&gt;
&lt;li&gt;Kasa Malzemesi: Paslanmaz çelik, 18k beyaz altın veya 18k roze altın seçenekleri&lt;/li&gt;
&lt;li&gt;Kadran: Beyaz veya siyah kadran, Wright Flyer’ın kanadından alınan orijinal bez parçası içerir&lt;/li&gt;
&lt;li&gt;Cam: Çift kubbeli safir kristal, yansıma önleyici kaplama&lt;/li&gt;
&lt;li&gt;Kayış: El dikişli aligator derisi kayış, 18k beyaz altın veya 18k roze altın toka&lt;/li&gt;
&lt;li&gt;Su Geçirmezlik: 100 metre (10 ATM)&lt;/li&gt;
&lt;li&gt;Mekanizma: Bremont’un özel BE-10AE mekanizması, 50 saat güç rezervi&lt;/li&gt;
&lt;li&gt;Sınırlı Üretim: Her biri numaralandırılmış 300 adet paslanmaz çelik, 100 adet beyaz altın ve 100 adet roze altın olmak üzere toplamda sadece 500 adet üretilmiştir&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/1f75062124d835c3b5cb575d0abc2a66/aa440/image-1.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 100%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAETklEQVR42o1Va0xTZxj+zuncvyFBRKQtLaU3aOkp57Q9vUFZpgZoy50xCMYsWYwyTXZ1IcgGCoIIFhQQHBexwihIuSnOZExk+zFwnWP8WfgxcMkG2aB/wG2l9Pt2jtmWdHPAm3w558f7Ped9n/d5nwPAc0Kr04MkSwrGHFBUXBRiz8jMtNrsmXn5+SEaHQ3UJIUd5PLBrkOZQGBcfjQgEknKaDJ/bzInI5o2Ikqrm49XqhQAYCA0LBxrbLqya8AXpPI4IJbKOwg1hYzGJB9F0ZuiWCmKiZV079sfAfgCIb4rsDeOnwAhe8M4L+0NA0w1/YSaRBoN7VerSb8wRowksrixv1Kxzq7unQFdLhdncXERzM/PH8vNyw+IROKAjtZDrY6G/GhhIN1qQ3Nzc28jhIDXu4Z7vv1ue0AGjLO8vAwaGxsH29vb0YWai77CgkJUXFQMq6qq/XV1daihof6LhYUFsPTkyf+3zRAOTp0+jeXm5oDDh17hdXXfWC0vK0cUQUKLQQNTjDqojFPAd996B11taV03mkyxzPRByZun8ObWVtDjdAYDptvs4OHU1LPqenp6HBXlFUgkEPiTaBJpyUSkUiqQQiZFByOj/GWlZWzbbWtrXjD5+QP8MjNtZ29fMKB7eBgbv3sHTEyMh0/cu+89lJyMjr5qC1jMJqhQqJBSSUBCpYbWw5YATWnQ7CPPGsMjb2NjHbB89va7ggG/9njwPzZ94JfVVePQ7SFkS7fCrq5u2N/nhDnZOUilUiOpRAaF0QKo15BowDXouz009PN7Zz7Iam5pATedzmA+Z2Zn8fWnG+CnlWUDC5idkQHb2q9Dh6MJ2m12xOUK0L6w/ZDH5UFNohr19X7i6+js3CgtO/tay7VWwLwHA342OYl989gDHntmwh9MTXstZjNKZ9oTCESQzxcisViGQkPDoY5UBYy0Ht242ftrdU0tX5mgZW6/CC45HMEtj4yOspLBWT6WlpYaHA0OFBlxwB8vkyA1oUZymRyShAJxo6L8F6pq0MzMTDObu+nz486+W+DylX+t4ZDbDcbGx7Hp6Slw/95dnnt0zMvKxsQI2kRrGN4omGQwwnJmwoPu4aePZr+SPmRyh0dG8Lbr7cBxpem/WmRIBimWFJwiKXDu/Pk7jC5RTW3tZlZmFsrPzYfVNRe3Tp4sQZWV575MS00DR46k4tl52dtvSt2leo7zVh9wDQy+rzeaEI8XvUVSWsjsNOTy+FuJpAb1uwYqPvyoEhw/UYKvLK9sD5hTUMA+nk1MkUC4SVKLKErrJ4jELdZt5HGKT//5eH3DzuZwraMLqNTkHnm8grWvj1UEiQwG828Upfs9RiRBQpHYGcnlgViJjMMOZcc4U3qWrQxnDVapUtMGo/lHc5Llb4P9IU6ZoMI4e0BYeAR29NjruzNYLa0HySkv48wBOXm5B9Kt9sLUNGshYwaROr0RML8BjBcteO7dPwEV8dOLEwdZtwAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Bremont Wright Flyer Limited Edition&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/1f75062124d835c3b5cb575d0abc2a66/fcda8/image-1.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/1f75062124d835c3b5cb575d0abc2a66/12f09/image-1.png 148w,https://blog.hkucuk.com/static/1f75062124d835c3b5cb575d0abc2a66/e4a3f/image-1.png 295w,https://blog.hkucuk.com/static/1f75062124d835c3b5cb575d0abc2a66/fcda8/image-1.png 590w,https://blog.hkucuk.com/static/1f75062124d835c3b5cb575d0abc2a66/efc66/image-1.png 885w,https://blog.hkucuk.com/static/1f75062124d835c3b5cb575d0abc2a66/c83ae/image-1.png 1180w,https://blog.hkucuk.com/static/1f75062124d835c3b5cb575d0abc2a66/aa440/image-1.png 1500w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Bremont Wright Flyer Limited Edition saati sadece bir saat değil, aynı zamanda havacılık tarihinin önemli bir parçasını taşıyan bir koleksiyon eseridir. Wright Kardeşler’in ilk motorlu uçuşuna saygı duruşunda bulunan bu saat yüksek kaliteli işçiliği ve benzersiz tarihi değeri ile dikkat çekmektedir. Sınırlı sayıda üretilen bu özel saat, havacılık tutkunları ve saat koleksiyoncuları için eşsiz bir parçadır.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.bremont.com/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.bremont.com/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2023/bremont-wright-flyer/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Yazılımcıların Bilmesi Gereken Prensipler]]></title><description><![CDATA[Yazılım geliştirme dünyası hızla ilerliyor ve bu hızlı ilerleyiş, geliştiricilerin daha fazla sayıda proje üzerinde çalışmasını gerektiriyor. Ancak, yazılım geliştirirken, belirli prensiplere uymak, kodun daha okunaklı, yeniden kullanılabilir ve bakımı yapılabilir olmasını sağlamak açısından son derece önemlidir. Bu nedenle, yazılım geliştirme sürecinde sık kullanılan bazı prensipler mevcuttur.]]></description><link>https://blog.hkucuk.com/2023/yazilimcilarin-bilmesi-gereken-prensipler/</link><guid isPermaLink="false">https://blog.hkucuk.com/2023/yazilimcilarin-bilmesi-gereken-prensipler/</guid><pubDate>Mon, 23 Jan 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Yazılım geliştirme dünyası hızla ilerliyor ve bu hızlı ilerleyiş, geliştiricilerin daha fazla sayıda proje üzerinde çalışmasını gerektiriyor. Ancak, yazılım geliştirirken, belirli prensiplere uymak, kodun daha okunaklı, yeniden kullanılabilir ve bakımı yapılabilir olmasını sağlamak açısından son derece önemlidir.&lt;/p&gt;
&lt;p&gt;Bu nedenle, yazılım geliştirme sürecinde sık kullanılan bazı prensipler mevcuttur. Bu makalede YAGNI, DRY, SOC, KISS, LOD ve SOLID prensiplerini inceleyeceğiz. Bu prensipler, yazılım geliştirme sürecinde takip edilmesi gereken en önemli prensiplerden bazılarıdır.&lt;/p&gt;
&lt;h2 id=&quot;yagni&quot;&gt;&lt;a href=&quot;#yagni&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;YAGNI&lt;/h2&gt;
&lt;p&gt;YAGNI prensibi, “You Ain’t Gonna Need It veya You Aren’t Gonna Need It” ifadesinin kısaltmasıdır ve Türkçe anlamı “Buna İhtiyacın Olmayacak” demektir. Yazılım geliştirme sürecinde bu prensip, gereksiz kod yazmaktan kaçınmanın önemini vurgular.&lt;/p&gt;
&lt;p&gt;YAGNI prensibi, gelecekte belki kullanılabilecek özellikleri veya fonksiyonları şimdiden kodlamak yerine, sadece o anki ihtiyaçlara odaklanmayı önerir. Bu sayede, gereksiz kod yazarak zaman ve emek kaybı yaşanmasının önüne geçilir.&lt;/p&gt;
&lt;p&gt;Bu prensip, kodun basit ve sade kalmasını sağlar. Bu da yazılımın daha kolay anlaşılabilir, test edilebilir ve bakımı yapılabilir hale gelmesini sağlar. Ayrıca, gereksiz kod yazımı yerine sadece ihtiyaç duyulan kod yazılarak kod kalitesi de arttırılmış olur.&lt;/p&gt;
&lt;p&gt;Sonuç olarak, YAGNI prensibi, yazılım geliştirme sürecinde önemli bir prensiptir ve gereksiz kod yazmaktan kaçınarak, daha iyi ve sade bir kod yazımına yardımcı olur.&lt;/p&gt;
&lt;h2 id=&quot;dry&quot;&gt;&lt;a href=&quot;#dry&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;DRY&lt;/h2&gt;
&lt;p&gt;DRY prensibi, “Don’t Repeat Yourself” (Kendini Tekrarlama) ifadesinin kısaltmasıdır. Bu prensip, yazılım geliştirme sürecinde tekrarlanan kod bloklarından kaçınmanın önemini vurgular.&lt;/p&gt;
&lt;p&gt;DRY prensibi, aynı kodun birden fazla yerde kullanılması yerine, bir fonksiyon ya da metot şeklinde yazılarak kodun yeniden kullanılabilirliğini artırır. Böylece, geliştiriciler aynı kodu tekrar tekrar yazmak yerine, daha önce yazdıkları kodu kullanarak zamandan tasarruf ederler.&lt;/p&gt;
&lt;p&gt;DRY prensibi ayrıca kodun okunabilirliğini artırır. Tekrarlanan kod blokları, kodun okunmasını ve anlaşılmasını zorlaştırır. Kodda değişiklik yapmak gerektiğinde, tekrarlanan kodların değiştirilmesi gerekir ve bu da daha fazla zaman alır.&lt;/p&gt;
&lt;p&gt;DRY prensibi, yazılım geliştirme sürecinde kodun sadeleştirilmesine yardımcı olur ve kod kalitesini artırır. Ancak, bu prensibin uygulanması, kodun yeniden kullanılabilirliğini artırırken aynı zamanda kodun doğru şekilde organize edilmesini ve bütünlüğünü korumasını gerektirir.&lt;/p&gt;
&lt;p&gt;Sonuç olarak, DRY prensibi, yazılım geliştirme sürecinde tekrarlanan kod bloklarından kaçınmanın önemini vurgular ve kodun sadeleştirilmesine yardımcı olur. Bu prensip, kodun yeniden kullanılabilirliğini artırarak yazılım geliştirme sürecinde zaman ve emek tasarrufu sağlar.&lt;/p&gt;
&lt;h2 id=&quot;soc&quot;&gt;&lt;a href=&quot;#soc&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;SOC&lt;/h2&gt;
&lt;p&gt;SOC (Separation of Concerns), Türkçe’ye “Endişelerin Ayrıştırılması” olarak çevrilebilecek bir prensiptir. Yazılım geliştirme sürecinde bu prensip, farklı işlevleri olan parçaların birbirinden bağımsız olarak tasarlanmasını ve geliştirilmesini önerir.&lt;/p&gt;
&lt;p&gt;Bu prensibe göre, bir yazılımın farklı işlevleri, kendi endişeleri ile ilgili bölümlerde düzenlenmelidir. Bir yazılımın belirli bir işlevi için geliştirilen kod blokları, sadece o işlevi yerine getirmekle ilgilenmelidir ve başka işlevleri etkilememelidir.&lt;/p&gt;
&lt;p&gt;SOC prensibi, yazılımın daha modüler hale gelmesini sağlar. Modüler yazılım, farklı işlevleri olan parçaların birleştirilmesiyle oluşturulur. Bu sayede, her bir parça birbirinden bağımsız olarak geliştirilir ve test edilir. Bu da yazılımın daha güvenilir, okunaklı ve sürdürülebilir olmasını sağlar.&lt;/p&gt;
&lt;p&gt;SOC prensibi ayrıca, yazılım geliştirme sürecinde yeniden kullanılabilirliği artırır. Modüler bir yaklaşım, farklı yazılım parçalarının başka projelerde veya farklı işlevlerde yeniden kullanılmasını kolaylaştırır.&lt;/p&gt;
&lt;p&gt;Sonuç olarak, SOC prensibi, yazılımın farklı işlevleri için geliştirilen kod bloklarının birbirinden bağımsız olarak tasarlanmasını ve geliştirilmesini önerir. Bu prensip, yazılımın daha modüler hale gelmesini, daha güvenilir ve sürdürülebilir olmasını sağlar ve yazılım geliştirme sürecinde yeniden kullanılabilirliği artırır.&lt;/p&gt;
&lt;h2 id=&quot;kiss&quot;&gt;&lt;a href=&quot;#kiss&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;KISS&lt;/h2&gt;
&lt;p&gt;KISS, “Keep It Simple, Stupid veya Keep It Short and Simple” (Basit Tut, Aptal) kısaltmasının açılımıdır. Yazılım geliştirme sürecinde, bu prensip, bir tasarımın en basit haliyle tutulması gerektiğini vurgular.&lt;/p&gt;
&lt;p&gt;KISS prensibi, yazılımın daha okunaklı, sürdürülebilir ve test edilebilir olmasını sağlar. Karmaşık tasarımlar, kodun anlaşılmasını zorlaştırır ve hataların tespit edilmesini ve giderilmesini güçleştirir.&lt;/p&gt;
&lt;p&gt;KISS prensibi, yazılımın daha basit olmasını önerir, ancak bu, kodun işlevselliğinden ödün vermek anlamına gelmez. Tam tersine, KISS prensibi, işlevselliği ve kaliteyi artırmak için gereksiz karmaşıklıklardan kaçınmayı önerir.&lt;/p&gt;
&lt;p&gt;KISS prensibinin uygulanması, kodun daha okunaklı hale gelmesini sağlar. Basit bir kod, geliştiricilerin kodu daha hızlı anlamasını ve değişiklik yapmasını sağlar. Ayrıca, basit bir kod, yeni geliştiricilerin projeye daha hızlı adapte olmasını sağlar.&lt;/p&gt;
&lt;p&gt;KISS prensibi ayrıca, yazılımın daha sürdürülebilir hale gelmesini sağlar. Karmaşık kodlar, bakım ve güncelleme işlemlerini zorlaştırırken, basit kodlar daha az hata içerir ve daha kolay bakım yapılmasını sağlar.&lt;/p&gt;
&lt;p&gt;Sonuç olarak, KISS prensibi, yazılımın en basit haliyle tutulmasını önerir. Bu prensip, yazılımın daha okunaklı, sürdürülebilir ve test edilebilir olmasını sağlar. Basit bir kod, yazılım geliştirme sürecinde hızlı ve kolay değişiklik yapılmasını sağlar ve daha az hata içerir.&lt;/p&gt;
&lt;h2 id=&quot;lod&quot;&gt;&lt;a href=&quot;#lod&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;LOD&lt;/h2&gt;
&lt;p&gt;LOD (Law of Demeter), yazılım geliştirme sürecinde, nesneler arasındaki bağımlılık seviyesini minimize etmeyi öneren bir prensiptir. LOD, ayrıca “Least Knowledge Principle” (En Az Bilgi Prensipleri) olarak da bilinir.&lt;/p&gt;
&lt;p&gt;LOD prensibi, bir sınıfın diğer sınıflara mümkün olduğunca az bağımlı olması gerektiğini belirtir. Bir sınıfın sadece doğrudan bağımlı olduğu sınıflarla etkileşimde bulunması önerilir. Yani, bir sınıf, başka sınıfların başka sınıflarla olan ilişkilerinden haberdar olmamalıdır.&lt;/p&gt;
&lt;p&gt;Bu prensibin temel amacı, yazılımın daha esnek ve yeniden kullanılabilir hale gelmesini sağlamaktır. Bir sınıfın diğer sınıflara sıkı sıkıya bağımlı olması durumunda, değişikliklerin yapılması ve yeniden kullanılabilirliğin sağlanması daha zor hale gelir.&lt;/p&gt;
&lt;p&gt;LOD prensibi, yazılım geliştiricilerine sınıflar arasındaki bağımlılıkları azaltmak için birkaç yöntem önerir. Bunlar arasında, sınıfın diğer sınıflarla olan etkileşimini sınırlamak, sınıfın sadece kendi görevleri ile ilgili bilgiyi saklamak, ara katmanlar kullanmak ve gerekirse arayüzler kullanmak sayılabilir.&lt;/p&gt;
&lt;p&gt;Sonuç olarak, LOD prensibi, yazılımın esnek, sürdürülebilir ve yeniden kullanılabilir olmasını sağlamak için, sınıflar arasındaki bağımlılık seviyesini minimize etmeyi önerir. Bu prensip, bir sınıfın sadece kendi görevleriyle ilgili bilgiyi saklamasını ve sadece doğrudan bağımlı olduğu sınıflarla etkileşimde bulunmasını önerir. Bu sayede, yazılım daha az hata içerecek ve daha kolay bakım yapılmasını sağlayacaktır.&lt;/p&gt;
&lt;h2 id=&quot;solid&quot;&gt;&lt;a href=&quot;#solid&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;SOLID&lt;/h2&gt;
&lt;p&gt;SOLID, yazılım mühendisliğinde kullanılan temel prensiplerin bir &lt;a href=&quot;https://tr.wikipedia.org/wiki/Akronim&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;akronim&lt;/a&gt;ididir. Bu prensipler, yazılımın daha esnek, sürdürülebilir, bakımı kolay, yeniden kullanılabilir ve genişletilebilir hale getirilmesini hedeflemektedir. İlk olarak, SOLID prensiplerini belirten Robert C. Martin (a.k.a. Uncle Bob) tarafından tanıtılmıştır.&lt;/p&gt;
&lt;p&gt;SOLID prensipleri şunlardır:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;S - Single Responsibility Principle (Tek Sorumluluk Prensibi)&lt;/li&gt;
&lt;li&gt;O - Open/Closed Principle (Açık/Kapalı Prensibi)&lt;/li&gt;
&lt;li&gt;L - Liskov Substitution Principle (Liskov Yerine Geçme Prensibi)&lt;/li&gt;
&lt;li&gt;I - Interface Segregation Principle (Arayüz Ayrımı Prensibi)&lt;/li&gt;
&lt;li&gt;D - Dependency Inversion Principle (Bağımlılık Tersine Çevirme Prensibi)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bu prensipleri ayrı ayrı açıklayalım:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Tek Sorumluluk Prensibi (Single Responsibility Principle): Bir sınıfın sadece bir görevi veya sorumluluğu olmalıdır. Sınıfların, farklı sorumlulukları olan diğer sınıflarla karıştırılmadan, tek bir sorumluluğa sahip olması, kodun daha okunaklı, anlaşılır ve sürdürülebilir olmasını sağlar.&lt;/li&gt;
&lt;li&gt;Açık/Kapalı Prensibi (Open/Closed Principle): Bir sınıf, değişime kapalı (closed) olmalı, ancak yeni işlevselliği eklemek için açık (open) olmalıdır. Yani, mevcut kodun değiştirilmesi gerektiğinde sınıfı değiştirmek yerine, yeni işlevselliği eklemek için genişletilebilir olmalıdır.&lt;/li&gt;
&lt;li&gt;Liskov Yerine Geçme Prensibi (Liskov Substitution Principle): Herhangi bir alt sınıf, üst sınıfın yerine geçebilmelidir. Bu, alt sınıfların, üst sınıfın davranışlarını koruması gerektiği anlamına gelir. Bu prensibin uygulanması, kodun daha esnek hale gelmesine ve yeniden kullanılabilirliğinin artmasına yardımcı olur.&lt;/li&gt;
&lt;li&gt;Arayüz Ayrımı Prensibi (Interface Segregation Principle): Bir arayüz, kullanmayacağımız özelliklere sahip olmamalıdır. Kullanılmayan özellikler, kodun gereksiz yere büyümesine ve karmaşık hale gelmesine neden olabilir. Bu nedenle, arayüzler, ihtiyaç duyulan işlevselliği kapsayacak şekilde tasarlanmalıdır.&lt;/li&gt;
&lt;li&gt;Bağımlılık Tersine Çevirme Prensibi (Dependency Inversion Principle): Yüksek seviyeli sınıflar, düşük seviyeli sınıflara bağlı olmamalıdır. Bunun yerine, her iki sınıf da soyutlamalara (abstractions) bağımlı olmalıdır. Yüksek seviyeli sınıflar, düşük seviyeli sınıfların nasıl uygulandığından bağımsız olmalıdır. Bu, kodun daha az bağımlı, daha esnek ve yeniden kullanılabilir hale gelmesini sağlar.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;SOLID prensiplerinin uygulanması, yazılım projelerinin daha sürdürülebilir, esnek ve genişletilebilir olmasına yardımcı olur. Bu prensipleri takip etmek, kod kalitesini artırır ve daha az bakım gerektiren, daha az hata veren, daha hızlı geliştirilen ve daha az maliyetli yazılım projeleri oluşturmanıza olanak tanır.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Bu makalede, yazılım geliştiricilerin sıkça duyacakları YAGNI, DRY, SOC, KISS, LOD ve SOLID prensiplerini ele aldık. Bu prensipler, kodun okunabilirliğini, yeniden kullanılabilirliğini, bakımını ve genişletilebilirliğini artırmak için tasarlanmıştır. Bu prensipleri takip etmek, yazılım projelerini daha sürdürülebilir, esnek ve genişletilebilir hale getirebilir.&lt;/p&gt;
&lt;p&gt;SOLID prensipleri, kodun esnekliğini ve yeniden kullanılabilirliğini artırırken, DRY prensibi, kodun tekrarını önleyerek yazılım projelerinin bakımını kolaylaştırır. KISS prensibi, kodun okunabilirliğini artırırken, SOC prensibi, kodu modüler ve bağımsız hale getirerek yazılım projelerini daha sürdürülebilir hale getirir. LOD prensibi, kodun daha az bağımlı hale gelmesini sağlarken, YAGNI prensibi, gereksiz kodların yazılmasını önleyerek kodun daha temiz ve okunaklı hale gelmesine yardımcı olur.&lt;/p&gt;
&lt;p&gt;Bu prensipleri uygulamak, yazılım geliştirme sürecinde daha verimli, daha hızlı ve daha maliyet-etkin olmamıza yardımcı olabilir. Yüksek kaliteli ve esnek bir yazılım ürünü oluşturmak istiyorsak, YAGNI, DRY, SOC, KISS, LOD ve SOLID prensiplerini dikkate almamız önemlidir.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/You_aren%27t_gonna_need_it&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/You_aren%27t_gonna_need_it&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Don%27t_repeat_yourself&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/Don%27t_repeat_yourself&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Separation_of_concerns&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/Separation_of_concerns&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/KISS_principle&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/KISS_principle&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Law_of_Demeter#:~:text=The%20Law%20of%20Demeter%20(LoD,specific%20case%20of%20loose%20coupling&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/Law_of_Demeter#:~:text=The%20Law%20of%20Demeter%20(LoD,specific%20case%20of%20loose%20coupling&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/SOLID&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/SOLID&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tr.wikipedia.org/wiki/Akronim&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://tr.wikipedia.org/wiki/Akronim&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2023/yazilimcilarin-bilmesi-gereken-prensipler/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Omega Speedmaster Professional Chronograph]]></title><description><![CDATA[Omega Speedmaster ilk kez 1957 yılında piyasaya sürüldü. Aslen motor sporları için tasarlanmış olan bu saat, hız ve dayanıklılık temaları etrafında şekillendi. Ancak onun gerçek ünü ve ikonlaşması, uzay araştırmaları ve özellikle Apollo görevleriyle oldu. NASA astronotların kullanımı için çeşitli saatleri test ederken, Omega Speedmaster Professional (Ref. ST105.012) 1965 yılında seçildi.]]></description><link>https://blog.hkucuk.com/2023/omega-speedmaster/</link><guid isPermaLink="false">https://blog.hkucuk.com/2023/omega-speedmaster/</guid><pubDate>Fri, 06 Jan 2023 00:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;tarihi-arka-plan&quot;&gt;&lt;a href=&quot;#tarihi-arka-plan&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Tarihi Arka Plan&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://www.omegawatches.com/en-us/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Omega&lt;/a&gt; Speedmaster ilk kez 1957 yılında piyasaya sürüldü. Aslen motor sporları için tasarlanmış olan bu saat, hız ve dayanıklılık temaları etrafında şekillendi. Ancak onun gerçek ünü ve ikonlaşması, uzay araştırmaları ve özellikle Apollo görevleriyle oldu. &lt;a href=&quot;https://www.nasa.gov/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;NASA&lt;/a&gt; astronotların kullanımı için çeşitli saatleri test ederken, Omega Speedmaster Professional (Ref. ST105.012) 1965 yılında seçildi. Saat ekstrem sıcaklıklar, vakum koşulları, nem, şok ve diğer zorlu koşullara karşı dayanıklılığını kanıtladı.&lt;/p&gt;
&lt;h2 id=&quot;aya-yolculuk-ve-önemi&quot;&gt;&lt;a href=&quot;#aya-yolculuk-ve-%C3%B6nemi&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Ay’a Yolculuk ve Önemi&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://samiwatches.com/magaza/omega-speedmaster-57-332-10-41-51-01-001/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Omega Speedmaster Professional&lt;/a&gt; 20 Temmuz 1969’da gerçekleşen Apollo 11 görevi sırasında Ay yüzeyine inen ilk saat oldu. Neil Armstrong ve Buzz Aldrin’in kolunda taşıdığı bu saat “Moonwatch” olarak anılmaya başladı. Omega Speedmaster bu tarihi anla özdeşleşerek insanlık tarihinin en önemli keşiflerinden birine tanıklık etti. NASA tarafından resmi olarak onaylanmış tek saat olan Speedmaster, sonraki Apollo görevlerinde ve birçok uzay yürüyüşünde de kullanıldı.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/5e849bd7dfec30667f36fe9d302c1a41/4ad3a/image.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 133.1081081081081%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAbCAIAAADzvTiPAAAACXBIWXMAAAsTAAALEwEAmpwYAAADgUlEQVR42m1Uy05aURS9X2BH9VVElIc8RKtQQEDk4UUQNalNSWpDoJBGo63GRzWmbTRq2kZbJsUIbYzRaDQm1scAKA5MHJafME4d13EXZ+v1Ql2Dk/s4a6+91z77cPUMdSLIZLJahpqaGolE8qgYEhE4hUIhl8uFEAITkEqlJWR6vSM3NDQoGErIMob/+UVktVoNvkqlUiqVSIH44FRVVT1kqKiouJeMB06j0agZEIL4KNXtdo+MjEQikeHh4b6+vvLy8nvz5xobG7VaLYVQMUBqeXn57OwsmUweHh5ubW1VVlZia/UthBBcc3OzXq9HCIGPnPf393O5XCqV2tvbOzk5QXQSry4G19ra+pihiQE5z87OXl//zefzmUzm9DR3dXW1vb2N4sXm3ZBNJpPBYECIlpYW6CPK72w2k8l+i8c/fni/uLiYTKbwxel0PigrA5+af1OzicFoNCIEGhaLRVM/fvYF/C6HzdthM5uMft418ubt1ORUb28vkQVwbW1tZrMZfBKfm5tzOR12q6XdZvH7vI52q7+Ldzqs09PvotEoBKUicHa73cIA2wKBwODgoF7b4Pe6X8ciXV7+Veil3W4zGZr6+5/yPF9KttlsECcyWhp8/qypUedyupDkl8+feI+T573Ygwe40NPTA9vpFBXStlqtYCJzWO3z+QcGXpifGPjOTp/PByPQP76T97g6fF1eHBh8gU90hAtkKhXQ6XSofHx8wuuym4yF/imVCq1GLa+vazM0j42Nuj0enBZi3qStEgEHOxIOQ6Gzw6ZWyBR1tfW1Eo/DMjo2BiOHhoawAWXfua1kQJOw4r27uzsej0NnanJiZmpiZnr668rK+vp6OBwWa2JnQZlGggA+ikyn0wcHv3A2vicSoKXTmXz+DzzDkcLYigeW0zHQeGDFJ4hcXFwcHR0lEglMxeXl5dLSEnyCDOUoZ0CgwlSJAc+hsLOzc35+vrm5eXx8nM1mYR4cgYYwf3QFcHoGcDBetCL22toaRnJjYwP6u7u7+AiC7hZaBkThiECAAnqG3BYWFkCbn59Hzaurq6gFUhoGopH+Tdr6WyAWfuMmicViwWAwFArBf3SI7qkS3BkmJA+Aj8D4ghXekBS1Q7htEZHDPiITky4GJI9VeMUv4bZBCnTVFtymMsR82kqJCOXgL/YI+nTPFpEpedpX4i35JGQOWbj4D+jxbKm6QcYtAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Omega Speedmaster Professional Chronograph&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/5e849bd7dfec30667f36fe9d302c1a41/fcda8/image.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/5e849bd7dfec30667f36fe9d302c1a41/12f09/image.png 148w,https://blog.hkucuk.com/static/5e849bd7dfec30667f36fe9d302c1a41/e4a3f/image.png 295w,https://blog.hkucuk.com/static/5e849bd7dfec30667f36fe9d302c1a41/fcda8/image.png 590w,https://blog.hkucuk.com/static/5e849bd7dfec30667f36fe9d302c1a41/efc66/image.png 885w,https://blog.hkucuk.com/static/5e849bd7dfec30667f36fe9d302c1a41/4ad3a/image.png 1152w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;h2 id=&quot;teknolojik-özellikler&quot;&gt;&lt;a href=&quot;#teknolojik-%C3%B6zellikler&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Teknolojik Özellikler&lt;/h2&gt;
&lt;p&gt;Omega Speedmaster Professional Chronograph, mekanik ve teknik mükemmeliyetiyle bilinir. İşte bu saatin öne çıkan bazı özellikleri:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;- Hareket (Kalibre 1861 ve 3861):&lt;/strong&gt; Speedmaster Professional, Omega’nın ünlü mekanik el kurmalı kalibre 1861 ile donatılmıştır. Kalibre 1861, Apollo görevlerinde kullanılan kalibre 321’in evrimidir. Yeni modellerde kalibre 3861 kullanılmaktadır, bu kalibre Co-Axial mekanizması ve METAS sertifikası ile dikkat çeker.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;- Kronograf Fonksiyonu:&lt;/strong&gt; Saatin kronograf fonksiyonu dakikaları ve saatleri ölçebilme kapasitesine sahiptir. Üç alt kadran saniye, dakika ve saat ölçümlerini gösterir.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;- Tasarım:&lt;/strong&gt; Speedmaster’ın klasik tasarımı siyah kadran ve beyaz indekslerle sade ama işlevsel bir görünüm sunar. 42mm paslanmaz çelik kasası ve hesalite (plastik) kristali, uzay görevleri sırasında yaşanan basınç farklılıklarına dayanıklıdır.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;- Dayanıklılık:&lt;/strong&gt; Saat ekstrem koşullarda bile güvenilir performans sunar. NASA’nın testlerinden başarıyla geçen bu saat şoklara, yüksek ve düşük sıcaklıklara, vakum ve nem koşullarına karşı dayanıklıdır.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;- Su Geçirmezlik:&lt;/strong&gt; Omega Speedmaster Professional 50 metreye kadar suya dayanıklıdır, bu da onu günlük kullanımda suya karşı korunaklı kılar.&lt;/p&gt;
&lt;p&gt;Speedmaster sadece bir saat değil, aynı zamanda bir semboldür. İnsanlığın sınırlarını zorlayarak Ay’a ulaşmasında bir yol arkadaşı olmuş ve zamanın ötesinde bir ikon haline gelmiştir. Bu saat birçok koleksiyoncu için paha biçilmez bir değere sahiptir ve saat tutkunlarının vazgeçilmez parçalarından biridir.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.omegawatches.com/en-us/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.omegawatches.com/en-us/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2023/omega-speedmaster/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[SOLID - Dependency Inversion Principle]]></title><description><![CDATA[Dependency Inversion Prensibi (DIP), nesne yönelimli programlama (OOP) prensiplerinden biridir. DIP, yazılım geliştirme sürecinde, birbirine bağımlı sınıfların oluştuğu ve bu sınıfların birbiriyle sıkı bir şekilde ilişkili olduğu durumlarda, bu bağımlılıkların tersine çevrilmesini ve bağımlılıkların daha az sıkı hale getirilmesini önerir.]]></description><link>https://blog.hkucuk.com/2022/dependency-inversion-principle/</link><guid isPermaLink="false">https://blog.hkucuk.com/2022/dependency-inversion-principle/</guid><pubDate>Sun, 04 Sep 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Dependency Inversion Prensibi (DIP), nesne yönelimli programlama (OOP) prensiplerinden biridir. DIP, yazılım geliştirme sürecinde, birbirine bağımlı sınıfların oluştuğu ve bu sınıfların birbiriyle sıkı bir şekilde ilişkili olduğu durumlarda, bu bağımlılıkların tersine çevrilmesini ve bağımlılıkların daha az sıkı hale getirilmesini önerir. Bu prensip, sınıfların daha az bağımlı hale getirilmesini ve böylece daha esnek ve yeniden kullanılabilir hale gelmesini sağlar.&lt;/p&gt;
&lt;p&gt;DIP, aynı zamanda SOLID prensiplerinin “D” harfini ifade eder. Prensipte, bir üst seviyedeki modül, alt seviyedeki modüle doğrudan bağımlı olmamalıdır. Bunun yerine, üst seviyedeki modül, alt seviyedeki modüle bağımlılığı tersine çevirmeli ve bu modüller arasında bir arayüz sağlamalıdır. Bu sayede, alt seviyedeki modüllerin uygulaması değişse bile üst seviyedeki modülün değiştirilmesi gerekmez.&lt;/p&gt;
&lt;p&gt;DIP, kodun bakımı ve test edilebilirliği açısından da önemlidir. Bağımlılıkların tersine çevrilmesi, bir sınıfın değiştirilmesi gerektiğinde, diğer sınıfların etkilenmemesini sağlar. Bu, kodun yeniden kullanılabilirliğini artırır ve bakım maliyetlerini azaltır.&lt;/p&gt;
&lt;h2 id=&quot;phpde-dependency-inversion-prensibini-uygulamak-için-aşağıdaki-gibi-bir-örnek-verilebilir&quot;&gt;&lt;a href=&quot;#phpde-dependency-inversion-prensibini-uygulamak-i%C3%A7in-a%C5%9Fa%C4%9F%C4%B1daki-gibi-bir-%C3%B6rnek-verilebilir&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;PHP’de, Dependency Inversion prensibini uygulamak için aşağıdaki gibi bir örnek verilebilir:&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;php&quot;&gt;&lt;pre class=&quot;language-php&quot;&gt;&lt;code class=&quot;language-php&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;interface&lt;/span&gt; &lt;span class=&quot;token class-name-definition class-name&quot;&gt;EmailSenderInterface&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;sendEmail&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$to&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$subject&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$message&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name-definition class-name&quot;&gt;EmailSender&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;implements&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;EmailSenderInterface&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;sendEmail&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$to&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$subject&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$message&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;// ... e-posta gönderme işlemi ...&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name-definition class-name&quot;&gt;Customer&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$emailSender&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    
    &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;__construct&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name type-declaration&quot;&gt;EmailSenderInterface&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$emailSender&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token variable&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;emailSender&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$emailSender&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    
    &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;placeOrder&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;// ... müşteri siparişi işleme koyma kodu ...&lt;/span&gt;
        
        &lt;span class=&quot;token comment&quot;&gt;// e-posta gönderme işlemi&lt;/span&gt;
        &lt;span class=&quot;token variable&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;emailSender&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sendEmail&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;email&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string single-quoted-string&quot;&gt;&apos;Sipariş Onayı&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string single-quoted-string&quot;&gt;&apos;Siparişiniz başarıyla alındı.&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token variable&quot;&gt;$emailSender&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;EmailSender&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token variable&quot;&gt;$customer&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Customer&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$emailSender&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token variable&quot;&gt;$customer&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;placeOrder&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Yukarıdaki örnekte, Customer sınıfı, EmailSenderInterface arayüzüne bağımlı hale getirildi. EmailSender sınıfı da EmailSenderInterface arayüzünü uyguladığından, EmailSender sınıfı Customer sınıfı tarafından kullanılabilir hale gelir.&lt;/p&gt;
&lt;p&gt;Bu şekilde, müşteri sınıfımızın doğrudan bir sınıfa bağımlı olması yerine, bir arayüze bağımlı olması sağlanmıştır. Böylece, farklı bir e-posta gönderme servisi kullanmak istesek bile, sadece yeni bir sınıf oluşturup EmailSenderInterface arayüzünü uygulamak yeterli olacaktır. Bu şekilde, müşteri sınıfını değiştirmeden yeni bir e-posta gönderme servisi kullanabiliriz.&lt;/p&gt;
&lt;p&gt;Aşağıdaki PHP kodu ise Dependency Inversion prensibini ihlal eden bir sınıf örneğidir.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;php&quot;&gt;&lt;pre class=&quot;language-php&quot;&gt;&lt;code class=&quot;language-php&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name-definition class-name&quot;&gt;Customer&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$emailSender&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    
    &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;__construct&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token variable&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;emailSender&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;EmailSender&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    
    &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;placeOrder&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;// ... müşteri siparişi işleme koyma kodu ...&lt;/span&gt;
        
        &lt;span class=&quot;token comment&quot;&gt;// e-posta gönderme işlemi&lt;/span&gt;
        &lt;span class=&quot;token variable&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;emailSender&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sendEmail&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;email&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string single-quoted-string&quot;&gt;&apos;Sipariş Onayı&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string single-quoted-string&quot;&gt;&apos;Siparişiniz başarıyla alındı.&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name-definition class-name&quot;&gt;EmailSender&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;sendEmail&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$to&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$subject&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$message&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;// ... e-posta gönderme işlemi ...&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token variable&quot;&gt;$customer&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Customer&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token variable&quot;&gt;$customer&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;placeOrder&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Yukarıdaki örnekte, Customer sınıfı doğrudan EmailSender sınıfına bağımlıdır. Bu, Customer sınıfının esnekliğini azaltır, çünkü müşteri sınıfı, yalnızca EmailSender sınıfını kullanarak e-posta göndermek zorundadır.&lt;/p&gt;
&lt;p&gt;Bunun yerine, Customer sınıfı EmailSenderInterface arayüzüne bağımlı hale getirilmeli ve EmailSender sınıfı da bu arayüzü uygulamalıdır. Böylece, müşteri sınıfı daha esnek hale gelir ve farklı e-posta gönderme servisleri kullanılabileceği için daha kolay bir şekilde değiştirilebilir hale gelir.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;golangde-dependency-inversion-prensibini-uygulamak-için-aşağıdaki-gibi-bir-örnek-verilebilir&quot;&gt;&lt;a href=&quot;#golangde-dependency-inversion-prensibini-uygulamak-i%C3%A7in-a%C5%9Fa%C4%9F%C4%B1daki-gibi-bir-%C3%B6rnek-verilebilir&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;GoLang’de Dependency Inversion prensibini uygulamak için aşağıdaki gibi bir örnek verilebilir:&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; EmailSenderInterface &lt;span class=&quot;token keyword&quot;&gt;interface&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;SendEmail&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;to &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; subject &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; message &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; EmailSender &lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;e EmailSender&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;SendEmail&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;to &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; subject &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; message &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// ... e-posta gönderme işlemi ...&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; Customer &lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    EmailSender EmailSenderInterface
    Email &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;c Customer&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;PlaceOrder&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// ... müşteri siparişi işleme koyma kodu ...&lt;/span&gt;
    
    &lt;span class=&quot;token comment&quot;&gt;// e-posta gönderme işlemi&lt;/span&gt;
    c&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;EmailSender&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;SendEmail&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;c&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Email&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Sipariş Onayı&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Siparişiniz başarıyla alındı.&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    emailSender &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; EmailSender&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    customer &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; Customer&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;EmailSender&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; emailSender&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; Email&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;example@example.com&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    customer&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;PlaceOrder&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Yukarıdaki örnekte, Customer sınıfı, EmailSenderInterface arayüzüne bağımlı hale getirilmiştir. EmailSender sınıfı da EmailSenderInterface arayüzünü uyguladığından, EmailSender sınıfı Customer sınıfı tarafından kullanılabilir hale gelir.&lt;/p&gt;
&lt;p&gt;Bu şekilde, müşteri sınıfımızın doğrudan bir sınıfa bağımlı olması yerine, bir arayüze bağımlı olması sağlanmıştır. Böylece, farklı bir e-posta gönderme servisi kullanmak istesek bile, sadece yeni bir sınıf oluşturup EmailSenderInterface arayüzünü uygulamak yeterli olacaktır. Bu şekilde, müşteri sınıfını değiştirmeden yeni bir e-posta gönderme servisi kullanabiliriz.&lt;/p&gt;
&lt;p&gt;PHP örneğine benzer şekilde, aşağıdaki GoLang kodu da Dependency Inversion prensibini ihlal eden bir örnektir.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; Customer &lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    EmailSender EmailSender
    Email &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;c Customer&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;PlaceOrder&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// ... müşteri siparişi işleme koyma kodu ...&lt;/span&gt;
    
    &lt;span class=&quot;token comment&quot;&gt;// e-posta gönderme işlemi&lt;/span&gt;
    c&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;EmailSender&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;SendEmail&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;c&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Email&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Sipariş Onayı&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Siparişiniz başarıyla alındı.&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; EmailSender &lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;e EmailSender&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;SendEmail&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;to &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; subject &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; message &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// ... e-posta gönderme işlemi ...&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    emailSender &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; EmailSender&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    customer &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; Customer&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;EmailSender&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; emailSender&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; Email&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;example@example.com&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    customer&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;PlaceOrder&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Yukarıdaki örnekte, Customer sınıfı doğrudan EmailSender sınıfına bağımlıdır. Bu, Customer sınıfının esnekliğini azaltır, çünkü müşteri sınıfı, yalnızca EmailSender sınıfını kullanarak e-posta göndermek zorundadır.&lt;/p&gt;
&lt;p&gt;Bunun yerine, Customer sınıfı EmailSenderInterface arayüzüne bağımlı hale getirilmeli ve EmailSender sınıfı da bu arayüzü uygulamalıdır. Böylece, müşteri sınıfı daha esnek hale gelir ve farklı e-posta gönderme servisleri kullanılabileceği için daha kolay bir şekilde değiştirilebilir hale gelir.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Dependency_inversion_principle&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/Dependency_inversion_principle&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.logrocket.com/dependency-inversion-principle-typescript/#:~:text=The%20dependency%20inversion%20principle%20is,affecting%20the%20high%2Dlevel%20ones&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://blog.logrocket.com/dependency-inversion-principle-typescript/#:~:text=The%20dependency%20inversion%20principle%20is,affecting%20the%20high%2Dlevel%20ones&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://dev.to/tamerlang/understanding-solid-principles-dependency-inversion-1b0f&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://dev.to/tamerlang/understanding-solid-principles-dependency-inversion-1b0f&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2022/dependency-inversion-principle/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Transposition Şifrelemesi: Harf Pozisyonlarını Değiştirerek Gizlilik Sağlama Sanatı]]></title><description><![CDATA[Kriptografi, iletişimde gizliliği korumak amacıyla kullanılan özel bir alandır. Bu disiplin, bilgilerin güvende kalmasını sağlamak için tasarlanmış yöntemleri içerir ve genellikle hassas verilerin yetkisiz erişimden korunmasını hedefler.]]></description><link>https://blog.hkucuk.com/2022/transposition-sifrelemesi/</link><guid isPermaLink="false">https://blog.hkucuk.com/2022/transposition-sifrelemesi/</guid><pubDate>Thu, 14 Jul 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Kriptografi iletişimde gizliliği korumak amacıyla kullanılan özel bir alandır. Bu disiplin, bilgilerin güvende kalmasını sağlamak için tasarlanmış yöntemleri içerir ve genellikle hassas verilerin yetkisiz erişimden korunmasını hedefler. Kriptografi, birçok farklı şifreleme yöntemini içerir ve bu yöntemler, bilgi güvenliğini artırmak ve gizliliği korumak için geniş bir yelpazede kullanılır. Bu şifreleme teknikleri, mesajların sadece yetkili kişiler tarafından anlaşılabilir olmasını sağlayarak iletişimin güvenliğini artırır ve gizliliği sağlar.&lt;/p&gt;
&lt;h3 id=&quot;transposition-şifrelemesi-nedir&quot;&gt;&lt;a href=&quot;#transposition-%C5%9Fifrelemesi-nedir&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Transposition Şifrelemesi Nedir?&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Transposition_cipher&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Transposition şifrelemesi&lt;/a&gt;, metindeki harf pozisyonlarını belirli bir düzeni takip ederek yer değiştirerek metni şifreleyen oldukça ilginç bir kriptografi yöntemidir. Temel prensip, metindeki harf sıralamalarını değiştirerek şifrelenmiş bir metin oluşturmaktır. Bu değişiklikler, metni orijinal halinden farklı bir hale getirir ve iletişimi daha güvenli hale getirir.&lt;/p&gt;
&lt;p&gt;Bu şifreleme türü, tarihsel olarak askeri ve diplomatik iletişimde kullanılmıştır. Düşmanların mesajları anlamasını zorlaştırmak için harf pozisyonlarının belirli bir anahtarla değiştirilmesi, iletişimin güvenliğini artırır. Ancak, bu yöntem günümüzde daha karmaşık ve güçlü şifreleme teknikleri tarafından yerini almıştır.&lt;/p&gt;
&lt;h3 id=&quot;transpositionin-amaçları-nelerdir&quot;&gt;&lt;a href=&quot;#transpositionin-ama%C3%A7lar%C4%B1-nelerdir&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Transposition’in Amaçları Nelerdir?&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Gizlilik Sağlama:&lt;/strong&gt; Transposition şifrelemesi, iletişimin gizliliğini sağlama amacı taşır. Mesajlar şifrelendiğinde, sadece doğru anahtara sahip kişilerin mesajı çözmesi mümkün olur.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bilgi Koruma:&lt;/strong&gt; Transposition şifrelemesi, hassas bilgilerin yetkisiz erişimden korunmasına yardımcı olur. Özellikle askeri ve diplomatik iletişimde, düşmanların mesajları kolayca çözmesini engellemek için kullanılır.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;transposition-şifrelemesinin-türleri&quot;&gt;&lt;a href=&quot;#transposition-%C5%9Fifrelemesinin-t%C3%BCrleri&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Transposition Şifrelemesinin Türleri&lt;/h3&gt;
&lt;p&gt;Transposition şifrelemesi, farklı türleri içeren geniş bir kategoriye sahiptir. İşte bazı temel Transposition şifreleme türleri:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;ROUTE Cipher (ROT):&lt;/strong&gt; Bu tür, metni bir düzlemde belirli bir yolu takip ederek şifreler. Metin belirli bir yönde dolaştırılarak şifrelenir ve çözülür. Saat yönü veya ters yönde dolaşma şeklinde çeşitleri bulunur.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rail Fence Cipher:&lt;/strong&gt; Bu şifreleme türünde, metin bir çit gibi düşünülür ve harfler çit panellerine sırayla yerleştirilir. Şifreli metin, çit panelleri boyunca sırayla alınarak elde edilir.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Columnar Transposition Cipher:&lt;/strong&gt; Bu yöntemde, metin bir matrise yerleştirilir ve metin sütunları belirli bir sıra veya anahtarla yer değiştirilir. Şifre çözme işlemi, sütunları doğru sıraya yerleştirerek yapılır.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;transposition-şifrelemesi-hangi-alanlarda-kullanılır&quot;&gt;&lt;a href=&quot;#transposition-%C5%9Fifrelemesi-hangi-alanlarda-kullan%C4%B1l%C4%B1r&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Transposition Şifrelemesi Hangi Alanlarda Kullanılır?&lt;/h3&gt;
&lt;p&gt;Transposition şifrelemesi tarihsel olarak askeri ve diplomatik iletişimde kullanılmıştır. Ancak, modern kriptografi standartlarına göre genellikle güvenli değildir, çünkü basit anahtarlarla kırılabilir. Bu nedenle günümüzde daha güçlü ve karmaşık şifreleme yöntemleri tercih edilmektedir.&lt;/p&gt;
&lt;p&gt;Transposition şifrelemesi, iletişimde gizlilik sağlamak için kullanılan eski bir kriptografi yöntemidir. Harf pozisyonlarının değiştirilmesi ile çalışır ve birçok farklı türe sahiptir. Ancak, modern kriptografi ihtiyaçlarına cevap vermek için daha güçlü şifreleme yöntemleri geliştirilmiştir.&lt;/p&gt;
&lt;h2 id=&quot;golangde-transposition-şifrelemesi-columnar-transposition-uygulaması&quot;&gt;&lt;a href=&quot;#golangde-transposition-%C5%9Fifrelemesi-columnar-transposition-uygulamas%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;GoLang’de Transposition Şifrelemesi (Columnar Transposition) uygulaması:&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;fmt&quot;&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;math&quot;&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;strings&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;encryptMessage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;key &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; message &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	cipherText &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; key&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; col &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; col &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; key&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; col&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		pointer &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; col
		&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; pointer &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;message&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			cipherText&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;col&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;message&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;pointer&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
			pointer &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; key
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; strings&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Join&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;cipherText&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;decryptMessage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;key &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; message &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	numCols &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Ceil&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;float64&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;message&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;float64&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	numRows &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; key
	numShadedBoxes &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;numCols &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; numRows&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;message&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	plainText &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; numCols&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

	col&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; row &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; symbol &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;range&lt;/span&gt; message &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		plainText&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;col&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;symbol&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
		col&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;

		&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;col &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; numCols&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;col &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; numCols&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; row &lt;span class=&quot;token operator&quot;&gt;&gt;=&lt;/span&gt; numRows&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;numShadedBoxes&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			col &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;
			row&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; strings&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Join&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;plainText&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;

	message &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;TopSecret&quot;&lt;/span&gt;
	key &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;

	encryptedText &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;encryptMessage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; message&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Encrypted Message: %s\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; encryptedText&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

	decryptedText &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;decryptMessage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; encryptedText&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Decrypted Message: %s\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; decryptedText&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Program çalıştırıldığında çıktısı aşağıdaki gibi olacaktır.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;json&quot;&gt;&lt;pre class=&quot;language-json&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;Encrypted Message&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; TSroeepct
Decrypted Message&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; TopSecret&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Programın çalışır haline &lt;a href=&quot;https://go.dev/play/p/LpFvXBSHC3y&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;şuradan&lt;/a&gt; erişilebilir.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Transposition_cipher&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/Transposition_cipher&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.geeksforgeeks.org/columnar-transposition-cipher/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.geeksforgeeks.org/columnar-transposition-cipher/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2022/transposition-sifrelemesi/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[SOLID - Interface Segregation Principle]]></title><description><![CDATA[Interface Segregation Principle (ISG) veya "Ara Yüz Ayrımı Prensibi", yazılım tasarımında kullanılan bir prensiptir. Bu prensibe göre, bir arayüzün mümkün olduğunca özelleştirilmiş olması gerektiği ve arayüzlerin sadece kullanılan özelliklerini içermesi gerektiği söylenir.]]></description><link>https://blog.hkucuk.com/2022/solid-interface-segregation-prencsible/</link><guid isPermaLink="false">https://blog.hkucuk.com/2022/solid-interface-segregation-prencsible/</guid><pubDate>Wed, 25 May 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;“Interface Segregation Principle” (ISG) veya “Ara Yüz Ayrımı Prensibi”, yazılım tasarımında kullanılan bir prensiptir. Bu prensibe göre, bir arayüzün mümkün olduğunca özelleştirilmiş olması gerektiği ve arayüzlerin sadece kullanılan özelliklerini içermesi gerektiği söylenir. ISG, kullanılmayan veya gereksiz özelliklerin bulunmadığı, yalnızca ihtiyaç duyulan özelliklerin bulunduğu arayüzler oluşturarak yazılımın esnekliğini arttırmayı amaçlar.&lt;/p&gt;
&lt;p&gt;Bu prensip, yazılım tasarımındaki bağımlılıkları azaltmak için kullanılır. Bir arayüzde çok fazla özellik varsa, bu özelliklerin kullanılmadığı yerlerde bile gereksiz kod karmaşıklığı oluşturabilir. Bunun yanı sıra, bu özelliklerin biri değiştiğinde, bu değişiklik arayüzü kullanan tüm sınıfları etkileyebilir. ISG, bu sorunları önlemek için her arayüzün mümkün olduğunca özelleştirilmiş olması ve yalnızca ihtiyaç duyulan özellikleri içermesi gerektiğini söyler.&lt;/p&gt;
&lt;p&gt;Bu prensibin avantajları arasında yazılımın daha esnek, bakımının daha kolay ve değişikliklerin daha az maliyetli olması sayılabilir. Ayrıca yazılımın daha anlaşılır ve daha az karmaşık hale gelmesi de mümkündür.&lt;/p&gt;
&lt;p&gt;ISG, özellikle büyük yazılım projelerinde kullanışlıdır. Bu projelerde, farklı geliştiriciler farklı modülleri yazabilirler. Bu modüller, birbirleriyle iletişim kurmak için arayüzleri kullanırlar. ISG, arayüzlerin küçük, özelleştirilmiş ve bağımsız olmasını sağlayarak, bu modüllerin birbirinden bağımsız olarak geliştirilmesine olanak tanır.&lt;/p&gt;
&lt;p&gt;Sonuç olarak, ISG, yazılım tasarımında kullanılan önemli bir prensiptir. Bu prensip, yazılımın esnekliğini arttırır, bakımını kolaylaştırır ve değişikliklerin maliyetini azaltır. Ayrıca, büyük yazılım projelerinde farklı geliştiricilerin birbirinden bağımsız olarak çalışmasını kolaylaştırır.&lt;/p&gt;
&lt;h2 id=&quot;phpde-interface-segregation-prensibini-uygulamak-için-aşağıdaki-gibi-bir-örnek-verilebilir&quot;&gt;&lt;a href=&quot;#phpde-interface-segregation-prensibini-uygulamak-i%C3%A7in-a%C5%9Fa%C4%9F%C4%B1daki-gibi-bir-%C3%B6rnek-verilebilir&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;PHP’de, Interface Segregation prensibini uygulamak için aşağıdaki gibi bir örnek verilebilir:&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;php&quot;&gt;&lt;pre class=&quot;language-php&quot;&gt;&lt;code class=&quot;language-php&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;interface&lt;/span&gt; &lt;span class=&quot;token class-name-definition class-name&quot;&gt;PaymentInterface&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;processPayment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;refundPayment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;holdPayment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name-definition class-name&quot;&gt;CreditCardPayment&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;implements&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;PaymentInterface&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;processPayment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;// Kredi kartı ödeme işlemi gerçekleştirme kodu&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;refundPayment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;// Kredi kartı geri ödeme işlemi gerçekleştirme kodu&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;holdPayment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;// Kredi kartı ödeme tutma işlemi gerçekleştirme kodu&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name-definition class-name&quot;&gt;PaypalPayment&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;implements&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;PaymentInterface&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;processPayment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;// PayPal ödeme işlemi gerçekleştirme kodu&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;refundPayment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;// PayPal geri ödeme işlemi gerçekleştirme kodu&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;holdPayment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;// PayPal ödeme tutma işlemi gerçekleştirme kodu&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Yukarıdaki kod örneğinde, PaymentInterface adlı bir arayüz tanımlanmıştır ve bu arabirim “processPayment”, “refundPayment” ve “holdPayment” adlı üç method içerir. CreditCardPayment ve PaypalPayment adlı sınıflar, PaymentInterface arabirimini uygulayarak bu yöntemleri kullanabilir.&lt;/p&gt;
&lt;p&gt;Bu şekilde, PaymentInterface sadece ihtiyacımız olan üç methodu içerir ve bu methodlar yalnızca bu arayüzü kullanan sınıflar tarafından kullanılır. Bu, arayüzün gereksiz yöntemler içermediği anlamına gelir ve bu da arabirimlerin özelleştirilmiş ve ihtiyaç duyulan yöntemleri içerecek şekilde tasarlanmasına olanak tanır.&lt;/p&gt;
&lt;p&gt;Aşağıdaki PHP kodu ise Interface Segregation prensibini ihlal eden bir sınıf örneğidir.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;php&quot;&gt;&lt;pre class=&quot;language-php&quot;&gt;&lt;code class=&quot;language-php&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;interface&lt;/span&gt; &lt;span class=&quot;token class-name-definition class-name&quot;&gt;PaymentInterface&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;processPayment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;refundPayment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;holdPayment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;verifyPayment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;processRefund&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;notifyUser&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name-definition class-name&quot;&gt;CreditCardPayment&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;implements&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;PaymentInterface&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;processPayment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;// Kredi kartı ödeme işlemi gerçekleştirme kodu&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;refundPayment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;// Kredi kartı geri ödeme işlemi gerçekleştirme kodu&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;holdPayment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;// Kredi kartı ödeme tutma işlemi gerçekleştirme kodu&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;verifyPayment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;// Ödeme doğrulama kodu&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;processRefund&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;// Geri ödeme işlemi gerçekleştirme kodu&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;notifyUser&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;// Kullanıcıya bildirim gönderme kodu&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Yukarıdaki örnekte, PaymentInterface adlı bir arayüz tanımlanmıştır ve bu arayüz “processPayment”, “refundPayment”, “holdPayment”, “verifyPayment”, “processRefund” ve “notifyUser” adlı altı method içerir.&lt;/p&gt;
&lt;p&gt;Ancak CreditCardPayment sınıfı yalnızca “processPayment”, “refundPayment” ve “holdPayment” yöntemlerini kullanırken, PaymentInterface arabirimi de diğer üç yöntemi içermektedir. Bu arayüzün gereksiz yöntemler içerdiği anlamına gelir ve bu gereksiz kod karmaşasına neden olabilir ve gelecekteki değişiklikler için kod değişikliğinin daha zor olmasına neden olabilir.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;golangde-interface-segregation-prensibini-uygulamak-için-aşağıdaki-gibi-bir-örnek-verilebilir&quot;&gt;&lt;a href=&quot;#golangde-interface-segregation-prensibini-uygulamak-i%C3%A7in-a%C5%9Fa%C4%9F%C4%B1daki-gibi-bir-%C3%B6rnek-verilebilir&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;GoLang’de Interface Segregation prensibini uygulamak için aşağıdaki gibi bir örnek verilebilir:&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;fmt&quot;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; Payment &lt;span class=&quot;token keyword&quot;&gt;interface&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;processPayment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;refundPayment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;holdPayment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; CreditCardPayment &lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;cc &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;CreditCardPayment&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;processPayment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Kredi kartı ödeme işlemi gerçekleştirme kodu&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;cc &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;CreditCardPayment&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;refundPayment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Kredi kartı geri ödeme işlemi gerçekleştirme kodu&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;cc &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;CreditCardPayment&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;holdPayment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Kredi kartı ödeme tutma işlemi gerçekleştirme kodu&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; PaypalPayment &lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;pp &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;PaypalPayment&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;processPayment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;PayPal ödeme işlemi gerçekleştirme kodu&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;pp &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;PaypalPayment&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;refundPayment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;PayPal geri ödeme işlemi gerçekleştirme kodu&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;pp &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;PaypalPayment&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;holdPayment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;PayPal ödeme tutma işlemi gerçekleştirme kodu&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Yukarıdaki örnekte Payment adlı bir arayüz tanımlanmıştır ve bu arayüz “processPayment”, “refundPayment” ve “holdPayment” adlı üç yöntem içermektedir. CreditCardPayment ve PaypalPayment adlı sınıflar, Payment arayüzünü uygulayarak bu yöntemleri kullanabilir.&lt;/p&gt;
&lt;p&gt;Bu şekilde Payment arabirimi yalnızca ihtiyacımız olan üç yöntemi içerir ve bu yöntemler yalnızca bu arabirimi kullanan sınıflar tarafından kullanılır. Bu, arayüzün gereksiz yöntemler içermediği anlamına gelir ve bu da arabirimlerin özelleştirilmiş ve ihtiyaç duyulan yöntemleri içerecek şekilde tasarlanmasına olanak tanır.&lt;/p&gt;
&lt;p&gt;PHP örneğine benzer şekilde, aşağıdaki GoLang kodu da Interface Segregation prensibini ihlal eden bir örnektir.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;fmt&quot;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; Payment &lt;span class=&quot;token keyword&quot;&gt;interface&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;processPayment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;refundPayment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;holdPayment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;verifyPayment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;processRefund&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;notifyUser&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; CreditCardPayment &lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;cc &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;CreditCardPayment&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;processPayment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Kredi kartı ödeme işlemi gerçekleştirme kodu&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;cc &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;CreditCardPayment&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;refundPayment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Kredi kartı geri ödeme işlemi gerçekleştirme kodu&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;cc &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;CreditCardPayment&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;holdPayment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Kredi kartı ödeme tutma işlemi gerçekleştirme kodu&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;cc &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;CreditCardPayment&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;verifyPayment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Ödeme doğrulama kodu&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;cc &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;CreditCardPayment&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;processRefund&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Geri ödeme işlemi gerçekleştirme kodu&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;cc &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;CreditCardPayment&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;notifyUser&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Kullanıcıya bildirim gönderme kodu&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Yukarıdaki örnekte Payment adlı bir arayz tanımlanmıştır ve bu arayüz “processPayment”, “refundPayment”, “holdPayment”, “verifyPayment”, “processRefund” ve “notifyUser” adlı altı methodları içermektedir.&lt;/p&gt;
&lt;p&gt;Ancak,CreditCardPayment sınıfı yalnızca “processPayment”, “refundPayment” ve “holdPayment” yöntemlerini kullanırken, Payment arabirimi de diğer üç yöntemi içermektedir. Bu, arayüzün gereksiz yöntemler içerdiği anlamına gelir ve bu, gereksiz kod karmaşasına neden olabilir ve gelecekteki değişiklikler için kod değişikliğinin daha zor olmasına neden olabilir.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Interface_segregation_principle#:~:text=In%20the%20field%20of%20software,are%20of%20interest%20to%20them&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/Interface_segregation_principle#:~:text=In%20the%20field%20of%20software,are%20of%20interest%20to%20them&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.tutorialsteacher.com/csharp/interface-segregation-principle&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.tutorialsteacher.com/csharp/interface-segregation-principle&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.oodesign.com/interface-segregation-principle&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.oodesign.com/interface-segregation-principle&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2022/solid-interface-segregation-prencsible/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Dijkstra’nın Tek Kaynaklı En Kısa Yol Algoritması]]></title><description><![CDATA[Dijkstra’nın tek kaynaklı en kısa yol algoritması, bir graf üzerinde bir başlangıç noktasından diğer tüm noktalara olabilecek en kısa yolları bulmaya yönelik bir algoritmadır. Bu algoritma belli bir süre içinde tüm noktalar arasında en kısa yolu bulmak için kullanılır.]]></description><link>https://blog.hkucuk.com/2022/dijkstra-en-kisa-yol-algoritmasi/</link><guid isPermaLink="false">https://blog.hkucuk.com/2022/dijkstra-en-kisa-yol-algoritmasi/</guid><pubDate>Thu, 14 Apr 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Dijkstra’nın tek kaynaklı en kısa yol algoritması, bir &lt;a href=&quot;https://en.wikipedia.org/wiki/Graph_(abstract_data_type)&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;graf&lt;/a&gt; üzerinde bir başlangıç noktasından diğer tüm noktalara olabilecek en kısa yolları bulmaya yönelik bir algoritmadır. Bu algoritma belli bir süre içinde tüm noktalar arasında en kısa yolu bulmak için kullanılır.&lt;/p&gt;
&lt;p&gt;Algoritmanın çalışma prensibi şu şekildedir:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Başlangıç noktasının mesafesi 0 olarak belirlenir ve diğer tüm noktaların mesafesi INF (yani sonsuz) olarak ayarlanır.&lt;/li&gt;
&lt;li&gt;Graf üzerindeki tüm noktalar dolaşılır ve mesafesi olmayan (INF) en kısa nokta bulunur. Bu nokta ziyaret edilir ve mesafesi güncellenir.&lt;/li&gt;
&lt;li&gt;Ziyaret edilen noktanın bağlı olduğu diğer noktaların mesafeleri de güncellenir. Örneğin eğer ziyaret edilen noktanın mesafesi X ise ve bu noktaya bağlı bir diğer noktaya Y mesafesi var ise bu diğer noktanın mesafesi X+Y olur.&lt;/li&gt;
&lt;li&gt;Bu adım tekrar edilir ve en kısa mesafesi olmayan nokta ziyaret edilir ve mesafesi güncellenir. Bu adım tüm noktalar ziyaret edilene kadar devam eder.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Algoritma böylece tüm noktalar arasındaki en kısa yolu bulur.&lt;/p&gt;
&lt;p&gt;Dijkstra algoritmasının önemli bir zayıf yönü bulunmaktadır, negatif ağırlıklı çizgileri işlemez. Dijkstra algoritması, ağırlıklı çizgilerin ağırlıklarının negatif olmadığını varsayar. Bu nedenle negatif ağırlıklı çizgileri işlemez ve doğru sonuçlar vermez.&lt;/p&gt;
&lt;h2 id=&quot;golangde-algoritmanın-kodu-şu-şekildedir&quot;&gt;&lt;a href=&quot;#golangde-algoritman%C4%B1n-kodu-%C5%9Fu-%C5%9Fekildedir&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;GoLang’de algoritmanın kodu şu şekildedir:&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;fmt&quot;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; INF &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;uint&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; Graph &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;dijkstra&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;g Graph&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; source &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	distances &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;g&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;range&lt;/span&gt; distances &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		distances&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; INF
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	distances&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;source&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;

	visited &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;bool&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;g&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;g&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		minDistance &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; INF
		&lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; minNode &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;range&lt;/span&gt; g &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;visited&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; distances&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; minDistance &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
				minDistance &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; distances&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
				minNode &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; j
			&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
		visited&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;minNode&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;

		&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; j&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; cost &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;range&lt;/span&gt; g&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;minNode&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; cost &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
				&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; minDistance&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;cost &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; distances&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
					distances&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; minDistance &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; cost
				&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
			&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; distances
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	g &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; Graph&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	distances &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;dijkstra&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;g&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;distances&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Program çalıştırıldığında çıktısı aşağıdaki gibi olacaktır.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;json&quot;&gt;&lt;pre class=&quot;language-json&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;&gt; go run main.go                   
&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id=&quot;phpde-algoritmanın-kodu-şu-şekildedir&quot;&gt;&lt;a href=&quot;#phpde-algoritman%C4%B1n-kodu-%C5%9Fu-%C5%9Fekildedir&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;PHP’de algoritmanın kodu şu şekildedir:&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;php&quot;&gt;&lt;pre class=&quot;language-php&quot;&gt;&lt;code class=&quot;language-php&quot;&gt;&lt;span class=&quot;token php language-php&quot;&gt;&lt;span class=&quot;token delimiter important&quot;&gt;&amp;lt;?php&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;INF&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;PHP_INT_MAX&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token variable&quot;&gt;$graph&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token variable&quot;&gt;$source&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token variable&quot;&gt;$distances&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;array_fill&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;count&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$graph&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;INF&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token variable&quot;&gt;$distances&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$source&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token variable&quot;&gt;$visited&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;array_fill&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;count&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$graph&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token constant boolean&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$i&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$i&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;count&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$graph&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$i&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token variable&quot;&gt;$minDistance&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;INF&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token variable&quot;&gt;$minNode&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$j&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$j&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;count&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$graph&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$j&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$visited&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$j&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$distances&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$j&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$minDistance&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token variable&quot;&gt;$minDistance&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$distances&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$j&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token variable&quot;&gt;$minNode&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$j&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token variable&quot;&gt;$visited&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$minNode&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token constant boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$j&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$j&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;count&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$graph&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$j&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$graph&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$minNode&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$j&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$minDistance&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$graph&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$minNode&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$j&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$distances&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$j&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                &lt;span class=&quot;token variable&quot;&gt;$distances&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$j&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$minDistance&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$graph&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$minNode&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$j&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token function&quot;&gt;print_r&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$distances&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.freecodecamp.org/news/dijkstras-shortest-path-algorithm-visual-introduction/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.freecodecamp.org/news/dijkstras-shortest-path-algorithm-visual-introduction/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://web.cecs.pdx.edu/~sheard/course/Cs163/Doc/Graphs.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;http://web.cecs.pdx.edu/~sheard/course/Cs163/Doc/Graphs.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2022/dijkstra-en-kisa-yol-algoritmasi/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[GoLang'de Mutable ve Immutable Veri Tipleri]]></title><description><![CDATA[Golang dilinde mutable veri tipleri değiştirilebilir ve değiştirilmesine izin verilen veriler için kullanılır. Bu veri tipleri, verilerin daha dinamik bir şekilde manipüle edilebilmesini sağlar ve programların esnekliğini arttırır.]]></description><link>https://blog.hkucuk.com/2022/golang-mutable-immutable/</link><guid isPermaLink="false">https://blog.hkucuk.com/2022/golang-mutable-immutable/</guid><pubDate>Fri, 14 Jan 2022 00:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;mutable-veri-tipleri&quot;&gt;&lt;a href=&quot;#mutable-veri-tipleri&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Mutable Veri Tipleri&lt;/h2&gt;
&lt;p&gt;Golang dilinde mutable veri tipleri değiştirilebilir ve değiştirilmesine izin verilen veriler için kullanılır. Bu veri tipleri, verilerin daha dinamik bir şekilde manipüle edilebilmesini sağlar ve programların esnekliğini arttırır.&lt;/p&gt;
&lt;p&gt;Mutable (değişebilir) veri tipleri, programı başlatma sırasında atanan belleğin herhangi bir parçasını yeniden tahsis (reallocating) etmeden değiştirilebilen bir veri türüdür. Basit bir ifadeyle, bir değişken, kendisini yeni bir bellek alanına yeniden tahsis etmeden değeri değiştirilebiliyorsa değişkendir (mutable).&lt;/p&gt;
&lt;p&gt;Mutable veri tipinde bir bellek adresinde bulunan değer değiştirilebilir. Bu değişkenin değerini değiştirmek için herhangi bir belleği yeniden tahsis etmemiz veya bir değişkenin işaretçisini başka bir adresi gösterecek şekilde değiştirmemiz gerekmediği anlamına gelir.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;someNumber &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;15&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// someNumber değeri 15&apos;dir ve bir hafıza adreslerinde depolanır. Örnek: 0x12212&lt;/span&gt;

someNumber &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;18&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Veri tipi değişebilir ise, hafıza adresindeki değeri doğrudan değiştirebiliriz.&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// someNumber değişkeninin işaret ettiği hafıza adresi değişmedi.&lt;/span&gt;

fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;someNumber&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// 18&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Golang’de birkaç değiştirilebilir veri türü vardır:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Array&lt;/li&gt;
&lt;li&gt;Slice&lt;/li&gt;
&lt;li&gt;Map&lt;/li&gt;
&lt;li&gt;Channels&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;immutable-veri-tipleri&quot;&gt;&lt;a href=&quot;#immutable-veri-tipleri&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Immutable Veri Tipleri&lt;/h2&gt;
&lt;p&gt;Golang dilinde immutable veri tipleri değiştirilemez ve değiştirilmemesi gereken veriler için kullanılır. Bu veri tipleri, programların güvenilirliğini ve anlaşılırlığını arttırmak için kullanılır çünkü değiştirilemezler ve bu nedenle programın çalışma şeklinin anlaşılması kolaylaşır.&lt;/p&gt;
&lt;p&gt;Immutable (değişmez) veri tipi yeni bir bellek tahsis edilmeden değiştirilemeyen bir veri türüdür. Bu nedenle Immutable veri türü, bir değişkenin değerinde değişiklik yapmak için belleği yeniden tahsis etmelidir. Değişken büyük bir değer kümesi tutuyorsa bu bir dezavantaj olabilir çünkü değerde küçük bir değişiklik için çok fazla bellek yeniden tahsisi gerektirecektir.&lt;/p&gt;
&lt;p&gt;Immutable veri tipleri ayrıca değişkenin işaret ettiği bellek adresindeki değeri değiştiremeyeceğiniz ancak bir değişkenin içeriğini değiştirmek için değişkenin farklı bir bellek konumuna işaret etmesini sağlayabileceğiniz anlamına da gelir.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;city &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Ankara&quot;&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// &quot;Ankara&quot; değeri bir bellek konumunda depolanır. Örnek: 0x12212&lt;/span&gt;

city &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;New York&quot;&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// &quot;New York&quot; değeri, 0x85574 gibi farklı bir bellek konumunda yer alacaktır.&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// city değişkeninin işaret ettiği hafıza adresi değiştirilir, hafıza adresinin değeri değil.&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Golang’de birkaç değiştirilebilir veri türü vardır.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;String&lt;/li&gt;
&lt;li&gt;Boolean, Int, Float&lt;/li&gt;
&lt;li&gt;Pointers&lt;/li&gt;
&lt;li&gt;Interfaces&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.golang-book.com/books/intro/3&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.golang-book.com/books/intro/3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.digitalocean.com/community/tutorials/understanding-data-types-in-go&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.digitalocean.com/community/tutorials/understanding-data-types-in-go&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2022/golang-mutable-immutable/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[SOLID - Liskov Substitution Principle]]></title><description><![CDATA[Liskov Substitution Prensibi (LSP), Barbara Liskov tarafından geliştirilen bir kalıtım prensibi olup, bu prensip, bir sınıfın kalıtım ağacındaki bir alt sınıfın yerine, yüksek seviye bir sınıfın kullanılmasının mümkün olmasını sağlar. Bu prensibe göre, alt sınıfların, yüksek seviye sınıfların yerine kullanılabilmeleri için alt sınıfların aynı özellik ve davranışlara sahip olabilmeleri gerekir.]]></description><link>https://blog.hkucuk.com/2021/solid-liskov-substitution-prensible/</link><guid isPermaLink="false">https://blog.hkucuk.com/2021/solid-liskov-substitution-prensible/</guid><pubDate>Mon, 15 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Liskov Substitution Prensibi (LSP), Barbara Liskov tarafından geliştirilen bir kalıtım prensibi olup, bu prensip, bir sınıfın kalıtım ağacındaki bir alt sınıfın yerine, yüksek seviye bir sınıfın kullanılmasının mümkün olmasını sağlar. Bu prensibe göre, alt sınıfların, yüksek seviye sınıfların yerine kullanılabilmeleri için alt sınıfların aynı özellik ve davranışlara sahip olabilmeleri gerekir.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Alt sınıflardan oluşan nesnelerin, üst sınıfın nesneleri ile yer değiştirdikleri zaman, aynı davranışı sergilemesi gerekmektedir.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;phpde-liskov-substitution-prensibini-uygulamak-için-aşağıdaki-gibi-bir-örnek-verilebilir&quot;&gt;&lt;a href=&quot;#phpde-liskov-substitution-prensibini-uygulamak-i%C3%A7in-a%C5%9Fa%C4%9F%C4%B1daki-gibi-bir-%C3%B6rnek-verilebilir&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;PHP’de, Liskov Substitution prensibini uygulamak için aşağıdaki gibi bir örnek verilebilir:&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;php&quot;&gt;&lt;pre class=&quot;language-php&quot;&gt;&lt;code class=&quot;language-php&quot;&gt;&lt;span class=&quot;token php language-php&quot;&gt;&lt;span class=&quot;token delimiter important&quot;&gt;&amp;lt;?php&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Parent sınıfı&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name-definition class-name&quot;&gt;Vehicle&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;protected&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$model&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;setModel&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$model&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token variable&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;model&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$model&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Child sınıfı&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name-definition class-name&quot;&gt;Car&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Vehicle&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;getModel&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token string double-quoted-string&quot;&gt;&quot;The model of this car is: &quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;model&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Child sınıfı&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name-definition class-name&quot;&gt;Bicycle&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Vehicle&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;getModel&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token string double-quoted-string&quot;&gt;&quot;The model of this bicycle is: &quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;model&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Parent sınıfının yerine kullanılabilecek bir child sınıfı&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name-definition class-name&quot;&gt;ElectricCar&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Car&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;getModel&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token string double-quoted-string&quot;&gt;&quot;This car is electric. &quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;token keyword static-context&quot;&gt;parent&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;getModel&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Örnek oluşturma&lt;/span&gt;
&lt;span class=&quot;token variable&quot;&gt;$electricCar&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;ElectricCar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token variable&quot;&gt;$electricCar&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;setModel&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string double-quoted-string&quot;&gt;&quot;Tesla Model 3&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$electricCar&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;getModel&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// &quot;This car is electric. The model of this car is: Tesla Model 3&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Bu örnekte, Vehicle sınıfı bir parent sınıf olup, Car ve Bicycle sınıfları ise bu sınıfın child sınıflarıdır. ElectricCar sınıfı ise Car sınıfının bir alt sınıfıdır. ElectricCar sınıfı, Vehicle sınıfının yerine geçebilir ve bu nedenle Vehicle sınıfına ait herhangi bir kodu ElectricCar sınıfına uygulayabiliriz. Bu Liskov Substitution prensibinin temelini oluşturur.&lt;/p&gt;
&lt;p&gt;Aşağıdaki PHP kodu ise Liskov Substitution prensibini ihlal eden bir sınıf örneğidir.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;php&quot;&gt;&lt;pre class=&quot;language-php&quot;&gt;&lt;code class=&quot;language-php&quot;&gt;&lt;span class=&quot;token php language-php&quot;&gt;&lt;span class=&quot;token delimiter important&quot;&gt;&amp;lt;?php&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Parent sınıfı&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name-definition class-name&quot;&gt;Vehicle&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;protected&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$model&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;setModel&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$model&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token variable&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;model&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$model&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Child sınıfı&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name-definition class-name&quot;&gt;Car&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Vehicle&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;getModel&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token string double-quoted-string&quot;&gt;&quot;The model of this car is: &quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;model&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Child sınıfı&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name-definition class-name&quot;&gt;Bicycle&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Vehicle&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;getModel&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token string double-quoted-string&quot;&gt;&quot;The model of this bicycle is: &quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;model&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Parent sınıfının yerine kullanılamayacak bir child sınıfı&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name-definition class-name&quot;&gt;ElectricCar&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Car&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$batteryType&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;__construct&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$batteryType&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token variable&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;batteryType&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$batteryType&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;getModel&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token string double-quoted-string&quot;&gt;&quot;This electric car uses a &quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;batteryType&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;token string double-quoted-string&quot;&gt;&quot; battery. &quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;token keyword static-context&quot;&gt;parent&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;getModel&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Örnek oluşturma&lt;/span&gt;
&lt;span class=&quot;token variable&quot;&gt;$electricCar&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;ElectricCar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string double-quoted-string&quot;&gt;&quot;lithium-ion&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token variable&quot;&gt;$electricCar&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;setModel&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string double-quoted-string&quot;&gt;&quot;Tesla Model 3&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$electricCar&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;getModel&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// &quot;This electric car uses a lithium-ion battery. The model of this car is: Tesla Model 3&quot;&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Hata: Vehicle sınıfının yerine ElectricCar sınıfı kullanılamaz&lt;/span&gt;
&lt;span class=&quot;token variable&quot;&gt;$vehicle&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Vehicle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token variable&quot;&gt;$vehicle&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$electricCar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Hata: &quot;Cannot assign an ElectricCar instance to a Vehicle variable&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Bu örnekte, ElectricCar sınıfı Car sınıfının bir alt sınıfıdır ve Vehicle sınıfının yerine geçebilir. Ancak, ElectricCar sınıfının bir batteryType özelliği vardır ve bu özellik, Vehicle sınıfında bulunmamaktadır. Bu nedenle Vehicle sınıfının yerine ElectricCar sınıfını kullanılamaz. Bu Liskov Substitution prensibinin ihlal edildiğini gösterir.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;golangde-liskov-substitution-prensibini-uygulamak-için-aşağıdaki-gibi-bir-örnek-verilebilir&quot;&gt;&lt;a href=&quot;#golangde-liskov-substitution-prensibini-uygulamak-i%C3%A7in-a%C5%9Fa%C4%9F%C4%B1daki-gibi-bir-%C3%B6rnek-verilebilir&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;GoLang’de Liskov Substitution prensibini uygulamak için aşağıdaki gibi bir örnek verilebilir:&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;fmt&quot;&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Parent interface&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; Vehicle &lt;span class=&quot;token keyword&quot;&gt;interface&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;SetModel&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;model &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Child struct&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; Car &lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  model &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;c &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;Car&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;SetModel&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;model &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  c&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;model &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; model
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;c &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;Car&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;GetModel&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Sprintf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;The model of this car is: %s&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; c&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;model&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Child struct&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; Bicycle &lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  model &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;b &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;Bicycle&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;SetModel&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;model &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  b&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;model &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; model
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;b &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;Bicycle&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;GetModel&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Sprintf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;The model of this bicycle is: %s&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;model&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Parent interface&apos;in yerine kullanılabilecek child struct&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; ElectricCar &lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  Car
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;e &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;ElectricCar&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;GetModel&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Sprintf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;This car is electric. %s&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; e&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Car&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;GetModel&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;// Örnek oluşturma&lt;/span&gt;
  electricCar &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; ElectricCar&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
  electricCar&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;SetModel&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Tesla Model 3&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

  fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;electricCar&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;GetModel&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// &quot;This car is electric. The model of this car is: Tesla Model 3&quot;&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;// Parent interface&apos;in yerine ElectricCar struct&apos;ı kullanılabilir&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; vehicle Vehicle &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;electricCar
  fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;vehicle&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;GetModel&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// &quot;This car is electric. The model of this car is: Tesla Model 3&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Bu örnekte Vehicle interface’i bir parent interface olup, Car ve Bicycle struct’ları bu interface’i implement eden child struct’lardır. ElectricCar struct’ı ise Car struct’ının bir alt struct’ıdır. ElectricCar struct’ı, Vehicle interface’inin yerine geçebilir ve bu nedenle Vehicle interface’ine ait herhangi bir kodu,ElectricCar struct’ına uygulayabiliriz.&lt;/p&gt;
&lt;p&gt;PHP örneğine benzer şekilde, aşağıdaki GoLang kodu da Liskov Substitution prensibini ihlal eden bir örnektir.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;fmt&quot;&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Parent interface&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; Vehicle &lt;span class=&quot;token keyword&quot;&gt;interface&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;SetModel&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;model &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;GetModel&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Child struct&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; Car &lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  model &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;c &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;Car&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;SetModel&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;model &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  c&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;model &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; model
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;c &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;Car&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;GetModel&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Sprintf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;The model of this car is: %s&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; c&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;model&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Child struct&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; Bicycle &lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  model &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;b &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;Bicycle&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;SetModel&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;model &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  b&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;model &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; model
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;b &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;Bicycle&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;GetModel&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Sprintf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;The model of this bicycle is: %s&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;model&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Parent interface&apos;in yerine kullanılamayacak child struct&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; ElectricCar &lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  Car
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;e &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;ElectricCar&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;GetModel&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Sprintf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;This car is electric. %s&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; e&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Car&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;GetModel&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// ElectricCar&apos;ın yerine geçemeyecek bir metod&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;e &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;ElectricCar&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Charge&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Charging the electric car...&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;// Örnek oluşturma&lt;/span&gt;
  electricCar &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; ElectricCar&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
  electricCar&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;SetModel&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Tesla Model 3&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

  fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;electricCar&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;GetModel&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// &quot;This car is electric. The model of this car is: Tesla Model 3&quot;&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;// Hata: Vehicle interface&apos;inin yerine ElectricCar struct&apos;ı kullanılamaz&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; vehicle Vehicle &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;electricCar &lt;span class=&quot;token comment&quot;&gt;// Hata: &quot;ElectricCar does not implement Vehicle (missing Charge method)&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Bu örnekte de ElectricCar struct’ı Car struct’ının bir alt struct’ıdır ve Vehicle interface’inin yerine geçebilir. Ancak ElectricCar struct’ının bir Charge() metodu vardır ve bu metod Vehicle interface’inde bulunmamaktadır. Bu nedenle Vehicle interface’inin yerine ElectricCar struct’ı kullanılamayacaktır. &lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Liskov_substitution_principle&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/Liskov_substitution_principle&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://reflectoring.io/lsp-explained/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://reflectoring.io/lsp-explained/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.knoldus.com/what-is-liskov-substitution-principle-lsp-with-real-world-examples/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://blog.knoldus.com/what-is-liskov-substitution-principle-lsp-with-real-world-examples/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2021/solid-liskov-substitution-prensible/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[GoLang'de Array ve Slice Arasındaki Farklar]]></title><description><![CDATA[Array (dizi) veri tipi, bir dizi elemanın aynı veri tipinden olduğu, sabit uzunluklu bir veri yapısıdır. Arrayler tanımlanırken eleman sayısı ve her elemanın veri tipi belirtilir. Slice (dilim) veri tipi ise arraylerden farklı olarak sabit uzunluklu olmayan, dinamik uzunluklu bir veri yapısıdır. Slice'lar tanımlanırken eleman sayısı belirtilmez.]]></description><link>https://blog.hkucuk.com/2021/golang-array-slice/</link><guid isPermaLink="false">https://blog.hkucuk.com/2021/golang-array-slice/</guid><pubDate>Sat, 09 Oct 2021 00:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;array&quot;&gt;&lt;a href=&quot;#array&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Array&lt;/h2&gt;
&lt;p&gt;Array (dizi) veri tipi, bir dizi elemanın aynı veri tipinden olduğu, sabit uzunluklu bir veri yapısıdır. Arrayler tanımlanırken eleman sayısı ve her elemanın veri tipi belirtilir. Örneğin aşağıdaki kod bloğunda “int” veri tipinde bir array oluşturulmuştur ve bu arrayin elemanları 0 ile 9 arasında değişen 10 tane sayıdır:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;fmt&quot;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; a &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        a&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; i
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// Output: [0 1 2 3 4 5 6 7 8 9]&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Aşağıdaki örnekte ise array’e yeni bir veri eklenmeye çalışılmaktadır. Bu durumda çalışma zamanı hatası oluşacaktır.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;fmt&quot;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    a &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    a&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// This line will cause a runtime error&lt;/span&gt;

    fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// This line will not be executed&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Hata:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;invalid argument&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; index &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt; out of bounds &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id=&quot;slice&quot;&gt;&lt;a href=&quot;#slice&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Slice&lt;/h2&gt;
&lt;p&gt;Slice (dilim) veri tipi ise arraylerden farklı olarak sabit uzunluklu olmayan, dinamik uzunluklu bir veri yapısıdır. Slice’lar tanımlanırken eleman sayısı belirtilmez.&lt;/p&gt;
&lt;p&gt;Slice’lar daha esnek ve kullanışlı olmaları nedeniyle arraylerden daha sık kullanılır. Örneğin slice’lar üzerinde dinamik olarak eleman ekleyebilir, silebilir veya değiştirebiliriz.&lt;/p&gt;
&lt;p&gt;Aşağıda bir slice oluşturma ve bu slice’a yeni bir eleman ekleme örneği görülmektedir.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;fmt&quot;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// Create a slice with the shorthand syntax&lt;/span&gt;
    a &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;// Add a new element to the slice&lt;/span&gt;
    a &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;// Print the slice&lt;/span&gt;
    fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// Output: [1 2 3 4 5 6]&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Ayrıca slice’ları bir array üzerinden oluşturduğumuzda, oluşturduğumuz slice ile orjinal array arasında bir bağlantı oluşur ve slice üzerinde yaptığımız değişiklikler orjinal array’e de yansır.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;fmt&quot;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    a &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    b &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; a&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
    b &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;b&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// Output: [0 1 2 3 4 5 6 7 8 9 10]&lt;/span&gt;
    fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// Output: [0 1 2 10]&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Slice’ların bir diğer avantajı ise “make” fonksiyonu ile oluşturulabiliyor olmalarıdır. “make” fonksiyonu ile oluşturulan slice’lar, belirtilen eleman sayısı kadar yer ayırır ve slice’ın elemanları varsayılan değerleri alır. Örneğin, aşağıdaki kod bloğunda “int” veri tipinde bir slice oluşturulmuş ve bu slice’ın elemanları 0 değerini almıştır:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;fmt&quot;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    a &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// Output: [0 0 0 0 0]&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Slice’lar “make” fonksiyonu ile oluşturulurken 3. bir parametre de verilebilir ve bu parametre slice’ın “capacity” özelliğini belirler. Örneğin, aşağıdaki kod bloğunda “b” isimli slice’ı “make” fonksiyonu ile oluştururken “capacity” özelliğini 10 olarak belirttik:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;fmt&quot;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// Create a slice with make function&lt;/span&gt;
    b &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// Creates a slice with 5 elements and capacity 10&lt;/span&gt;
    b&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
    b&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;
    b&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;
    b&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;
    b&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;// Print the slice and its capacity&lt;/span&gt;
    fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;        &lt;span class=&quot;token comment&quot;&gt;// Output: [1 2 3 4 5]&lt;/span&gt;
    fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;   &lt;span class=&quot;token comment&quot;&gt;// Output: 5&lt;/span&gt;
    fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;cap&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;   &lt;span class=&quot;token comment&quot;&gt;// Output: 10&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Bir slice’ın uzunluğu o anda dilimde bulunan öğelerin sayısı ifade ederken, kapasite ise slice’ın yeniden memory tahsis (reallocated) edilmeye ihtiyaç duymadan önce tutabileceği öğelerin sayısını ifade eder.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.digitalocean.com/community/tutorials/understanding-arrays-and-slices-in-go&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.digitalocean.com/community/tutorials/understanding-arrays-and-slices-in-go&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://riptutorial.com/go/example/3561/length-and-capacity&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://riptutorial.com/go/example/3561/length-and-capacity&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2021/golang-array-slice/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[SOLID - Open Closed Principle]]></title><description><![CDATA[Open-closed prensibi, bir sınıfın işlevselliğini genişletmek için değiştirilmemesi, ancak yeni işlevsellik eklemek için yeni sınıflar oluşturulması gerektiğini öngören bir programlama prensibidir. Bu prensip, programlarımızın daha esnek, bütünleşik ve bakımı daha kolay olmasını sağlar.]]></description><link>https://blog.hkucuk.com/2021/solid-open-closed-prensible/</link><guid isPermaLink="false">https://blog.hkucuk.com/2021/solid-open-closed-prensible/</guid><pubDate>Thu, 26 Aug 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Open-closed prensibi, bir sınıfın işlevselliğini genişletmek için değiştirilmemesi, ancak yeni işlevsellik eklemek için yeni sınıflar oluşturulması gerektiğini öngören bir programlama prensibidir. Bu prensip, programlarımızın daha esnek, bütünleşik ve bakımı daha kolay olmasını sağlar.&lt;/p&gt;
&lt;p&gt;Örnek olarak, bir sınıfın bir alt sınıfı olabilmesi için, alt sınıfın yüksek sınıfın yapabildiklerini yapması gerekir. Ayrıca, alt sınıfın yüksek sınıfın yapabildiklerini yapmasının yanı sıra, kendi ek işlevselliğini de içermesi gerekir. Bu sayede, alt sınıf yüksek sınıfın yerine kullanılabilir ve aynı zamanda yüksek sınıfın yapabildiklerini aşarak kendi işlevselliğini de sunabilir.&lt;/p&gt;
&lt;h2 id=&quot;phpde-open-closed-prensibini-uygulamak-için-aşağıdaki-gibi-bir-örnek-verilebilir&quot;&gt;&lt;a href=&quot;#phpde-open-closed-prensibini-uygulamak-i%C3%A7in-a%C5%9Fa%C4%9F%C4%B1daki-gibi-bir-%C3%B6rnek-verilebilir&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;PHP’de, Open-closed prensibini uygulamak için aşağıdaki gibi bir örnek verilebilir:&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;php&quot;&gt;&lt;pre class=&quot;language-php&quot;&gt;&lt;code class=&quot;language-php&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;interface&lt;/span&gt; &lt;span class=&quot;token class-name-definition class-name&quot;&gt;Shape&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;calculateArea&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name-definition class-name&quot;&gt;Circle&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;implements&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Shape&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$radius&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;__construct&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$radius&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token variable&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;radius&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$radius&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;calculateArea&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;pi&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;pow&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;radius&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name-definition class-name&quot;&gt;Rectangle&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;implements&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Shape&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;__construct&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token variable&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;width&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token variable&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;height&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;calculateArea&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;width&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name-definition class-name&quot;&gt;AreaCalculator&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$shapes&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;__construct&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$shapes&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;array&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token variable&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;shapes&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$shapes&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;sum&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token variable&quot;&gt;$area&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;foreach&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;shapes&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;as&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$shape&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;token variable&quot;&gt;$area&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$shape&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;calculateArea&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$area&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Bu kod örneğinde, Shape arayüzü bir şeklin alanını hesaplayabilecek bir metodu tanımlar. Circle ve Rectangle sınıfları bu arayüzü uygular ve calculateArea() metodunu kendi içlerinde tanımlar. Bu sayede, daha sonra farklı şekiller eklenmesi gerektiğinde bu sınıfları değiştirmeye gerek kalmaz, sadece Shape arayüzünü uygulayan yeni bir sınıf oluşturulur. AreaCalculator sınıfı da Shape nesnelerinin alanlarını toplamak için kullanılabilir.&lt;/p&gt;
&lt;p&gt;Aşağıdaki PHP kodu ise Open-closed prensibini ihlal eden bir sınıf örneğidir.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;php&quot;&gt;&lt;pre class=&quot;language-php&quot;&gt;&lt;code class=&quot;language-php&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;interface&lt;/span&gt; &lt;span class=&quot;token class-name-definition class-name&quot;&gt;Shape&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;calculateArea&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name-definition class-name&quot;&gt;Triangle&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$base&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;__construct&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$base&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token variable&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;base&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$base&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token variable&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;height&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name-definition class-name&quot;&gt;Circle&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;implements&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Shape&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$radius&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;__construct&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$radius&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token variable&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;radius&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$radius&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;calculateArea&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;pi&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;pow&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;radius&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name-definition class-name&quot;&gt;Rectangle&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;implements&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Shape&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;__construct&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token variable&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;width&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token variable&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;height&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;calculateArea&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;width&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name-definition class-name&quot;&gt;AreaCalculator&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$shapes&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;__construct&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$shapes&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;array&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token variable&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;shapes&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$shapes&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;sum&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token variable&quot;&gt;$area&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;foreach&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;shapes&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;as&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$shape&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$shape&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;instanceof&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Circle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token variable&quot;&gt;$area&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0.5&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$shape&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;base&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$shape&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token variable&quot;&gt;$area&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$shape&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;calculateArea&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$area&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Bu kod örneğinde, Circle ve Rectangle sınıfları calculateArea() metodunu kendi içlerinde tanımlar, ancak bu metodlar sadece belirli bir şeklin alanını hesaplar. Eğer farklı bir şekil yukarıdaki gibi eklenirse Open-closed prensibi ihlal edilmiş olur. Triangle sınıfı Shape interface’ini implement etmemiş, kendi calculateArea() metodunu tanımlamamıştır. Bu durumda da AreaCalculator sınıfının sum() methoduna ekleme yapmak gerekmiştir. Bu da OCP’yi ihlal eder çünkü AreaCalculator sınıfı değiştirilmiştir.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;golangde-open-closed-prensibini-uygulamak-için-aşağıdaki-gibi-bir-örnek-verilebilir&quot;&gt;&lt;a href=&quot;#golangde-open-closed-prensibini-uygulamak-i%C3%A7in-a%C5%9Fa%C4%9F%C4%B1daki-gibi-bir-%C3%B6rnek-verilebilir&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;GoLang’de, Open-closed prensibini uygulamak için aşağıdaki gibi bir örnek verilebilir:&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; Shape &lt;span class=&quot;token keyword&quot;&gt;interface&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;CalculateArea&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;float64&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; Circle &lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  radius &lt;span class=&quot;token builtin&quot;&gt;float64&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;c &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;Circle&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;CalculateArea&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;float64&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Pi &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Pow&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;c&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;radius&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; Rectangle &lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  width  &lt;span class=&quot;token builtin&quot;&gt;float64&lt;/span&gt;
  height &lt;span class=&quot;token builtin&quot;&gt;float64&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;r &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;Rectangle&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;CalculateArea&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;float64&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;width &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;height
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; AreaCalculator &lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  shapes &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;Shape
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;AreaCalculator&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Sum&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;float64&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; area &lt;span class=&quot;token builtin&quot;&gt;float64&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; shape &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;range&lt;/span&gt; a&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;shapes &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    area &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; shape&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;CalculateArea&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; area
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Bu kod örneğinde, Shape tipi bir şeklin alanını hesaplayabilecek bir metodu tanımlar. Circle ve Rectangle tipleri bu tipi uygular ve CalculateArea() metodunu kendi içlerinde tanımlarlar. Bu sayede, daha sonra farklı şekiller eklenmesi gerektiğinde bu tipleri değiştirmeye gerek kalmaz, sadece Shape tipini uygulayan yeni bir tip oluşturulur. AreaCalculator tipi de Shape nesnelerinin alanlarını toplamak için kullanılabilir.&lt;/p&gt;
&lt;p&gt;PHP örneğine benzer şekilde, aşağıdaki GoLang kodu da Open-closed prensibini ihlal eden bir örnektir.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; Circle &lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  radius &lt;span class=&quot;token builtin&quot;&gt;float64&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;c &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;Circle&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;CalculateArea&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;float64&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Pi &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Pow&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;c&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;radius&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; Rectangle &lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  width  &lt;span class=&quot;token builtin&quot;&gt;float64&lt;/span&gt;
  height &lt;span class=&quot;token builtin&quot;&gt;float64&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;r &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;Rectangle&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;CalculateArea&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;float64&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;width &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;height
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; AreaCalculator &lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  shapes &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;interface&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;AreaCalculator&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Sum&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;float64&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; area &lt;span class=&quot;token builtin&quot;&gt;float64&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; shape &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;range&lt;/span&gt; a&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;shapes &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;switch&lt;/span&gt; v &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; shape&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; Circle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
      area &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Pi &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Pow&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;v&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;radius&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; Rectangle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
      area &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; v&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;width &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; v&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;height
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; area
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Open%E2%80%93closed_principle&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/Open%E2%80%93closed_principle&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://reflectoring.io/open-closed-principle-explained/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://reflectoring.io/open-closed-principle-explained/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.geeksforgeeks.org/open-closed-principle-in-java-with-examples/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.geeksforgeeks.org/open-closed-principle-in-java-with-examples/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2021/solid-open-closed-prensible/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Tic-Tac-Toe Oyunu GoLang Implementasyonu]]></title><description><![CDATA[Tic-Tac-Toe (bazen X ve O olarak da bilinir), iki oyuncunun kendi sembollerini (X ve O) kullanarak, 3x3'lük tahtada bir satır, sütun veya diagonal çizmeye çalıştığı bir oyundur.]]></description><link>https://blog.hkucuk.com/2021/tic-tak-toe/</link><guid isPermaLink="false">https://blog.hkucuk.com/2021/tic-tak-toe/</guid><pubDate>Wed, 23 Jun 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Tic-Tac-Toe (bazen X ve O olarak da bilinir), iki oyuncunun kendi sembollerini (X ve O) kullanarak, 3x3’lük tahtada bir satır, sütun veya diagonal çizmeye çalıştığı bir oyundur.&lt;/p&gt;
&lt;p&gt;Oyuncular sırayla hamle yaparlar ve kendi sembollerini yatay, dikey ya da çağraz olarak sıralamaya çalışırlar. Sıralayabilen oyunu kazanır ya da oyun berabere sonuçlanır :)&lt;/p&gt;
&lt;h2 id=&quot;golangde-tic-tak-toe-oyununun-konsol-üzerinden-iki-kişi-tarafından-oynanmasını-sağlayan-kod-aşağıdadır&quot;&gt;&lt;a href=&quot;#golangde-tic-tak-toe-oyununun-konsol-%C3%BCzerinden-iki-ki%C5%9Fi-taraf%C4%B1ndan-oynanmas%C4%B1n%C4%B1-sa%C4%9Flayan-kod-a%C5%9Fa%C4%9F%C4%B1dad%C4%B1r&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;GoLang’de tic-tak-toe oyununun konsol üzerinden iki kişi tarafından oynanmasını sağlayan kod aşağıdadır:&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;bufio&quot;&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;fmt&quot;&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;os&quot;&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;strconv&quot;&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;strings&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
	empty &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot; &quot;&lt;/span&gt;
	x     &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;X&quot;&lt;/span&gt;
	o     &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;O&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; game &lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	board &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// newGame oluşturulan bir game nesnesi döndürür.&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;newGame&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;game &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	g &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;game&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	g&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;board &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;range&lt;/span&gt; g&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;board &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		g&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;board&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;range&lt;/span&gt; g&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;board&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			g&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;board&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; empty
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; g
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// playMove bir oyuncunun tahtada yapacağı hamleyi yapar.&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;g &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;game&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;playMove&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; y &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; player &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;error&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; x &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;||&lt;/span&gt; x &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;||&lt;/span&gt; y &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;||&lt;/span&gt; y &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Errorf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Invalid move&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; g&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;board&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;y&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; empty &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Errorf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;That space is already taken&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	g&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;board&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;y&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; player
	&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;nil&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// drawBoard tahtayı çizmek için kullanılır.&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;g &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;game&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;drawBoard&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;  0 1 2&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; row &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;range&lt;/span&gt; g&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;board &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
		fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;strings&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Join&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;row&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;|&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// checkWin kazananın olup olmadığını kontrol eder.&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;g &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;game&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;checkWin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token comment&quot;&gt;// Check rows&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; row &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;range&lt;/span&gt; g&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;board &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; row&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; empty &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; row&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; row&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; row&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; row&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; row&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	&lt;span class=&quot;token comment&quot;&gt;// Check columns&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; g&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;board&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; empty &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; g&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;board&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; g&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;board&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; g&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;board&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; g&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;board&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; g&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;board&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	&lt;span class=&quot;token comment&quot;&gt;// Check diagonals&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; g&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;board&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; empty &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; g&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;board&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; g&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;board&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; g&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;board&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; g&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;board&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; g&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;board&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; g&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;board&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; empty &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; g&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;board&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; g&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;board&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; g&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;board&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; g&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;board&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; g&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;board&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; empty
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	g &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;newGame&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	reader &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; bufio&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;NewReader&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;os&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Stdin&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

	fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Welcome to Tic-Tac-Toe!&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Player 1 is X and Player 2 is O&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Enter your moves in the format &apos;x y&apos; (without quotes)&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		player &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; x

		&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			player &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; o
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

		fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Player %s&apos;s turn: &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; player&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
		text&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;_&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; reader&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;ReadString&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token char&quot;&gt;&apos;\n&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
		text &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; strings&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;TrimSpace&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;text&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
		parts &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; strings&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Split&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;text&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot; &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

		&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;parts&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Invalid input&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
			i&lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;
			&lt;span class=&quot;token keyword&quot;&gt;continue&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

		x&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; strconv&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Atoi&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;parts&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;nil&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Invalid input&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
			i&lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;
			&lt;span class=&quot;token keyword&quot;&gt;continue&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

		y&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; strconv&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Atoi&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;parts&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;nil&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Invalid input&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
			i&lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;
			&lt;span class=&quot;token keyword&quot;&gt;continue&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

		err &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; g&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;playMove&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; y&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; player&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;nil&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;err&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
			i&lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;
			&lt;span class=&quot;token keyword&quot;&gt;continue&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

		g&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;drawBoard&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

		winner &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; g&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;checkWin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; winner &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; empty &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Player %s wins!\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; winner&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
			&lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; g&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;checkWin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; empty &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;It&apos;s a draw!&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;p&gt;Program çalıştırıldığında aşağıdaki gibi bir çıktı verecektir. Oyuncular hamlelerini yapmak için konsola koordinatları girerler. Örneğin, bir oyuncu (X) tahtadaki (0, 1) noktasına hamle yapmak isterse, “0 1” (boşluklu ve tırnaksız) şeklinde bir girdi yapar. Tahta güncellenir ve sıradaki oyuncu hamle yapmaya çalışır. Oyun devam eder ve eğer bir oyuncu üç sembolünü tahtada çizerek kazanırsa veya tüm kareler dolup oyun berabere biterse oyun sona erer.&lt;/p&gt;
&lt;h2 id=&quot;örnek-oyun&quot;&gt;&lt;a href=&quot;#%C3%B6rnek-oyun&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Örnek oyun&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;json&quot;&gt;&lt;pre class=&quot;language-json&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;&gt; go run main.go                   
Welcome to Tic-Tac-Toe!
Player &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; is X and Player &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; is O
Enter your moves in the format &apos;x y&apos; (without quotes)

Player X&apos;s turn&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
  &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;  |X| 
&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;  | | 
&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;  | | 

Player O&apos;s turn&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
  &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;  |X| 
&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;  |O| 
&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;  | | 

Player X&apos;s turn&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;
  &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;  |X| 
&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;  |O| 
&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; X| | 

Player O&apos;s turn&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;
  &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; O|X| 
&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;  |O| 
&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; X| | 

Player X&apos;s turn&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
  &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; O|X| 
&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;  |O| 
&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; X|X| 

Player O&apos;s turn&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;
  &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; O|X| 
&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;  |O| 
&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; X|X|O

Player O wins!&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Tic-tac-toe&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/Tic-tac-toe&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2021/tic-tak-toe/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[SOLID - Single-Responsibility Principle]]></title><description><![CDATA[Single-responsibility prensibi, bir sınıfın veya fonksiyonun sadece bir görevi olması gerektiğini öngören bir programlama prensibidir. Bu prensip, programlarımızın daha az hata olasılığına sahip, daha kolay anlaşılabilir ve bakımının daha kolay olmasını sağlar.]]></description><link>https://blog.hkucuk.com/2021/solid-single-responsibility-prensible/</link><guid isPermaLink="false">https://blog.hkucuk.com/2021/solid-single-responsibility-prensible/</guid><pubDate>Tue, 25 May 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Single-responsibility prensibi, bir sınıfın veya fonksiyonun sadece bir görevi olması gerektiğini öngören bir programlama prensibidir. Bu prensip, programlarımızın daha az hata olasılığına sahip, daha kolay anlaşılabilir ve bakımının daha kolay olmasını sağlar.&lt;/p&gt;
&lt;p&gt;Eğer geliştirdiğimiz sınıf ya da fonksiyon birden fazla amaca hizmet ediyorsa, bu kurala aykırı bir geliştirme sürecinde olduğumuz anlamına geliyor. Bunu farkettiğimizde amaçlara uygun olarak parçalamanız gerekmektedir.&lt;/p&gt;
&lt;p&gt;Örnek olarak, bir sınıfın sadece bir veritabanı erişim nesnesi olması gerektiğini düşünelim. Bu sınıfın sadece veritabanına erişim ile ilgili işlevsellikleri içermesi gerekir. Örneğin veritabanına kayıt ekleme, veritabanından veri okuma gibi. Bu sınıfın, veritabanına erişim dışındaki herhangi bir işlevselliği içermemesi gerekir.&lt;/p&gt;
&lt;h2 id=&quot;phpde-single-responsibility-prensibini-uygulamak-için-aşağıdaki-gibi-bir-örnek-verilebilir&quot;&gt;&lt;a href=&quot;#phpde-single-responsibility-prensibini-uygulamak-i%C3%A7in-a%C5%9Fa%C4%9F%C4%B1daki-gibi-bir-%C3%B6rnek-verilebilir&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;PHP’de, Single-responsibility prensibini uygulamak için aşağıdaki gibi bir örnek verilebilir:&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;php&quot;&gt;&lt;pre class=&quot;language-php&quot;&gt;&lt;code class=&quot;language-php&quot;&gt;&lt;span class=&quot;token php language-php&quot;&gt;&lt;span class=&quot;token delimiter important&quot;&gt;&amp;lt;?php&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Sadece veritabanı erişim nesnesi olan bir sınıf&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name-definition class-name&quot;&gt;Database&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// Veritabanına bağlanma&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;insert&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// Veritabanına kayıt ekleme&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;select&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// Veritabanından veri okuma&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token variable&quot;&gt;$db&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Database&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token variable&quot;&gt;$db&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// Veritabanına bağlanır&lt;/span&gt;
&lt;span class=&quot;token variable&quot;&gt;$db&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;insert&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// Veritabanına kayıt ekler&lt;/span&gt;
&lt;span class=&quot;token variable&quot;&gt;$db&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;select&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// Veritabanından veri okur&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Bu örnekte, Database sınıfı sadece veritabanına erişim ile ilgili işlevsellik içermektedir ve diğer işlevsellikleri içermemektedir. Bu nedenle, Database sınıfı Single-responsibility prensibini uygulamaktadır.&lt;/p&gt;
&lt;p&gt;Aşağıdaki PHP kodu ise Single-responsibility prensibini ihlal eden bir sınıf örneğidir.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;php&quot;&gt;&lt;pre class=&quot;language-php&quot;&gt;&lt;code class=&quot;language-php&quot;&gt;&lt;span class=&quot;token php language-php&quot;&gt;&lt;span class=&quot;token delimiter important&quot;&gt;&amp;lt;?php&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Veritabanı erişim ve veri işleme işlevselliğini içeren bir sınıf&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name-definition class-name&quot;&gt;Database&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// Veritabanına bağlanma&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;insert&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// Veritabanına kayıt ekleme&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;select&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// Veritabanından veri okuma&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-definition function&quot;&gt;processData&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// Verileri işleme&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token variable&quot;&gt;$db&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Database&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token variable&quot;&gt;$db&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// Veritabanına bağlanır&lt;/span&gt;
&lt;span class=&quot;token variable&quot;&gt;$db&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;insert&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// Veritabanına kayıt ekler&lt;/span&gt;
&lt;span class=&quot;token variable&quot;&gt;$db&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;select&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// Veritabanından veri okur&lt;/span&gt;
&lt;span class=&quot;token variable&quot;&gt;$db&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;processData&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// Verileri işler&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Bu örnekte, Database sınıfı hem veritabanı erişim işlevselliğini hem de veri işleme işlevselliğini içermektedir. Bu nedenle, Database sınıfı Single-responsibility prensibini ihlal etmektedir.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;golangde-single-responsibility-prensibini-uygulamak-için-aşağıdaki-gibi-bir-örnek-verilebilir&quot;&gt;&lt;a href=&quot;#golangde-single-responsibility-prensibini-uygulamak-i%C3%A7in-a%C5%9Fa%C4%9F%C4%B1daki-gibi-bir-%C3%B6rnek-verilebilir&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;GoLang’de Single-responsibility prensibini uygulamak için aşağıdaki gibi bir örnek verilebilir:&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;// Sadece veritabanı erişim nesnesi olan bir sınıf&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; Database &lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Veritabanına erişim işlevselliği&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;d &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;Database&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Connect&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;// Veritabanına bağlanma&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;d &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;Database&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Insert&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;// Veritabanına kayıt ekleme&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;d &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;Database&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Select&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;// Veritabanından veri okuma&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

db &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;Database&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
db&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Connect&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// Veritabanına bağlanır&lt;/span&gt;
db&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Insert&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// Veritabanına kayıt ekler&lt;/span&gt;
db&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Select&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// Veritabanından veri okur&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Bu örnekte de Database sınıfı sadece veritabanına erişim ile ilgili işlevsellik içermektedir ve diğer işlevsellikleri içermemektedir. Bu nedenle, Database sınıfı Single-responsibility principle’ını uygulamaktadır.&lt;/p&gt;
&lt;p&gt;PHP örneğine benzer şekilde, aşağıdaki GoLang kodu da Single-responsibility prensibini ihlal eden bir örnektir.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;// Veritabanı erişim ve veri işleme işlevselliğini içeren bir sınıf&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;type&lt;/span&gt; Database &lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Veritabanına erişim işlevselliği&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;d &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;Database&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Connect&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;// Veritabanına bağlanma&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;d &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;Database&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Insert&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;// Veritabanına kayıt ekleme&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;d &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;Database&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Select&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;// Veritabanından veri okuma&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Veri işleme işlevselliği&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;d &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;Database&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;ProcessData&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;// Verileri işleme&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

db &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;Database&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
db&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Connect&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// Veritabanına bağlanır&lt;/span&gt;
db&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Insert&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// Veritabanına kayıt ekler&lt;/span&gt;
db&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Select&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// Veritabanından veri okur&lt;/span&gt;
db&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;ProcessData&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// Verileri işler&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Bu örnekte de Database sınıfı hem veritabanı erişim işlevselliğini hem de veri işleme işlevselliğini içermektedir. Bu nedenle, Database sınıfı Single-responsibility prensibini ihlal etmektedir.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Single-responsibility_principle&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/Single-responsibility_principle&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://stackify.com/solid-design-principles/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://stackify.com/solid-design-principles/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://medium.com/successivetech/s-o-l-i-d-the-first-5-principles-of-object-oriented-design-with-php-b6d2742c90d7&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://medium.com/successivetech/s-o-l-i-d-the-first-5-principles-of-object-oriented-design-with-php-b6d2742c90d7&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2021/solid-single-responsibility-prensible/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[VirtualHost'ta Reverse Proxy ve Basit Authentication]]></title><description><![CDATA[Bir web sunucusu kurarken, genellikle erişimi kısıtlamak istediğimiz bölümler vardır. Web uygulamaları genellikle kendi kimlik doğrulama ve yetkilendirme yöntemlerini sağlarlar ancak bazı durumlarda web sunucusunun kendisi aracılığıyla erişimi kısıtlamak isteyebiliriz.]]></description><link>https://blog.hkucuk.com/2021/virtualhostta-reverse-proxy-ve-basit-authentication/</link><guid isPermaLink="false">https://blog.hkucuk.com/2021/virtualhostta-reverse-proxy-ve-basit-authentication/</guid><pubDate>Thu, 11 Mar 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Bir web sunucusu kurarken, genellikle erişimi kısıtlamak istediğimiz bölümler vardır. Web uygulamaları genellikle kendi kimlik doğrulama ve yetkilendirme yöntemlerini sağlarlar ancak bazı durumlarda web sunucusunun kendisi aracılığıyla erişimi kısıtlamak isteyebiliriz.&lt;/p&gt;
&lt;p&gt;Reverse Proxy ihtiyacımız ise web sunucusunda çalışan bir servisi dış dünyaya açmak istediğimizde karşımıza çıkmaktadır. Örneğin 3100 prtunda çalışan bir servisiniz var ve bu servise servis.example.com aracılığı ile erişmek istiyorsunuz. Bu durumda bir yönlendiriciye ihtiyacınız olacaktır.&lt;/p&gt;
&lt;p&gt;Bu yazıda ben VirtualHost kullanan bir web sunucusunda Reverse Proxy işleminin nasıl yapılacağını ve şifre korumasının nasıl uygulanabileceğini göstereceğim.&lt;/p&gt;
&lt;h2 id=&quot;parola-dosyasını-oluşturma&quot;&gt;&lt;a href=&quot;#parola-dosyas%C4%B1n%C4%B1-olu%C5%9Fturma&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Parola Dosyasını Oluşturma&lt;/h2&gt;
&lt;p&gt;Öncelikle erişim iznine sahip olacak kullanıcı adlarının ve şifrelerinin sisteme tanıtılması gerekmektedir. Bunun için &lt;a href=&quot;https://httpd.apache.org/docs/2.4/programs/htpasswd.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;htpasswd&lt;/a&gt; komutuna ihtiyacımız var.&lt;/p&gt;
&lt;p&gt;Eğer htpasswd sisteminizde kurulu değilse aşağıdaki şekilde kurulumunu sağlayabilirsiniz. Ben &lt;b&gt;yum&lt;/b&gt; paket yöneticisini kullanıyorum. Sisteminize uygun kurulumu kısa bir araştırma ile kolayca bulabilirsiniz.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;yum provides \&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;bin&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;htpasswd
ya da
yum install httpd&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;tools&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Komut sistemimizde olduğuna göre artık şifreleri oluşturabiliriz. Bunun için sistemimizin /etc/httpd dizininde &lt;b&gt;.htpasswd&lt;/b&gt; adında gizli bir dosya oluşturacağız.&lt;/p&gt;
&lt;p&gt;Henüz ilk defa htpasswd kullanacağımızdan dolayı belirtilen dosyayı oluşturmak için &lt;b&gt;-c&lt;/b&gt; seçeneğini eklememiz gerekir. Dosya içinde yeni bir girdi oluşturmak için komutun sonunda bir kullanıcı adı (bu örnekte admin) belirtiyoruz:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;sudo htpasswd &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;c &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;etc&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;httpd&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;htpasswd admin&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Bu komutu çalıştırdıktan sonra sistem sizden bir parola isteyecektir. Parolanızı iki defa girdikten sonra admin kullanıcısı için şifre tanımlanmış olacaktır.&lt;/p&gt;
&lt;p&gt;Bundan sonra başka kullanıcı eklemek isterseniz &lt;b&gt;-c&lt;/b&gt; komutunu kullanmanıza gerek yok.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;sudo htpasswd &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;etc&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;httpd&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;htpasswd another_user&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Dosyanın içeriğini görüntülersek, her kayıt için kullanıcı adını ve şifrelenmiş parolayı görebiliriz:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;cat &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;etc&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;httpd&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;htpasswd

Output
&lt;span class=&quot;token literal-property property&quot;&gt;admin&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;$apr1$lzxsIfXG$tmCvCfb49vpPFwKGVsuYz&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;
&lt;span class=&quot;token literal-property property&quot;&gt;another_user&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;$apr1$p1E9MeAf$kiAhneUwr&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;MhAE2kKGYHK&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id=&quot;virtualhost-basit-giriş-tanımlama&quot;&gt;&lt;a href=&quot;#virtualhost-basit-giri%C5%9F-tan%C4%B1mlama&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;VirtualHost Basit Giriş Tanımlama&lt;/h2&gt;
&lt;p&gt;Şifre ile giriş ekleyecepğimiz virtualhost config dosyasını açalım. Benim örneğimde bu dosya &lt;b&gt;/etc/httpd/conf/httpd.conf&lt;/b&gt;.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;sudo nano &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;etc&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;httpd&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;conf&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;httpd&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;conf&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Config dosyası içerisinde aşağıdaki gibi bir tanımlamanız olması gerekiyor.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;VirtualHost &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
    ServerName service&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;example&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;com
    ServerAdmin webmaster@localhost
    DocumentRoot &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;www&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;html
    ErrorLog $&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;APACHE_LOG_DIR&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;error&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;log
    CustomLog $&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;APACHE_LOG_DIR&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;access&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;log combined
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;VirtualHost&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Giriş kısıtlaması dizin bazında yapılmaktadır. Bunun için &lt;b&gt;Directory&lt;/b&gt; ya da &lt;b&gt;Location&lt;/b&gt; tanımlamalarını kullanmamız gerekmektedir.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;VirtualHost &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
    ServerName service&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;example&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;com
    ServerAdmin webmaster@localhost
    DocumentRoot &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;www&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;html
    ErrorLog $&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;APACHE_LOG_DIR&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;error&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;log
    CustomLog $&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;APACHE_LOG_DIR&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;access&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;log combined

    &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;Directory &lt;span class=&quot;token string&quot;&gt;&quot;/var/www/html&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
        AuthType Basic
        AuthName &lt;span class=&quot;token string&quot;&gt;&quot;Restricted Content&quot;&lt;/span&gt;
        AuthUserFile &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;etc&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;httpd&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;htpasswd
        Require valid&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;user
    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;Directory&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;VirtualHost&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Artık &lt;b&gt;service.example.com&lt;/b&gt; adresine erişmek istendiğinde kullanıcı adı ve şifre girilmesi gerekecektir.&lt;/p&gt;
&lt;h2 id=&quot;reverse-proxy&quot;&gt;&lt;a href=&quot;#reverse-proxy&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Reverse Proxy&lt;/h2&gt;
&lt;p&gt;Reverse Proxy eklemek için &lt;b&gt;ProxyPass&lt;/b&gt; ve &lt;b&gt;ProxyPassReverse&lt;/b&gt; alanları işimizi görecektir. Reverse Proxy ve Basic Authentication işlemlerini birlikte içeren config şu şekilde olacaktır.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;VirtualHost &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
    ServerName service&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;example&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;com
    ServerAdmin webmaster@localhost
    DocumentRoot &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;www&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;html
    ErrorLog $&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;APACHE_LOG_DIR&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;error&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;log
    CustomLog $&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;APACHE_LOG_DIR&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;access&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;log combined

    ProxyRequests Off
    &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;Proxy &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
        Order deny&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;allow
        Allow from all
    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;Proxy&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;

    ProxyErrorOverride On
    ProxyPass   &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;   http&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token regex&quot;&gt;&lt;span class=&quot;token regex-delimiter&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token regex-source language-regex&quot;&gt;127.0.0.1:3100&lt;/span&gt;&lt;span class=&quot;token regex-delimiter&quot;&gt;/&lt;/span&gt;&lt;/span&gt;
    ProxyPassReverse   &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;   http&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token regex&quot;&gt;&lt;span class=&quot;token regex-delimiter&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token regex-source language-regex&quot;&gt;127.0.0.1:3100&lt;/span&gt;&lt;span class=&quot;token regex-delimiter&quot;&gt;/&lt;/span&gt;&lt;/span&gt;

    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;Location&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;
        Authtype Basic
        Authname &lt;span class=&quot;token string&quot;&gt;&quot;Password Required&quot;&lt;/span&gt;
        AuthUserFile &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;etc&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;httpd&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;htpasswd
        Require valid&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;user
        Order allow&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;deny
        Allow from all
    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;Location&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;VirtualHost&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Burada Directory’den farklı olarak Location kullanıldı. Dikkat edilmesi gerek bir nokta, &lt;b&gt;ProxyPass&lt;/b&gt; ve &lt;b&gt;ProxyPassReverse&lt;/b&gt; tanımlamalarındaki hedef url’in sonundaki &lt;b&gt;/&lt;/b&gt; mutlaka koyulmalıdır. Yoksa doğru bir mapping yapılamayacaktır.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://httpd.apache.org/docs/2.4/programs/htpasswd.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://httpd.apache.org/docs/2.4/programs/htpasswd.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://httpd.apache.org/docs/current/mod/mod_proxy.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://httpd.apache.org/docs/current/mod/mod_proxy.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2021/virtualhostta-reverse-proxy-ve-basit-authentication/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Zamanlarının Ötesinde Olan Bazı Fikirler]]></title><description><![CDATA[Jet motorlu aérotrains Fransa'da 1965 ile 1977 tarihleri arasında geliştirildi. Tren, benzeri görülmemiş hızlarda; basit, güçlendirilmiş beton bir yol üzerinde ve bir hava yastığı üzerinde ilerliyordu. Aslında tam olarak klavuz bir yolda ilerleyen hoverkraft (karada ve havada gidebilen taşıt)'a benziyordu.]]></description><link>https://blog.hkucuk.com/2021/zamanlarinin-otesinde-bazi-fikirler/</link><guid isPermaLink="false">https://blog.hkucuk.com/2021/zamanlarinin-otesinde-bazi-fikirler/</guid><pubDate>Wed, 27 Jan 2021 00:00:00 GMT</pubDate><content:encoded>&lt;ol&gt;
&lt;li&gt;Jet motorlu aérotrains &lt;a href=&quot;https://mashable.com/2016/01/22/aerotrain/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Fransa’da&lt;/a&gt; 1965 ile 1977 tarihleri arasında geliştirildi. Tren, benzeri görülmemiş hızlarda; basit, güçlendirilmiş beton bir yol üzerinde ve bir hava yastığı üzerinde ilerliyordu. Aslında tam olarak klavuz bir yolda ilerleyen hoverkraft (karada ve havada gidebilen taşıt)‘a benziyordu.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/046846296c87804f3d114781261bbf8c/acb04/aerotrain.jpg&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 52.70270270270271%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAALABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAME/8QAFQEBAQAAAAAAAAAAAAAAAAAAAQP/2gAMAwEAAhADEAAAAdkkZ01IE//EABoQAQABBQAAAAAAAAAAAAAAAAEAAgMQEhP/2gAIAQEAAQUCbou5OxGkwT//xAAVEQEBAAAAAAAAAAAAAAAAAAAAE//aAAgBAwEBPwGSL//EABURAQEAAAAAAAAAAAAAAAAAAAAT/9oACAECAQE/Aaqv/8QAFhAAAwAAAAAAAAAAAAAAAAAAARAx/9oACAEBAAY/AoXA/wD/xAAcEAEAAgIDAQAAAAAAAAAAAAABABExcSGB0aH/2gAIAQEAAT8hYCVa9iTVN9ewPhv5Atl2oheJhP/aAAwDAQACAAMAAAAQmD//xAAYEQACAwAAAAAAAAAAAAAAAAAAEQFBUf/aAAgBAwEBPxCHsTT/xAAYEQACAwAAAAAAAAAAAAAAAAAAARFBcf/aAAgBAgEBPxBSowf/xAAdEAACAgIDAQAAAAAAAAAAAAABEQAhUZFBYYHR/9oACAEBAAE/ECNQGre4RZcwClU7gWhh39Q8B5AXBKBqVFLU/9k=&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Jet motorlu aérotrains&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/046846296c87804f3d114781261bbf8c/1c72d/aerotrain.jpg&quot;
        srcset=&quot;https://blog.hkucuk.com/static/046846296c87804f3d114781261bbf8c/a80bd/aerotrain.jpg 148w,https://blog.hkucuk.com/static/046846296c87804f3d114781261bbf8c/1c91a/aerotrain.jpg 295w,https://blog.hkucuk.com/static/046846296c87804f3d114781261bbf8c/1c72d/aerotrain.jpg 590w,https://blog.hkucuk.com/static/046846296c87804f3d114781261bbf8c/acb04/aerotrain.jpg 750w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;1960’larda &lt;a href=&quot;https://ethw.org/Picturephone&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Bell Labs&lt;/a&gt;, insanların telefonda konuşurken birbirlerine bakabilecekleri bir resimli telefon yarattı. Buradan anlıyoruz ki aslınad görüntülü görüşme o kadar da modern değilmiş :)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/3d806343d1b377d9a318d073b9f0b129/acb04/bell-labs.jpg&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 52.70270270270271%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAALABQDASIAAhEBAxEB/8QAGAAAAgMAAAAAAAAAAAAAAAAAAAUBAwT/xAAUAQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIQAxAAAAGbVoahQH//xAAbEAACAgMBAAAAAAAAAAAAAAABAgMSAAQTEf/aAAgBAQABBQIP0VLUi2WrYxp0Yn0nP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8BP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8BP//EABsQAAIDAAMAAAAAAAAAAAAAAAERACEiAhAx/9oACAEBAAY/AiOFqWLml7MU4WXnr//EABsQAQEBAAIDAAAAAAAAAAAAAAERACExQXGB/9oACAEBAAE/IW5aJ9MiuEDq110um15mGaz7efWWVd//2gAMAwEAAgADAAAAEDMP/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPxA//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPxA//8QAGxABAQEBAQADAAAAAAAAAAAAAREhAEFRccH/2gAIAQEAAT8QqgOF1DKnznWKRRzzDpE5RBsh+3pj1AhX75u0MbLqx5zUrrO//9k=&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Bell Labs&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/3d806343d1b377d9a318d073b9f0b129/1c72d/bell-labs.jpg&quot;
        srcset=&quot;https://blog.hkucuk.com/static/3d806343d1b377d9a318d073b9f0b129/a80bd/bell-labs.jpg 148w,https://blog.hkucuk.com/static/3d806343d1b377d9a318d073b9f0b129/1c91a/bell-labs.jpg 295w,https://blog.hkucuk.com/static/3d806343d1b377d9a318d073b9f0b129/1c72d/bell-labs.jpg 590w,https://blog.hkucuk.com/static/3d806343d1b377d9a318d073b9f0b129/acb04/bell-labs.jpg 750w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;1990’larda, kullanıcıların fotoğraflara yalnızca saatleriyle tıklamalarını sağlayan &lt;a href=&quot;https://www.cnet.com/reviews/casio-wqv-1cr-wristwatch-camera-review/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Casio WQV-1&lt;/a&gt; kol saati kamerası üretilmişti. Kalite o kadar iyi olmayabilir ancak konsept zamanının ötesindeymiş.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/e8254394cb6ec8e48c24a24b36ad7b19/acb04/casio.jpg&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 52.70270270270271%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAALABQDASIAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAAMBAgQF/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAH/2gAMAwEAAhADEAAAAcDKtjoEEf/EABwQAAIABwAAAAAAAAAAAAAAAAECAAMhIiMyQv/aAAgBAQABBQKFtRKr0Bilaf/EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8BP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8BP//EABwQAAAGAwAAAAAAAAAAAAAAAAABAgMQEVFhcf/aAAgBAQAGPwJyshZahwgvkf/EABwQAAMAAQUAAAAAAAAAAAAAAAABEUExUXGBof/aAAgBAQABPyGtNMovZyG/RoMi2VEUyNI//9oADAMBAAIAAwAAABAvP//EABURAQEAAAAAAAAAAAAAAAAAABAR/9oACAEDAQE/EIf/xAAWEQEBAQAAAAAAAAAAAAAAAAAAARH/2gAIAQIBAT8Q1X//xAAdEAEAAwABBQAAAAAAAAAAAAABABExIUFRYYGh/9oACAEBAAE/ELdJQj1HkRJwOy2ysbGQ5aD4RZhs17IQZgX4ucme7P/Z&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Casio WQV-1&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/e8254394cb6ec8e48c24a24b36ad7b19/1c72d/casio.jpg&quot;
        srcset=&quot;https://blog.hkucuk.com/static/e8254394cb6ec8e48c24a24b36ad7b19/a80bd/casio.jpg 148w,https://blog.hkucuk.com/static/e8254394cb6ec8e48c24a24b36ad7b19/1c91a/casio.jpg 295w,https://blog.hkucuk.com/static/e8254394cb6ec8e48c24a24b36ad7b19/1c72d/casio.jpg 590w,https://blog.hkucuk.com/static/e8254394cb6ec8e48c24a24b36ad7b19/acb04/casio.jpg 750w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;ol start=&quot;4&quot;&gt;
&lt;li&gt;Çevrimiçi canlı oyun oynamaya başlamadan çok önce, 1990’larda kullanıcıların Kablo TV aracılığıyla birbirleriyle oyun oynamasına izin veren &lt;a href=&quot;https://en.wikipedia.org/wiki/Sega_Channel&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;“Sega Kanalı”&lt;/a&gt; olarak bilinen bir video oyun yayın hizmeti vardı.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/5f1b7c30c3f188a2caea71f9b67fe31b/acb04/sega-channel.jpg&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 52.70270270270271%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAALABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAQFAf/EABUBAQEAAAAAAAAAAAAAAAAAAAAD/9oADAMBAAIQAxAAAAGQziJSJgl//8QAGhAAAgMBAQAAAAAAAAAAAAAAAAIBAyETIv/aAAgBAQABBQJPLLbB2QsnCdP/xAAYEQACAwAAAAAAAAAAAAAAAAAAAgETMf/aAAgBAwEBPwFljCpT/8QAFxEAAwEAAAAAAAAAAAAAAAAAAAECEf/aAAgBAgEBPwFUaz//xAAYEAACAwAAAAAAAAAAAAAAAAAAESAhMf/aAAgBAQAGPwJlmw//xAAaEAEBAQADAQAAAAAAAAAAAAABEQAhQXGR/9oACAEBAAE/IQ8Rk1HOeGQ7/M0+5Wrkqu//2gAMAwEAAgADAAAAELg//8QAFxEAAwEAAAAAAAAAAAAAAAAAAAERYf/aAAgBAwEBPxBhUZn/xAAYEQACAwAAAAAAAAAAAAAAAAAAASExYf/aAAgBAgEBPxBjmjQ//8QAHBABAQACAgMAAAAAAAAAAAAAAREAITFRQWGB/9oACAEBAAE/ELyQY3y4VQ21Z+YxEGb3w8ntwYIDujfeUDXvP//Z&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Sega Kanalı&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/5f1b7c30c3f188a2caea71f9b67fe31b/1c72d/sega-channel.jpg&quot;
        srcset=&quot;https://blog.hkucuk.com/static/5f1b7c30c3f188a2caea71f9b67fe31b/a80bd/sega-channel.jpg 148w,https://blog.hkucuk.com/static/5f1b7c30c3f188a2caea71f9b67fe31b/1c91a/sega-channel.jpg 295w,https://blog.hkucuk.com/static/5f1b7c30c3f188a2caea71f9b67fe31b/1c72d/sega-channel.jpg 590w,https://blog.hkucuk.com/static/5f1b7c30c3f188a2caea71f9b67fe31b/acb04/sega-channel.jpg 750w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://mashable.com/2016/01/22/aerotrain/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://mashable.com/2016/01/22/aerotrain/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://ethw.org/Picturephone&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://ethw.org/Picturephone&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.cnet.com/reviews/casio-wqv-1cr-wristwatch-camera-review/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.cnet.com/reviews/casio-wqv-1cr-wristwatch-camera-review/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Sega_Channel&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/Sega_Channel&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2021/zamanlarinin-otesinde-bazi-fikirler/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Mimari Desenler ile Tasarım Desenleri Arasındaki Fark Nedir?]]></title><description><![CDATA[Mimari Desenler, belirli bir bağlamda yazılım mimarisinde yaygın olarak ortaya çıkan bir soruna genel, yeniden kullanılabilir bir çözümdür. Mimari desenler, yazılım tasarım modeline benzer ancak daha geniş bir kapsama sahiptir.]]></description><link>https://blog.hkucuk.com/2020/mimari-desenler-ile-tasarim-desenleri-arasindaki-fark-nedir/</link><guid isPermaLink="false">https://blog.hkucuk.com/2020/mimari-desenler-ile-tasarim-desenleri-arasindaki-fark-nedir/</guid><pubDate>Thu, 10 Dec 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Wikipedia’ya göre:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;architectural pattern&lt;/p&gt;
&lt;p&gt;is a general, reusable solution to a commonly occurring problem in software architecture within a given context. Architectural patterns are similar to software design pattern but have a broader scope.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;“belirli bir bağlamda yazılım mimarisinde yaygın olarak ortaya çıkan bir soruna genel, yeniden kullanılabilir bir çözümdür. Mimari desenler, yazılım tasarım modeline benzer ancak daha geniş bir kapsama sahiptir.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Bu yazıda, aşağıdaki 10 ortak mimari kalıbı, kullanımları, artı ve eksi yönlerini ele alarak açıklamaya çalışacağım.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;#1-layered-pattern-tr-katmanl%C4%B1-desen&quot;&gt;“Layered pattern”&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#2-client-server-pattern-tr-i%CC%87stemci-sunucu-kal%C4%B1b%C4%B1&quot;&gt;“Client-server pattern”&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#3-master-slave-pattern-tr-efendi-k%C3%B6le-kal%C4%B1b%C4%B1&quot;&gt;“Master-slave pattern”&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#4-pipe-filter-pattern-tr-boru-filtre-d%C3%BCzeni&quot;&gt;“Pipe-filter pattern”&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#5-broker-pattern-tr-broker-kal%C4%B1b%C4%B1&quot;&gt;“Broker pattern”&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#6-peer-to-peer-pattern-tr-e%C5%9Fler-aras%C4%B1-model&quot;&gt;“Peer-to-peer pattern”&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#7-event-bus-pattern-tr-olay-veriyolu-d%C3%BCzeni&quot;&gt;“Event-bus pattern”&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#8-model-view-controller-pattern-mvc-&quot;&gt;“Model-view-controller pattern”&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#9-blackboard-pattern-tr-karatahta-deseni&quot;&gt;“Blackboard pattern”&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#10-interpreter-pattern-tr-yorumlay%C4%B1c%C4%B1-deseni&quot;&gt;“Interpreter pattern”&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;1-layered-pattern-tr-katmanlı-desen&quot;&gt;&lt;a href=&quot;#1-layered-pattern-tr-katmanl%C4%B1-desen&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;1. Layered Pattern (tr: Katmanlı desen)&lt;/h2&gt;
&lt;p&gt;Bu desen, her biri belirli bir soyutlama düzeyinde olan alt görev gruplarına ayrıştırılabilen programları yapılandırmak için kullanılabilir. Her katman, bir sonraki üst katmana hizmet sağlar.&lt;/p&gt;
&lt;p&gt;Bir sistemde genel olarak bulunan 4 katman şunlardır:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Presentation layer - Sunum katmanı (UI katmanı olarak da bilinir)&lt;/li&gt;
&lt;li&gt;Application layer - Uygulama katmanı (hizmet katmanı olarak da bilinir)&lt;/li&gt;
&lt;li&gt;Business logic layer - İş mantığı katmanı (etki alanı katmanı olarak da bilinir)&lt;/li&gt;
&lt;li&gt;Data access layer - Veri erişim katmanı (kalıcılık katmanı olarak da bilinir)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;kullanım&quot;&gt;&lt;a href=&quot;#kullan%C4%B1m&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kullanım&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;E-posta, belge paylaşımı ve bankacılık gibi çevrimiçi uygulamalar.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/9f67d60b4d54c211710befa9203a1d89/4dcb9/layered.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 188px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 175%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAjCAIAAAAblL1PAAAACXBIWXMAAAsTAAALEwEAmpwYAAADHklEQVR42rVVSU/jMBTm/98QR26I5YBURQNSD8MJpsBhBJXoQhFt0jZptibNntiJ0/kSpynQQhmNxvpqve3ze352473lP4w9/IiuR6+vsShWGI3eyVytjZIUDgbpYlGRYWKE5IzlWcaxzHOgFpaMcTVPU8Sntk11vSInkgQmr4RFUWpZxWzbXM4cBwI1jGKtcmSeR01zlRlkLIkMyyWCgk7HurzUDg/ngqDs788bjUQUjdNTuCqy63K5KrteNSckaLfDfr+Yn57IbIYkLI6JprEk2UYeDoFkMknGY8xEVRFKZDkQxRCqohQuWS5mSYIQ9npUVSsyNoyGrRHHWRShSbqi6LK8zLIsSZD2bUxe7nFv6wFyn2GaRtkYrm4/53xjsLL5ZjmKI8ApbozPM7PC135sdzvdHZmd2BkvxlNnWmNsjy1qnfw4afxsQIAK48SZYJYdWbKlgAQVeTgfeokX0jBO44hGEAC4KaNAYacxVJIRyEmWqJ6qeVpFxkoZK845JCEiWM6g8pkLMBb9C4yUFdfTTVzIazLNKISu2lVc5ezxrPHUEDrCwa+D5nMTdR39PkLBF70LN3aLbUbOOzLPjHrux/c3o5urlysID8oDeoEd9bSeHdnw8hKwxJr8Yr6gGTNvpvkaIqzQwnK6r5uBCQsAAdF6oCMG9oE5mLmz1b8qTRbRAj3ngIxsPvWVuQJ4xHvrBVAF3+ZXNywsx64bVv3l10CHYQ/CAChuWHFpPsbsyByUY0fm/0L+1p6/yPyNhm10g7F3ZZf/yI8xOzI7ju04ix2ZKc1tG5/xCpAti+BzenwsCMIVpUuotZcHpOnqqEQxURR8xlNNKwBBVammZZLkA7qeQeVeVU1NM8XHUtdXN0ySCN/kquYtFfJHgbtcNzOMdE1GGdyBFwJqvx9fX/vPz1Gz6dzeBr7PWq3Acapv+0dynRkRd3dBs+men9tgCsKi1fJhH40Sz6vIEFB8RcYLCU4QMGQAplNiWaksU7wWMNZ2wPPwbOVoELpQkefzFA8DojlWDSvIiANqFwBVFAkq//Sc/+Jx37w93wHGH3DS2ze1aEqmAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Layered pattern&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/9f67d60b4d54c211710befa9203a1d89/4dcb9/layered.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/9f67d60b4d54c211710befa9203a1d89/12f09/layered.png 148w,https://blog.hkucuk.com/static/9f67d60b4d54c211710befa9203a1d89/4dcb9/layered.png 188w&quot;
        sizes=&quot;(max-width: 188px) 100vw, 188px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;2-client-server-pattern-tr-i̇stemci-sunucu-kalıbı&quot;&gt;&lt;a href=&quot;#2-client-server-pattern-tr-i%CC%87stemci-sunucu-kal%C4%B1b%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;2. Client-server Pattern (tr: İstemci-sunucu kalıbı)&lt;/h2&gt;
&lt;p&gt;Bu model iki kısımdan oluşur; bir sunucu ve birden çok istemci. Sunucu bileşeni, birden çok istemci bileşenine hizmet sağlayacaktır. İstemciler sunucudan hizmet talep eder ve sunucu bu istemcilere ilgili hizmetleri sağlar. Ayrıca, sunucu istemci isteklerini dinlemeye devam eder.&lt;/p&gt;
&lt;h3 id=&quot;kullanım-1&quot;&gt;&lt;a href=&quot;#kullan%C4%B1m-1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kullanım&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Desktop uygulamaları&lt;/li&gt;
&lt;li&gt;E-ticaret web uygulamaları.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/fd259d2efe99ba07f76cf6dc050a8626/62f93/client-server.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 284px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 112.83783783783782%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAXCAIAAACEf/j0AAAACXBIWXMAAAsTAAALEwEAmpwYAAACRUlEQVR42n2U226qQBSGff/n6G1NL9qk102MF9Zo0tqdVHcEQUROAyhnxP3JKIql+1dxZs36Z53plWW5rxGG4e6/OBwOxzZ6QojJZBLWCIIg7AJM1CzLuidj06zh+37QgPXNliP4iqIsl8sWGSnHkDVNU1V1JaHrq2araTxYG4ah6zphtshc7LouZxwcauS+X0RRdTyWRVHmOZKqqnB7s9m0yIQkyRxUdUrKMEw+P8Xzs//y4r++ZquVVLVtGwO3aetFUQTNcZz1eh3HcZplSRzvDWOnqsH39w6h7yMEmxoty/zI5Gw2Ix7yodQg5r+qumBhGIqqLmvU4Wsty/JPVjKS2O/jKBKeZ1tWlqY4hbdJkkgFlIn/Sm42t8jzHAILCJ7ndaqdLVdtICFIUiDJ2+2W0GSrICTBaZpeyT8BWTqJHkWmC4fD4WAwGI/H/X6f665u/7R86zZFktnGLFsst9zutNy4/WvMKHGx7BPvAmKjYak8LUSqKR4SNBs3z2Ro0+mU8cBJTCUX1CXbE7AUsuaWoijup4pK0iHWBSTDcZ2vP1/v43dPeGytrYUOaZvP5x1TJfmA682N6TkePTcajVznNDCAEE5Hptk9VSRTtp5IhLWzyqrMD3lSJFmZHavzYDQ6ZzJmSYYcSXmgCOVp9vT48fi2fHuYPCzcxa9TRUpwicDwWb4xRCB0Wzdd0/O9tb0WvpAvI9Q6porEyqmiJKe3h7rSNV1baacFH/X0GuFIq9ExVfQTZSwuYJsX9ZfHjfCuVP8ATxMaCoRDXwkAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Client-server pattern&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/fd259d2efe99ba07f76cf6dc050a8626/62f93/client-server.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/fd259d2efe99ba07f76cf6dc050a8626/12f09/client-server.png 148w,https://blog.hkucuk.com/static/fd259d2efe99ba07f76cf6dc050a8626/62f93/client-server.png 284w&quot;
        sizes=&quot;(max-width: 284px) 100vw, 284px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;3-master-slave-pattern-tr-efendi-köle-kalıbı&quot;&gt;&lt;a href=&quot;#3-master-slave-pattern-tr-efendi-k%C3%B6le-kal%C4%B1b%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;3. Master-Slave Pattern (tr: Efendi-Köle kalıbı)&lt;/h2&gt;
&lt;p&gt;Bu model iki kısımdan oluşur; master(efendi) ve slaves(köleler). Ana bileşen, işi özdeş ikincil bileşenler arasında dağıtır ve ikincil bileşenlerin döndürdüğü sonuçlardan nihai sonucu hesaplar.&lt;/p&gt;
&lt;h3 id=&quot;kullanım-2&quot;&gt;&lt;a href=&quot;#kullan%C4%B1m-2&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kullanım&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Veritabanı replikalarında, ana veritabanı yetkili kaynak olarak kabul edilir ve ikincil veritabanları onunla senkronize edilir.&lt;/li&gt;
&lt;li&gt;Bir bilgisayar sistemindeki bir veri yoluna bağlı çevre birimleri (ana ve bağımlı sürücüler).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/3c96ff5dbd5a7287786bb1aeed1bed06/c0388/master-slave.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 542px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 39.189189189189186%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAIAAAB2/0i6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA90lEQVR42o1Oy47CMAzs//8XB0AcOHCBA9JuBQp9kThx4jRud7pI7KFCWiuyxjP2TKp5VVPOSqQhKLPGCFCI5mlab1Zrqng/Mafr1W02brst1qpzmvO/jlWEmiYNAxsjTcNdF9r2Y/I0/wlZxDoXRYCZeRxHaCFGRwT8MbmUEn5LVV+Ms1ZSeqvee9i91eWYhGyy6PW97lwXcnAJ0Y4ymdb01EPCyJm9eDOYm7kBYAd8xcI22t3X7ng7PvwDfsaZouXcnPffe3SoMccnP0cdT+Z0qA+X9gKvkEKFqCBLGmRYvhKWtIRvdEMcMOLhfvljtD336MAgfwBDXs7No9nAtQAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Master-Slave Pattern&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/3c96ff5dbd5a7287786bb1aeed1bed06/c0388/master-slave.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/3c96ff5dbd5a7287786bb1aeed1bed06/12f09/master-slave.png 148w,https://blog.hkucuk.com/static/3c96ff5dbd5a7287786bb1aeed1bed06/e4a3f/master-slave.png 295w,https://blog.hkucuk.com/static/3c96ff5dbd5a7287786bb1aeed1bed06/c0388/master-slave.png 542w&quot;
        sizes=&quot;(max-width: 542px) 100vw, 542px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;4-pipe-filter-pattern-tr-boru-filtre-düzeni&quot;&gt;&lt;a href=&quot;#4-pipe-filter-pattern-tr-boru-filtre-d%C3%BCzeni&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;4. Pipe-filter Pattern (tr: Boru filtre düzeni)&lt;/h2&gt;
&lt;p&gt;Bu model, bir veri akışı üreten ve işleyen sistemleri yapılandırmak için kullanılabilir. Her işlem adımı bir filtre bileşeninin içindedir. İşlenecek veriler borulardan geçirilir. Bu borular, arabelleğe alma veya senkronizasyon amacıyla kullanılabilir.&lt;/p&gt;
&lt;h3 id=&quot;kullanım-3&quot;&gt;&lt;a href=&quot;#kullan%C4%B1m-3&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kullanım&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Derleyiciler. Ardışık filtreler, sözcük analizi, ayrıştırma, anlamsal analiz ve kod üretimi gerçekleştirir.&lt;/li&gt;
&lt;li&gt;Biyoinformatikte iş akışları.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/9348416388c009b8da3486bef7ae829a/8c557/pipe-filter.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 18.91891891891892%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAIAAAABPYjBAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAoUlEQVR42j2O2xKDIAxE+f/PtEULKggJ4RKEona6k4ec2X04It9BxFxK7731xpVzza21H55cankwM49lSinGSETCez8YQ8j7zkpTcAqUT4B4sFxw1xq1IRMS8PLJ60qIHkaLACDmeZZSHsYUhBYoeDvZSaEm8gOjty87vZ0kutrsHFi7bpvW2jkn+A7FWJgfz3rWoTqeP457tEut1/LOMP8C0Irmch8lVkwAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Pipe-filter Pattern&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/9348416388c009b8da3486bef7ae829a/fcda8/pipe-filter.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/9348416388c009b8da3486bef7ae829a/12f09/pipe-filter.png 148w,https://blog.hkucuk.com/static/9348416388c009b8da3486bef7ae829a/e4a3f/pipe-filter.png 295w,https://blog.hkucuk.com/static/9348416388c009b8da3486bef7ae829a/fcda8/pipe-filter.png 590w,https://blog.hkucuk.com/static/9348416388c009b8da3486bef7ae829a/8c557/pipe-filter.png 700w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;5-broker-pattern-tr-broker-kalıbı&quot;&gt;&lt;a href=&quot;#5-broker-pattern-tr-broker-kal%C4%B1b%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;5. Broker Pattern (tr: Broker kalıbı)&lt;/h2&gt;
&lt;p&gt;Bu model, ayrıştırılmış bileşenlere sahip dağıtılmış sistemleri yapılandırmak için kullanılır. Bu bileşenler, uzaktan hizmet çağrılarıyla birbirleriyle etkileşim kurabilir. Bir broker bileşeni, bileşenler arasındaki iletişimin koordinasyonundan sorumludur.&lt;/p&gt;
&lt;p&gt;Sunucular, yeteneklerini (hizmetleri ve özellikleri) bir brokera yayınlar. Müşteriler, aracıdan bir hizmet talep eder ve daha sonra aracı, istemciyi kayıt defterinden uygun bir hizmete yönlendirir.&lt;/p&gt;
&lt;h3 id=&quot;kullanım-4&quot;&gt;&lt;a href=&quot;#kullan%C4%B1m-4&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kullanım&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Apache_ActiveMQ?source=post_page---------------------------&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;“Apache ActiveMQ”&lt;/a&gt;, &lt;a href=&quot;https://en.wikipedia.org/wiki/Apache_Kafka?source=post_page---------------------------&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;“Apache Kafka”&lt;/a&gt;, &lt;a href=&quot;https://en.wikipedia.org/wiki/RabbitMQ?source=post_page---------------------------&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;“RabbitMQ”&lt;/a&gt; ve &lt;a href=&quot;https://en.wikipedia.org/wiki/JBoss_Messaging?source=post_page---------------------------&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;“JBoss Messaging”&lt;/a&gt; gibi aracı mesaj yazılımları&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/52bb100b4a33ac027cd3db5e98baa02d/8c557/broker.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 60.810810810810814%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAIAAADtbgqsAAAACXBIWXMAAAsTAAALEwEAmpwYAAABN0lEQVR42o1R7W7DIAzk/d+wVdsoPyotJQsQMJ+G7JJMU7Rm0iwL7LPP2EYsZ8JENQQ2hrWGUb1fan1PE+dk5xZm33XQxrB8K+W/5JrSkhIZE6xtKa3umZyTd4kxpj9o32RM5/1vJWKwtJqHQVqbgYTQ3nKqwHVatZQ2DEXKHFbxOaOFdkwAUVjLObcYW86Lc1FKtc0LZHk89P2usClMbYzv+ydRRBqiUGurABOKMPMyTfM4Khhw8TXGmHmef1wpJ6U2N9edJQ59lhjCsTFsK+Ohg4QYyuHPROYcS8SptIIBXWllre7IERFCidedhy1Na43oThEeu0z+Jm/d2AEKOZRaANpor69r/9kDgYKPc/LT5ePy1E+4lEkAcsm97Es6SQkPUW11Jw92GGkEApcrI2qCAYgSe8UvnKG9MJDwGXcAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Broker Pattern&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/52bb100b4a33ac027cd3db5e98baa02d/fcda8/broker.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/52bb100b4a33ac027cd3db5e98baa02d/12f09/broker.png 148w,https://blog.hkucuk.com/static/52bb100b4a33ac027cd3db5e98baa02d/e4a3f/broker.png 295w,https://blog.hkucuk.com/static/52bb100b4a33ac027cd3db5e98baa02d/fcda8/broker.png 590w,https://blog.hkucuk.com/static/52bb100b4a33ac027cd3db5e98baa02d/8c557/broker.png 700w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;6-peer-to-peer-pattern-tr-eşler-arası-model&quot;&gt;&lt;a href=&quot;#6-peer-to-peer-pattern-tr-e%C5%9Fler-aras%C4%B1-model&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;6. Peer-to-Peer Pattern (tr: Eşler arası model)&lt;/h2&gt;
&lt;p&gt;Bu modelde, tek tek bileşenler eşler olarak bilinir. Eşler, diğer eşlerden hizmet talep eden bir istemci olarak ve diğer eşlere hizmet sağlayan bir sunucu olarak işlev görebilir. Bir eş, bir istemci veya bir sunucu veya her ikisi olarak hareket edebilir ve rolünü zamanla dinamik olarak değiştirebilir.&lt;/p&gt;
&lt;h3 id=&quot;kullanım-5&quot;&gt;&lt;a href=&quot;#kullan%C4%B1m-5&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kullanım&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Gnutella?source=post_page---------------------------&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;“Gnutella”&lt;/a&gt; ve &lt;a href=&quot;https://en.wikipedia.org/wiki/Gnutella2?source=post_page---------------------------&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;“G2”&lt;/a&gt; gibi dosya paylaşım ağları&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/P2PTV?source=post_page---------------------------&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;“P2PTV”&lt;/a&gt; ve &lt;a href=&quot;https://en.wikipedia.org/wiki/Peer_Distributed_Transfer_Protocol?source=post_page---------------------------&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;“PDTP”&lt;/a&gt; gibi multimedya protokolleri.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/762c9516f5df5940cfcd4b1f600aa697/86c28/peer.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 260px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 95.27027027027027%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAATCAIAAAAf7rriAAAACXBIWXMAAAsTAAALEwEAmpwYAAACaUlEQVR42oVSaU/jMBDN//8h8AGpgJA4VEFBpUJUlSraLXS7LFWO5r5InMSJ7WSfcWm1iNVaT6PxjN/M89ha13WiLHmec0L2wHYHtf07K6oKRE1QSg2DJQkLQxZFEmHIswyHRFHAsjiWWZVSiOPaNFvONZxowhBluraVRgjY99EoHQzyyYQ8PTWuS9frj3y7OwZKy5gGzU0Q7KLK1pZVzOfvwyH4UIFu25QCyEEgybwopJIkKVercrmkul69vdWbjdRmWbVtN55XOw7i1DSpZcHhaYps2zQfZDBfXrLxGFKjXi97eChms/T2Njw+zobDYrGIzs6S83MynUanp+ndHYqCIslyYLoua2Nsvk9Q3nUb35c9YV0XKTSvHMdaLOQWQH/DwHQ0eRfOcQE1Ks+2K0I6IWTkE9iWhNz0+9uTAOfyqbrPpYbp+z6kdN8t1/O2A/9cX8keFNLqW7Jt2/8hB0Hwz86O+w255nXZ4LnLpm0u+hde5NWiLmr8HomSyRTldG2u4VSsQgQUSaaMGokRFqGf+7Arc2UndkaznOYAnLiI4zIOSIA4rIKZmLzlGjqEJNzJFq2c+aPxeL++nzvzZ+/ZzV091ncH8MVgQWGCaVCCSvvch30NX8fG+OrnFUqkZQq+Sqn/KUdDAknGraIygjwQACdzzNT0cg8RWHWXqIgQB7DdvG+QAqXhjZSN2lA4Wo8ul5eH08PB78HEmvRX/YPpwfWv65k96817Jz9OoOLo6QhxPdGTMpFkDAytIMxIDZ/4cNRI0AedsVUWQH/loLmVWlxw+VRQzzjD9KQjGEoq5wv2cS4tiH8ARK0w3j0imN8AAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Peer-to-Peer Pattern&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/762c9516f5df5940cfcd4b1f600aa697/86c28/peer.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/762c9516f5df5940cfcd4b1f600aa697/12f09/peer.png 148w,https://blog.hkucuk.com/static/762c9516f5df5940cfcd4b1f600aa697/86c28/peer.png 260w&quot;
        sizes=&quot;(max-width: 260px) 100vw, 260px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;7-event-bus-pattern-tr-olay-veriyolu-düzeni&quot;&gt;&lt;a href=&quot;#7-event-bus-pattern-tr-olay-veriyolu-d%C3%BCzeni&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;7. Event-Bus Pattern (tr: Olay veriyolu düzeni)&lt;/h2&gt;
&lt;p&gt;Bu model öncelikle olaylarla ilgilenir ve 4 ana bileşeni vardır; olay kaynağı, olay dinleyicisi, kanal ve olay veriyolu. Kaynaklar, bir olay veri yolundaki belirli kanallara mesajlar yayınlar. Dinleyiciler belirli kanallara abone olurlar. Dinleyiciler, daha önce abone oldukları bir kanala yayınlanan mesajlardan haberdar edilirler.&lt;/p&gt;
&lt;h3 id=&quot;kullanım-6&quot;&gt;&lt;a href=&quot;#kullan%C4%B1m-6&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kullanım&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Android development&lt;/li&gt;
&lt;li&gt;Bildirim hizmetleri&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/56efaa6cd50c5ec0ba05e9b36a403ffd/084e2/event.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 64.1891891891892%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAIAAAAmMtkJAAAACXBIWXMAAAsTAAALEwEAmpwYAAABiklEQVR42nVSbW/zIAzM//9726R9mKolm5ommQBDAGNe+hzpHmmduhNKnMNnHybD9UArpYbQRGpKlRlxZ2ut3recQTbw3l/vMXyLRbIx8XTi9/esVNn3VivEWev49sbjmM7n4ty1tUfinCGWdeVlKUTIa8AhTssCUratWPu483eJ1vzN248O8B5up7hv28VoKTdkSSmRoc785xAwMxHJD6QDSBustcxR64DTGeOnaXaOlfLW4rOTWu+fnxeinkMUUCsf2Pd9gE+4DQHe6ukk0yTLkku5WlswY+/rOHZynjNzT4PbcRyNMWh+E1drMa98PqePj7Bt4hwKVzzX1c9zJzEyIpAFYpwCU4gxDnjBAEogYPZklAgj1lpv22YtxeiJFHcu+ANwHg/cTRt/itYGNVEbrtox3pyLNqb1WbfHVyVFHDuK9GW/lFPa635JrZpoiGmzG3ZttH+KMe+ny9PL5WVxy572Ugs6r259XV+fL8+TnlRQj8VIhcCLjxKxgoTuszWQiMFgC+uX+B+x1PHJq2cA5QAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Event-Bus Pattern&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/56efaa6cd50c5ec0ba05e9b36a403ffd/fcda8/event.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/56efaa6cd50c5ec0ba05e9b36a403ffd/12f09/event.png 148w,https://blog.hkucuk.com/static/56efaa6cd50c5ec0ba05e9b36a403ffd/e4a3f/event.png 295w,https://blog.hkucuk.com/static/56efaa6cd50c5ec0ba05e9b36a403ffd/fcda8/event.png 590w,https://blog.hkucuk.com/static/56efaa6cd50c5ec0ba05e9b36a403ffd/084e2/event.png 632w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;8-model-view-controller-pattern-mvc-&quot;&gt;&lt;a href=&quot;#8-model-view-controller-pattern-mvc-&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;8. Model-View-Controller Pattern (MVC =))&lt;/h2&gt;
&lt;p&gt;MVC kalıbı olarak da bilinen bu kalıp, etkileşimli bir uygulamayı şu şekilde 3 parçaya böler:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;b&gt;model&lt;/b&gt;: temel işlevleri ve verileri içerir&lt;/li&gt;
&lt;li&gt;&lt;b&gt;view&lt;/b&gt;: bilgileri kullanıcıya gösterir (birden fazla görünüm tanımlanabilir)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;controller&lt;/b&gt;: kullanıcıdan gelen girdiyi yönetir&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Bu, bilginin dahili temsillerini, bilginin kullanıcıya sunulma ve kullanıcıdan alınma yollarından ayırmak için yapılır. Bileşenleri ayırır ve verimli bir şekilde kod yeniden kullanımına izin verir.&lt;/p&gt;
&lt;h3 id=&quot;kullanım-7&quot;&gt;&lt;a href=&quot;#kullan%C4%B1m-7&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kullanım&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Başlıca programlama dillerinde World Wide Web uygulamaları için mimariler&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://laravel.com/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;“Laravel”&lt;/a&gt; ve &lt;a href=&quot;https://github.com/gin-gonic/gin&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;“Gin-Gonic”&lt;/a&gt; gibi çerçeveler&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/492b74cde4f221270363868953da4743/8c557/mvc.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 43.24324324324324%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAAAsTAAALEwEAmpwYAAABIElEQVR42nVR2Y7CMAzs/38bzzxUHOIohTRtg0NzOQ7MwgpRtOtElhWPPeO4MsaM49j3/ZWopCTeS0oIsvfwZC0AWmtrbcrJ40hi4cAh5lgRUdu2x+NRdR1dLiXn2DRhv0dlNAaP5/P51J5Qr4023tRdvbws1U255Kr7h0kIJcY8TW4cEUiMpRQRKfeCbEhhoKGn3gbr2EFIhTQSL/+2CNqUEGw2m8Vi0TQNYmb2znPiN2zGjBZASM6gm2437/3vRErlDEFTgLSXlqfNip1zdV0fDofdbtd1HeiBezbFBGEYhu12iy9YrVbo+808V4FeGUuIkeGvV/eS9jlg9VfZTxory/mudVivPVHE9zGXL+S/zFi2c0IkSvE0Ce5zgpk9ADTUCjAz5TPNAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Model-View-Controller Pattern&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/492b74cde4f221270363868953da4743/fcda8/mvc.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/492b74cde4f221270363868953da4743/12f09/mvc.png 148w,https://blog.hkucuk.com/static/492b74cde4f221270363868953da4743/e4a3f/mvc.png 295w,https://blog.hkucuk.com/static/492b74cde4f221270363868953da4743/fcda8/mvc.png 590w,https://blog.hkucuk.com/static/492b74cde4f221270363868953da4743/8c557/mvc.png 700w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;9-blackboard-pattern-tr-karatahta-deseni&quot;&gt;&lt;a href=&quot;#9-blackboard-pattern-tr-karatahta-deseni&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;9. Blackboard Pattern (tr: Karatahta deseni)&lt;/h2&gt;
&lt;p&gt;Bu model, deterministik çözüm stratejilerinin bilinmediği problemler için yararlıdır. Yazı tahtası deseni 3 ana bileşenden oluşur.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;b&gt;blackboard&lt;/b&gt;: çözüm uzayındaki nesneleri içeren yapılandırılmış bir küresel bellek&lt;/li&gt;
&lt;li&gt;&lt;b&gt;knowledge source&lt;/b&gt;: kendi temsilcileriyle özel modüller&lt;/li&gt;
&lt;li&gt;&lt;b&gt;control component &lt;/b&gt;: modülleri seçer, yapılandırır ve yürütür&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Tüm bileşenlerin tahtaya erişimi vardır. Bileşenler, tahtaya eklenen yeni veri nesneleri oluşturabilir. Bileşenler, tahtada belirli türde verileri arar ve bunları mevcut bilgi kaynağıyla örüntü eşleştirerek bulabilir.&lt;/p&gt;
&lt;h3 id=&quot;kullanım-8&quot;&gt;&lt;a href=&quot;#kullan%C4%B1m-8&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kullanım&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Konuşma tanıma&lt;/li&gt;
&lt;li&gt;Araç tanımlama ve izleme&lt;/li&gt;
&lt;li&gt;Protein yapısı tanımlama&lt;/li&gt;
&lt;li&gt;Sonar yorumlama sinyalleri&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/fc4c1afba74eba7ef729b15ceb59e4e7/b6a9b/blackboard.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 530px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 56.08108108108109%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABeElEQVR42oVRyXKrMBDk//8qt1ycVGzjSxaM/VijDUkjtPPGJGQ5pWuK0mzd1UOx/IWQAgFyZudX+vpMnl/oS8WqXvba6eKP1byAhUEN5VA+No/39f3u3+7QHZBLGPG9nFJSK/QGMKCkGunYDu2lulzOl77tMcZ+TDkpp76Xvfeg9U3sB1DZRSdnCQ6MN0wyDOMMvj+Xb0PLogG4EF/pT7jgrbdofiTj8D4gnQ02plhEKeM0xbZl+/37fu/rGtNAaU7pl/eVcV7xVSw8Y5ax6XTSu50tS3M6ZWMCITnG7RaLMWmeo3OZC8OYxsc8J/wWmNVVde06oZSLcQ4BubG4bMo4R0g0Zqlrd3enHh6wGSmNhITCcN5cr03TKCmdcxbh/a3v/Wo9o0LX8a4bHXLHHELGjrUZ7RaG0uPT0/F4/DDz4Q0oHfoeAJSSnOu3t2tZHtoWf1QfVzspZaXwYABeiKAURtwiTNOy3RzVUARrQjjOnZS3QawApP+HHnaAnkfAPQAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Blackboard Pattern&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/fc4c1afba74eba7ef729b15ceb59e4e7/b6a9b/blackboard.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/fc4c1afba74eba7ef729b15ceb59e4e7/12f09/blackboard.png 148w,https://blog.hkucuk.com/static/fc4c1afba74eba7ef729b15ceb59e4e7/e4a3f/blackboard.png 295w,https://blog.hkucuk.com/static/fc4c1afba74eba7ef729b15ceb59e4e7/b6a9b/blackboard.png 530w&quot;
        sizes=&quot;(max-width: 530px) 100vw, 530px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;10-interpreter-pattern-tr-yorumlayıcı-deseni&quot;&gt;&lt;a href=&quot;#10-interpreter-pattern-tr-yorumlay%C4%B1c%C4%B1-deseni&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;10. Interpreter Pattern (tr: Yorumlayıcı deseni)&lt;/h2&gt;
&lt;p&gt;Bu model, özel bir dilde yazılmış programları yorumlayan bir bileşen tasarlamak için kullanılır. Esas olarak, belirli bir dilde yazılmış cümleler veya ifadeler olarak bilinen program satırlarının nasıl değerlendirileceğini belirtir. Temel fikir, dilin her sembolü için bir sınıfa sahip olmaktır.&lt;/p&gt;
&lt;h3 id=&quot;kullanım-9&quot;&gt;&lt;a href=&quot;#kullan%C4%B1m-9&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kullanım&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;SQL gibi veritabanı sorgu dilleri&lt;/li&gt;
&lt;li&gt;İletişim protokollerini tanımlamak için kullanılan diller&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/3bc063debec6657191ef04d87ef82859/1f083/interpreter.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 70.94594594594594%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAIAAACgpqunAAAACXBIWXMAAAsTAAALEwEAmpwYAAABbElEQVR42o2S2W6DMBBF8/9/RzaRvCBRwg6JDbbHa3rBfSlJqo5GZjCcWa69e75YCMGuprVmjM3zzDmfpkkptflz9wobY/BrJPu+L4oiTdOyLIloCyOflDKuKOKcQwwyfkZMqyFA0jcwmPP5jCJoL/aJzp//sAUWQgCIK0ZFC7GyE8Jx/uNoCkl/F38zM0i9jqerShwO034/H49zklCWuWmKkv4lGFpAR12e3/K8vt2qorh3XSBiTaONgQDe+/cwBgavV7nRBhhCQWM8xOPcropG5XefxAAfRYYEwzDEGCtEQdkoykcYR22NddYZPKxFLucsMkBX70O8MFtYWTWgkhjKe3lX91EO0gjsPx5+HMM4uqrSXWcgpRBhCzPF0ipNvpLFi+TSXpAI+1kmk4SdTtCeQ/vrlZrGvMCSlVXZdi0MozrvJlqOp++nuq7btqvrBjcdOzj4LUyWtNPRyZHQQpllPCkh0jM6UcAr/BtbECyU2b6tmAAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Interpreter Pattern&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/3bc063debec6657191ef04d87ef82859/fcda8/interpreter.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/3bc063debec6657191ef04d87ef82859/12f09/interpreter.png 148w,https://blog.hkucuk.com/static/3bc063debec6657191ef04d87ef82859/e4a3f/interpreter.png 295w,https://blog.hkucuk.com/static/3bc063debec6657191ef04d87ef82859/fcda8/interpreter.png 590w,https://blog.hkucuk.com/static/3bc063debec6657191ef04d87ef82859/1f083/interpreter.png 660w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;hr&gt;
&lt;h1 id=&quot;mimari-desenlerin-karşılaştırılması&quot;&gt;&lt;a href=&quot;#mimari-desenlerin-kar%C5%9F%C4%B1la%C5%9Ft%C4%B1r%C4%B1lmas%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Mimari Desenlerin Karşılaştırılması&lt;/h1&gt;
&lt;p&gt;Aşağıda verilen tablo, her bir mimari modelin artılarını ve eksilerini özetlemektedir.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/1964b65c30416634393c5dfe80cbb9ac/00d43/table.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 56.08108108108109%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAACWUlEQVR42h2RW2vUQBTH84kEsdUigj76FXzwC6h0txXaYtUXn8Q+SK1QkCqtVLyBW2hX2NZ2s+lmc5skk0ySyT2byybZrXurfemTo/Djz5xhDufwG+oLXVQ38fymvfbV2aed3bq5c2B8PDB3f+Lvx0GtldXbSZ3xvx25P+hkj+ntMdk+W9SYQsRjamnLmZ3nrjzgH76WecGi20aLNRjWJEmfIgOXKsqYjsXyNis4HdElKSmRYQ/SfEo93/FuL4nXq8LKO8MPSoRz2xsQsFtabumGQ1kLm4wqKZ6sRUANoJEYdg7NNMlG1PKWc6PKz1T4yoYmyBHNhZySiVohwJxXewD1m22nVucbTXRIm42mccK6Lc6jO4HXHVMr7925Kn9tXljYABq0gGJLsiUCU1ZsPyi68W8/LLGT2E6K/xOEZRQPknQ0mV5STz64ZPLcglh9AySAOeDxwOUkR5B9ACOC6ZD9+wTsDcjZDUdBPHXDcTG4oJ5ue7ceCzMV0iwLgt5iUZtDkuJaThEl0zS/MHDG8hYv2ZyIIYqJC9vrm3aRl+fU6rZ3c1GYrQiLb1WoeaISEDdEjKJ1Vb0bxlPyTlJ8GYbEnKJHCPdIP3GW5RPqxSf/7iq4syxX1sEpC4+aynELMh0Tmj1oZKbTJ6vKWqzoiYpSkgRSAhh3kyH1bOff5KuPyD8Dpm0c0ujkFAtqopp95AxNb8xKQeME/mqhY8akWSIl4uSIFUMvGlLrte79V/q9l2jts2XjQDd8HXlBWKTZME7Piv407Y2CqCA33eSsV0wIOcl8cv7n8i8FggW54Pb96QAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Mimari Desenlerin Karşılaştırılması&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/1964b65c30416634393c5dfe80cbb9ac/fcda8/table.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/1964b65c30416634393c5dfe80cbb9ac/12f09/table.png 148w,https://blog.hkucuk.com/static/1964b65c30416634393c5dfe80cbb9ac/e4a3f/table.png 295w,https://blog.hkucuk.com/static/1964b65c30416634393c5dfe80cbb9ac/fcda8/table.png 590w,https://blog.hkucuk.com/static/1964b65c30416634393c5dfe80cbb9ac/efc66/table.png 885w,https://blog.hkucuk.com/static/1964b65c30416634393c5dfe80cbb9ac/00d43/table.png 1000w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Architectural_pattern#:~:text=An%20architectural%20pattern%20is%20a,minimization%20of%20a%20business%20risk&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/Architectural_pattern#:~:text=An%20architectural%20pattern%20is%20a,minimization%20of%20a%20business%20risk&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.oreilly.com/library/view/software-architecture-patterns/9781491971437/ch01.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.oreilly.com/library/view/software-architecture-patterns/9781491971437/ch01.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://openclassrooms.com/en/courses/6397806-design-your-software-architecture-using-industry-standard-patterns/6896156-client-server-architecture&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://openclassrooms.com/en/courses/6397806-design-your-software-architecture-using-industry-standard-patterns/6896156-client-server-architecture&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.cs.sjsu.edu/faculty/pearce/modules/patterns/distArch/master.htm&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;http://www.cs.sjsu.edu/faculty/pearce/modules/patterns/distArch/master.htm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.enterpriseintegrationpatterns.com/patterns/messaging/PipesAndFilters.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.enterpriseintegrationpatterns.com/patterns/messaging/PipesAndFilters.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Broker_pattern&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/Broker_pattern&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Peer-to-peer&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/Peer-to-peer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.techyourchance.com/event-bus/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.techyourchance.com/event-bus/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Blackboard_(design_pattern&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/Blackboard_(design_pattern&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Interpreter_pattern&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/Interpreter_pattern&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2020/mimari-desenler-ile-tasarim-desenleri-arasindaki-fark-nedir/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[İyi Yazılımcılar Hakkında 7 Çıkarım]]></title><description><![CDATA[Programlama bir sanattır. 10 yıldan uzun bir süredir sektörün içerisindeyim. Bu yıllar içerisinde başlangıç cümlemi haklı çıkartan çok fazla iyi yazılımcıyla birlikte çalıştım ve onlardan bir çok şey öğrendim. İyi yazılımcılar, programlamayı çok kolay hale getirirler.]]></description><link>https://blog.hkucuk.com/2020/iyi-yazilimcilar-hakkinda-7-cikarim/</link><guid isPermaLink="false">https://blog.hkucuk.com/2020/iyi-yazilimcilar-hakkinda-7-cikarim/</guid><pubDate>Thu, 08 Oct 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/c05df173388eb747648efd5178322845/857b3/programmer.jpg&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 66.89189189189189%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAANABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAwACBP/EABYBAQEBAAAAAAAAAAAAAAAAAAMBAv/aAAwDAQACEAMQAAAB6y0WaccSf//EABsQAQACAgMAAAAAAAAAAAAAAAEAAxEhAhMj/9oACAEBAAEFAu30ckdtlQ8bMxd//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPwE//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPwE//8QAGxAAAgIDAQAAAAAAAAAAAAAAAREAEAISMTL/2gAIAQEABj8COJWqnrlNwM1//8QAGxAAAwEAAwEAAAAAAAAAAAAAAAERIUFRYbH/2gAIAQEAAT8hbNSnJ6Y7T+B9C7tZBbSq6hqw/9oADAMBAAIAAwAAABDH/wD/xAAWEQEBAQAAAAAAAAAAAAAAAAAREDH/2gAIAQMBAT8QHJ//xAAWEQEBAQAAAAAAAAAAAAAAAAAREDH/2gAIAQIBAT8QTZ//xAAcEAEBAAIDAQEAAAAAAAAAAAABEQAhMUFRgfD/2gAIAQEAAT8QFwRGxr3qYniSpF5fplN8u8MEbk1QwXveAOjn7iw6Mz//2Q==&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Programmer&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/c05df173388eb747648efd5178322845/1c72d/programmer.jpg&quot;
        srcset=&quot;https://blog.hkucuk.com/static/c05df173388eb747648efd5178322845/a80bd/programmer.jpg 148w,https://blog.hkucuk.com/static/c05df173388eb747648efd5178322845/1c91a/programmer.jpg 295w,https://blog.hkucuk.com/static/c05df173388eb747648efd5178322845/1c72d/programmer.jpg 590w,https://blog.hkucuk.com/static/c05df173388eb747648efd5178322845/a8a14/programmer.jpg 885w,https://blog.hkucuk.com/static/c05df173388eb747648efd5178322845/fbd2c/programmer.jpg 1180w,https://blog.hkucuk.com/static/c05df173388eb747648efd5178322845/857b3/programmer.jpg 6000w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;p&gt;Programlama bir sanattır. 10 yıldan uzun bir süredir sektörün içerisindeyim. Bu yıllar içerisinde başlangıç cümlemi haklı çıkartan çok fazla iyi yazılımcıyla birlikte çalıştım ve onlardan bir çok şey öğrendim.&lt;/p&gt;
&lt;p&gt;İyi yazılımcılar, programlamayı çok kolay hale getirirler. Bir teknik mimarın söylediği şu sözü hep hatırlıyorum:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Yazılım geliştiricilerin rolü işleri kolaylaştırmaktır. Karmaşık sorunlara zahmetsiz çözümler sunmaları gerekir.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Yıllar boyunca, bahsettiğim bu iyi yazılımcılardan kariyer gelişimime yardımcı olan birkaç çıkarım yaptım. Aşağıda dilim döndüğünce bunları açıklamaya çalışacağım.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;1-çıktıya-değil-sürece-odaklan&quot;&gt;&lt;a href=&quot;#1-%C3%A7%C4%B1kt%C4%B1ya-de%C4%9Fil-s%C3%BCrece-odaklan&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;1. Çıktıya Değil, Sürece Odaklan&lt;/h2&gt;
&lt;p&gt;Genç yazılımcıların çoğu yazılımın çıktısına odaklanıyor. Fakat çıktının oluşturulması, sizin süreci anladığınız anlamına gelmemektedir.&lt;/p&gt;
&lt;p&gt;Yazılım dünyasında her gün yeni zorluklarla karşılaşacaksınız. Bu zorlukları aşabilmenizde önceki deneyimleriniz çok önemli olacaktır. Bu yüzden süreci anlamanız çok önemlidir.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Çıktının ne olması gerektiğinden ziyade sorunun nasıl çözüleceğine odaklanmaya başlayın.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Bu size, uzun vadede daha iyi bir programcı olmanız için rehberlik edecektir.&lt;/p&gt;
&lt;h2 id=&quot;2-başkaları-tarafından-beslenmek-sizi-bir-yere-götürmez&quot;&gt;&lt;a href=&quot;#2-ba%C5%9Fkalar%C4%B1-taraf%C4%B1ndan-beslenmek-sizi-bir-yere-g%C3%B6t%C3%BCrmez&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;2. Başkaları Tarafından Beslenmek Sizi Bir Yere Götürmez&lt;/h2&gt;
&lt;p&gt;Bir yazılımcı olarak kariyerime başladığım zamanlarda problemlerle karşılaştığım durumlardaki davranışlarımı hala hatırlıyorum. Kodun bir yerinde sıkışıp kaldığımda zaman zaman tecrübeli yazılımcılara sorular sorardım ama en çok yaptığım şey sorunlarla mücadele etmekti. Bir ekiple çalışıyorsanız, ekibinizdeki kişiler her zaman yardım etmek için orada olacaklardır ama sürekli yardım almak, her sorunu başkalarının yardımıyla çözmek öğretici olmaz. Sorunun içine dalmaya ve bir süre mücadele etmeye çalışmak her zaman öğretici olacaktır.&lt;/p&gt;
&lt;p&gt;Bu çalışma disiplini, bir yazılımcı olarak kariyerimde ilerlememe çok yardımcı oldu. Kodda sıkışıp kaldığınızda kendinizi küçümsememelisiniz. Sorunla ilgili birilerinden yardım istemeden önce %200’ünüzü vermeye çalışmanız, yazılımcı olarak gelişmenize çok yardımcı olacaktır.&lt;/p&gt;
&lt;h2 id=&quot;3-önce-kendi-kodunuzu-anlayın&quot;&gt;&lt;a href=&quot;#3-%C3%B6nce-kendi-kodunuzu-anlay%C4%B1n&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;3. Önce Kendi Kodunuzu Anlayın&lt;/h2&gt;
&lt;p&gt;Daha önce de değindiğim gibi, yazılımcıların karmaşık sorunlara basit çözümler sunması gerekir. Başkalarını etkilemek için meşakkatli kod yazmaları gerekmez.&lt;/p&gt;
&lt;p&gt;İnsanlar yazdıkları kodu birkaç gün veya ay sonra gördüklerinde genellikle neyi kodladıklarını unuturlar. Kendi yazdıkları bir kod parçasının ne yaptığını hatırlamakta zorlandıklarını düşünün. Aynı kodu başka biri anlamaya çalışırsa neler olur? :)&lt;/p&gt;
&lt;p&gt;Kodun ne iş yaptığını anlatan yorumlarla birlikte basit ama etkili kodlar yazın. Yorumlar, bir kod parçasının uygulamada ne yaptığını hatırlamanıza yardımcı olacaktır. Gerektiğinde kısa ve faydalı yorumlar yazmaya çalışın.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;İyi yazılımcılar, diğer yazılımcılar tarafından okunabilen basit ama etkili kodlar yazarlar.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;4-birden-fazla-çözüm-bulun&quot;&gt;&lt;a href=&quot;#4-birden-fazla-%C3%A7%C3%B6z%C3%BCm-bulun&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;4. Birden Fazla Çözüm Bulun&lt;/h2&gt;
&lt;p&gt;İyi yazılımcılar, bir soruna birden fazla çözüm bulana kadar araştırma yapmayı, düşünmeyi bırakmazlar. Her zaman bir sorunu çözmek için en az iki yol bulurlar.&lt;/p&gt;
&lt;p&gt;Bu iyi bir süreçtir çünkü size &lt;a href=&quot;https://www.hackerearth.com/practice/basic-programming/complexity-analysis/time-and-space-complexity/tutorial/#:~:text=Time%20complexity%20of%20an%20algorithm,the%20length%20of%20the%20input.&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;“uzay-zaman karmaşıklığı”&lt;/a&gt;na ve diğer faktörlere dayalı olarak birden çok çözüm arasından seçim yapma imkanı sunar.&lt;/p&gt;
&lt;p&gt;Bu yaklaşım, sorunu çözmek için farklı bakış açılarına sahip daha fazla çözüm bulmaya çalışırken mantıksal düşüncenizi geliştirir.&lt;/p&gt;
&lt;p&gt;Birden fazla çözüm bulamasanız bile &lt;a href=&quot;https://stackoverflow.com/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;“Stack Overflow”&lt;/a&gt;, &lt;a href=&quot;https://www.codeproject.com/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;“CodeProject”&lt;/a&gt;, &lt;a href=&quot;https://github.com/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;“Github”&lt;/a&gt; gibi sitelerde alternatif çözümler için araştırma yapmalısınız.&lt;/p&gt;
&lt;h2 id=&quot;5-kod-okuması-konusunda-bir-kitapserver-gibi-davranın&quot;&gt;&lt;a href=&quot;#5-kod-okumas%C4%B1-konusunda-bir-kitapserver-gibi-davran%C4%B1n&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;5. Kod Okuması Konusunda Bir Kitapserver gibi Davranın&lt;/h2&gt;
&lt;p&gt;“Yazmadan önce okuyun” yazılım geliştirme için doğru bir yaklaşımdır. Başkalarının yazdıkları kodları okumak size diğer her şeyden daha fazla fikir verir, çok şey öğretir.&lt;/p&gt;
&lt;p&gt;İyi programcılar, kod incelemelerine makul süreler harcarlar. Bu birkaç şeyi toplamalarına yardımcı olur:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Kod hakkında daha fazla bilgi&lt;/li&gt;
&lt;li&gt;Diğer yazılımcıların kodlama becerileri&lt;/li&gt;
&lt;li&gt;Bir sorunu çözmek için farklı yaklaşımlar (çoklu çözümler)&lt;/li&gt;
&lt;li&gt;Mantıksal düşünceyi geliştirme&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Kod okuma, yazılımcılar için bir alışkanlık olmalıdır. Bu onların kariyerlerinde büyümelerine yardımcı olur.&lt;/p&gt;
&lt;h2 id=&quot;6-daha-sonra-geri-gel-ve-i̇yileştir&quot;&gt;&lt;a href=&quot;#6-daha-sonra-geri-gel-ve-i%CC%87yile%C5%9Ftir&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;6. Daha Sonra Geri Gel ve İyileştir&lt;/h2&gt;
&lt;p&gt;Yazılım geliştiricilik kariyerimin başlarında bu yöntem ile tanıştım. Tecrübeli bir yazılımcı arkadaşımın, çoktan bitmiş bir task ile ilgili kod değişikliği yaptığını gördüm. &lt;/p&gt;
&lt;p&gt;Ona her şey yolunda giderken mantığı değiştirmenisinin nedenini sormuştum. İş yükü az olduğunda, halihazırda çözülmüş sorunlara daha iyi yaklaşımlar bulmaya çalışıyordu. Geçerli çözümden daha iyi bir çözüm bulursa, değişiklik isteği oluşturup güncelliyordu.&lt;/p&gt;
&lt;p&gt;Bu uygulama, yazılımcı olarak gelişmesine çok yardımcı oldu. Ayrıca kodun optimize edilmesini de sağladı.&lt;/p&gt;
&lt;h2 id=&quot;7-yazılımcı-dünyası-ve-yazılımcı-sürekli-güncellenir&quot;&gt;&lt;a href=&quot;#7-yaz%C4%B1l%C4%B1mc%C4%B1-d%C3%BCnyas%C4%B1-ve-yaz%C4%B1l%C4%B1mc%C4%B1-s%C3%BCrekli-g%C3%BCncellenir&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;7. Yazılımcı Dünyası ve Yazılımcı Sürekli Güncellenir&lt;/h2&gt;
&lt;p&gt;İyi bir yazılımcının bence en önemli tanımlayıcı niteliği, sürekli bilgi arayışıdır. Yazılım, sürekli güncel kalmanız gereken zorlu bir kariyer yolculuğudur.&lt;/p&gt;
&lt;p&gt;Yazılımcılar, kodları kadar iyidir. Geliştirdikleri yazılımlar gibi sürekli olarak güncel kalmaları gerekir.&lt;/p&gt;
&lt;p&gt;İyi yazılımcılar, kendilerini güncel tutmak için teknik bloglar, YouTube kanalları veya kodlama forumları gibi birçok kaynağı kullanırlar.&lt;/p&gt;
&lt;h2 id=&quot;özet&quot;&gt;&lt;a href=&quot;#%C3%B6zet&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt; Özet&lt;/h2&gt;
&lt;p&gt;Özetle, iyi yazılımcılar için temel çıkarımlar şunlardır:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Kodlama yapmak için acele etmeyin, önce süreci anlayın.&lt;/li&gt;
&lt;li&gt;Başkalarından yardım istemeden önce bir süre mücadele edin.&lt;/li&gt;
&lt;li&gt;Herkesin anlayabileceği basit ve etkili kodlar yazın.&lt;/li&gt;
&lt;li&gt;Bir soruna birden fazla çözüm bulmaya çalışın.&lt;/li&gt;
&lt;li&gt;Kod okumayı alışkanlık haline getirin.&lt;/li&gt;
&lt;li&gt;Mümkünse önceden uyguladığınız çözümünüzü geliştirmeye çalışın.&lt;/li&gt;
&lt;li&gt;Bir yazılımcı olarak teknolojik gelişmeler konusunda güncel kalın.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Bunlar, kariyerim boyunca gelişmeme yardımcı oldu. Umarım diğer yazılımcı arkadaşlarıma da yardımcı olurlar.&lt;/p&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2020/iyi-yazilimcilar-hakkinda-7-cikarim/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Morse Alfabesi: İletişimin İlk Dijital Dili]]></title><description><![CDATA[Morse alfabesi, insanların iletişimini kökten değiştiren ve dünya çapında bir devrim yaratan bir sistemdir. Bu alfabenin yaratılması, uzun mesafelerde hızlı ve güvenilir iletişim ihtiyacının doğmasıyla tetiklendi.]]></description><link>https://blog.hkucuk.com/2020/morse-alfabesi/</link><guid isPermaLink="false">https://blog.hkucuk.com/2020/morse-alfabesi/</guid><pubDate>Thu, 03 Sep 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Morse_code&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Morse alfabesi&lt;/a&gt;, insanların iletişimini kökten değiştiren ve dünya çapında bir devrim yaratan bir sistemdir. Bu alfabenin yaratılması, uzun mesafelerde hızlı ve güvenilir iletişim ihtiyacının doğmasıyla tetiklendi. Özellikle 19. yüzyılın başlarında, Amerika Birleşik Devletleri’nde demiryolları inşası ve denizcilik endüstrisinin büyümesi, haberleşme yöntemlerine olan talebi artırdı. Samuel Morse ve Alfred Vail, bu zorluğa cevap vermek için Morse alfabesini geliştirdi.&lt;/p&gt;
&lt;p&gt;Morse alfabesi, kısa ve uzun sinyallerin kombinasyonlarıyla harf ve rakamları ifade eden basit bir sistemdir. Bu sinyaller, ilk başta telgraf telinden geçirilerek iletilirdi. Bu sayede, Amerika Birleşik Devletleri’nin batı kıyısından doğu kıyısına ve hatta okyanuslar arası hızlı iletişim mümkün hale geldi. Bu, ticaretin hızlanması, acil mesajların daha hızlı iletilebilmesi ve kaza sonucu yaralanan gemi mürettebatının acil yardım taleplerinin iletilmesi gibi bir dizi hayati önem taşıyan uygulamayı mümkün kıldı.&lt;/p&gt;
&lt;p&gt;Morse alfabesi, telsiz iletişimin temelini oluşturdu ve daha sonra radyo iletişimi gibi modern teknolojilerin gelişimine ilham verdi. Aynı zamanda uluslararası bir dil olarak benimsendi ve birçok farklı kültür ve dil arasında iletişimi kolaylaştırdı. Günümüzde bile, denizcilik, havacılık ve amatör telsizciler gibi bazı alanlarda Morse kodu hala kullanılmaktadır.&lt;/p&gt;
&lt;p&gt;Morse alfabesi, tarihin derinliklerinde bir iz bırakan ve iletişimin geleceğini şekillendiren önemli bir adımdır. Bu alfabenin basitlik ve etkililiği, iletişimin gücünü herkesin anlayabileceği bir düzeye getirdi ve modern iletişim teknolojilerinin temelini attı.&lt;/p&gt;
&lt;h3 id=&quot;morse-alfabesi-nedir&quot;&gt;&lt;a href=&quot;#morse-alfabesi-nedir&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Morse Alfabesi Nedir?&lt;/h3&gt;
&lt;p&gt;Morse alfabesi, metin tabanlı iletişimi nokta ve çizgi gibi kısa ve uzun sinyallerle temsil eden bir kodlama sistemidir. Her harf ve rakam, benzersiz bir kombinasyonla ifade edilir. Morse kodunda kullanılan iki temel sembol şunlardır:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Nokta (.):&lt;/strong&gt; Kısa bir sinyali temsil eder.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Çizgi (-):&lt;/strong&gt; Uzun bir sinyali temsil eder.
Bu temel sembollerin kullanımıyla, farklı karakterler ve sayılar kodlanabilir. Örneğin, “A” harfi “.-” şeklinde, “S” harfi ”…”, ve “5” rakamı ”…” şeklinde kodlanır.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;morse-alfabesinin-tarihi&quot;&gt;&lt;a href=&quot;#morse-alfabesinin-tarihi&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Morse Alfabesinin Tarihi&lt;/h3&gt;
&lt;p&gt;Morse alfabesi, Amerikalı mucit Samuel Morse ve Alfred Vail tarafından 1830’ların sonlarında geliştirildi. Bu yeni iletişim yöntemi, uzun mesafelerde hızlı ve güvenilir iletişim sağladı ve özellikle telgraf sistemi için büyük bir adım oldu.&lt;/p&gt;
&lt;p&gt;İlk olarak denizcilikte ve demiryolu iletişiminde kullanılan Morse alfabesi, daha sonra askeri iletişimde ve acil durum haberleşmesinde de yaygın olarak kullanıldı. Özellikle denizcilikte, gemiler arası ve gemi-kara iletişimi için hayati bir rol oynadı.&lt;/p&gt;
&lt;h3 id=&quot;morse-alfabesinin-kullanım-alanları&quot;&gt;&lt;a href=&quot;#morse-alfabesinin-kullan%C4%B1m-alanlar%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Morse Alfabesinin Kullanım Alanları&lt;/h3&gt;
&lt;p&gt;Morse alfabesi, tarihsel olarak birçok farklı alanda kullanıldı ve hala bazı özel uygulamalarda kullanılmaktadır. İşte bazı kullanım alanları:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Denizcilik ve Havacılık:&lt;/strong&gt; Morse kodu, deniz fenerleri, gemiler ve uçaklar arası iletişimde kullanılır. Bu, acil durum sinyallerinin iletilmesinde kritik bir öneme sahiptir.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Askeri Kullanım:&lt;/strong&gt; Morse alfabesi, askeri iletişimde ve istihbarat toplamada yaygın olarak kullanılmıştır. Düşmanın anlayamayacağı bir dil kullanmak önemlidir.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Amatör Telsizciler:&lt;/strong&gt; Hala birçok amatör radyo telsizcisi, Morse kodunu öğrenir ve kullanır. Bu, dünya çapında iletişim kurmalarını sağlar.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Acil Durumlar:&lt;/strong&gt; SOS sinyali olarak bilinen ”… --- …” dizisi, acil durumlar için uluslararası bir çağrıdır ve hala kullanılmaktadır.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;morse-kodlama-mantığı&quot;&gt;&lt;a href=&quot;#morse-kodlama-mant%C4%B1%C4%9F%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Morse Kodlama Mantığı&lt;/h3&gt;
&lt;p&gt;Morse kodlama mantığı oldukça basittir. Her harf ve rakam, bir dizi nokta ve çizgi ile temsil edilir. İşte bazı örnekler:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;“A” harfi “.-” şeklinde kodlanır.&lt;/li&gt;
&lt;li&gt;“S” harfi ”…” şeklinde kodlanır.&lt;/li&gt;
&lt;li&gt;“5” rakamı ”…” şeklinde kodlanır.
İşaretler arasında bir kısa duraklama ve karakterler arasında bir uzun duraklama vardır. Bu duraklamalar, kodun parçalarını ayırmak için kullanılır.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Morse alfabesi, iletişim tarihinde bir dönüm noktasıdır. Basit ve etkili bir iletişim yöntemi olarak, uzun mesafelerde ve acil durumlarda hayat kurtarmıştır. Günümüzde hala kullanılan bu alfabenin tarihi ve mantığı, iletişim dünyasının gelişimini anlamamıza yardımcı olur.&lt;/p&gt;
&lt;p&gt;Morse alfabesi, iletişimin özünde kodlama ve dekodlama süreçlerini temsil eden güçlü bir sembolizme sahiptir ve bu yönüyle bilim ve tarih alanlarında ilginç bir konu olarak dikkat çeker.&lt;/p&gt;
&lt;h2 id=&quot;golangde-morse-kod-uygulaması&quot;&gt;&lt;a href=&quot;#golangde-morse-kod-uygulamas%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;GoLang’de Morse Kod uygulaması:&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;fmt&quot;&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;strings&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; morseCodeMap &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;A&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;.-&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;B&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;-...&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;C&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;-.-.&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;D&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;-..&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;E&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;.&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;F&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;..-.&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;G&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;--.&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;H&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;....&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;I&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;..&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;J&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;.---&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;K&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;-.-&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;L&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;.-..&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;M&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;--&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;N&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;-.&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;O&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;---&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;P&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;.--.&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Q&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;--.-&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;R&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;.-.&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;S&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;...&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;T&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;-&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;U&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;..-&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;V&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;...-&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;W&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;.--&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;X&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;-..-&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Y&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;-.--&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Z&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;--..&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;1&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;.----&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;2&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;..---&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;3&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;...--&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;4&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;....-&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;5&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;.....&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;6&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;-....&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;7&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;--...&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;8&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;---..&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;9&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;----.&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;0&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;-----&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;&amp;amp;&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;.-...&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;@&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;.--.-.&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;:&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;---...&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;,&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;--..--&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;.&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;.-.-.-&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;&apos;&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;.----.&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;\&quot;&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;.-..-.&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;?&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;..--..&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;/&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;-..-.&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;=&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;-...-&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;+&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;.-.-.&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;-&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;-....-&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;(&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;-.--.&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;)&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;-.--.-&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;!&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;-.-.--&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot; &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;/&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;encrypt&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;message &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	message &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; strings&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;ToUpper&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;message&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; morseCode &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; char &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;range&lt;/span&gt; message &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; code&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; ok &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; morseCodeMap&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;char&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; ok &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			morseCode &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;morseCode&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; code&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; strings&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Join&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;morseCode&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot; &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;decrypt&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;message &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; result &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt;
	codeArray &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; strings&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Split&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;message&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot; &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; code &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;range&lt;/span&gt; codeArray &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; key&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; value &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;range&lt;/span&gt; morseCodeMap &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; code &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; value &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
				result &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; key
				&lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;
			&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; result
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	message &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Morse code here!&quot;&lt;/span&gt;
	fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;message&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	encrypted &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;encrypt&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;message&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;encrypted&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	decrypted &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;decrypt&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;encrypted&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;decrypted&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Program çalıştırıldığında çıktısı aşağıdaki gibi olacaktır.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;json&quot;&gt;&lt;pre class=&quot;language-json&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;Morse code here!
-- --- .-. ... . / -.-. --- -.. . / .... . .-. . -.-.--
MORSE CODE HERE!&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Programın çalışır haline &lt;a href=&quot;https://go.dev/play/p/HaHnF13-2jC&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;şuradan&lt;/a&gt; erişilebilir.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Morse_code&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/Morse_code&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2020/morse-alfabesi/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Ortadoğu'da Petrol Olmasaydı ABD'nin Orada Olanlarla Herhangi Bir İlgisi Olur Muydu?]]></title><description><![CDATA[ABD'nin İsrail'i neden bu kadar çok desteklediğini hiç merak ettiniz mi? II.Dünya Savaşı'ndan sonra, ABD kendisini Sovyetler Birliği ile bir çatışma içinde buldu. III.Dünya Savaşı'nın patlak verebileceğine dair ciddi inanç taşıyanlar az değildi ve bu inançlar üzerine birçok plan hazırlandı.]]></description><link>https://blog.hkucuk.com/2020/ortadoguda-petrol-olmasaydi-abdnin-orada-olanlarla/</link><guid isPermaLink="false">https://blog.hkucuk.com/2020/ortadoguda-petrol-olmasaydi-abdnin-orada-olanlarla/</guid><pubDate>Fri, 14 Aug 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Cevap kesinlikle &lt;b&gt;EVET&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;ABD’nin İsrail’i neden bu kadar çok desteklediğini hiç merak ettiniz mi?&lt;/p&gt;
&lt;p&gt;II.Dünya Savaşı’ndan sonra, ABD kendisini Sovyetler Birliği ile bir çatışma içinde buldu. III.Dünya Savaşı’nın patlak verebileceğine dair ciddi inanç taşıyanlar az değildi ve bu inançlar üzerine birçok plan hazırlandı.&lt;/p&gt;
&lt;p&gt;Amerika Birleşik Devletleri bu savaşa hazırlık yapmak için Kuzey Atlantic Antlaşması Örgütü veya kısaca &lt;a href=&quot;https://en.wikipedia.org/wiki/NATO&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;NATO&lt;/a&gt; olarak bilinen bir Avrupa savunma örgütünü kurdu. Bununla birlikte, nato’nun müslüman versiyonu diyebileceğimiz Orta doğu Antlaşması Örgütü ya da çoğu tarihçinin dediği gibi &lt;a href=&quot;https://en.wikipedia.org/wiki/Baghdad_Pact&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Bağdat Paktı&lt;/a&gt; da kuruldu.&lt;/p&gt;
&lt;p&gt;Sovyetler Birliği’nin bir zamanlar Orta Doğu ile sınırı olduğunu aşağıdaki harita aracılığıyla görebiliriz:&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/096e4421dc73d60ec24b4d1222f485ea/961c1/rusya.jpg&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 80.4054054054054%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAQABQDASIAAhEBAxEB/8QAFwABAAMAAAAAAAAAAAAAAAAAAAECBf/EABYBAQEBAAAAAAAAAAAAAAAAAAEAA//aAAwDAQACEAMQAAAB1rwzQL//xAAWEAEBAQAAAAAAAAAAAAAAAAAREAD/2gAIAQEAAQUCSOL/AP/EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8BP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8BP//EABQQAQAAAAAAAAAAAAAAAAAAACD/2gAIAQEABj8CX//EABoQAAMAAwEAAAAAAAAAAAAAAAABERAhMVH/2gAIAQEAAT8hluCY9iIX1Y//2gAMAwEAAgADAAAAEFQf/8QAFxEBAQEBAAAAAAAAAAAAAAAAAQARIf/aAAgBAwEBPxDgWl//xAAYEQEAAwEAAAAAAAAAAAAAAAABABEhQf/aAAgBAgEBPxB1olJyf//EABsQAQEAAgMBAAAAAAAAAAAAAAERACExUYFB/9oACAEBAAE/EJApFl+GJSvepkuB64JIO3esqRh77wBNJ7n/2Q==&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Sovyetler Birliği&apos;nin Orta Doğu ile sınırı&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/096e4421dc73d60ec24b4d1222f485ea/1c72d/rusya.jpg&quot;
        srcset=&quot;https://blog.hkucuk.com/static/096e4421dc73d60ec24b4d1222f485ea/a80bd/rusya.jpg 148w,https://blog.hkucuk.com/static/096e4421dc73d60ec24b4d1222f485ea/1c91a/rusya.jpg 295w,https://blog.hkucuk.com/static/096e4421dc73d60ec24b4d1222f485ea/1c72d/rusya.jpg 590w,https://blog.hkucuk.com/static/096e4421dc73d60ec24b4d1222f485ea/a8a14/rusya.jpg 885w,https://blog.hkucuk.com/static/096e4421dc73d60ec24b4d1222f485ea/fbd2c/rusya.jpg 1180w,https://blog.hkucuk.com/static/096e4421dc73d60ec24b4d1222f485ea/961c1/rusya.jpg 1190w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    
&lt;small&gt;&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;Bundan dolayı ABD, Sovyetler Birliği ile bir savaş çıkarsa, iki yönden saldırı yapılabileceğine inanıyordu:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Avrupalılar Doğu Avrupaya saldırır.&lt;/li&gt;
&lt;li&gt;Orta Doğulularda tıpkı Osmanlı İmparatorluğunun yaptığı gibi Kafkasya’ya saldırır.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://blog.hkucuk.com/b70f800b769439ed7d61088a4ae40e7b/rusya_savas.gif&quot; alt=&quot;Sovyetler Birliği&quot;&gt;

  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/7254798bf2cbd6e923f9b04432f6e023/2debd/rusya_savas_asya.jpg&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 318px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 72.2972972972973%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAOABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAABAACBf/EABUBAQEAAAAAAAAAAAAAAAAAAAAB/9oADAMBAAIQAxAAAAHsGXmByY//xAAZEAADAQEBAAAAAAAAAAAAAAAAAQIREiH/2gAIAQEAAQUCwr1JUKVtymcn/8QAGBEAAgMAAAAAAAAAAAAAAAAAAAIRUXH/2gAIAQMBAT8B0hbP/8QAGREAAgMBAAAAAAAAAAAAAAAAABEBAkFR/9oACAECAQE/AZeDvw//xAAYEAACAwAAAAAAAAAAAAAAAAAAIQEQMf/aAAgBAQAGPwLSbYz/xAAcEAACAgIDAAAAAAAAAAAAAAABEQAxIUFRcYH/2gAIAQEAAT8hNjaMGCH3FCwb5gBrZcpGNKIdj7P/2gAMAwEAAgADAAAAENsP/8QAGBEBAQADAAAAAAAAAAAAAAAAAQAhUZH/2gAIAQMBAT8QAcQ3uX//xAAYEQACAwAAAAAAAAAAAAAAAAAAASFRkf/aAAgBAgEBPxBkkVJp/8QAGxABAAMAAwEAAAAAAAAAAAAAAQARITFRYUH/2gAIAQEAAT8QV+hgHXsSWVyovGrFJOCK49EsEmmMJA42aovgdZP/2Q==&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Sovyetler Birliği&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/7254798bf2cbd6e923f9b04432f6e023/2debd/rusya_savas_asya.jpg&quot;
        srcset=&quot;https://blog.hkucuk.com/static/7254798bf2cbd6e923f9b04432f6e023/a80bd/rusya_savas_asya.jpg 148w,https://blog.hkucuk.com/static/7254798bf2cbd6e923f9b04432f6e023/1c91a/rusya_savas_asya.jpg 295w,https://blog.hkucuk.com/static/7254798bf2cbd6e923f9b04432f6e023/2debd/rusya_savas_asya.jpg 318w&quot;
        sizes=&quot;(max-width: 318px) 100vw, 318px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    
&lt;small&gt;III.Dünya Savaşı’nın başladığını hayal edin. İran, Irak ve Türk askerleri Kafkasya bölgesine hızla saldırırken, Pakistan ya onları destekler ya da bunun yerine Orta Asya’yı işgal ederek Sovyetleri 3 ayrı işgali savuşturmaya zorlayabilir.&lt;/small&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;İşte bu ABD’nin 1950’lerde Arap yanlısı bir dış politikası olmasının sebebidir.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;İsrailli tarihçi Avi Shlaim’in belirttiği gibi aslında ABD İsrail’e düşmandı. Hatta İsrail’in, Ürdün’ün Yahudi yerleşimleri için ilhak edilmesi önerisini dahi reddetti ve İsrail’i 1956’da Fransa ve İngiltere ile birlikte Mısır’ı işgal ettiği için kınadı.&lt;/p&gt;
&lt;p&gt;Bunun nedeni, ABD’nin Arapların Amerika’yı dostları olarak görmesinin hayati önem taşıdığını düşünmesidir çünkü ABD’nin o zaman ki çıkarları basitti:&lt;/p&gt;
&lt;h3&gt;Sovyetler Birliğini yenmek.&lt;/h3&gt;
&lt;hr&gt;
&lt;h2 id=&quot;araplar-ırkçılık-kriziyle-abdnin-elini-bozdular&quot;&gt;&lt;a href=&quot;#araplar-%C4%B1rk%C3%A7%C4%B1l%C4%B1k-kriziyle-abdnin-elini-bozdular&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Araplar ırkçılık kriziyle ABD’nin elini bozdular&lt;/h2&gt;
&lt;p&gt;ABD, Fransa ve İngiltere gibi beyaz bir millettir. Bunun sonucunda, ABD’nin Arap Dünyasına erişimi neo-sömürgecilik olarak algılandı ve doğrudan bir düşmanlık ve şiddet dalgasını beraberinde getirdi.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ABD, Ürdün’ü Bağdat Paktı’na sokmak için bir girişim başlattığında, Ürdünlüler (özellikle Batı Şeria’daki Filistinliler), Kral ABD’yi açıkça eleştirene ve Bağdat Paktı’nı reddedene kadar protesto ettiler ve ayaklandılar.&lt;/li&gt;
&lt;li&gt;Iraklılar, 1958’de &lt;a href=&quot;https://en.wikipedia.org/wiki/14_July_Revolution&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;14 Temmuz Devrimi&lt;/a&gt;‘nde ABD’nin kuklası oldukları için kraliyet ailelerini öldürecek kadar ileri gittiler.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/8659242d95159f882557468f6960682b/066f9/%C4%B1rak.jpg&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 400px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 131.75675675675674%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAaABQDASIAAhEBAxEB/8QAGQAAAwEBAQAAAAAAAAAAAAAAAAECAwQF/8QAFwEAAwEAAAAAAAAAAAAAAAAAAgMEBf/aAAwDAQACEAMQAAABW6sWecUK0dnxs46Mhd3/xAAdEAABBAIDAAAAAAAAAAAAAAABAAIDERIhECIy/9oACAEBAAEFAmNFYKYU+JbU/uN2xJ2lOTgSrPH/xAAaEQACAwEBAAAAAAAAAAAAAAAAAQIDETNB/9oACAEDAQE/AWpa3pTzRKvfStZFH//EABoRAAICAwAAAAAAAAAAAAAAAAABMUECERL/2gAIAQIBAT8B6pGUm7HJ/8QAHBAAAgICAwAAAAAAAAAAAAAAAAEQETFBISLB/9oACAEBAAY/AtYH1ULi1R5CQ9osyZcf/8QAHxABAAICAQUBAAAAAAAAAAAAAQARMUEhYXGBkbHx/9oACAEBAAE/IVFrwGYlQdNogVAHGpfVlRqrQR8ZpZg7zgKI1o2Sll7n7kVXluf/2gAMAwEAAgADAAAAEAsdcP/EABoRAQACAwEAAAAAAAAAAAAAAAEAETFRwWH/2gAIAQMBAT8QIhZ7EquiLYwvsoXk/8QAGhEBAAIDAQAAAAAAAAAAAAAAAQARITFB8P/aAAgBAgEBPxBGA9U3wonUVqf/xAAcEAEBAAMAAwEAAAAAAAAAAAABEQAhMUFhwVH/2gAIAQEAAT8QU/ml2aTuRhC+S5PuDDk6ExRZgadj4xiaehp0jhTfs4YoBHVei31N4puGRGMPWGaQHSc7gQEThWsZfZl0y/Vuf//Z&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Irak Başbakanı Nuri Said&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/8659242d95159f882557468f6960682b/066f9/%C4%B1rak.jpg&quot;
        srcset=&quot;https://blog.hkucuk.com/static/8659242d95159f882557468f6960682b/a80bd/%C4%B1rak.jpg 148w,https://blog.hkucuk.com/static/8659242d95159f882557468f6960682b/1c91a/%C4%B1rak.jpg 295w,https://blog.hkucuk.com/static/8659242d95159f882557468f6960682b/066f9/%C4%B1rak.jpg 400w&quot;
        sizes=&quot;(max-width: 400px) 100vw, 400px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    
&lt;small&gt;Irak Başbakanı Nuri Said bir zamanlar Amerika’nın Avrupa dışındaki en iyi arkadaşı olarak kabul ediliyordu. Iraklılar bu konuda ne düşündüklerini Said’i öldüresiye döverek ve cesedini yakarak gösterdiler.&lt;/small&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Faslıların, Kralın ABD Ordusunun Krallığa girmesine izin vermesini protesto etmesinden sonra, ABD tarafından 1950’lerde bir müttefik olarak kabul edilen Fas bile, ABD’nin &lt;a href=&quot;https://en.wikipedia.org/wiki/Nouasseur_Air_Base&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Nouasseur Hava Üssü&lt;/a&gt;‘nü terk etmesi gerektiğini bildirdi.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/c08d1638f1943913ece7b9c56c83842d/6dacf/fas.jpg&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 565px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 76.35135135135135%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAIEBf/EABQBAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhADEAAAAdGenLEFD//EABsQAAEEAwAAAAAAAAAAAAAAAAIAAQMRBBMU/9oACAEBAAEFAqRyACfIe9g0UZOfOa//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/AT//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/AT//xAAbEAEBAAEFAAAAAAAAAAAAAAABABEhMkFRgf/aAAgBAQAGPwK7bTB5C8yhbb//xAAaEAACAwEBAAAAAAAAAAAAAAAAAREhUUGx/9oACAEBAAE/ITWNvBHKWWEqQUoR3YaN9+j/2gAMAwEAAgADAAAAELMP/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPxA//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPxA//8QAHhABAAICAQUAAAAAAAAAAAAAAQARITGBQVFhobH/2gAIAQEAAT8QL1iNoE1fgey6IdC8ppyp8iSDXJeeJ1r411bnccoEc2nPuf/Z&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Fas&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/c08d1638f1943913ece7b9c56c83842d/6dacf/fas.jpg&quot;
        srcset=&quot;https://blog.hkucuk.com/static/c08d1638f1943913ece7b9c56c83842d/a80bd/fas.jpg 148w,https://blog.hkucuk.com/static/c08d1638f1943913ece7b9c56c83842d/1c91a/fas.jpg 295w,https://blog.hkucuk.com/static/c08d1638f1943913ece7b9c56c83842d/6dacf/fas.jpg 565w&quot;
        sizes=&quot;(max-width: 565px) 100vw, 565px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    
&lt;small&gt;&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;ABD ile İsrail uyumu, aşağıdaki koşullar dışındaki tüm koşullara uygun bir arkadaşlık olarak görüldü:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fırsatçı (örneğin Suudi Arabistan ve BAE)
&lt;br&gt;
&lt;a href=&quot;https://www.scmp.com/news/china/diplomacy-defence/article/2081869/chinese-drone-factory-saudi-arabia-first-middle-east&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Suudi Arabistan’daki Çin drone fabrikası, ortadoğudaki ilk fabrika&lt;/a&gt;
&lt;br&gt;
&lt;a href=&quot;https://www.mei.edu/publications/geopolitics-drive-russia-and-uae-closer&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Jeopolitik, Rusya ve BAE’yi Yakından Yönlendiriyor&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Tarafsız (ör. ABD’yi hiçbir girişimde gerçekten desteklemeyen Fas)&lt;/li&gt;
&lt;li&gt;Kesin Düşman (örneğin İran)
&lt;br&gt;
&lt;a href=&quot;https://www.reuters.com/article/us-iran-usa-khamenei/iran-urges-muslims-to-develop-sciences-to-shake-off-u-s-hegemony-idUSKCN1ID09X&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;İran Müslümanları ABD hegemonyasından kurtulmak için bilim üretmeye çağırıyor&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;bu-özellikle-arap-dünyasının-coğrafi-konumu-nedeniyle-endişe-vericidir&quot;&gt;&lt;a href=&quot;#bu-%C3%B6zellikle-arap-d%C3%BCnyas%C4%B1n%C4%B1n-co%C4%9Frafi-konumu-nedeniyle-endi%C5%9Fe-vericidir&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Bu, özellikle Arap dünyasının coğrafi konumu nedeniyle endişe vericidir.&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://blog.hkucuk.com/60c40c3ee324951b736fb6f15118664d/konum.gif&quot; alt=&quot;Fas&quot;&gt;
&lt;small&gt;&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;Bu harita, Avrupa’nın hemen yanında, yani Arap dünyasında olan her şeyin Avrupa’yı etkileyeceği anlamına geliyor. Bu yüzden şunun gibi yorumlar korkunçtur:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.telegraph.co.uk/news/worldnews/africaandindianocean/libya/7973649/Gaddafi-Europe-will-turn-black-unless-EU-pays-Libya-4bn-a-year.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Kaddafi: AB Libya’ya yılda 4 milyar ödemezse Avrupa ‘siyaha dönecek’&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Düpedüz düşman bir Arap lider olan Kaddafi’nin, AB’ye Afrikalıları Avrupa’ya akın etmeye teşvik edeceğini ve yılda 4 milyar dolar almazsa Libya’yı fırlatma rampası olarak kullanmalarına izin vereceğini söylemesi, Birleşik Devletler için hiç de ideal bir durum değildir.&lt;/p&gt;
&lt;p&gt;Bunun Libya petrolüyle bir ilgisi yoktur. Yalnızca ABD, tıpkı AB gibi, bu tür tehditleri büyük bir sorun olarak görüyor.&lt;/p&gt;
&lt;h2 id=&quot;dolayısıyla-orta-doğuda-petrol-olmasa-bile-amerika-birleşik-devletlerinin-yine-de-bir-çıkarı-mutlaka-olacaktır&quot;&gt;&lt;a href=&quot;#dolay%C4%B1s%C4%B1yla-orta-do%C4%9Fuda-petrol-olmasa-bile-amerika-birle%C5%9Fik-devletlerinin-yine-de-bir-%C3%A7%C4%B1kar%C4%B1-mutlaka-olacakt%C4%B1r&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Dolayısıyla, Orta Doğu’da petrol olmasa bile, Amerika Birleşik Devletleri’nin yine de bir çıkarı mutlaka olacaktır.&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Rusya’nın artık Orta Doğu ile bir sınırı olmasa da (bugün Ermenistan ve Azerbaycan bağımsızdır), yine de Rusya’nın Avrupa’yı tehdit edecek müttefiklerinin olmamasını sağlamaya yardımcı oluyor.&lt;/li&gt;
&lt;li&gt;Hiçbir Arap liderin ister askeri olarak (“Yarın Yunanistan’ı işgal edeceğiz!”), İster terörizm (örneğin İslamcı grupları finanse etmek) veya sadece Avrupa’yı yasa dışı göçmenlerle doldurmakla tehdit ederek, Avrupa’yı tehdit etmemesine yardımcı oluyor.&lt;/li&gt;
&lt;li&gt;Ayrıca tabii ki ekonomik kaynaklarda var :)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://www.bloomberg.com/news/articles/2018-10-17/u-s-persuades-iraq-to-quash-siemens-power-deal-in-favor-of-ge&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;ABD Irak’ı Siemens Anlaşmasını GE Lehine Bozmaya İkna Etti&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Irak’ın 15 milyar dolarlık bir elektrik santrali anlaşması vardı. ABD, “müttefiki” Irak’ı, bu enerji santrallerini inşa etmek için Alman Siemens şirketini değil, Amerikan şirketi General Electric’i kullanmaya “teşvik etti” (Evet teşvik ;)). Böylece 15 milyar dolarlık Arap parası bir Amerikan şirketini zenginleştirmek ve Amerikalı işçileri işe almak için kullanılabilecek.&lt;/p&gt;
&lt;p&gt;Veya CNN’in dediği gibi:
&lt;a href=&quot;https://edition.cnn.com/2018/10/22/business/ge-iraq-power-siemens/index.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;GE, Irak’ta çok ihtiyaç duyulan bir galibiyet elde etti&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Evet. General Electric o Irak ihalesini “kazandı”.&lt;/p&gt;
&lt;p&gt;İşte bu.&lt;/p&gt;
&lt;p&gt;Son cümle: Petrol Amerikan çıkarları için pek çok insanın inandığı kadar önemli değil.&lt;/p&gt;
&lt;hr&gt;
&lt;h1 id=&quot;referanslar&quot;&gt;&lt;a href=&quot;#referanslar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Referanslar&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/NATO&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/NATO&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Baghdad_Pact&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/Baghdad_Pact&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/14_July_Revolution&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/14_July_Revolution&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Nouasseur_Air_Base&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/Nouasseur_Air_Base&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.scmp.com/news/china/diplomacy-defence/article/2081869/chinese-drone-factory-saudi-arabia-first-middle-east&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.scmp.com/news/china/diplomacy-defence/article/2081869/chinese-drone-factory-saudi-arabia-first-middle-east&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.mei.edu/publications/geopolitics-drive-russia-and-uae-closer&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.mei.edu/publications/geopolitics-drive-russia-and-uae-closer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.reuters.com/article/us-iran-usa-khamenei/iran-urges-muslims-to-develop-sciences-to-shake-off-u-s-hegemony-idUSKCN1ID09X&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.reuters.com/article/us-iran-usa-khamenei/iran-urges-muslims-to-develop-sciences-to-shake-off-u-s-hegemony-idUSKCN1ID09X&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.telegraph.co.uk/news/worldnews/africaandindianocean/libya/7973649/Gaddafi-Europe-will-turn-black-unless-EU-pays-Libya-4bn-a-year.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.telegraph.co.uk/news/worldnews/africaandindianocean/libya/7973649/Gaddafi-Europe-will-turn-black-unless-EU-pays-Libya-4bn-a-year.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.bloomberg.com/news/articles/2018-10-17/u-s-persuades-iraq-to-quash-siemens-power-deal-in-favor-of-ge&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.bloomberg.com/news/articles/2018-10-17/u-s-persuades-iraq-to-quash-siemens-power-deal-in-favor-of-ge&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://edition.cnn.com/2018/10/22/business/ge-iraq-power-siemens/index.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://edition.cnn.com/2018/10/22/business/ge-iraq-power-siemens/index.html&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2020/ortadoguda-petrol-olmasaydi-abdnin-orada-olanlarla/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Öğrenme Neden Teknolojideki En Önemli Beceridir?]]></title><description><![CDATA[Teknoloji endüstrisi öğrenme hakkında çok fazla konuşmuyor. Bu çok garip bir durum çünkü öğrenmek bizim en önemli becerimiz. Onsuz başarılı olmamız imkansız. Teknoloji muazzam, bilmemiz gereken çok farklı -şey- var ve hepsi inanılmaz bir hızla sürekli olarak değişiyor. Her gün yeni bir framework, yeni bir mimari, yeni bir araç çıkıyor ya da değişikliğe uğruyor.]]></description><link>https://blog.hkucuk.com/2020/ogrenme-neden-teknolojideki-en-onemli-beceridir/</link><guid isPermaLink="false">https://blog.hkucuk.com/2020/ogrenme-neden-teknolojideki-en-onemli-beceridir/</guid><pubDate>Thu, 06 Aug 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;En sevdiğim meme-lerden bir tanesi &lt;a href=&quot;https://knowyourmeme.com/memes/i-have-no-idea-what-im-doing&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;“I have no idea what I’m doing (tr: ne yaptığım hakkında hiçbir fikrim yok)”&lt;/a&gt; köpeğidir. Bilim deneyi yapmaya çalışan Golden Retriever’dan daha güzel bir rol model olabilir mi? :) Ne yaptığı hakkında hiçbir fikri olmaması umurunda mı? Elbette değil. Ne olursa olsun deniyor.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/ecdfe9300a268bebf4e995b8f8d02a34/85c49/ihave.jpg&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 56.08108108108109%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAALABQDASIAAhEBAxEB/8QAGAAAAgMAAAAAAAAAAAAAAAAAAAQCAwX/xAAXAQADAQAAAAAAAAAAAAAAAAAAAQID/9oADAMBAAIQAxAAAAGuagNszjeP/8QAFxABAQEBAAAAAAAAAAAAAAAAAgEAFP/aAAgBAQABBQLB5WWtWKq87am//8QAFhEBAQEAAAAAAAAAAAAAAAAAARBB/9oACAEDAQE/AVMn/8QAFhEBAQEAAAAAAAAAAAAAAAAAAQAC/9oACAECAQE/ATTGr//EABoQAAICAwAAAAAAAAAAAAAAAAABAhEQQYH/2gAIAQEABj8CLaLxHoqej//EABkQAAMBAQEAAAAAAAAAAAAAAAABESFBUf/aAAgBAQABPyFZwk/ESbBASYmy7QwSGOH/2gAMAwEAAgADAAAAEF8v/8QAFxEBAQEBAAAAAAAAAAAAAAAAAQARMf/aAAgBAwEBPxBBokd7f//EABcRAQEBAQAAAAAAAAAAAAAAAAEAESH/2gAIAQIBAT8Q0Cw4cv/EABsQAQEBAQADAQAAAAAAAAAAAAERACFRcaHw/9oACAEBAAE/EIg6dEmsQDn6fcm4EOJoQhe8PGITVZSrPeiwKQG//9k=&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Golden Retriever&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/ecdfe9300a268bebf4e995b8f8d02a34/1c72d/ihave.jpg&quot;
        srcset=&quot;https://blog.hkucuk.com/static/ecdfe9300a268bebf4e995b8f8d02a34/a80bd/ihave.jpg 148w,https://blog.hkucuk.com/static/ecdfe9300a268bebf4e995b8f8d02a34/1c91a/ihave.jpg 295w,https://blog.hkucuk.com/static/ecdfe9300a268bebf4e995b8f8d02a34/1c72d/ihave.jpg 590w,https://blog.hkucuk.com/static/ecdfe9300a268bebf4e995b8f8d02a34/a8a14/ihave.jpg 885w,https://blog.hkucuk.com/static/ecdfe9300a268bebf4e995b8f8d02a34/85c49/ihave.jpg 1004w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;p&gt;Bu meme-yi seviyorum. Arada bu köpeğe bakıp “Sen ve ben köpek, yeni zor bir şeyle mücadele ediyoruz.” diye düşünürüm. Ve her zaman yeni zor BİR ŞEY karşımda duruyor olur.&lt;/p&gt;
&lt;h2 id=&quot;neden-öğrenme-hakkında-daha-fazla-konuşmuyoruz&quot;&gt;&lt;a href=&quot;#neden-%C3%B6%C4%9Frenme-hakk%C4%B1nda-daha-fazla-konu%C5%9Fmuyoruz&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Neden Öğrenme Hakkında Daha Fazla Konuşmuyoruz?&lt;/h2&gt;
&lt;p&gt;Teknoloji endüstrisi öğrenme hakkında çok fazla konuşmuyor. Bu çok garip bir durum çünkü öğrenmek bizim en önemli becerimiz. Onsuz başarılı olmamız imkansız. Teknoloji muazzam, bilmemiz gereken çok farklı -şey- var ve hepsi inanılmaz bir hızla sürekli olarak değişiyor. Her gün yeni bir framework, yeni bir mimari, yeni bir araç çıkıyor ya da değişikliğe uğruyor. Birdenbire, yeni bir isimde yepyeni teknolojiler karşımıza çıkıyor ve biz sürekli olarak şu düşünceyle boğuşuyoruz: “Acaba bir duyuruyu mu kaçırdım? Bu yeni -şey- nereden çıktı?”&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Yazılım dünyasında güncel kalmak demek sürekli olarak öğrenmekte olduğumuz anlamına gelir. İşimizi öğrenme olmadan yapamayız. Fakat nedense bu konu hakkında fazla konuşmuyoruz.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;instagram-hayatlarımız&quot;&gt;&lt;a href=&quot;#instagram-hayatlar%C4%B1m%C4%B1z&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Instagram Hayatlarımız&lt;/h2&gt;
&lt;p&gt;Bu bir sorun. Bildiğimiz -şeyleri- nasıl bildiğimizi açıklamadığımızda, bu bilgileri elde etmenin de ne kadar çok çalışma gerektirdiğini kabul etmemiş oluyoruz. Bu durum sektördeki yeni insanlar için gerçekçi olmayan beklentiler yaratıyor. Etrafınızdaki herkes sihirli bir şekilde bir sürü -şey- biliyor gibi göründüğünde ve siz o -şeyleri- bilmiyorsanız, yeterince iyi değilmiş gibi hissedebilirsiniz. Orada olmamanız gerekiyormuş gibi hissedebilirsiniz.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/35e5d21ec9c0459b7ff89407c0b4550a/d165a/first.jpg&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 150%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAeABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAMFBP/EABYBAQEBAAAAAAAAAAAAAAAAAAEAAv/aAAwDAQACEAMQAAAB2uU2GDCJbJOlqROMv//EAB0QAAICAgMBAAAAAAAAAAAAAAACAREDEgQQFCL/2gAIAQEAAQUCVeqJ+lwb0RyEPQtRWSFchzY//8QAFhEBAQEAAAAAAAAAAAAAAAAAEAER/9oACAEDAQE/Aaaf/8QAFREBAQAAAAAAAAAAAAAAAAAAEBH/2gAIAQIBAT8BIf/EABoQAAMBAAMAAAAAAAAAAAAAAAABMRACEhP/2gAIAQEABj8C1rix+mRkZ2ITP//EABsQAQACAwEBAAAAAAAAAAAAAAEAETFBUWEh/9oACAEBAAE/IW5KDBL+wtIuPmYiTtGh8i8jJHYRCDWs1CIKEaKn/9oADAMBAAIAAwAAABAs5H7/xAAWEQEBAQAAAAAAAAAAAAAAAAAAARH/2gAIAQMBAT8Qpqkr/8QAFxEAAwEAAAAAAAAAAAAAAAAAAAEQEf/aAAgBAgEBPxCsZ//EAB0QAQADAQACAwAAAAAAAAAAAAEAESExQYFRcaH/2gAIAQEAAT8QzOjxADba1dwYvHqL2HV6Hvx2cBvoLpnIC6K+oRgZ3l/s6APtGSjErClDPOUdlTaD4Gf/2Q==&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Photo by Hal Gatewood on Unsplash.&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/35e5d21ec9c0459b7ff89407c0b4550a/1c72d/first.jpg&quot;
        srcset=&quot;https://blog.hkucuk.com/static/35e5d21ec9c0459b7ff89407c0b4550a/a80bd/first.jpg 148w,https://blog.hkucuk.com/static/35e5d21ec9c0459b7ff89407c0b4550a/1c91a/first.jpg 295w,https://blog.hkucuk.com/static/35e5d21ec9c0459b7ff89407c0b4550a/1c72d/first.jpg 590w,https://blog.hkucuk.com/static/35e5d21ec9c0459b7ff89407c0b4550a/a8a14/first.jpg 885w,https://blog.hkucuk.com/static/35e5d21ec9c0459b7ff89407c0b4550a/fbd2c/first.jpg 1180w,https://blog.hkucuk.com/static/35e5d21ec9c0459b7ff89407c0b4550a/d165a/first.jpg 1400w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    
&lt;small&gt;Muhtemelen çektikleri ilk resim değildir, di mi? Photo by Duc Viet Hoang on Unsplash.&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;Bu tıpkı herkesin hayatının zahmetsiz, mükemmel göründüğü &lt;a href=&quot;https://www.theguardian.com/technology/2018/sep/17/instagram-is-supposed-to-be-friendly-so-why-is-it-making-people-so-miserable&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Instagram Problemi&lt;/a&gt; gibi bir durum. Güzel duran bir fotoğraftan önceki düzensizliği, zahmeti, doğru fotoğrafı bulana kadar çekilen diğer 20 fotoğrafı görmüyoruz. İnsanların bilgilerini kullandıklarını görüyoruz fakat elde edilen bilgiyi göstermiyoruz. İnanılmaz derecede mantıksız dökümantasyonları, yanlış yolları, ilk korkunç prototipleri, yayınlanmadan önce haftalarca var olan fikirleri göremiyoruz.&lt;/p&gt;
&lt;p&gt;Yeni insanlara öğrenmenin yavaş, sinir bozucu ve bazen zor olabileceğini ama bunun gerçekten “normal” olduğunu söylemiyoruz.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Öğrenme 1 numaralı beceriyse, muhtemelen 2. ise kalıcılıktır. Ve maalesef bazı şeyler zaman alır.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;bu-yüzden-yüksek-sesle-öğrenmeliyiz&quot;&gt;&lt;a href=&quot;#bu-y%C3%BCzden-y%C3%BCksek-sesle-%C3%B6%C4%9Frenmeliyiz&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Bu Yüzden Yüksek Sesle “Öğrenmeliyiz”&lt;/h2&gt;
&lt;p&gt;Geçenlerde yaptığımız bir konuşmada kıdemli mühendislere sahip olabilmemiz için birisinin aptalca soruları sorması gerektiğini söyledim.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;“Bir dakika, bu kelime ne anlama geliyor?”&lt;/li&gt;
&lt;li&gt;“Bu konuyu, ben 5 yaşındaymışım gibi açıklayabilir misin?”&lt;/li&gt;
&lt;li&gt;“Bunu neden yapıyoruz?”&lt;/li&gt;
&lt;li&gt;“Hangi sorunu çözmeye çalışıyoruz?”&lt;/li&gt;
&lt;li&gt;“Böyle bir şey zaten yok mu?”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bazen toplantılarda yanıtını zaten bildiğim ve diğer insanların çoğunun bilmediğinden emin olduğum soruları sorarı. Daha tecrübeli kişilerin bu tarz soruları sorması her zaman daha az korkutucudur. :)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;öğrenmeyi-öğrenmek&quot;&gt;&lt;a href=&quot;#%C3%B6%C4%9Frenmeyi-%C3%B6%C4%9Frenmek&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Öğrenmeyi Öğrenmek&lt;/h2&gt;
&lt;p&gt;Öğrenme başlı başına bir beceridir. Uygulama anında ve kendiniz için neyin işe yaradığını anladıkça daha iyi hale geldiğiniz bir şeydir.&lt;/p&gt;
&lt;p&gt;Örneğin; bir konuyla ilgili, başlangıç için “en iyi” yeri bulmaya çalışarak, öğrendiğim yeni konunun en önemli yönlerini seçmeye çalışıyordum. Keyfi bir makale okuyarak başlamanın konuyla ilgili bir Wikipedia sayfasını okumak kadar iyi olacağını düşünerek, anlamadığım bir şey seçtim ve bu konu hakkında okumaya devam ettim. Bunu bir kaç saat yapmaya devam edersem, neyin önemli olduğu konusunda aklımda bir resim oluşacağından emindim.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/38f6b5052f2994b062096999a908917a/d165a/cocuk.jpg&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 66.89189189189189%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAANABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAIDBP/EABYBAQEBAAAAAAAAAAAAAAAAAAEAAv/aAAwDAQACEAMQAAABvNTDnHG//8QAHBAAAgICAwAAAAAAAAAAAAAAAQIAEgMEEyEx/9oACAEBAAEFAn48kAEHlHQILR9bv//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8BP//EABURAQEAAAAAAAAAAAAAAAAAAAAR/9oACAECAQE/AYj/xAAgEAABAwIHAAAAAAAAAAAAAAAAAQIRA6EQEiIxMlFh/9oACAEBAAY/As20DWp3hCVLGqJTw5WP/8QAGhAAAwEBAQEAAAAAAAAAAAAAAAERITFBUf/aAAgBAQABPyFobTHJWLOWLR9ho8Ri7eigpam+D//aAAwDAQACAAMAAAAQrC//xAAXEQADAQAAAAAAAAAAAAAAAAAAAREx/9oACAEDAQE/EE5jKf/EABURAQEAAAAAAAAAAAAAAAAAAAEQ/9oACAECAQE/EFLH/8QAHBAAAgIDAQEAAAAAAAAAAAAAAREAITFBUZGh/9oACAEBAAE/EFWRRvYY8ZgrbE0CyjuDsZZZ7FRmGQPlw7tMf52jGaoXw+z/2Q==&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Photo by Hal Gatewood on Unsplash.&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/38f6b5052f2994b062096999a908917a/1c72d/cocuk.jpg&quot;
        srcset=&quot;https://blog.hkucuk.com/static/38f6b5052f2994b062096999a908917a/a80bd/cocuk.jpg 148w,https://blog.hkucuk.com/static/38f6b5052f2994b062096999a908917a/1c91a/cocuk.jpg 295w,https://blog.hkucuk.com/static/38f6b5052f2994b062096999a908917a/1c72d/cocuk.jpg 590w,https://blog.hkucuk.com/static/38f6b5052f2994b062096999a908917a/a8a14/cocuk.jpg 885w,https://blog.hkucuk.com/static/38f6b5052f2994b062096999a908917a/fbd2c/cocuk.jpg 1180w,https://blog.hkucuk.com/static/38f6b5052f2994b062096999a908917a/d165a/cocuk.jpg 1400w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    
&lt;small&gt;“Herkesin söylediği gibi, X’deki bir monad, X’in endofunktörleri kategorisinde sadece bir monoiddir; ürün x, endofunktörlerin ve kimlik endofunktörü tarafından belirlenen birimin kompozisyonuyla değiştirilir. Anladım.” Photo by Hal Gatewood on Unsplash.&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;Çalıştığım konu sıkıcı ya da zor bir konuysa, onu ilgi çekici hale getirmek için az önce okuduğum her şeyi HEMEN kullanmam gerektiğini öğrendim (örneğin: bir blog yazısı ya da az önce öğrendiklerimi özetleyen bir blog yazısı yazmak gibi). Merak ettiğim, hakkında yazmak istediğim ya da birilerine öğretmek istediğim konularda okumak, araştırma yapmak için sonsuz bir sabra sahibim.&lt;/p&gt;
&lt;p&gt;Kodlama alıştırmaları ve küçük projeler de aynı etkiye sahiptir. Teori sonsuza kadar öğrenilebilir fakat bilgiyi pekiştirmek ve kalıcı hale getirmek için onu bir projede kullanmak gibisi yoktur.&lt;/p&gt;
&lt;h2 id=&quot;her-şey-öğrenilebilir&quot;&gt;&lt;a href=&quot;#her-%C5%9Fey-%C3%B6%C4%9Frenilebilir&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Her Şey Öğrenilebilir&lt;/h2&gt;
&lt;p&gt;Bence teknolojideki en önemli fark, her şeyin öğrenilebir olmasıdır. Gerçekten de her şeyin :) Bunlardan bazıları zor ve bilinmesi gereken çok fazla detay olabilir ama bunları öğrenmek sihirli bir dokunuşla mümkün olmaz. En kötü durumda, sadece biraz zaman alır.&lt;/p&gt;
&lt;p&gt;Eğer tecrübesiz biriyseniz ve bilmediğiniz birçok şey varmış gibi geliyorsa kendinizi kötü hissetmeyin. Çünkü bu çok normal. Bilmeniz gereken çok -şey- var. Aşinalık zamanla oluşacak bir şey fakat bu da sonsuza kadar sürmeyecek. Yeni bir alana gireceksiniz ve tekrar ne yaptığınız konusunda hiçbir fikriniz olmayacak. Bir bilginin nasıl öğrenileceğini öğrenmeye devam ettiğiniz sürece yeni kavramlar her seferinde biraz daha hızlı anlaşılır olacaktır.&lt;/p&gt;
&lt;p&gt;Eğer tecrübeli biriyseniz, lütfen öğrendiğinizi de gösterin. Kaynaklarınızı paylaşın, sorular sorun ve yeni bulduğunuz -şeyleri- insanlara anlatın. 1 numaralı becerinin öğrenmek olduğunu ve bunun çok zaman aldığını kabul edersek, sektörümüzü daha iyi bir hale getirebiliriz.&lt;/p&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2020/ogrenme-neden-teknolojideki-en-onemli-beceridir/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Shell Sort GoLang İmplementasyonu]]></title><description><![CDATA[Elimizde iki adet dizi olduğu düşünelim. Bu iki diziden bir tanesinin elemanlarının diğer dizinin içerisinde olmayanlarını belirlemek istediğimizde, bu iki diziyi bir karşılaştırma işlemine sokmamız gerekiyor.]]></description><link>https://blog.hkucuk.com/2020/shell-sort-golang-implementasyonu/</link><guid isPermaLink="false">https://blog.hkucuk.com/2020/shell-sort-golang-implementasyonu/</guid><pubDate>Sat, 29 Feb 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Shellsort&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Shell Sort(Kabuk Sıralama)&lt;/a&gt; temel olarak &lt;a href=&quot;https://www.geeksforgeeks.org/insertion-sort/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Insertion Sort(Araya Sokma Sıralaması)&lt;/a&gt;‘nın bir varyasyonudur. Insertion Sort’da bir eleman sadece yanındaki elemanlarla sırayla karşılaştırılır. Bundan dolayı bir elemanın bulunduğu pozisyona çok uzak bir noktaya gidebilmesi için birçok karşılaştırma yapılması gerekir. Shell Sort birbirine uzak elemanların önceden karşılaştırılmasına ve yer değiştirmesine izin vererek verim sağlamaya çalışır. Sıralamayı aynı dizi üzerinde yapar, Insertion Sort gibi fazladan yer ihtiyacı yoktur.&lt;/p&gt;
&lt;p&gt;Shell Sort’un çalışma mantığını bir örnek üzerinden inceleyelim.&lt;/p&gt;
&lt;p&gt;Sıralanacak dizimiz şu olsun:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Shell Sort’ta ilk olarak gap’ler belirlenir. Gap denilen şey kaç tane sütün oluşturulacağının belirlenmesidir. Burada gap’in 4 olarak seçildiğini düşünelim.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 
&lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 
&lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Gap’ler belirlendikten sonra her sütün kendi arasında sıralanır.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 
&lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 
&lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;11&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Sıralama işleminden sonra tüm sütünlar bir araya getirilir.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;11&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Yukarıdaki aşama tekrar uygulanır. Fakat bu defa gap bir öncekinin yarısı olarak seçilir. Gap = 4 / 2 = 2.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 
&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 
&lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 
&lt;span class=&quot;token number&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 
&lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 
&lt;span class=&quot;token number&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;11&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Sütünlar tekrar kendi arasında sıralanır:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 
&lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 
&lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 
&lt;span class=&quot;token number&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 
&lt;span class=&quot;token number&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 
&lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;11&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Sütünlar tekrar bir araya getirilir:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;11&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Son olarak yukarıdaki aşama 1’lik gap’ler ile tekrarlanır ve bu şekilde de sıralı diziye ulaşılmış olur.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Yukarıdaki örneğin GoLang’de uygulanmış halini aşağıdan inceleyebilirsiniz.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;fmt&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

func &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token literal-property property&quot;&gt;array&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;int&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token function&quot;&gt;ShellSort&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;array&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;array&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

func &lt;span class=&quot;token function&quot;&gt;ShellSort&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;array &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token literal-property property&quot;&gt;gap&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;array&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; gap &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; gap &lt;span class=&quot;token operator&quot;&gt;/=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token literal-property property&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; gap&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;array&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			&lt;span class=&quot;token literal-property property&quot;&gt;x&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; array&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
			&lt;span class=&quot;token literal-property property&quot;&gt;j&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; i
			&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;&gt;=&lt;/span&gt; gap &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; array&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;gap&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; x&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;-=&lt;/span&gt; gap &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
				array&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; array&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;gap&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
			&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
			array&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; x
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Kodun çalışır halini test etmek için =&gt; &lt;a href=&quot;https://play.golang.org/p/OLvp1PKBL9x&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;RUN&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;br&gt;
&lt;p&gt;Shell Sort’un çalışma hızını test etmek için daha kapsamlı bir algoritma örneğini de aşağıdan incelenebilir.&lt;/p&gt;
&lt;p&gt;shell.go&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;sort&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// https://en.wikipedia.org/wiki/Shellsort&lt;/span&gt;
func &lt;span class=&quot;token function&quot;&gt;ShellSort&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;s sort&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Interface&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;

	&lt;span class=&quot;token literal-property property&quot;&gt;delta&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; s&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; delta &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		delta &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;float32&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;delta&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0.5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

		&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token literal-property property&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; delta&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; s&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			&lt;span class=&quot;token literal-property property&quot;&gt;it&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; i
			&lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; j int

			&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;j &lt;span class=&quot;token operator&quot;&gt;&gt;=&lt;/span&gt; delta&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Less&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;it&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; j&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;delta&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;-=&lt;/span&gt; delta &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
				&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; it &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
					it &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; delta
				&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;j &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; delta&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; it &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
					it &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; j
				&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
				s&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Swap&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; j&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;delta&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
			&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

			s&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Swap&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; it&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;shell_test.go&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;testing&quot;&lt;/span&gt;

func &lt;span class=&quot;token function&quot;&gt;TestShellSort&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;t &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;testing&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;T&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token literal-property property&quot;&gt;s&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;NewRandom&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token function&quot;&gt;ShellSort&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

func &lt;span class=&quot;token function&quot;&gt;BenchmarkShellSort&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;b &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;testing&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;B&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token function&quot;&gt;BenchAlgorithm&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;b&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; ShellSort&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;helper_test.go&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;fmt&quot;&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;math/rand&quot;&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;sort&quot;&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;testing&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

type SortType &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;uint

&lt;span class=&quot;token function&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a SortType&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; int           &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a SortType&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Swap&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; j int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;      &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; a&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; a&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; a&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; a&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a SortType&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Less&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; j int&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; bool &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; a&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; a&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

func &lt;span class=&quot;token function&quot;&gt;NewRandom&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;length uint&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; seed int64&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; SortType &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token literal-property property&quot;&gt;s&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; rand&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;NewSource&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;seed&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token literal-property property&quot;&gt;r&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; rand&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;New&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token literal-property property&quot;&gt;st&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;New&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;length&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

	r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Shuffle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;st&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;func&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; j int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		st&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; st&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; st&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; st&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; st
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

func &lt;span class=&quot;token function&quot;&gt;New&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;length uint&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; SortType &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token literal-property property&quot;&gt;s&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;SortType&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; length&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token literal-property property&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; range s &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		s&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;uint&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; s
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

func &lt;span class=&quot;token function&quot;&gt;NewReversed&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;length uint&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; SortType &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token literal-property property&quot;&gt;s&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;SortType&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; length&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token literal-property property&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; range s &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		s&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; length &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;uint&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; s
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

func &lt;span class=&quot;token function&quot;&gt;NewNearlySorted&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;length uint&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; seed int64&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; sparse uint&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; SortType &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token literal-property property&quot;&gt;s&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; rand&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;NewSource&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;seed&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token literal-property property&quot;&gt;r&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; rand&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;New&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token literal-property property&quot;&gt;st&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;New&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;length&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token literal-property property&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;uint&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; length&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token literal-property property&quot;&gt;newIndex&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;uint&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Intn&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;sparse&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

		&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; newIndex &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; length &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			st&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; st&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;newIndex&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; st&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;newIndex&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; st&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; st
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

func &lt;span class=&quot;token function&quot;&gt;NewFewUnique&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;length uint&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; seed int64&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; groups uint&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; SortType &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token literal-property property&quot;&gt;s&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; rand&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;NewSource&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;seed&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token literal-property property&quot;&gt;r&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; rand&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;New&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token literal-property property&quot;&gt;st&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;SortType&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; length&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token literal-property property&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;uint&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; length&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; groups &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token literal-property property&quot;&gt;j&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; length&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; j&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			st&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Shuffle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;st&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;func&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; j int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		st&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; st&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; st&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; st&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; st
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

func &lt;span class=&quot;token function&quot;&gt;NewOfType&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;t string&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; length uint&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; seed int64&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; SortType &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;switch&lt;/span&gt; t &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;random&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;NewRandom&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;length&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; seed&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;nearlysorted&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;NewNearlySorted&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;length&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; seed&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; length&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;reversed&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;NewReversed&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;length&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;fewunique&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;NewFewUnique&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;length&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; seed&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;length&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token function&quot;&gt;panic&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Sprintf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Unknown type %v&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; t&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

func &lt;span class=&quot;token function&quot;&gt;BenchAlgorithm&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;b &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;testing&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;B&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; f &lt;span class=&quot;token function&quot;&gt;func&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;sort&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Interface&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token literal-property property&quot;&gt;benchTypes&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;string&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token string&quot;&gt;&quot;random&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
		&lt;span class=&quot;token string&quot;&gt;&quot;nearlysorted&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
		&lt;span class=&quot;token string&quot;&gt;&quot;reversed&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
		&lt;span class=&quot;token string&quot;&gt;&quot;fewunique&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	&lt;span class=&quot;token literal-property property&quot;&gt;slicesLengths&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;uint&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; _&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token literal-property property&quot;&gt;t&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; range benchTypes &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		b&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Run&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;t&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;func&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;b &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;testing&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;B&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; _&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token literal-property property&quot;&gt;n&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; range slicesLengths &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
				b&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Run&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Sprintf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%v&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;func&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;b &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;testing&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;B&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
					b&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;StopTimer&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
					&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token literal-property property&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;N&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
						&lt;span class=&quot;token literal-property property&quot;&gt;slice&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;NewOfType&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;t&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;int64&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;n&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;b&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;N&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
						b&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;StartTimer&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
						&lt;span class=&quot;token function&quot;&gt;f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;slice&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
						b&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;StopTimer&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
					&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
				&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
			&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Benchmark.go&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;BenchmarkShellSort&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;random&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;                  &lt;span class=&quot;token number&quot;&gt;3000000&lt;/span&gt;               &lt;span class=&quot;token number&quot;&gt;538&lt;/span&gt; ns&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;op
BenchmarkShellSort&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;random&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;25&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;                  &lt;span class=&quot;token number&quot;&gt;1000000&lt;/span&gt;              &lt;span class=&quot;token number&quot;&gt;1294&lt;/span&gt; ns&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;op
BenchmarkShellSort&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;random&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;                   &lt;span class=&quot;token number&quot;&gt;500000&lt;/span&gt;              &lt;span class=&quot;token number&quot;&gt;3033&lt;/span&gt; ns&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;op
BenchmarkShellSort&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;random&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;                  &lt;span class=&quot;token number&quot;&gt;200000&lt;/span&gt;              &lt;span class=&quot;token number&quot;&gt;7600&lt;/span&gt; ns&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;op
BenchmarkShellSort&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;random&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;200&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;                  &lt;span class=&quot;token number&quot;&gt;100000&lt;/span&gt;             &lt;span class=&quot;token number&quot;&gt;24155&lt;/span&gt; ns&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;op
BenchmarkShellSort&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;random&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;300&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;                   &lt;span class=&quot;token number&quot;&gt;50000&lt;/span&gt;             &lt;span class=&quot;token number&quot;&gt;34732&lt;/span&gt; ns&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;op
BenchmarkShellSort&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;random&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;600&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;                   &lt;span class=&quot;token number&quot;&gt;20000&lt;/span&gt;             &lt;span class=&quot;token number&quot;&gt;84596&lt;/span&gt; ns&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;op
BenchmarkShellSort&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;random&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;                  &lt;span class=&quot;token number&quot;&gt;10000&lt;/span&gt;            &lt;span class=&quot;token number&quot;&gt;151735&lt;/span&gt; ns&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;op
BenchmarkShellSort&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;random&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2000&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;                   &lt;span class=&quot;token number&quot;&gt;5000&lt;/span&gt;            &lt;span class=&quot;token number&quot;&gt;371222&lt;/span&gt; ns&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;op
BenchmarkShellSort&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;random&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;5000&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;                   &lt;span class=&quot;token number&quot;&gt;2000&lt;/span&gt;           &lt;span class=&quot;token number&quot;&gt;1102749&lt;/span&gt; ns&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;op
BenchmarkShellSort&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;nearlysorted&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;            &lt;span class=&quot;token number&quot;&gt;3000000&lt;/span&gt;               &lt;span class=&quot;token number&quot;&gt;480&lt;/span&gt; ns&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;op
BenchmarkShellSort&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;nearlysorted&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;25&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;            &lt;span class=&quot;token number&quot;&gt;2000000&lt;/span&gt;               &lt;span class=&quot;token number&quot;&gt;999&lt;/span&gt; ns&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;op
BenchmarkShellSort&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;nearlysorted&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;             &lt;span class=&quot;token number&quot;&gt;500000&lt;/span&gt;              &lt;span class=&quot;token number&quot;&gt;2580&lt;/span&gt; ns&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;op
BenchmarkShellSort&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;nearlysorted&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;            &lt;span class=&quot;token number&quot;&gt;300000&lt;/span&gt;              &lt;span class=&quot;token number&quot;&gt;6373&lt;/span&gt; ns&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;op
BenchmarkShellSort&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;nearlysorted&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;200&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;            &lt;span class=&quot;token number&quot;&gt;100000&lt;/span&gt;             &lt;span class=&quot;token number&quot;&gt;16416&lt;/span&gt; ns&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;op
BenchmarkShellSort&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;nearlysorted&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;300&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;             &lt;span class=&quot;token number&quot;&gt;50000&lt;/span&gt;             &lt;span class=&quot;token number&quot;&gt;29462&lt;/span&gt; ns&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;op
BenchmarkShellSort&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;nearlysorted&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;600&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;             &lt;span class=&quot;token number&quot;&gt;20000&lt;/span&gt;             &lt;span class=&quot;token number&quot;&gt;68368&lt;/span&gt; ns&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;op
BenchmarkShellSort&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;nearlysorted&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;            &lt;span class=&quot;token number&quot;&gt;10000&lt;/span&gt;            &lt;span class=&quot;token number&quot;&gt;130586&lt;/span&gt; ns&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;op
BenchmarkShellSort&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;nearlysorted&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2000&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;             &lt;span class=&quot;token number&quot;&gt;5000&lt;/span&gt;            &lt;span class=&quot;token number&quot;&gt;303023&lt;/span&gt; ns&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;op
BenchmarkShellSort&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;nearlysorted&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;5000&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;             &lt;span class=&quot;token number&quot;&gt;2000&lt;/span&gt;            &lt;span class=&quot;token number&quot;&gt;939944&lt;/span&gt; ns&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;op
BenchmarkShellSort&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;reversed&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;                &lt;span class=&quot;token number&quot;&gt;2000000&lt;/span&gt;               &lt;span class=&quot;token number&quot;&gt;703&lt;/span&gt; ns&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;op
BenchmarkShellSort&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;reversed&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;25&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;                &lt;span class=&quot;token number&quot;&gt;1000000&lt;/span&gt;              &lt;span class=&quot;token number&quot;&gt;1253&lt;/span&gt; ns&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;op
BenchmarkShellSort&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;reversed&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;                 &lt;span class=&quot;token number&quot;&gt;500000&lt;/span&gt;              &lt;span class=&quot;token number&quot;&gt;2762&lt;/span&gt; ns&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;op
BenchmarkShellSort&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;reversed&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;                &lt;span class=&quot;token number&quot;&gt;300000&lt;/span&gt;              &lt;span class=&quot;token number&quot;&gt;5716&lt;/span&gt; ns&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;op
BenchmarkShellSort&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;reversed&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;200&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;                &lt;span class=&quot;token number&quot;&gt;100000&lt;/span&gt;             &lt;span class=&quot;token number&quot;&gt;13647&lt;/span&gt; ns&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;op
BenchmarkShellSort&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;reversed&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;300&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;                &lt;span class=&quot;token number&quot;&gt;100000&lt;/span&gt;             &lt;span class=&quot;token number&quot;&gt;22099&lt;/span&gt; ns&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;op
BenchmarkShellSort&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;reversed&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;600&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;                 &lt;span class=&quot;token number&quot;&gt;30000&lt;/span&gt;             &lt;span class=&quot;token number&quot;&gt;49397&lt;/span&gt; ns&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;op
BenchmarkShellSort&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;reversed&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;                &lt;span class=&quot;token number&quot;&gt;20000&lt;/span&gt;             &lt;span class=&quot;token number&quot;&gt;87561&lt;/span&gt; ns&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;op
BenchmarkShellSort&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;reversed&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2000&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;                &lt;span class=&quot;token number&quot;&gt;10000&lt;/span&gt;            &lt;span class=&quot;token number&quot;&gt;189891&lt;/span&gt; ns&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;op
BenchmarkShellSort&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;reversed&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;5000&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;                 &lt;span class=&quot;token number&quot;&gt;3000&lt;/span&gt;            &lt;span class=&quot;token number&quot;&gt;568537&lt;/span&gt; ns&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;op
BenchmarkShellSort&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;fewunique&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;               &lt;span class=&quot;token number&quot;&gt;3000000&lt;/span&gt;               &lt;span class=&quot;token number&quot;&gt;489&lt;/span&gt; ns&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;op
BenchmarkShellSort&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;fewunique&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;25&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;               &lt;span class=&quot;token number&quot;&gt;1000000&lt;/span&gt;              &lt;span class=&quot;token number&quot;&gt;1189&lt;/span&gt; ns&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;op
BenchmarkShellSort&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;fewunique&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;                &lt;span class=&quot;token number&quot;&gt;500000&lt;/span&gt;              &lt;span class=&quot;token number&quot;&gt;2693&lt;/span&gt; ns&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;op
BenchmarkShellSort&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;fewunique&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;               &lt;span class=&quot;token number&quot;&gt;200000&lt;/span&gt;              &lt;span class=&quot;token number&quot;&gt;6040&lt;/span&gt; ns&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;op
BenchmarkShellSort&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;fewunique&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;200&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;               &lt;span class=&quot;token number&quot;&gt;100000&lt;/span&gt;             &lt;span class=&quot;token number&quot;&gt;16905&lt;/span&gt; ns&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;op
BenchmarkShellSort&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;fewunique&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;300&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;                &lt;span class=&quot;token number&quot;&gt;50000&lt;/span&gt;             &lt;span class=&quot;token number&quot;&gt;24623&lt;/span&gt; ns&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;op
BenchmarkShellSort&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;fewunique&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;600&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;                &lt;span class=&quot;token number&quot;&gt;20000&lt;/span&gt;             &lt;span class=&quot;token number&quot;&gt;56229&lt;/span&gt; ns&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;op
BenchmarkShellSort&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;fewunique&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;               &lt;span class=&quot;token number&quot;&gt;20000&lt;/span&gt;            &lt;span class=&quot;token number&quot;&gt;100739&lt;/span&gt; ns&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;op
BenchmarkShellSort&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;fewunique&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2000&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;               &lt;span class=&quot;token number&quot;&gt;10000&lt;/span&gt;            &lt;span class=&quot;token number&quot;&gt;230638&lt;/span&gt; ns&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;op
BenchmarkShellSort&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;fewunique&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;5000&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;                &lt;span class=&quot;token number&quot;&gt;2000&lt;/span&gt;            &lt;span class=&quot;token number&quot;&gt;639915&lt;/span&gt; ns&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;op&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.geeksforgeeks.org/shellsort/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.geeksforgeeks.org/shellsort/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.golangprograms.com/golang-program-for-implementation-of-shellsort.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.golangprograms.com/golang-program-for-implementation-of-shellsort.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.toptal.com/developers/sorting-algorithms/shell-sort&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.toptal.com/developers/sorting-algorithms/shell-sort&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/DanielRamosAcosta/sorting-algorithms-go&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://github.com/DanielRamosAcosta/sorting-algorithms-go&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.programiz.com/dsa/shell-sort&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.programiz.com/dsa/shell-sort&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2020/shell-sort-golang-implementasyonu/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[GoLang de İki Dizi Arasındaki Farkı Bulma]]></title><description><![CDATA[Elimizde iki adet dizi olduğu düşünelim. Bu iki diziden bir tanesinin elemanlarının diğer dizinin içerisinde olmayanlarını belirlemek istediğimizde, bu iki diziyi bir karşılaştırma işlemine sokmamız gerekiyor.]]></description><link>https://blog.hkucuk.com/2020/golang-de-iki-dizi-arasindaki-farki-bulma/</link><guid isPermaLink="false">https://blog.hkucuk.com/2020/golang-de-iki-dizi-arasindaki-farki-bulma/</guid><pubDate>Wed, 29 Jan 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Elimizde iki adet dizi olduğu düşünelim. Bu iki diziden bir tanesinin elemanlarının diğer dizinin içerisinde olmayanlarını belirlemek istediğimizde, bu iki diziyi bir karşılaştırma işlemine sokmamız gerekiyor. Aşağıda bu işlemi GoLang programlamla dilinde yerine getiren örnek bir fonksiyon yer almaktadır.&lt;/p&gt;
&lt;p&gt;Örnek diziler ve bu dizilerin karşılaştırması sonucunda elde edilmesi beklenen çıktı şu şekilde:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token literal-property property&quot;&gt;dizi1&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;int8&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token literal-property property&quot;&gt;dizi2&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;int8&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// sonuç&lt;/span&gt;
dizi1 &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;token parameter&quot;&gt;dizi2&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;GoLang de iki diziyi karşılaştırıp farkını bulan fonksiyon:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;func &lt;span class=&quot;token function&quot;&gt;difference&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; b &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;int8&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;int8 &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;

    &lt;span class=&quot;token literal-property property&quot;&gt;target&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; map&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;int8&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;bool&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; _&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token literal-property property&quot;&gt;x&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; range b &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        target&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token literal-property property&quot;&gt;result&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;int8&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; _&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token literal-property property&quot;&gt;x&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; range a &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; _&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token literal-property property&quot;&gt;ok&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; target&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;ok &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            result &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;result&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; x&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; result
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;İki dizinin farkını bulma işlemi:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;func &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	
    &lt;span class=&quot;token literal-property property&quot;&gt;array1&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;int8&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token literal-property property&quot;&gt;array2&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;int8&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token literal-property property&quot;&gt;result&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;difference&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;array1&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; array2&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;array1 / array2 =&gt; &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; result&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// output: array1 / array2 =&gt;  [1 2]&lt;/span&gt;

    &lt;span class=&quot;token literal-property property&quot;&gt;result2&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;difference&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;array2&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; array1&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;array2 / array1 =&gt; &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; result2&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// output: array2 / array1 =&gt;  []&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Kodun çalışır halini test etmek için =&gt; &lt;a href=&quot;https://play.golang.org/p/QRPQmmFAaSg&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;RUN&lt;/a&gt;&lt;/p&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2020/golang-de-iki-dizi-arasindaki-farki-bulma/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Turbojet, Turboprop ve Propellerjet Arasındaki Farklar]]></title><description><![CDATA[Turbojet, en basit jet motorudur. Giriş, sıkıştırma, yanma, türbin ve çıkış bölümlerinden oluşur. Diğer tüm jet moturu tipleri, bu motor türüne dayanmaktadır. Bu nedenle en başta turbojet motorların çalışma şeklini anlamamız, turboprop ve propeller-jet motorların çalışma mantığını anlamamıza yardımcı olacaktır.]]></description><link>https://blog.hkucuk.com/2019/turbojet-turboprop-ve-propellerjet-arasindaki-farklar/</link><guid isPermaLink="false">https://blog.hkucuk.com/2019/turbojet-turboprop-ve-propellerjet-arasindaki-farklar/</guid><pubDate>Wed, 27 Nov 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Turbojet, en basit jet motorudur. Giriş, sıkıştırma, yanma, türbin ve çıkış bölümlerinden oluşur. Diğer tüm jet moturu tipleri, bu motor türüne dayanmaktadır.&lt;/p&gt;
&lt;p&gt;Bu nedenle en başta turbojet motorların çalışma şeklini anlamamız, turboprop ve propeller-jet motorların çalışma mantığını anlamamıza yardımcı olacaktır.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/d6df9d55244677bbdb0984aa4c285387/7b1dc/jet-engine.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 40.54054054054054%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAIAAAB2/0i6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAB5klEQVR42hWR7W/SUBTG+Q/1m1GzOKKZ0X0wxmTDZUZdIktGxKBljDkoZdiyDWQFxothMIToRkzYFpVFN+gECrTQslDWt3t7LU/OyfPl/HLOyWNBCBkQNpkGwzAI6EKXvWzUO2xb7HOGYQContfPf9XOmPrfkTSC5sD4ujUQenwfQmhBhnExhp8KlcBW7MV2bgrPLnjIZQ/hCERX8wfF3Hrxw43XYX+MjlI+LDM33bU/7uyGgdA3t1rMrl2pvnTRT0bWdpIbu19C2zF/iHJ58RUMC+HvMuszb4Nuigom1hxl95ufz25HbbYKnUVjaQL3mIv9vThJURn6c2GPzqYSqWQinYwflUvfD4+PTytn38Kn1ZNSqZzN5aq1PydbZJMikSBM4GpHdFK0BydfrhL35pfuzz6ZfvDwjnVmccURxJ1Jt3UZx8hQwLX41Dt79+jRzdjzhR90GkkjiyzLv4fKZqESptOvdvanvPG59wE75nMS0Y2Dr6U8cfjxlj2yGY/HIoQ3NW8duGyDfAZeDSc/cxwn9nmoyjrQJXHANS/5XncoCkKflyXJQPBaA+0e3/zHAKDrEGhmOghBY6LJ2aZpOlAUpc12mq0Wx/MAQE3XVU0zC+gagkAQhHqj0WZZTZE1RVFV1eT/A1a3eMXyWnniAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Turbojet Engine&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/d6df9d55244677bbdb0984aa4c285387/fcda8/jet-engine.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/d6df9d55244677bbdb0984aa4c285387/12f09/jet-engine.png 148w,https://blog.hkucuk.com/static/d6df9d55244677bbdb0984aa4c285387/e4a3f/jet-engine.png 295w,https://blog.hkucuk.com/static/d6df9d55244677bbdb0984aa4c285387/fcda8/jet-engine.png 590w,https://blog.hkucuk.com/static/d6df9d55244677bbdb0984aa4c285387/efc66/jet-engine.png 885w,https://blog.hkucuk.com/static/d6df9d55244677bbdb0984aa4c285387/7b1dc/jet-engine.png 956w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;p&gt;Turbojet motorlarında hava kompresör tarafından emilir ve hacmini düşürmek ve sıcaklığını arttırmak için sıkıştırılır. Ardından yüksek sıcaklık ve basınçtaki hava yakıtla karıştığı ve çok yüksek sıcaklıkta yandığı yanma odasına girer. Bu işlemin sonucunda elde edilen sıcak gazlar, kompresöre bir mil aracılığıyla bağlanan türbini döndürür.&lt;/p&gt;
&lt;p&gt;Türbin, kompresörün istenen RPM’de dönmesini sağlamak amacıyla üretilen enerjinin yaklaşık %60’ını emer. Enerjinin geri kalan %40’ı, sıcak gazlar şeklinde motorun arka tarafından yüksek hızda dışarıya atılır. &lt;a href=&quot;https://www.physicsclassroom.com/Class/newtlaws/u2l4a.cfm&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Newton’un III. Yasası&lt;/a&gt; her etki için aynı büyüklükte ve ters yönde bir tepki olduğunu söylemektedir. Bu kural hava motordan çıktığında işlemektedir. Yüksek hızlı gazlar geriye doğru hareket eder (&lt;strong&gt;hareket&lt;/strong&gt;) ve motor ileri doğru hareket eder (&lt;strong&gt;reaksiyon&lt;/strong&gt;).&lt;/p&gt;
&lt;p&gt;Turbojet motorlu uçaklar yüksek hızda ve irtifada yakıt tasarrufluyken pervaneli uçaklar düşük veya orta hızda yakıt tasarrufludur. Bunun sebebi, pervanelerin belirli hızlardan sonra çok fazla sürükleme (&lt;a href=&quot;https://blog.hkucuk.me/ucaklarin-ucmasinda-aerodinamik-kuvvetlerin-etkisi/#drag-force-s%C3%BCr%C3%BCkleme-kuvveti&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;drag forca&lt;/a&gt;) üretmesidir. Bu nedenle pervaneli uçaklar turbojetli uçaklar kadar hızlı uçamazlar.&lt;/p&gt;
&lt;p&gt;Yüksek hızlı uçaklar, kısa kalkış ve iniş için uygun olmayan arka kanat tasarımına sahiptir. Tasarımları dolayısıyla yavaş uçaklar kısa pistlerde kalkış ve iniş yapabilirler. Bu nedenle onları turboprop-lar gibi daha çok yakıt verimliliği sağlayan motorlarla donatmak mantıklıdır.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/ddc55835991b005ea9d2d909abd9f647/bac6a/turboprop.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 58.10810810810811%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAYAAABiDJ37AAAACXBIWXMAAAsTAAALEwEAmpwYAAADXklEQVR42n1SbUyTVxQ+L29rWYGuFrQKxBFhRnBj8YdOYrQ/NFNCZkz8gOCMmDDGNFYTQgMbKNEBhZYClg3yRgo6UZSCVCnQsrYp7WixtCidAlHchwyNsuAYYgXM8V4/En+YPclz7znn5nnuuR8ABPO/gAj7YQViKGySreIf5TjG9WIBkmSbeR/FxPBWxqxkERGSt28HoVDIroiOZstyFIx06VIekQdRDz6fD2+x6MA2SM7ZCyVEQxFJxee9Xhp/QCgl/JDWRq1mdtny4CUkF9NcwDLSiHBJ+KcJ8fDJ6lXwLnYTltOgyuP++DpixNmeDsm51vaoooJK0ZqNeUE48Bc8cvUD4mGAJAziEAW0O6fVDCOeXxm/wwrG1pbXboJFvC9ZBvJorP9jMqVt5rm2/Z8nf3b6vc+NXdf+tnd2uwd67C1+i1Xb5y0+Y+JybTcrasdu9HQ4rhra4ixmIzi6O4LONzUBJCauoz502Hqo6ast6YrUSUVFwfCpn7Vz39VkY74mDYuqM7BYdRhVpQo8od6NBSUp2KgsRVfrRfSaDC6AWdI5MqfVGgBN5eUojabQp8qqaty3trZsf3ZWQNmic5w2GVCu/Bqz83bgsfw9ePx4Nl5qqCZmyfhN5mfYUabGUYsR/aZ29FzVp/huemHIaWVBreqU1FTltxUePMntk+rSyrV63RCiwhSY76s1XLlbV8fZ9PVNZ83NhuIxt0vu8hXkNOTsqh08WVl/12b0+7ta0dfv8LkRY++8eVWKOMJDpO3gttHB+J1yuZj+BJLTbwFcrgru9d6gx4LB299DUTjARHkNuGymDJvHjdeGRyYc008zfc8CAA2esYRlsXFp0Usidb+1ePdzCs0m4hEqChGFlCrrXplsXb+OlYjFq8MXL078PClWdNtSxnaRumPq323G8Qc/tj+ZjXLNzML4whzAAmKYICwsLUIsOTek7/+iIle5YbjRDqYrduan5kuvDGUyGW00hFDIsiy4xydgjNR7AwsCed0ZMEzNQN+zOaZ+5B5Aum4y8ocjEanqb6XlBq1zB1eoTvI1O+H3zlvMmth4eB/oJuTOwEpYXHIKuh8+Znqnpl8vZlRbhLfMm0NwQBzquIB8Z8NlHhXgfYT/Q19gHuz/zYJ9+in0kvktXgIRDaY2A6UDjAAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Turboprop Engine&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/ddc55835991b005ea9d2d909abd9f647/fcda8/turboprop.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/ddc55835991b005ea9d2d909abd9f647/12f09/turboprop.png 148w,https://blog.hkucuk.com/static/ddc55835991b005ea9d2d909abd9f647/e4a3f/turboprop.png 295w,https://blog.hkucuk.com/static/ddc55835991b005ea9d2d909abd9f647/fcda8/turboprop.png 590w,https://blog.hkucuk.com/static/ddc55835991b005ea9d2d909abd9f647/efc66/turboprop.png 885w,https://blog.hkucuk.com/static/ddc55835991b005ea9d2d909abd9f647/c83ae/turboprop.png 1180w,https://blog.hkucuk.com/static/ddc55835991b005ea9d2d909abd9f647/bac6a/turboprop.png 2149w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;p&gt;Turboprop motorların mimarisi (&lt;em&gt;yukarıda&lt;/em&gt;) oldukça basittir. Turbojet motorların önüne bir dişli kutusu ve pervane eklenerek turboprop motorlar elde edilebilir.&lt;/p&gt;
&lt;p&gt;Pervaneli jet motorlarının mimarisine ve özelliklerine bakmadan önce turbofan motorlarından da bahsetmek gerekmektedir.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/ebddfa1e06d40a79b15389d8bfb43329/4b190/turbofan.jpg&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 53.37837837837838%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAALABQDASIAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAAIBAwQF/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAH/2gAMAwEAAhADEAAAAelXreJGK//EABoQAAEFAQAAAAAAAAAAAAAAAAABAgMREhD/2gAIAQEAAQUCe6VDUgl08ynP/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPwE//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPwE//8QAGBABAQADAAAAAAAAAAAAAAAAABEQITH/2gAIAQEABj8CVtHMf//EABkQAQADAQEAAAAAAAAAAAAAAAEAESExEP/aAAgBAQABPyGwwDaohTTSZOGC23IA54//2gAMAwEAAgADAAAAEPvP/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPxA//8QAFREBAQAAAAAAAAAAAAAAAAAAEBH/2gAIAQIBAT8Qh//EABoQAQEBAQEBAQAAAAAAAAAAAAERACFRQWH/2gAIAQEAAT8QEZU6zfB8uSHaUIN/Pl1GFDoNmB6XKVL3csd7gAhv/9k=&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Turbofan Engine&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/ebddfa1e06d40a79b15389d8bfb43329/1c72d/turbofan.jpg&quot;
        srcset=&quot;https://blog.hkucuk.com/static/ebddfa1e06d40a79b15389d8bfb43329/a80bd/turbofan.jpg 148w,https://blog.hkucuk.com/static/ebddfa1e06d40a79b15389d8bfb43329/1c91a/turbofan.jpg 295w,https://blog.hkucuk.com/static/ebddfa1e06d40a79b15389d8bfb43329/1c72d/turbofan.jpg 590w,https://blog.hkucuk.com/static/ebddfa1e06d40a79b15389d8bfb43329/4b190/turbofan.jpg 800w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;p&gt;Turbojet motorlarının aksine, ön kısımdan giren havanın çoğu yanma odasından geçmez. Türbine bir mil aracılığıyla bağlanan büyük kanallı bir fan, motorun etrafındaki havayı hızlandırır. Bypass motorları olarak da bilinen turbofan motorları, turbojet motorlarına göre daha çok yakıt tasarrufu sağlarlar ve daha sessiz çalışırlar.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/4e7e4a96460f2a63e720dd14ac8cffba/c08c5/propellerjet.jpg&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 56.75675675675676%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAALABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAMEBv/EABUBAQEAAAAAAAAAAAAAAAAAAAAB/9oADAMBAAIQAxAAAAFsaoq0hnRP/8QAGhAAAgMBAQAAAAAAAAAAAAAAAQIAAxITEf/aAAgBAQABBQLkFjlA1eMdrIWPoJn/xAAWEQEBAQAAAAAAAAAAAAAAAAAAERL/2gAIAQMBAT8BxEf/xAAWEQADAAAAAAAAAAAAAAAAAAABEBH/2gAIAQIBAT8BpX//xAAcEAABBAMBAAAAAAAAAAAAAAAAAQIiMREygWH/2gAIAQEABj8CnnhFzl8KTpsWWf/EABsQAQEBAAIDAAAAAAAAAAAAAAEAESExYYGR/9oACAEBAAE/IQGpXmsbCxoPteTP0qQdvt//2gAMAwEAAgADAAAAEFff/8QAFhEBAQEAAAAAAAAAAAAAAAAAEQAB/9oACAEDAQE/ENBhf//EABYRAQEBAAAAAAAAAAAAAAAAAAEAEf/aAAgBAgEBPxBS1v/EAB0QAQACAgIDAAAAAAAAAAAAAAEAESExQVFhcaH/2gAIAQEAAT8QX9IMwPLKmwAMKqt3iMHKBDv2Re/jREyDe5fXf2n/2Q==&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Snecma open rotor GE36: Propeller Jet&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/4e7e4a96460f2a63e720dd14ac8cffba/1c72d/propellerjet.jpg&quot;
        srcset=&quot;https://blog.hkucuk.com/static/4e7e4a96460f2a63e720dd14ac8cffba/a80bd/propellerjet.jpg 148w,https://blog.hkucuk.com/static/4e7e4a96460f2a63e720dd14ac8cffba/1c91a/propellerjet.jpg 295w,https://blog.hkucuk.com/static/4e7e4a96460f2a63e720dd14ac8cffba/1c72d/propellerjet.jpg 590w,https://blog.hkucuk.com/static/4e7e4a96460f2a63e720dd14ac8cffba/c08c5/propellerjet.jpg 640w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;p&gt;Temelde propeller jet motorları ve turboprop motorları aynı şeylerdir. Bir jet motoru, bir güç kontrol kolu veya PCL tarafından kontrol edilen bir pervaneyi döndürür.&lt;/p&gt;
&lt;p&gt;Propeller jet motorları ilginç bir motor türüdür (&lt;em&gt;yukarıda&lt;/em&gt;). Tasarımı bir turbofanın tam tersidir fakat by-pass oranı turbofanlardan oldukça yüksektir. Bu yüzden ultra yüksek by-pass motoru olarakta adlandırılırlar.&lt;/p&gt;
&lt;p&gt;Ultra yüksek by-passlı bir motor, eşdeğer bir turbofan motorundan %25 daha az yakıt yakar. Jet motorları gibi yüksek hız ve yüksek irtifa için uygundur ancan iki nedenden dolayı ticari kullanım için uygun değildir:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;İzin verilen gürültü standartlarını karşılamamak&lt;/li&gt;
&lt;li&gt;Yalnızca kuyruğa monte edilebilmesi.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.wikiwand.com/en/Turboprop&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.wikiwand.com/en/Turboprop&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://barriosengineeringportfolio.weebly.com/jet-engine-design.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://barriosengineeringportfolio.weebly.com/jet-engine-design.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://howthingsfly.si.edu/ask-an-explainer/what-difference-between-turbojetturboprop-and-turbofan-engines&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://howthingsfly.si.edu/ask-an-explainer/what-difference-between-turbojetturboprop-and-turbofan-engines&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://arrowaircraft.com/differences-in-turboprop-and-turbojet-aircraft/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://arrowaircraft.com/differences-in-turboprop-and-turbojet-aircraft/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.novajet.com/knowledge-sharing/what-difference-between-turboprop-turbofan-engines/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.novajet.com/knowledge-sharing/what-difference-between-turboprop-turbofan-engines/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2019/turbojet-turboprop-ve-propellerjet-arasindaki-farklar/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Uçakların Uçmasında Aerodinamik Kuvvetlerin Etkisi]]></title><description><![CDATA[Amatör olarak havacılık ile ilgileniyorum. Uçaklarda kullanılan teknolojilere, uçağın uçmak için hazırlanması sürecindeki işleyişe, insanların-kargoların uçağa ulaştırılması ve uçaktan çıkartılması süreçlerine hayranlık duyuyorum. "Uçmak insanlık için en önemli başarı mı?" tartışılabilecek bir konu ama uçmak için kanatlara sahip olmayan varlıklar olarak doğanın kurallarına meydan okuduğumuz kesin.]]></description><link>https://blog.hkucuk.com/2019/ucaklarin-ucmasinda-aerodinamik-kuvvetlerin-etkisi/</link><guid isPermaLink="false">https://blog.hkucuk.com/2019/ucaklarin-ucmasinda-aerodinamik-kuvvetlerin-etkisi/</guid><pubDate>Tue, 12 Nov 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Amatör olarak havacılık ile ilgileniyorum. Uçaklarda kullanılan teknolojilere, uçağın uçmak için hazırlanması sürecindeki işleyişe, insanların-kargoların uçağa ulaştırılması ve uçaktan çıkartılması süreçlerine hayranlık duyuyorum. “Uçmak insanlık için en önemli başarı mı?” tartışılabilecek bir konu ama uçmak için kanatlara sahip olmayan varlıklar olarak doğanın kurallarına meydan okuduğumuz kesin.&lt;/p&gt;
&lt;p&gt;Bu yazı aerodinamik kuvvetleri ve uçakların nasıl uçtuğu ile ilgili. Havacılıkla hiç ilgimiz olmasa da aerodinamik kuvvetlerini okuyup uçakların nasıl hareket ettiğini anlamak hiç zor değil.&lt;/p&gt;
&lt;p&gt;Uçakları düşündüğümüzde birçok insan en önemli elemanın motorlar olduğunu düşünür fakat bu doğru değildir. Bir uçağı havada tutan ve ağırlığını dengeleyen ana eleman kanatlardır. Planörleri, kağıt uçakları, kuşları düşündüğümüzde motorsuz bir şekilde uçma eyleminin gerçekleşebildiğini görebiliriz. Tabii bu motorlar gereksiz anlamına da gelmemektedir. :)&lt;/p&gt;
&lt;p&gt;Aerodinamik kuvvetlerini anlayarak bir uçağın nasıl uçtuğunu kolayca anlayabiliriz. &lt;a href=&quot;https://en.wikipedia.org/wiki/Aerodynamics&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Aerodinamik&lt;/a&gt;; hareket eden katı kütlelerin havayla etkileşimini inceler. Basitçe; aerodinamik nesnelerin havada hareket etme şeklidir ve aerodinamik kuralları bir uçağın nasıl uçtuğunu açıklamaktadır. Havada hareket eden uçaklara etki eden 4 adet kuvvet vardır. Bunlar: &lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token function&quot;&gt;Lift&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;kaldırma&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;Thrust&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;itme&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;Drag&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;sürükleme&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;Weight&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;ağırlık&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&apos;tır&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Ağırlık uçaklara etki eder ama bir aerodinamik kuvvet değildir.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/b23168127f55dfc4df18133353f4e57f/14747/aerodynamic-forces.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 40.54054054054054%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAYAAAD5nd/tAAAACXBIWXMAAAsTAAALEwEAmpwYAAACK0lEQVR42m2RXUjTURjGn3P+rjKIqMnWmiBNbXMOK0qb3VQaFBpdROESM21lXRQhJPQ5K1O2WgsaxWADiWZSWQQFQYVuw7mv1lw6dEGSCt10EUTeWHZ6/yu6iA68nI/n9z7nvO/BTwDfVBpk7j7B+09fsdubYhtvxPiZhk4uSJtTLFIJLq15RmtbTStv9E9wIQSa/eNYdy2Koksh7Gzvh8zKAcEYHgNsqHozk8GD/jHoroaBtMAXfYUMGd+AtQCKfDhjaH8+A+LYyYFJde3tZNnSswH0mLbzh5LE/ho6afaUrc2Bp59mS/b4Ro2He5MFHiHyxAppOYGaXcQc8KVVLX3jlU33xk4VXAhOKc8HWg3dYXwnzc75nxcC27JcsrwCihu8CVvh5WGx8lxArLoY+qG2hbLVrug7szM6WNQ1EtR1DQsqM03zjLYzJI4/mjg6/2F6dR9gmGS8kbyqyJAt3g9WqqPDUqtLu8GVrC23jzSbb8bjVNLCXl8qUed5O1rcHUlTKwZN9siAyRFx7LiTrHcNfVRTVZIB0NVTa8hQIRviGMV6em2h1Q3j9QQqHBG5/CUv5oSGoHwKJcmMDgHLA+DES9BluBWchlgQqCSxWZZ/l8xQwyW2jBLqOtzY4k5xfU84T/6gz01tMqSndhwi1KgEL7giJ1l6pSpXTHK8npJ3UIExM+XnDP8d1vsZtPVnEN93JAfMc0lLH1c+K19esolt7fBiVvw3NTd+AeML3qUEECELAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Aerodynamic Forces&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/b23168127f55dfc4df18133353f4e57f/fcda8/aerodynamic-forces.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/b23168127f55dfc4df18133353f4e57f/12f09/aerodynamic-forces.png 148w,https://blog.hkucuk.com/static/b23168127f55dfc4df18133353f4e57f/e4a3f/aerodynamic-forces.png 295w,https://blog.hkucuk.com/static/b23168127f55dfc4df18133353f4e57f/fcda8/aerodynamic-forces.png 590w,https://blog.hkucuk.com/static/b23168127f55dfc4df18133353f4e57f/efc66/aerodynamic-forces.png 885w,https://blog.hkucuk.com/static/b23168127f55dfc4df18133353f4e57f/c83ae/aerodynamic-forces.png 1180w,https://blog.hkucuk.com/static/b23168127f55dfc4df18133353f4e57f/14747/aerodynamic-forces.png 1914w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;lift-force-kaldırma-kuvveti&quot;&gt;&lt;a href=&quot;#lift-force-kald%C4%B1rma-kuvveti&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Lift Force (Kaldırma Kuvveti)&lt;/h2&gt;
&lt;p&gt;Aşağıdaki şekilden de anlaşılacağı gibi lift (kaldırma) yukarı yönde etki eden aerodinamik kuvvettir. Lift, uçağın havada kalmasını sağlar. Yukarı yönlü bu kuvvet, uçağın ağırlığını dengeler ve lift (kaldırma)‘in weight (ağırlık)‘ten büyük olduğu durumda uçak yükselir. Peki lift nasıl oluşturulur. Tabii ki uçağın kanatlarının yardımıyla.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/bac267ce28edc85b4e146e404fff362f/a8e08/lift-force.jpg&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 48.64864864864865%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAKABQDASIAAhEBAxEB/8QAGAAAAgMAAAAAAAAAAAAAAAAAAAECBAX/xAAUAQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIQAxAAAAHQlaYxh//EABwQAAEDBQAAAAAAAAAAAAAAAAIAAQQDEBESQf/aAAgBAQABBQI5OjjLokstbi//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/AT//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/AT//xAAbEAABBAMAAAAAAAAAAAAAAAARAAEDcSAhMv/aAAgBAQAGPwIPHJYXQvWP/8QAGhABAAMAAwAAAAAAAAAAAAAAAQARIRBBUf/aAAgBAQABPyElrDpmMVt4YGLHgB0XAAoJ/9oADAMBAAIAAwAAABCwD//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8QP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8QP//EABwQAQACAgMBAAAAAAAAAAAAAAEAMREhQWGhcf/aAAgBAQABPxDMTHPfYjUFkvrIXuvYACjSSqmtH0ZgAAFAT//Z&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Lift Force&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/bac267ce28edc85b4e146e404fff362f/1c72d/lift-force.jpg&quot;
        srcset=&quot;https://blog.hkucuk.com/static/bac267ce28edc85b4e146e404fff362f/a80bd/lift-force.jpg 148w,https://blog.hkucuk.com/static/bac267ce28edc85b4e146e404fff362f/1c91a/lift-force.jpg 295w,https://blog.hkucuk.com/static/bac267ce28edc85b4e146e404fff362f/1c72d/lift-force.jpg 590w,https://blog.hkucuk.com/static/bac267ce28edc85b4e146e404fff362f/a8e08/lift-force.jpg 594w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;p&gt;Yukarıdaki fotoğraf bir uçak kanadının şeklini göstermektedir. Uçak kanatlarının üstü kavisli, alt tarafları ise düzdür. Bu şekil havanın yukarıdan aşağıya doğru daha hızlı akmasını sağlar. Sonuç olarak da altta yüksek basınç, üst kısımda da alçak basınç oluşur. Bu basınç farkı kanadı ve ona bağlı uçağı yukarı hareket ettirir.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;thrust-force-i̇tme-kuvveti&quot;&gt;&lt;a href=&quot;#thrust-force-i%CC%87tme-kuvveti&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Thrust Force (İtme Kuvveti)&lt;/h2&gt;
&lt;p&gt;İtme gücü, uçağı ileri doğru iten jet motorları-pervaneler-roketler tarafından üretilen kuvvettir. Thrust (itme) drag (sürükleme)‘den yüksek olduğunda uçak ileri doğru hareket eder.&lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/d6df9d55244677bbdb0984aa4c285387/7b1dc/jet-engine.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 40.54054054054054%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAIAAAB2/0i6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAB5klEQVR42hWR7W/SUBTG+Q/1m1GzOKKZ0X0wxmTDZUZdIktGxKBljDkoZdiyDWQFxothMIToRkzYFpVFN+gECrTQslDWt3t7LU/OyfPl/HLOyWNBCBkQNpkGwzAI6EKXvWzUO2xb7HOGYQContfPf9XOmPrfkTSC5sD4ujUQenwfQmhBhnExhp8KlcBW7MV2bgrPLnjIZQ/hCERX8wfF3Hrxw43XYX+MjlI+LDM33bU/7uyGgdA3t1rMrl2pvnTRT0bWdpIbu19C2zF/iHJ58RUMC+HvMuszb4Nuigom1hxl95ufz25HbbYKnUVjaQL3mIv9vThJURn6c2GPzqYSqWQinYwflUvfD4+PTytn38Kn1ZNSqZzN5aq1PydbZJMikSBM4GpHdFK0BydfrhL35pfuzz6ZfvDwjnVmccURxJ1Jt3UZx8hQwLX41Dt79+jRzdjzhR90GkkjiyzLv4fKZqESptOvdvanvPG59wE75nMS0Y2Dr6U8cfjxlj2yGY/HIoQ3NW8duGyDfAZeDSc/cxwn9nmoyjrQJXHANS/5XncoCkKflyXJQPBaA+0e3/zHAKDrEGhmOghBY6LJ2aZpOlAUpc12mq0Wx/MAQE3XVU0zC+gagkAQhHqj0WZZTZE1RVFV1eT/A1a3eMXyWnniAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Thrust Force&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/d6df9d55244677bbdb0984aa4c285387/fcda8/jet-engine.png&quot;
        srcset=&quot;https://blog.hkucuk.com/static/d6df9d55244677bbdb0984aa4c285387/12f09/jet-engine.png 148w,https://blog.hkucuk.com/static/d6df9d55244677bbdb0984aa4c285387/e4a3f/jet-engine.png 295w,https://blog.hkucuk.com/static/d6df9d55244677bbdb0984aa4c285387/fcda8/jet-engine.png 590w,https://blog.hkucuk.com/static/d6df9d55244677bbdb0984aa4c285387/efc66/jet-engine.png 885w,https://blog.hkucuk.com/static/d6df9d55244677bbdb0984aa4c285387/7b1dc/jet-engine.png 956w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    &lt;/p&gt;
&lt;p&gt;Thrust (itme) kuvvetinin oluşması motorların işlevinde saklıdır. Tüm motorlar, girişten (inlet) havayı alır ve kompresör ile sıkıştırır. Ardından türbin içerisindeki yanma odasında yakıtı kullanarak yakar ve enerji üretilir. Daha sonra yüksek basınçlı hava motorun arka tarafından yüksek hızda dışarı çıkartılır. &lt;a href=&quot;https://www.physicsclassroom.com/Class/newtlaws/u2l4a.cfm&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Newton’un III. Yasası&lt;/a&gt; her etki için aynı büyüklükte ve ters yönde bir tepki olduğunu söylemektedir. Bu kural hava motordan çıktığında işlemektedir. Yüksek hızlı hava motordan çıktığında uçağı ileri doğru itmektedir.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;drag-force-sürükleme-kuvveti&quot;&gt;&lt;a href=&quot;#drag-force-s%C3%BCr%C3%BCkleme-kuvveti&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Drag Force (Sürükleme Kuvveti)&lt;/h2&gt;
&lt;p&gt;Her harekette, kesinlikle bir miktar dirençli kuvvet vardır. Uçağın hareketine karşı çıkan kuvvette Drag (sürükleme) kuvvetidir. Bir nesnenin şekli sürükleme miktarını etkilemektedir. Dar yüzeyler genellikle geniş olanlardan daha az sürtünmeye sahiptir. Aynı şekilde yuvarlak yüzeyler de genellikle düz olanlardan daha az sürtünmeye sahiptir. Bir yüzeye çarpan hava miktarı arttığında drag(sürükleme)‘nin kuvveti de artacaktır.&lt;/p&gt;
&lt;p&gt;Bu sebeplerle uçaklar maksimum lift (kaldırma) ve minimum drag (sürükleme) üretecek şekilde tasarlanırlar.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;weight-force-ağırlık-kuvveti&quot;&gt;&lt;a href=&quot;#weight-force-a%C4%9F%C4%B1rl%C4%B1k-kuvveti&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Weight Force (Ağırlık Kuvveti)&lt;/h2&gt;
&lt;p&gt;Ağırlık tüm kuvvetlerin en basiti ama en önemlisidir. Bu yüzden uçak yapı mühendisliğinin ana kuralı şudur: “Mümkün olduğu kadar hafif tasarla”.&lt;/p&gt;
&lt;p&gt;Burada &lt;a href=&quot;https://en.wikipedia.org/wiki/Snowball_effect&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Kartopu Etkisi&lt;/a&gt;‘nden bahsedilebilir. &lt;/p&gt;
&lt;p&gt;
  &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;https://blog.hkucuk.com/static/ea3252a6677483581c10ee459389c352/c2807/snowball-effect.jpg&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
  
  &lt;span
    class=&quot;gatsby-resp-image-wrapper&quot;
    style=&quot;position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;&quot;
  &gt;
    &lt;span
      class=&quot;gatsby-resp-image-background-image&quot;
      style=&quot;padding-bottom: 55.4054054054054%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAALABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAIDBf/EABUBAQEAAAAAAAAAAAAAAAAAAAAB/9oADAMBAAIQAxAAAAHXqglBQ//EABYQAQEBAAAAAAAAAAAAAAAAAAABIP/aAAgBAQABBQJMR//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8BP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8BP//EABQQAQAAAAAAAAAAAAAAAAAAACD/2gAIAQEABj8CX//EABoQAAMBAAMAAAAAAAAAAAAAAAABMREQIVH/2gAIAQEAAT8hfTxYReHTX6Qf/9oADAMBAAIAAwAAABDDH//EABURAQEAAAAAAAAAAAAAAAAAAAEQ/9oACAEDAQE/EAn/xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/ED//xAAdEAEAAgICAwAAAAAAAAAAAAABABExURAhYYGR/9oACAEBAAE/ENQGBqBBkV44vftyw2PsSm1fc//Z&apos;); background-size: cover; display: block;&quot;
    &gt;
      &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        style=&quot;width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;&quot;
        alt=&quot;Snowball Effect&quot;
        title=&quot;&quot;
        src=&quot;https://blog.hkucuk.com/static/ea3252a6677483581c10ee459389c352/1c72d/snowball-effect.jpg&quot;
        srcset=&quot;https://blog.hkucuk.com/static/ea3252a6677483581c10ee459389c352/a80bd/snowball-effect.jpg 148w,https://blog.hkucuk.com/static/ea3252a6677483581c10ee459389c352/1c91a/snowball-effect.jpg 295w,https://blog.hkucuk.com/static/ea3252a6677483581c10ee459389c352/1c72d/snowball-effect.jpg 590w,https://blog.hkucuk.com/static/ea3252a6677483581c10ee459389c352/c2807/snowball-effect.jpg 615w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
      /&gt;
    &lt;/span&gt;
  &lt;/span&gt;
  
  &lt;/a&gt;
    
Bir uçağın ağırlığını azaltırsanız, uçmak için daha az miktarda kaldırma kuvveti gerekecektir. Daha düşük kaldırma ihtiyacı da kanat boyutunu küçültebileceğiniz anlamına gelir. Yine daha küçük motorlar daha az sürtünmeye sebep olur, bu nedenle daha küçük motorlarla üretilecek daha az itme kuvveti yeterli olur. Sonunda da daha küçük motorlar ve kanat boyutu, uçak ağırlığında daha da azalmaya yol açacaktır. &lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.aviation-history.com/theory/airfoil.htm&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;http://www.aviation-history.com/theory/airfoil.htm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://aerospaceengineeringblog.com/jet-engine-design/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://aerospaceengineeringblog.com/jet-engine-design/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.physicsclassroom.com/Class/newtlaws/u2l4a.cfm&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.physicsclassroom.com/Class/newtlaws/u2l4a.cfm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://moodle.insa-lyon.fr/pluginfile.php/40040/mod_resource/content/1/wrenches/Aerodynamic_Forces_Drag_Lift-Thrust.pdf&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://moodle.insa-lyon.fr/pluginfile.php/40040/mod_resource/content/1/wrenches/Aerodynamic_Forces_Drag_Lift-Thrust.pdf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tr.wikipedia.org/wiki/Aerodinamik&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://tr.wikipedia.org/wiki/Aerodinamik&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.explainthatstuff.com/howplaneswork.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.explainthatstuff.com/howplaneswork.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2019/ucaklarin-ucmasinda-aerodinamik-kuvvetlerin-etkisi/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Heap Sort ile Veri Sıralama Sanatı]]></title><description><![CDATA[Sıralama algoritmaları, bilgisayar bilimlerinin temel taşlarından birini oluşturur. Bilgisayarlar verilerle çalışırken, bu verileri düzenlemek ve sıralamak sıklıkla karşılaşılan bir gerekliliktir. Bu nedenle, sıralama algoritmaları bilgisayar bilimleri ve yazılım geliştirmenin vazgeçilmez bir parçasıdır.]]></description><link>https://blog.hkucuk.com/2019/heap-sort/</link><guid isPermaLink="false">https://blog.hkucuk.com/2019/heap-sort/</guid><pubDate>Sun, 10 Nov 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Sıralama algoritmaları, bilgisayar bilimlerinin temel taşlarından birini oluşturur. Bilgisayarlar verilerle çalışırken, bu verileri düzenlemek ve sıralamak sıklıkla karşılaşılan bir gerekliliktir. Bu nedenle, sıralama algoritmaları bilgisayar bilimleri ve yazılım geliştirmenin vazgeçilmez bir parçasıdır. Veri sıralamasının birçok farklı alanda kullanıldığına tanık olabiliriz, örneğin veri tabanlarındaki kayıtların sıralanması, arama motorlarının sonuçlarının sıralanması, grafiklerin çizdirilmesi sırasında verilerin düzenlenmesi gibi birçok uygulama bu temel işlemi gerektirir. Bu yüzden bilim insanları ve yazılım geliştiricileri, veri sıralama işlemi için en verimli ve etkili yöntemleri geliştirmeye ve optimize etmeye çalışırlar. Bu amaçla birçok farklı sıralama algoritması tasarlanmış ve incelenmiştir.&lt;/p&gt;
&lt;h3 id=&quot;heap-sort-nedir&quot;&gt;&lt;a href=&quot;#heap-sort-nedir&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Heap Sort Nedir?&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Heapsort&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Heap Sort&lt;/a&gt;, veri sıralama işlemi için kullanılan bir karşılaştırmalı sıralama algoritmasıdır. Bu algoritma, veriyi bir ağaç yapısı olan bir “heap” (yığın) kullanarak sıralar. Heap, bir ağaç yapısı olup her düğümün iki alt düğümü vardır. Bununla birlikte, Heap Sort’ta kullanılan heap, “maksimum heap” veya “minimum heap” olarak adlandırılır ve belirli bir özelliği korur: Her düğümün üst düğümden daha büyük (maksimum heap) veya daha küçük (minimum heap) olması gerekir.&lt;/p&gt;
&lt;p&gt;Heap Sort, bu maksimum veya minimum heap yapısını kullanarak sıralama işlemini gerçekleştirir. İşlem sırasında, heap yapısı verilerin yeniden düzenlenmesi için kullanılır ve sonuç olarak sıralanmış bir veri dizisi elde edilir.&lt;/p&gt;
&lt;h3 id=&quot;heap-sort-nasıl-çalışır&quot;&gt;&lt;a href=&quot;#heap-sort-nas%C4%B1l-%C3%A7al%C4%B1%C5%9F%C4%B1r&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Heap Sort Nasıl Çalışır?&lt;/h3&gt;
&lt;p&gt;Heap Sort algoritması aşağıdaki adımları izler:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Başlangıçta Max Heap Oluşturma: İlk adım, veri dizisini bir maksimum heap yapısı haline getirmektir. Bu, diziyi baştan sona dolaşarak heap özelliğini sağlamak için “heapify” adı verilen bir işlemi içerir. Bu işlem, her düğümün üst düğümden daha büyük olduğundan emin olur.&lt;/li&gt;
&lt;li&gt;Kök Düğümü ile Son Elemanı Değiştirme: Maksimum heap yapısının oluşturulmasının ardından, kök düğümü (en büyük eleman) ile son elemanın yerini değiştirilir. Bu, en büyük elemanın sıralanan bölümün sonuna taşınması anlamına gelir.&lt;/li&gt;
&lt;li&gt;Heap Boyutunu Azaltma: Veri dizisinin sonundaki eleman artık sıralanmıştır, bu nedenle heap boyutunu bir azaltırız. Yani heap yapısının son elemanını çıkarırız.&lt;/li&gt;
&lt;li&gt;Heapify İşlemi: Kök düğümünü tekrar heap özelliğini sağlayacak şekilde düzenlemek için “heapify” işlemi yapılır.&lt;/li&gt;
&lt;li&gt;Tekrarlama: Adımlar 2-4, heap yapısı tamamen boşalana kadar tekrarlanır. Bu, veri dizisi tamamen sıralanana kadar devam eder.&lt;/li&gt;
&lt;li&gt;Sonuç: Heap yapısı tamamen boşaldığında, veri dizisi sıralanmış olur ve işlem tamamlanır.&lt;/li&gt;
&lt;/ol&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;img src=&quot;https://blog.hkucuk.com/b7907d351809293c60658b0b87053c66/gif.gif&quot; alt=&quot;Heap Sort&quot;&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src=&quot;https://blog.hkucuk.com/2d571b4de2faccf2df0c7890db0dc9b7/gif2.gif&quot; alt=&quot;Heap Sort&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Aşağıda, Heap Sort algoritmasının basit bir pseudocode örneği verilmiştir:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;procedure &lt;span class=&quot;token function&quot;&gt;heapSort&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;arr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
    n &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;length&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;arr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i from n&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; down to &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;heapify&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;arr&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i from n down to &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;swap&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;arr&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; arr&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;heapify&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;arr&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

procedure &lt;span class=&quot;token function&quot;&gt;heapify&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;arr&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
    largest &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; i
    leftChild &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; i
    rightChild &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; leftChild &lt;span class=&quot;token operator&quot;&gt;&amp;lt;=&lt;/span&gt; n and arr&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;leftChild&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; arr&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;largest&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
        largest &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; leftChild

    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; rightChild &lt;span class=&quot;token operator&quot;&gt;&amp;lt;=&lt;/span&gt; n and arr&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;rightChild&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; arr&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;largest&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
        largest &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; rightChild

    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; largest &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;swap&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;arr&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; arr&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;largest&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;heapify&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;arr&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; largest&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id=&quot;heap-sortun-zaman-ve-alan-karmaşıklığı&quot;&gt;&lt;a href=&quot;#heap-sortun-zaman-ve-alan-karma%C5%9F%C4%B1kl%C4%B1%C4%9F%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Heap Sort’un Zaman ve Alan Karmaşıklığı&lt;/h3&gt;
&lt;p&gt;Heap Sort, en kötü durumda O(n log n) zaman karmaşıklığına sahiptir. Ayrıca, ekstra bir bellek gerektirmez, bu nedenle O(1) ekstra bellek karmaşıklığına sahiptir. Bu özellikleri nedeniyle Heap Sort, büyük veri setleri üzerinde etkili bir sıralama algoritmasıdır.&lt;/p&gt;
&lt;h3 id=&quot;kullanım-alanları&quot;&gt;&lt;a href=&quot;#kullan%C4%B1m-alanlar%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kullanım Alanları&lt;/h3&gt;
&lt;p&gt;Heap Sort, genellikle yerleşik sıralama fonksiyonları kullanılamadığında veya sabit bellek kullanımı gerektiren uygulamalarda tercih edilir. Özellikle gömülü sistemlerde, işlemci kaynakları sınırlı olduğunda ve harici belleğin kullanılmasına izin verilmediğinde tercih edilen bir sıralama algoritmasıdır.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Heap Sort, etkili bir sıralama algoritmasıdır ve genellikle veri sıralamak için kullanılır. Max Heap yapısının kullanımı ve veri dizisinin sürekli olarak yeniden düzenlenmesi, bu algoritmanın veri sıralama işlemi için etkili bir yol olduğunu gösterir. Ancak, daha hızlı sıralama algoritmaları mevcut olduğunda ve ekstra bellek kullanımına izin verildiğinde, bu alternatifler tercih edilebilir.&lt;/p&gt;
&lt;p&gt;Heap Sort, bilgisayar bilimlerinin temel konularından biridir ve sıralama algoritmaları hakkında daha fazla bilgi edinmek isteyenler için önemli bir başlangıç noktasıdır.&lt;/p&gt;
&lt;h2 id=&quot;golangde-heap-sort-uygulaması&quot;&gt;&lt;a href=&quot;#golangde-heap-sort-uygulamas%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;GoLang’de Heap Sort uygulaması:&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;fmt&quot;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;heapSort&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;arr &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    n &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;arr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; n&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;heapify&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;arr&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; n &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        arr&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; arr&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; arr&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; arr&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;heapify&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;arr&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;heapify&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;arr &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; i &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    largest &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; i
    leftChild &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;i &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
    rightChild &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;i &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; leftChild &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; n &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; arr&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;leftChild&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; arr&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;largest&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        largest &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; leftChild
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; rightChild &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; n &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; arr&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;rightChild&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; arr&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;largest&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        largest &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; rightChild
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; largest &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; i &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        arr&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; arr&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;largest&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; arr&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;largest&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; arr&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;heapify&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;arr&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; largest&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    arr &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Unsorted Array:&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; arr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;token function&quot;&gt;heapSort&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;arr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Sorted Array:&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; arr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Program çalıştırıldığında çıktısı aşağıdaki gibi olacaktır.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;json&quot;&gt;&lt;pre class=&quot;language-json&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;Unsorted Array&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;11&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;13&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
Sorted Array&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;7&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;11&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Programın çalışır haline &lt;a href=&quot;https://go.dev/play/p/k8EOz_NHRMH&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;şuradan&lt;/a&gt; erişilebilir.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Heapsort&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/Heapsort&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2019/heap-sort/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Fibonacci Arama: Sıralı Dizilerde Etkili Bir Arama Yöntemi]]></title><description><![CDATA[Arama algoritmaları, bilgisayar bilimlerinin temel taşlarından birini oluşturur ve geniş bir uygulama yelpazesi bulunmaktadır. Veri işleme, veri tabanları, bilgisayar grafikleri ve daha birçok alanda, verileri düzenlemek ve hedeflenen bilgilere erişmek için arama algoritmalarına ihtiyaç duyulur.]]></description><link>https://blog.hkucuk.com/2019/fibonacci-search/</link><guid isPermaLink="false">https://blog.hkucuk.com/2019/fibonacci-search/</guid><pubDate>Fri, 14 Jun 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Arama algoritmaları, bilgisayar bilimlerinin temel taşlarından birini oluşturur ve geniş bir uygulama yelpazesi bulunmaktadır. Veri işleme, veri tabanları, bilgisayar grafikleri ve daha birçok alanda, verileri düzenlemek ve hedeflenen bilgilere erişmek için arama algoritmalarına ihtiyaç duyulur. Bu makalede, geleneksel arama algoritmalarından farklı bir yaklaşım olan &lt;a href=&quot;https://en.wikipedia.org/wiki/Fibonacci_search_technique&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Fibonacci Search&lt;/a&gt; tekniği üzerinde bir inceleme yapacağız.&lt;/p&gt;
&lt;h3 id=&quot;fibonacci-search-nedir&quot;&gt;&lt;a href=&quot;#fibonacci-search-nedir&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Fibonacci Search Nedir?&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Fibonacci_search_technique&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Fibonacci Search&lt;/a&gt;, sıralanmış bir dizi içinde bir öğenin konumunu belirlemek için Fibonacci sayılarını kullanır. Bu algoritma, veri koleksiyonunun belirli bir bölümünü ele alır ve bu bölümü alt dizilere bölerken Fibonacci sayılarına dayalı bir indeks hesaplaması yapar. Bu yaklaşım, veri koleksiyonu içindeki hedef öğeyi hızlı bir şekilde bulmak için kararlı ve etkili bir yol sunar.&lt;/p&gt;
&lt;h3 id=&quot;fibonacci-sayıları-nedir&quot;&gt;&lt;a href=&quot;#fibonacci-say%C4%B1lar%C4%B1-nedir&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Fibonacci Sayıları Nedir?&lt;/h3&gt;
&lt;p&gt;Fibonacci sayıları, her sayının kendisinden önceki iki sayının toplamı olduğu bir sayı dizisidir. Bu sayı dizisi şu şekildedir: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, … Fibonacci sayılarının özelliği, sayılar büyüdükçe birbirleriyle oranlarının yaklaşık olarak 1.61803 (altın oran) olduğudur.&lt;/p&gt;
&lt;h3 id=&quot;fibonacci-search-algoritması&quot;&gt;&lt;a href=&quot;#fibonacci-search-algoritmas%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Fibonacci Search Algoritması&lt;/h3&gt;
&lt;p&gt;Fibonacci Search algoritması aşağıdaki adımları izler:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Başlangıçta iki Fibonacci sayısı olan &lt;code class=&quot;language-text&quot;&gt;F(k-2)&lt;/code&gt; ve &lt;code class=&quot;language-text&quot;&gt;F(k-1)&lt;/code&gt; seçilir, böylece &lt;code class=&quot;language-text&quot;&gt;F(k-1)&lt;/code&gt; koleksiyonun boyutundan küçük ve &lt;code class=&quot;language-text&quot;&gt;F(k-2)&lt;/code&gt; koleksiyonun boyutundan büyük olur.&lt;/li&gt;
&lt;li&gt;Şu andaki aralık &lt;code class=&quot;language-text&quot;&gt;arr[0..F(k)]&lt;/code&gt; içinde bir öğeyi aramak için &lt;code class=&quot;language-text&quot;&gt;k&lt;/code&gt; değeri hesaplanır.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code class=&quot;language-text&quot;&gt;arr[F(k-2)]&lt;/code&gt; ve &lt;code class=&quot;language-text&quot;&gt;arr[F(k-1)]&lt;/code&gt; arasında bir karşılaştırma yapılır.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Eğer aranan öğe, &lt;code class=&quot;language-text&quot;&gt;arr[F(k-2)]&lt;/code&gt;‘den küçükse, arama aralığı &lt;code class=&quot;language-text&quot;&gt;arr[0..F(k-2)]&lt;/code&gt; olarak güncellenir ve işlem tekrarlanır.&lt;/li&gt;
&lt;li&gt;Eğer aranan öğe, &lt;code class=&quot;language-text&quot;&gt;arr[F(k-2)]&lt;/code&gt;‘den büyükse, arama aralığı &lt;code class=&quot;language-text&quot;&gt;arr[F(k-2)..F(k-1)]&lt;/code&gt; olarak güncellenir ve işlem tekrarlanır.&lt;/li&gt;
&lt;li&gt;Eğer aranan öğe, &lt;code class=&quot;language-text&quot;&gt;arr[F(k-2)]&lt;/code&gt; ile &lt;code class=&quot;language-text&quot;&gt;arr[F(k-1)]&lt;/code&gt; arasındaki öğeye eşitse, öğe bulunmuş olur.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Aranan öğe bulunana kadar veya arama aralığı boşalana kadar bu adımlar tekrarlanır.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Aşağıda, Fibonacci Search algoritmasının basit bir pseudocode örneği verilmiştir:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;function &lt;span class=&quot;token function&quot;&gt;FibonacciSearch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;arr&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; x&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
    n &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;length&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;arr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    fibM &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;    &lt;span class=&quot;token comment&quot;&gt;// Fib(k-2)&lt;/span&gt;
    fibN &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;    &lt;span class=&quot;token comment&quot;&gt;// Fib(k-1)&lt;/span&gt;
    fibK &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; fibM &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; fibN

    while &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;fibK &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
        fibM &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; fibN
        fibN &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; fibK
        fibK &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; fibM &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; fibN

    offset &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;

    while &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;fibK &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
        i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;min&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;offset &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; fibM&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; n &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;arr&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; x&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
            fibK &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; fibN
            fibN &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; fibM
            fibM &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; fibK &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; fibN
            offset &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; i

        &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;arr&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; x&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
            fibK &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; fibM
            fibN &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; fibN &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; fibM
            fibM &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; fibK &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; fibN

        &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; i  &lt;span class=&quot;token comment&quot;&gt;// Element found at index i&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;fibN &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; arr&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;offset &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; x&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; offset &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// Element found at index offset + 1&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// Element not found&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id=&quot;zaman-ve-alan-karmaşıklığı&quot;&gt;&lt;a href=&quot;#zaman-ve-alan-karma%C5%9F%C4%B1kl%C4%B1%C4%9F%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Zaman ve Alan Karmaşıklığı&lt;/h3&gt;
&lt;p&gt;Fibonacci Search, ortalama durumda O(log n) zaman karmaşıklığına sahiptir. En kötü durumda da O(n) kadar iyi performans gösterir. Alan karmaşıklığı ise O(1) olarak kabul edilir.&lt;/p&gt;
&lt;h3 id=&quot;kullanım-alanları&quot;&gt;&lt;a href=&quot;#kullan%C4%B1m-alanlar%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kullanım Alanları&lt;/h3&gt;
&lt;p&gt;Fibonacci Search, özellikle büyük sıralanmış koleksiyonlarda ve özellikle altın oranın belirli bir rol oynadığı alanlarda kullanılır. İdeal olarak, aranacak öğenin yerini yaklaşık olarak tahmin etmek ve bu nedenle aramayı optimize etmek istediğiniz durumlar için uygundur.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Fibonacci Search, geleneksel arama algoritmalarından farklı bir yaklaşım sunar ve sıralanmış veri koleksiyonlarında hızlı arama yapmak için kullanışlıdır. Fibonacci sayılarının özelliği, bu algoritmanın verimliliğini artırır. Ancak, veri koleksiyonlarının boyutu ve yapısı gibi faktörler algoritmanın performansını etkileyebilir, bu nedenle kullanmadan önce dikkatlice düşünülmesi gereken bir yöntemdir.&lt;/p&gt;
&lt;h2 id=&quot;golangde-fibonacci-search-uygulaması&quot;&gt;&lt;a href=&quot;#golangde-fibonacci-search-uygulamas%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;GoLang’de Fibonacci Search uygulaması:&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;go&quot;&gt;&lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;package&lt;/span&gt; main

&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;fmt&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;FibonacciSearch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;arr &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; x &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	n &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;arr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	fibM&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; fibN&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; fibK &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; fibK &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; n &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		fibM&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; fibN &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; fibN&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; fibK
		fibK &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; fibM &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; fibN
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	offset &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; fibK &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		i &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;min&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;offset&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;fibM&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; n&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

		&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; arr&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; x &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			fibK &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; fibN
			fibN &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; fibM
			fibM &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; fibK &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; fibN
			offset &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; i
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; arr&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; x &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			fibK &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; fibM
			fibN &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; fibN &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; fibM
			fibM &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; fibK &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; fibN
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; i
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; fibN &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; arr&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;offset&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; x &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; offset &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;min&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; y &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; x &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; y &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; x
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; y
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	arr &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;22&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;35&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;40&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;45&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;82&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;85&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;90&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	x &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;85&lt;/span&gt;

	index &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;FibonacciSearch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;arr&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; x&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; index &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d found at index %d.\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; x&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; index&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		fmt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d not found.\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; x&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Program çalıştırıldığında çıktısı aşağıdaki gibi olacaktır.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;json&quot;&gt;&lt;pre class=&quot;language-json&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;&lt;span class=&quot;token number&quot;&gt;85&lt;/span&gt; found at index &lt;span class=&quot;token number&quot;&gt;8&lt;/span&gt;.&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Programın çalışır haline &lt;a href=&quot;https://go.dev/play/p/djCRtJ5j524&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;şuradan&lt;/a&gt; erişilebilir.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Fibonacci_search_technique&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/Fibonacci_search_technique&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2019/fibonacci-search/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Kanı-İstek-Hedef Etmenlerinin Geliştirilmesi için bir Tersine Mühendislik Yöntemi]]></title><description><![CDATA[Ege Üniversitesi Uluslararası Bilgisayar Enstitüsünde Bilgisayar Bilimleri alanındaki yüksek lisansımı Doç. Dr. Geylani KARDAŞ hocamın danışmanlığında, yazılım mühendisliği konusunda yazdığım bir tez ile bitirdim.]]></description><link>https://blog.hkucuk.com/2019/kani-istek-hedef-etmenlerinin-gelistirilmesi-icin-bir-tersine-muhendislik-yontemi/</link><guid isPermaLink="false">https://blog.hkucuk.com/2019/kani-istek-hedef-etmenlerinin-gelistirilmesi-icin-bir-tersine-muhendislik-yontemi/</guid><pubDate>Mon, 04 Feb 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Ege Üniversitesi Uluslararası Bilgisayar Enstitüsünde Bilgisayar Bilimleri alanındaki yüksek lisansımı &lt;a href=&quot;http://akademik.ube.ege.edu.tr/~kardas/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Doç. Dr. Geylani KARDAŞ&lt;/a&gt; hocamın danışmanlığında, yazılım mühendisliği konusunda yazdığım bir tez ile bitirdim.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;“Kanı-İstek-Hedef Etmenlerinin Geliştirilmesi için bir Tersine Mühendislik Yöntemi”&lt;/em&gt; ismini taşıyan tez çalışmamda; otonom çalışma yeteneğine sahip yazılım etmenlerinin geliştirilmesi sürecini kolaylaştıran model güdümlü mimarilerdeki bir eksikliğin giderilmesi için bir yöntem önermekteyiz. Buradaki eksik, model yardımıyla tasarlanıp sonrasında çalıştırılabilir kodları üretilen etmen yazılım sistemlerinde, son çalıştırılabilir kodda yapılan değişikliklerin tasarım modellerine aktarılamamasıdır. Bu eksiklik yeniden yapılan her modelden kod üretimi işleminde, kodda yapılan son değişikliklerin yeni sisteme aktarılamamasına sebep olmaktadır.&lt;/p&gt;
&lt;p&gt;Tez çalışmasının sonuçları 7. Ulusal Yazılım Mimarisi Konferansı (UYMK 2018) (29-30 Kasım 2018, İstanbul, Türkiye, ss. 1-16)‘de yayınlanmıştır. &lt;a href=&quot;http://ceur-ws.org/Vol-2291/paper6_2.pdf&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Tez’e erişmek için tıklayınız&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;YÖK tarafından kabul edilen tez çalışması &lt;strong&gt;539474&lt;/strong&gt; tez numarası ile &lt;a href=&quot;https://tez.yok.gov.tr/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;YÖK Tez Merkezi&lt;/a&gt;‘de yayınlanmıştır. &lt;a href=&quot;https://tez.yok.gov.tr/UlusalTezMerkezi/TezGoster?key=as2oTjW5jfr9IKSvmCdJYtaXa3cYhpRtKM8jPfICfLDHYB2x5waOFCmGUGMWXmQt&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Tez’i indirmek için tıklayınız&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Tez’in özet kısmını okuyup bilgi sahibi olmak isteyenler aşağıda özet kısmını bulabilirler:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Kanı-İstek-Hedef (BDI) etmenlerinin model-güdümlü mimari kullanılarak
geliştirilmesinde, genellikle yukarıdan aşağıya bir yaklaşım izlenerek, etmenler
önce tanımlanan bir üstmodele göre çeşitli bakışaçılarından modellenmektedir.
Sonrasında, hazırlanan bu modeller bir dizi modelden modele ve modelden koda
dönüşümlere girdi olarak verilmektedir. Bu dönüşümler işletilerek etmen
yazılımlarının otomatik elde edilmesi sağlanmaktadır. Fakat bu süreçte kod
üretiminin ardından geliştiricilerin yazılım kodlarında yapacakları değişiklikler
etmen tasarım modellerine yansıtılamamaktadır. Mevcut çalışmalarda görülen bu
eksiklik, özellikle hazırlanan etmen modellerinin ve yazılımlarının yeniden
kullanılabilirliğini zorlaştırmaktadır. Bu tezde, söz konusu eksikliği gidermek
amacıyla etmen sistemlerinin yazılım kodlarından BDI modellerinin otomatik elde
edilmesini sağlayacak bir tersine mühendislik yöntemi ve bunu destekleyen bir
araç geliştirilmiştir. Yeni yöntemin uygulanması ile yaygın kullanıma sahip JACK
platformu üzerinde çalışan yazılımlardan etmenlerin BDI modellerinin geri elde
edilmesi ve böylece kodlardaki değişikliklerin etmen yazılım modellerine
yansıtılması mümkün hale getirilmiştir.&lt;/p&gt;
&lt;/blockquote&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2019/kani-istek-hedef-etmenlerinin-gelistirilmesi-icin-bir-tersine-muhendislik-yontemi/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Bir Alt Dizin için Virtual Host Oluşturma]]></title><description><![CDATA[Virtual Host (Sanal Konak), bir sunucu üzerinde birden fazla siteyi barındırmak istediğimizde kullanılmaktadır.]]></description><link>https://blog.hkucuk.com/2018/bir-alt-dizin-icin-virtual-host-olusturma/</link><guid isPermaLink="false">https://blog.hkucuk.com/2018/bir-alt-dizin-icin-virtual-host-olusturma/</guid><pubDate>Mon, 22 Oct 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Virtual Host (Sanal Konak), bir sunucu üzerinde birden fazla siteyi barındırmak istediğimizde kullanılmaktadır. Örnek olarak 3 adet domainimiz ve sunucuda da 3 adet farklı projemiz(klasör diyebiliriz) olduğunu düşünelim.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;example.com ---&gt; /var/www/example&lt;/li&gt;
&lt;li&gt;example2.com ---&gt; /var/www/example2&lt;/li&gt;
&lt;li&gt;example3.com ---&gt; /var/www/example3&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Bu domainlerin oklar ile gösterilen klasörlerdeki projeleri çalıştırmasını sağlamak için virtual host tanımlamalarını yapmamız gerekiyor. Bunun için aşağıdaki gibi bir tanımlama işimizi görecektir.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;VirtualHost &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
    DocumentRoot &lt;span class=&quot;token string&quot;&gt;&quot;/var/www/example&quot;&lt;/span&gt;
    ServerName example&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;com
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;VirtualHost&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;

&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;VirtualHost &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
    DocumentRoot &lt;span class=&quot;token string&quot;&gt;&quot;/var/www/example2&quot;&lt;/span&gt;
    ServerName example2&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;com
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;VirtualHost&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;

&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;VirtualHost &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
    DocumentRoot &lt;span class=&quot;token string&quot;&gt;&quot;/var/www/example3&quot;&lt;/span&gt;
    ServerName example3&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;com
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;VirtualHost&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Yukarıdaki tanımlamalar bize farklı domainler için farklı projeleri çalıştırma imkanını sağlamaktadır. Fakat aynı domain içerisinde farklı alt dizinlerin farklı projeleri çalıştırmasını Virtual Host ile nasıl sağlayabiliriz?&lt;/p&gt;
&lt;p&gt;Bunun için yukarıdaki tanımlamaya yeni bir ekleme yapmamız yeterlidir. Örnek olarak bir adet domainimiz olduğunu ve 3 adet farklı projemiz olduğunu düşünelim.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;example.com ---&gt; /var/www/example&lt;/li&gt;
&lt;li&gt;example.com/alt1 ---&gt; /var/www/example2&lt;/li&gt;
&lt;li&gt;example.com/alt2 ---&gt; /var/www/example3&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Bu domain ve alt dizinlerin oklarla gösterilen projeleri çalıştırmalarını sağlamak için Virtual Host tanımlamalarımızı şu şekilde organize etmemiz yeterli olmaktadır.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;VirtualHost &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
    DocumentRoot &lt;span class=&quot;token string&quot;&gt;&quot;/var/www/example&quot;&lt;/span&gt;
    ServerName example&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;com

    Alias &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;alt1 &lt;span class=&quot;token string&quot;&gt;&quot;/var/www/example2&quot;&lt;/span&gt;
    Alias &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;alt2 &lt;span class=&quot;token string&quot;&gt;&quot;/var/www/example3&quot;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;VirtualHost&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;h2 id=&quot;kaynaklar&quot;&gt;&lt;a href=&quot;#kaynaklar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kaynaklar&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://httpd.apache.org/docs/2.4/tr/vhosts/index.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://httpd.apache.org/docs/2.4/tr/vhosts/index.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://httpd.apache.org/docs/2.4/tr/vhosts/examples.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://httpd.apache.org/docs/2.4/tr/vhosts/examples.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://serverfault.com/questions/497541/virtual-host-on-a-sub-directory&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://serverfault.com/questions/497541/virtual-host-on-a-sub-directory&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://stackoverflow.com/questions/19055372/redirect-to-a-subfolder-in-apache-virtual-host-file&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://stackoverflow.com/questions/19055372/redirect-to-a-subfolder-in-apache-virtual-host-file&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://httpd.apache.org/docs/2.4/tr/vhosts/name-based.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://httpd.apache.org/docs/2.4/tr/vhosts/name-based.html&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2018/bir-alt-dizin-icin-virtual-host-olusturma/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Singleton Tasarım Deseni]]></title><description><![CDATA[Singleton, tasarım desenleri arasındaki en basit modellerden birisidir ve yaratıcı tasarım desenleri arasında yer almaktadır.]]></description><link>https://blog.hkucuk.com/2018/singleton-tasarim-deseni/</link><guid isPermaLink="false">https://blog.hkucuk.com/2018/singleton-tasarim-deseni/</guid><pubDate>Thu, 13 Sep 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Singleton, tasarım desenleri arasındaki en basit modellerden birisidir ve yaratıcı tasarım desenleri arasında yer almaktadır. Singleton ile sistem içerisinde bir sınıfın yalnızca bir tane nesnesinin oluşturulabilmesi garanti altına alınmaktadır.&lt;/p&gt;
&lt;p&gt;Bazı durumlar da bir sınıfın yalnızca tek bir örneği işlemlerimizi gerçekleştirmemiz için yeterlidir. Örneğin, veri tabanı bağlansını gerçekleştiren bir sınıfımız olduğunu düşünelim. Bu sınıfımızı kullanmak isteyecek birden fazla nesnemiz olabilir/olacaktır. Böyle bir durumda her nesnenin bu sınıfı kullanmak için ayrı ayrı birden fazla veritabanı bağlantı nesnesi üretmeleri maliyetli ve gereksiz olacaktır. Bu durumun önüne geçmek için sistemde veritabanı sınıfından tek bir tane nesne üretilmesini ve veritabanı sınıfına ihtiyaç duyan nesnelerin bu nesneye erişmelerini sağlayacak bir sınıf işimizi görecektir.&lt;/p&gt;
&lt;p&gt;Bu tasarım deseni kullanılarak, sistem içerisindeki genel değişkenler ya da değeri değişmeyen değişkenler tek bir nesnede toplanabilir. Sistem içerisinde tek nesne yaratılabilmesi yordamlar ve statik değişkenler yardımıyla gerçekleştirilebilir.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;yöntem-1-klasik-yöntem&quot;&gt;&lt;a href=&quot;#y%C3%B6ntem-1-klasik-y%C3%B6ntem&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Yöntem 1. Klasik Yöntem&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;// Singleton tasarım deseninin Java&apos;da klasik uygulaması &lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Singleton&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
 
    &lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;static&lt;/span&gt; Singleton instance&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  
    &lt;span class=&quot;token comment&quot;&gt;// Singleton nesnesi oluşturmak için getInstance () kullanımını zorlayan özel kurucu &lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Singleton&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; 
  
    &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;static&lt;/span&gt; Singleton &lt;span class=&quot;token function&quot;&gt;getInstance&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;instance &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; 
            instance &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Singleton&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; instance&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; 
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Bu yöntemde nesne ilk defa kullanılmak istendiği sırada yaratılmaktadır. Bu nesne her kullanılmak istendiğinde tekrar yatılmaması için “instance == null” koşulu kullanılmaktadır.&lt;/p&gt;
&lt;p&gt;Fakat bu klasik yöntem thread safe bir yapıda değildir. Aynı anda iki thread iki farklı nesne (veya daha fazla thread daha fazla nesne) oluşturabilir. Bu yüzden klasik yönteme thread safe bir yapı kazandırmamız gerekmektedir.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;yöntem-2-eşzamanlı-getinstance&quot;&gt;&lt;a href=&quot;#y%C3%B6ntem-2-e%C5%9Fzamanl%C4%B1-getinstance&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Yöntem 2. Eşzamanlı getInstance()&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;// Singleton tasarım deseninin thread eşzamanlı java uygulaması&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Singleton&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 

    &lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;static&lt;/span&gt; Singleton instance&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  
    &lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Singleton&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; 
  
    &lt;span class=&quot;token comment&quot;&gt;// Bunu aynı anda yalnızca tek bir thread yürütebilir &lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;static&lt;/span&gt; synchronized Singleton &lt;span class=&quot;token function&quot;&gt;getInstance&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;instance &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; 
            instance &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Singleton&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; instance&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; 
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Burada synchronized kullanarak, bir seferde sadece bir iş parçacığının (thread) getInstance() işlevini yürütebilmesini sağlamış oluyoruz.&lt;/p&gt;
&lt;p&gt;Bu yöntemin dezavantajı, nesneyi oluştururken her seferinde synchronized kullanmanın (kontrolünün) pahalı olması ve programın performansını düşürebilmesidir. Ancak, getInstance() uygulamasının performansı uygulama için kritik değilse, bu yöntem temiz ve basit bir çözüm sağlamaktadır.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;yöntem-3-i̇stekli-yükleme&quot;&gt;&lt;a href=&quot;#y%C3%B6ntem-3-i%CC%87stekli-y%C3%BCkleme&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Yöntem 3. İstekli Yükleme&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;// Singleton tasarım deseninin statik başlatıcı tabanlı java uygulaması&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Singleton&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 

    &lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;static&lt;/span&gt; Singleton instance &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Singleton&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  
    &lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Singleton&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; 
  
    &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;static&lt;/span&gt; Singleton &lt;span class=&quot;token function&quot;&gt;getInstance&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; instance&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Burada ise nesne, sınıf belleğe yüklendiği anda oluşturulmaktadır. Bu yöntem yalnızca singleton sınıfına programın başlatılması sürecinde ihtiyaç duyuluyorsa kullanılmalıdır.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;yöntem-4-çift-kontrol-kilitleme&quot;&gt;&lt;a href=&quot;#y%C3%B6ntem-4-%C3%A7ift-kontrol-kilitleme&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Yöntem 4. Çift Kontrol Kilitleme&lt;/h2&gt;
&lt;p&gt;Dikkat ettiğimizde, bir nesne oluşturulduktan sonra senkronizasyon artık yararlı olmaz çünkü artık instance null olmayacak ve herhangi bir işlem sırası tutarlı sonuçlar doğuracaktır.&lt;/p&gt;
&lt;p&gt;Bu yüzden, instance null olduğunda, sadece bir kez getInstance() üzerindeki kilidi geçerli olur. Bu şekilde sadece ilk adımda senkronizasyon elde etmiş oluruz.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;// Singleton tasarım deseninin çift kontrollü kilitleme tabanlı Java uygulaması&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Singleton&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 

    &lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt; volatile &lt;span class=&quot;token keyword&quot;&gt;static&lt;/span&gt; Singleton instance&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  
    &lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Singleton&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; 
  
    &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;static&lt;/span&gt; Singleton &lt;span class=&quot;token function&quot;&gt;getInstance&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;instance &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
            &lt;span class=&quot;token comment&quot;&gt;// Thread safe&lt;/span&gt;
            &lt;span class=&quot;token function&quot;&gt;synchronized&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;Singleton&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;class&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
                &lt;span class=&quot;token comment&quot;&gt;// Birden fazla thread buraya ulaşabileceğinden tekrar kontrol&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;instance &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; 
                    instance &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Singleton&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
            &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; instance&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; 
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Singleton instance başlatıldığında, birden çok iş parçacığının nesne değişkenini doğru bir şekilde sunmasını sağlayan &lt;strong&gt;&lt;a href=&quot;#https://www.geeksforgeeks.org/volatile-keyword-in-java/&quot;&gt;tarafsızlığı&lt;/a&gt;&lt;/strong&gt; tanımlamış olduk. Bu yöntem ile senkronize metodu her seferinde çağıran ek yükü büyük ölçüde azaltmış oluyoruz.&lt;/p&gt;
&lt;h2 id=&quot;referanslar&quot;&gt;&lt;a href=&quot;#referanslar&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Referanslar&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Singleton_pattern&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://en.wikipedia.org/wiki/Singleton_pattern&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.geeksforgeeks.org/singleton-design-pattern/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.geeksforgeeks.org/singleton-design-pattern/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bidb.itu.edu.tr/eskiler/seyirdefteri/blog/2013/09/08/yegane-tasar%C4%B1m-kal%C4%B1b%C4%B1-(singleton-design-pattern&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://bidb.itu.edu.tr/eskiler/seyirdefteri/blog/2013/09/08/yegane-tasar%C4%B1m-kal%C4%B1b%C4%B1-(singleton-design-pattern&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.tutorialspoint.com/design_pattern/singleton_pattern.htm&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://www.tutorialspoint.com/design_pattern/singleton_pattern.htm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://sourcemaking.com/design_patterns/singleton&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://sourcemaking.com/design_patterns/singleton&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2018/singleton-tasarim-deseni/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Kaplumbağa ile Tavşan Yarışıyor [JAVA]]]></title><description><![CDATA[Bilgisayar bilimleri ile alakalı bölümlerin çoğunda, programlama derslerinin öğrenilmesi aşamasında, ödevlerde ya da sınavlarda öğrencilere yöneltilen bir probleme benim geliştirdiğim çözümü aşağıda paylaşmak istiyorum.]]></description><link>https://blog.hkucuk.com/2017/kaplumbaga-ile-tavsan-yarisiyor-java/</link><guid isPermaLink="false">https://blog.hkucuk.com/2017/kaplumbaga-ile-tavsan-yarisiyor-java/</guid><pubDate>Mon, 09 Oct 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Bilgisayar bilimleri ile alakalı bölümlerin çoğunda, programlama derslerinin öğrenilmesi aşamasında, ödevlerde ya da sınavlarda öğrencilere yöneltilen bir probleme benim geliştirdiğim çözümü aşağıda paylaşmak istiyorum. Program ile ilgili tüm açıklamalar aşığıda yer almaktadır.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;program-yönergesi&quot;&gt;&lt;a href=&quot;#program-y%C3%B6nergesi&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Program Yönergesi&lt;/h2&gt;
&lt;p&gt;İki yarışmacı da 70 tane karelik bir yolun ilk karesinden yarışa başlayacaktır. Her kare yarış boyunca yarışmacıların bulunabileceği yerleri ifade etmektedir. 70. kareye ilk varan ya da geçen, yarışmayı kazanacaktır. Yarış kaygan bir zeminde olduğu için yarışmacılar zaman zaman kayabilmektedir. Saniyede bir kere rasgele sayı üretilerek yarışmacıların hangi hareketi gerçekleştireceği belirlenecektir. Şekil 7.34’de yarışmacıların hangi hareketi yüzde kaç olasıkla gerçekleştirdiği verilmiştir. Eğer yarışmacılardan biri 1 karesinden geriye kayarsa onu yine 1 karesine alın (-değerli kareler kullanmayın. )&lt;/p&gt;
&lt;p&gt;Kaplumbağa için, üretilen sayı i,1 &amp;#x3C;= i&amp;#x3C;=5 için “fast plod” hareketi, 6&amp;#x3C;=i&amp;#x3C;=7 ise “slip” hareketi, 8&amp;#x3C;=i&amp;#x3C;=10 için ise “slow plod” hareketi gerçekleştirilecektir. Her saniyede ,tavşan ve kaplumbağanın 70 parçalık yoldaki yerleri H ve T harfleri ile gösterilmelidir. İkisi aynı kareye düşerse H Ve T yerine OUCH yazdırılmalıdır. Yarış sonunda kaplumbağa kazanırsa “TORTOISE WINS!!! YAY!!” mesajı ekrana yazılmalıdır. Eğer tavşan kazanırsa “Hare wins. Yuch” mesajı, beraberlik olursa “It’s a tie” mesajı ekrana yazdırılmalıdır.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Kaplumbağa’nın hareket olasılıkları:&lt;br&gt;
o Hızlı Hareket --- %50 --- 3 pozisyon sağa&lt;br&gt;
o Geriye Kayma --- %20 --- 6 pozisyon sola&lt;br&gt;
o Yavaş Hareket --- %30 --- 1 pozisyon sağa&lt;br&gt;&lt;/li&gt;
&lt;li&gt;Tavşa’nın hareket olasılıkları:&lt;br&gt;
o Uyku Halinde --- %20 --- Hareket yok&lt;br&gt;
o Büyük Hareket --- %20 --- 9 pozisyon sağa&lt;br&gt;
o Büyük Kayma --- % 10 --- 12 pozisyon sola&lt;br&gt;
o Küçük Hareket --- %30 --- 1 pozisyon sağa&lt;br&gt;
o Küçük Kayma --- %20 --- 2 pozisyon sola&lt;br&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h1 id=&quot;java-program-kodları&quot;&gt;&lt;a href=&quot;#java-program-kodlar%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;[JAVA] Program Kodları&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;TortoiseHare.java&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;/*
 * coded by hkucuk
 * */&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TortoiseHare&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;String &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; args&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;

    int clock &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Geçen zaman&lt;/span&gt;
    
    Move move &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Move&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    
    &lt;span class=&quot;token comment&quot;&gt;// Başlangıç için bir şeyler söyleyelim&lt;/span&gt;
    System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;out&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\nLets Goooo\n----------------------------------------------------------------------\n\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
     
    &lt;span class=&quot;token comment&quot;&gt;// 70. kareye ulaşılana kadar yarışı devam ettirelim&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;move&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;getTortoisePosition&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;70&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; move&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;getHarePosition&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;70&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        
        move&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;actionTortoise&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Kaplumbağa-yı hareket ettirelim =)&lt;/span&gt;
        move&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;actionHare&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;     &lt;span class=&quot;token comment&quot;&gt;// Tavşan-ı hareket ettirelim =)&lt;/span&gt;
        move&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;echoPositions&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// Kaplumbağa ve Tavşan&apos;ın pozisyonunu yazdıralım&lt;/span&gt;
        clock&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;               &lt;span class=&quot;token comment&quot;&gt;// Her adımda geçen süreyi arttıralım&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
     
    System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;out&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n----------------------------------------------------------------------\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
     
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;move&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;getTortoisePosition&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&gt;=&lt;/span&gt; move&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;getHarePosition&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Kaplumbağa kazandı :D&lt;/span&gt;
      System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;out&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\nTORTOISE WINS!!! YAY!!!\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Tavşan kazandı :D&lt;/span&gt;
       System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;out&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\nHare wins. Yuch\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    
      &lt;span class=&quot;token comment&quot;&gt;// Geçen süreyi söyleyelim&lt;/span&gt;
    System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;out&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Elapsed Time : %d\n\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; clock&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;	
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Move.java&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; java&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;util&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Random&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;/*
 * coded by hkucuk
 * */&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Move&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; int tortoisePosition &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Kaplumbağanın pozisyonu&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; int harePosition     &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Tavşanın pozisyonu&lt;/span&gt;
	
	Random rand &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Random&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	
	&lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;actionTortoise&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		
		int randomNumber &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; rand&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;nextInt&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
		
		&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;randomNumber &lt;span class=&quot;token operator&quot;&gt;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; randomNumber &lt;span class=&quot;token operator&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;setTortoisePosition&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;randomNumber &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;||&lt;/span&gt; randomNumber &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;setTortoisePosition&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;setTortoisePosition&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
		      
		&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;getTortoisePosition&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;restoreTortoisePosition&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;getTortoisePosition&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;70&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;restoreTortoisePosition&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;70&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;		
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;setTortoisePosition&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;int positionRight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;tortoisePosition &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; positionRight&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;setTortoisePosition&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;int positionRight&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int positionLeft&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;tortoisePosition &lt;span class=&quot;token operator&quot;&gt;-=&lt;/span&gt; positionLeft&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;restoreTortoisePosition&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;int position&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;tortoisePosition &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; position&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	
	&lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; int &lt;span class=&quot;token function&quot;&gt;getTortoisePosition&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;tortoisePosition&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;actionHare&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		
		int randomNumber &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; rand&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;nextInt&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
		
		&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;randomNumber &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;||&lt;/span&gt; randomNumber &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;setHarePosition&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;randomNumber &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;setHarePosition&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;randomNumber &lt;span class=&quot;token operator&quot;&gt;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; randomNumber &lt;span class=&quot;token operator&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;setHarePosition&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;randomNumber &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;9&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;||&lt;/span&gt; randomNumber &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;setHarePosition&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
		      
		&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;getHarePosition&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;restoreHarePosition&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;getHarePosition&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;70&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;restoreHarePosition&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;70&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;		
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;setHarePosition&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;int positionRight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;harePosition &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; positionRight&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;setHarePosition&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;int positionRight&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int positionLeft&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;harePosition &lt;span class=&quot;token operator&quot;&gt;-=&lt;/span&gt; positionLeft&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;restoreHarePosition&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;int position&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;harePosition &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; position&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	
	&lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; int &lt;span class=&quot;token function&quot;&gt;getHarePosition&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;harePosition&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	
	&lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;echoPositions&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		
	   int counter&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	   
	   &lt;span class=&quot;token comment&quot;&gt;// Pozisyonlar 1 ile 70 arasında olacağı için 1&apos;den 70&apos;e kadar her bir pozisyona bakıyoruz&lt;/span&gt;
	   &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;counter &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; counter &lt;span class=&quot;token operator&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;70&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; counter&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	      &lt;span class=&quot;token comment&quot;&gt;// Eğer kaplumbağa ve tavşan aynı pozisyonda iseler uyarı veriyoruz&lt;/span&gt;
	      &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;counter &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;getTortoisePosition&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; counter &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;getHarePosition&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	         System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;out&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;OUCH!!!&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	      &lt;span class=&quot;token comment&quot;&gt;// Geçerli pozisyonda kaplumbağa varsa ekrana T yazdırıyoruz&lt;/span&gt;
	      &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;counter &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;getTortoisePosition&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	    	  System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;out&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;T&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	      &lt;span class=&quot;token comment&quot;&gt;// Geçerli pozisyonda tavşan varsa ekrana H yazdırıyoruz&lt;/span&gt;
	      &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;counter &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;getHarePosition&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
	    	  System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;out&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;H&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	      &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Geçerli pozisyonda kimse yok ise boşluk bırakıyoruz&lt;/span&gt;
	    	  System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;out&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot; &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	   &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	   System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;out&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2017/kaplumbaga-ile-tavsan-yarisiyor-java/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Görev Zamanlaması Problemi (Java, C++)]]></title><description><![CDATA[Daha önce yazılımcılara iş mülakatlarında sorulmuş bir problem ve bu probleme benim geliştirdiğim çözümü paylaşmak istiyorum.]]></description><link>https://blog.hkucuk.com/2017/gorev-zamanlamasi-problemi-java-c/</link><guid isPermaLink="false">https://blog.hkucuk.com/2017/gorev-zamanlamasi-problemi-java-c/</guid><pubDate>Wed, 23 Aug 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Daha önce yazılımcılara iş mülakatlarında sorulmuş bir problem ve bu probleme benim geliştirdiğim çözümü paylaşmak istiyorum.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;problem-tanımlaması&quot;&gt;&lt;a href=&quot;#problem-tan%C4%B1mlamas%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Problem Tanımlaması&lt;/h2&gt;
&lt;p&gt;Dexter’ın elinde bugün yapıp bitirmesi gerek uzun bir iş listesi vardır. Dexter’ın herhangi bir i görevini bitirebilmesi için Mi dakikaya ihtiyacı vardır ve i görevinin son bitirme anı Di’dir. Hiçbir görev Di’den daha uzun sürede bitirilemez. Fakat Dexter bir görevin bir parçasını tamamlayıp başka bir göreve geçebilir ve ardından o göreve geri dönebilir.&lt;/p&gt;
&lt;p&gt;Fakat iş listesine bakıldığında verilen deadline’a göre tüm görevlerin tamamlanması mümkün gibi gözükmüyor. Bu yüzden Dexter’ın deadline’ını aşan görevleri olabildiğince kısa sürelerde bitirmeye çalışması gerekiyor.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Girdi&lt;/strong&gt;&lt;br&gt;
İlk girilen satır görevlerin sayısı (T). T’den sonra girilen satırlardaki değerler ise sırasıyla Di ve Mi.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Çıktı&lt;/strong&gt;&lt;br&gt;
Optimal planlanan bitirme süresi, kendi bitiş tarihini ıskalayan azami görev miktarını içerecektir.&lt;/p&gt;
&lt;p&gt;Daha iyi anlaşılması için aşağıdaki örnek incelenebilir:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Örnek Girdi&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;
&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;
&lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Örnek Çıktı&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Yanlızca ilk görev 2 dakika içerisinde tamamlanabilir ve süre aşımı olmaz&lt;/li&gt;
&lt;li&gt;İlk iki görev ile şöyle bir optimal zamanlama yapılabilir:&lt;br&gt;
Süre 1: Görev 2&lt;br&gt;
Süre 2: Görev 1&lt;br&gt;
Süre 3: Görev 1&lt;br&gt;&lt;/li&gt;
&lt;li&gt;
&lt;ol&gt;
&lt;li&gt;görev 2. dakikada bitmesi gerekirken 3. dakikada bittiği için ekrana 1 yazdırdık (Deadline’ı aşma miktarı).&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;İlk üç görev ile şöyle bir optimal zamanlama yapılabilir:&lt;br&gt;
Süre 1: Görev 2&lt;br&gt;
Süre 2: Görev 1&lt;br&gt;
Süre 3: Görev 3&lt;br&gt;
Süre 4: Görev 1&lt;br&gt;
Süre 5: Görev 3&lt;br&gt;
Süre 6: Görev 3&lt;br&gt;&lt;/li&gt;
&lt;li&gt;Görev 1’in deadline’ı 2 ve o 4. dakikada bitiyor. Yani kendi deadline’ını 2 dakika aşıyor&lt;/li&gt;
&lt;li&gt;Görev 2’in deadline’ı 1 ve o 1. dakikada bitiyor. Yani kendi deadline’ını 0 dakika aşıyor&lt;/li&gt;
&lt;li&gt;Görev 3’in deadline’ı 4 ve o 6. dakikada bitiyor. Yani kendi deadline’ını 2 dakika aşıyor&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Böylece Dexter’ın deadline’ı maksimum 2 dakika aştığını anlamış olduk. Bundan daha iyi bir taslak yapmak olası değildir.&lt;/p&gt;
&lt;p&gt;Benzer hesaplama 5 görev için de yapılabilir.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;javada-problemin-çözümü&quot;&gt;&lt;a href=&quot;#javada-problemin-%C3%A7%C3%B6z%C3%BCm%C3%BC&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Java’da Problemin Çözümü&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;/*
 * Coded by hkucuk
 */&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; java&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;util&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; java&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;io&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;SolutionSchedule&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    
	BufferedReader b_input&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	BufferedWriter b_out&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	StringTokenizer token&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

	int&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;ST&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	int&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; add&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;update&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;int s&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;int e&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;int x&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;int a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;int b&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;int v&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; b &lt;span class=&quot;token operator&quot;&gt;||&lt;/span&gt; e &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; a&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s &lt;span class=&quot;token operator&quot;&gt;&gt;=&lt;/span&gt; a &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; e &lt;span class=&quot;token operator&quot;&gt;&amp;lt;=&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
            add&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; v&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        
        add&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;x&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; add&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
        add&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;x&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; add&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
        add&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
        
        &lt;span class=&quot;token function&quot;&gt;update&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;e&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;x&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;b&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;v&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
        &lt;span class=&quot;token function&quot;&gt;update&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;e&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;e&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;x&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;b&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;v&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
        
        &lt;span class=&quot;token constant&quot;&gt;ST&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; Math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;max&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;ST&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;x&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;add&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;x&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;ST&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;x&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;add&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;x&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; 
    
    &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;int s&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;int e&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;int x&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;e&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
            &lt;span class=&quot;token constant&quot;&gt;ST&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; 
        
        &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;e&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;x&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
        &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;e&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;e&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;x&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
        
        &lt;span class=&quot;token constant&quot;&gt;ST&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; Math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;max&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;ST&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;x&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;ST&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;x&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; 
    
    int &lt;span class=&quot;token function&quot;&gt;query&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;int s&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;int e&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;int x&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;int a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;int b&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; b &lt;span class=&quot;token operator&quot;&gt;||&lt;/span&gt; e &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; a&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s &lt;span class=&quot;token operator&quot;&gt;&gt;=&lt;/span&gt; a &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; e &lt;span class=&quot;token operator&quot;&gt;&amp;lt;=&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;ST&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;add&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        
		add&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;x&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; add&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
		add&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;x&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; add&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
		add&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        
		&lt;span class=&quot;token constant&quot;&gt;ST&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; Math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;max&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;ST&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;x&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;add&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;x&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;ST&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;x&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;add&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;x&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        
		int first &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;query&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;e&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;x&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
		int second &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;query&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;e&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;e&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;x&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; Math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;max&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;first&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;second&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;solve&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; throws IOException&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        
		b_input &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BufferedReader&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;InputStreamReader&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;in&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
		b_out &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BufferedWriter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;OutputStreamWriter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;out&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        
		int &lt;span class=&quot;token constant&quot;&gt;T&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;nextInt&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
		int maxD &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;100000&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        
		&lt;span class=&quot;token constant&quot;&gt;ST&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;maxD&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
		add &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;maxD&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
		&lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;100000&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        
		&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;int t &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; t &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;T&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; t&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			int &lt;span class=&quot;token constant&quot;&gt;D&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;nextInt&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
			int &lt;span class=&quot;token constant&quot;&gt;M&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;nextInt&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
			&lt;span class=&quot;token function&quot;&gt;update&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;100000&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;D&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;100000&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;M&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
			b_out&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;query&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;100000&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;100000&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
			b_out&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;newLine&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        
		b_out&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;flush&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	int &lt;span class=&quot;token function&quot;&gt;nextInt&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; throws IOException&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;        
		&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;token &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;null&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;token&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;hasMoreTokens&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
			token &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StringTokenizer&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;b_input&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;readLine&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; Integer&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;parseInt&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;token&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;nextToken&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	Long &lt;span class=&quot;token function&quot;&gt;nextLong&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; throws IOException&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;token &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;null&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;token&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;hasMoreTokens&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
			token &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StringTokenizer&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;b_input&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;readLine&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; Long&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;parseLong&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;token&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;nextToken&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	String &lt;span class=&quot;token function&quot;&gt;next&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; throws IOException&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;token &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;null&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;token&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;hasMoreTokens&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
			token &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StringTokenizer&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;b_input&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;readLine&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; token&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;nextToken&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;String&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; throws Exception&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;SolutionSchedule&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;solve&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;h2 id=&quot;cda-problemin-çözümü&quot;&gt;&lt;a href=&quot;#cda-problemin-%C3%A7%C3%B6z%C3%BCm%C3%BC&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;C++‘da Problemin Çözümü&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;/*
 * Coded by hkucuk
 */&lt;/span&gt;
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;SolutionSchedule&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    
    &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;SolutionSchedule&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;int left&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int right&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; vector&lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt; original_data&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    
        &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;left &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; left&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;right &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; right&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;lazy_flag &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        left_tree &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; right_tree &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;left &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; right&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;value &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;max_value &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; original_data&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;left&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            mid &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;left &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; right&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            left_tree &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;SolutionSchedule&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;left&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; mid&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; original_data&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            right_tree &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;SolutionSchedule&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;mid &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; right&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; original_data&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token function&quot;&gt;push_up&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    
    &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;modify&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;int left&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int right&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int m_value&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;left &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; left &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;right &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; right&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token function&quot;&gt;leaf_modify&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;m_value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            
            &lt;span class=&quot;token function&quot;&gt;push_down&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            
            &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;left &lt;span class=&quot;token operator&quot;&gt;&amp;lt;=&lt;/span&gt; mid&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;right &lt;span class=&quot;token operator&quot;&gt;&gt;=&lt;/span&gt; mid &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                    left_tree&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;modify&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;left&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; mid&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; m_value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                    right_tree&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;modify&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;mid &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; right&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; m_value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                    left_tree&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;modify&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;left&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; right&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; m_value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
                
            &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                right_tree&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;modify&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;left&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; right&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; m_value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
            
            &lt;span class=&quot;token function&quot;&gt;push_up&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    
    int &lt;span class=&quot;token function&quot;&gt;query&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;int left&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int right&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;left &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; left &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;right &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; right&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;max_value&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            
            &lt;span class=&quot;token function&quot;&gt;push_down&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            
            &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;left &lt;span class=&quot;token operator&quot;&gt;&amp;lt;=&lt;/span&gt; mid&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;right &lt;span class=&quot;token operator&quot;&gt;&gt;=&lt;/span&gt; mid &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                    int max_value_l &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; left_tree&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;query&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;left&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; mid&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                    int max_value_r &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; right_tree&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;query&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;mid &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; right&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;max&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;max_value_l&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; max_value_r&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; left_tree&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;query&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;left&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; right&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
                
            &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; right_tree&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;query&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;left&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; right&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    
    &lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;int left&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; right&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; mid&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    SolutionSchedule &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;left_tree&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;right_tree&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    int value&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; lazy_flag&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; max_value&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;push_up&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;max_value &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;max&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;left_tree&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;max_value&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;right_tree&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;max_value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    
    &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;push_down&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;lazy_flag &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            left_tree&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;leaf_modify&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;lazy_flag&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            right_tree&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;leaf_modify&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;lazy_flag&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;lazy_flag &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    
    &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;leaf_modify&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;int m_value&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;lazy_flag &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; m_value&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;max_value &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; m_value&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

vector vec_d&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; vec_m&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; vec_idx&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; vec_rank&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; vec_d_reorder&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

int &lt;span class=&quot;token function&quot;&gt;cmp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;int idx_x&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int idx_y&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; vec_d&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;idx_x&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; vec_d&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;idx_y&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

int &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    
    int &lt;span class=&quot;token constant&quot;&gt;T&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;T&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;int i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;T&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        int d&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; m&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d%d&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;d&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;m&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        vec_d&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;push_back&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;d&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        vec_m&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;push_back&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;m&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        vec_idx&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;push_back&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token function&quot;&gt;sort&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;vec_idx&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;begin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; vec_idx&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;end&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; cmp&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    vec_rank&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;assign&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;T&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    vec_d_reorder&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;assign&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;T&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;int i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;T&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        vec_rank&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt; vec_idx&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;int i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;T&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        vec_d_reorder&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;vec_d&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt; vec_idx&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    SolutionSchedule &lt;span class=&quot;token function&quot;&gt;tree&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;T&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; vec_d_reorder&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;int i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;T&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        tree&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;modify&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;vec_rank&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;T&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; vec_m&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        int ans &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; tree&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;query&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;T&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;max&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;ans&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2017/gorev-zamanlamasi-problemi-java-c/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[İyzico Ödeme Sistemi Laravel Paketi]]></title><description><![CDATA[Iyzico gayet basit ve kolay anlaşılır bir ödeme sistemi. İyzico hakkında daha ayrıntılı bilgi almak için sitesindeki bağlantıları takip edebilir, ayrıca ayrıntılı bir kullanımı için şu adresi takip edebilirsiniz.]]></description><link>https://blog.hkucuk.com/2016/iyzico-payment-system-laravel-package/</link><guid isPermaLink="false">https://blog.hkucuk.com/2016/iyzico-payment-system-laravel-package/</guid><pubDate>Fri, 19 Aug 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://www.iyzico.com/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Iyzico&lt;/a&gt; gayet basit ve kolay anlaşılır bir ödeme sistemi. İyzico hakkında daha ayrıntılı bilgi almak için sitesindeki bağlantıları takip edebilir, ayrıca ayrıntılı bir kullanımı için şu adresi takip edebilirsiniz. Ben burada iyzico’nun  bize sunduğu api’nin kullanımı için &lt;a href=&quot;http://laravel.com/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;PHP Laravel Framework&lt;/a&gt;‘üne uygun olarak geliştirdiğim paketin tanıtımını yapacağım.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;çalışma-mantığı&quot;&gt;&lt;a href=&quot;#%C3%A7al%C4%B1%C5%9Fma-mant%C4%B1%C4%9F%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Çalışma Mantığı&lt;/h2&gt;
&lt;p&gt;Iyzico’nun temel çalışma mantığında “2 sorgu 2 cevap” prensibi yatmaktadır. İlk önce belirli parametreleri iyzico api-ye göndererek bir ödeme formu istiyoruz. Ardından kullanıcı formu doldurup onayladıktan sonra iyzico’dan gelen cevaplara göre işlemlerimizi yönlendiriyoruz.&lt;/p&gt;
&lt;p&gt;Geliştirdiğim paket bu aşamaların iyzico api-ye bağlanarak ödeme formu isteme aşamasını laravel için uygun bir hale getiriyor. Gerçi bu aşamlar normal bir fonksiyon tanımlama ile de gerçekleştirilebilir fakat laravel dünyasının gelişimine katkı sağlamak hiçte kötü bir düşünce değil.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Paket Bağlantıları:&lt;/strong&gt;&lt;br&gt;
Github: &lt;a href=&quot;https://github.com/medyun/hkucuk-iyzico-laravel-package&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://github.com/medyun/hkucuk-iyzico-laravel-package&lt;/a&gt;
Packagist: &lt;a href=&quot;https://packagist.org/packages/hkucuk/iyzico&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;https://packagist.org/packages/hkucuk/iyzico&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Paketin Yüklenmesi:&lt;/strong&gt;&lt;br&gt;
Paketin yüklenmesi için &lt;a href=&quot;http://getcomposer.org/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Composer&lt;/a&gt; kullanmamız gerekiyor. Eğer composer kullanımıyorsanız linki takip ederek hemen kullanmaya başlamalısınız. Proje dosyamızdaki composer.json dosyasına aşağıdaki eklemeyi yapıyoruz:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token string-property property&quot;&gt;&quot;require&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token string-property property&quot;&gt;&quot;hkucuk/iyzico&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;v1.0.0&quot;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Ardından composer dosyamızı update ediyoruz:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;composer update&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Buraya kadar sorun yok ise paket bilgisayarınıza yüklenmiş durumda olacaktır. Bundan sonra paketin laravel’de kullanılabilir duruma gelmesi için aşağıdaki düzenlemeleri yapmamız gerekiyor.&lt;/p&gt;
&lt;p&gt;İlk olarak &lt;strong&gt;config/app.php&lt;/strong&gt; dosyası içerisindeki providers değerine aşağıdaki eklemeyi yapıyoruz.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;providers&apos;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;array&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// ...&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&apos;Hkucuk\Iyzico\IyzicoServiceProvider&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Ardından yine &lt;strong&gt;config/app.php&lt;/strong&gt; dosyasındaki aliases değerine aşağıdaki eklemeyi yapıyoruz.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;aliases&apos;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;array&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// ...&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&apos;Iyzico&apos;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;Hkucuk\Iyzico\Facades\Iyzico&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Bu ayarların ardından son olarak paketi publish etmemiz gerekiyor. Bunun içinde consol’dan aşağıdaki komudu çalıştırmamız yeterli olacaktır.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;php artisan vendor&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;publish&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;h2 id=&quot;paketin-kullanımı&quot;&gt;&lt;a href=&quot;#paketin-kullan%C4%B1m%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Paketin Kullanımı&lt;/h2&gt;
&lt;p&gt;Paket içerisinde gelen &lt;strong&gt;config/config.php&lt;/strong&gt; içerisindeki &lt;strong&gt;api_id&lt;/strong&gt; ve &lt;strong&gt;secret&lt;/strong&gt; değerlerini girmemiz gerekiyor. Eğer bu değerleri ana config kalsörünüzün altına taşımak isterseniz &lt;strong&gt;config/packages/hkucuk/iyzico/config.php&lt;/strong&gt; dosyasını oluşturarak, bu dosya içerisinde de tanımlayabilirsiniz.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;$data &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;array&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;customer_language&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;tr&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;mode&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;test&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;external_id&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;rand&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;type&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;CC.DB&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;installment&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;amount&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1099&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;return_url&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;http://example.com/iyzicoResponse&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;currency&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;TRY&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

$response &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; Iyzico&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;getForm&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;$data&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

echo $response&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;code_snippet&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Ödeme formu isteme işlemi yukarıdaki gibi yapılabilir. Burada $data içerisinde gönderilen parametreler değişkenlik gösterebilir, ihtiyaca uygun olarak belirlenebilir. Burada dönen cevabın code_snippet değeri bize formun kodlarını vermektedir. Bu kodları ekrana bastığımızda ödeme formu gözükecektir.&lt;/p&gt;
&lt;p&gt;Form gönderildikten sonra iyzico’dan bize gelen cevabı aşağıdaki gibi izleyebilir:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;$data &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;json_decode&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;Input&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;json&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;var_dump&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;$data&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Hepsi bu kadar. İşler yolunda gider ise bu adımların ardından Laravel ile iyzico bağlantısı bu şekilde gerçekleştirilebilir.&lt;/p&gt;
&lt;p&gt;Kolay gelsin.&lt;/p&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2016/iyzico-payment-system-laravel-package/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Sherlock mu? Ben mi? Süper Bilgisayar mı?]]></title><description><![CDATA[Bu yazıda dedektif kahramanların en ünlüsü Sherlock Holmes‘e yardımcı olmaya çalışacağız. Sherlock Holmes süper bilgisayara karşı.]]></description><link>https://blog.hkucuk.com/2016/sherlock-mu-ben-mi-super-bilgisayar-mi/</link><guid isPermaLink="false">https://blog.hkucuk.com/2016/sherlock-mu-ben-mi-super-bilgisayar-mi/</guid><pubDate>Mon, 16 May 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Bu yazıda dedektif kahramanların en ünlüsü Sherlock Holmes‘e yardımcı olmaya çalışacağız. Sherlock Holmes süper bilgisayara karşı.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;senaryomuz&quot;&gt;&lt;a href=&quot;#senaryomuz&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Senaryomuz&lt;/h2&gt;
&lt;p&gt;Sherlock Holmes, ezeli düşmanı olan Moriarty hakkında iyice paranoyaklaşır. Moriarty’i bastırmak için sarfettiği tüm çabaları boşa çıkmıştır. Sherlock bugünlerde Watson ile bir sorun üzerine çalışmaktadır. Watson, son zamanlarda, CIA’in süper bilgisayarı Beast’de tuhaf sorunlarla karşı karşıya olduğunu belirtmiştir.&lt;/p&gt;
&lt;p&gt;Bu öğleden sonra Sherlock, Moriarty’den Beast’e bir virüs aracılığı ile sızdığını belirten, bir not alır. Ayrıca, notun üzerinde N adet numara vardır. Bazı hesaplamalar yaptıktan sonra Sherlock virüsü kaldırmak için gereken anahtarın en büyük makul değerinin N basamaklı olacağını çözmüştür.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;En makul sayının aşağıdaki özelliklere sahip olması gerekmektedir:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Basamaklarda yalnızca 3 veya 5 rakamları kullanılabilir. Başka rakamlar olmamalıdır.&lt;/li&gt;
&lt;li&gt;Bir çok kez kullanılan 3 sayısı 5 ile bölünebilir.&lt;/li&gt;
&lt;li&gt;Bir çok kez kullanılan 5 sayısı 3 ile bölünebilir.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bu arada sayaç Beast’i imha etmek amacıyla çok hızlı çalışıyor. Acaba biz Beast’i kurtarmak için gerekli anahtarı bulabilir miyiz? Peki bunu Sherlock’tan önce yapabilir miyiz?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Girdi Biçimi:&lt;/strong&gt; 1. satır test durumlarının sayısını ifade edecek bir tam sayı (T) olacaktır.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Çıkış Biçimi:&lt;/strong&gt; En büyük makul sayımız N basamaklı olacaktır. Eğer eğer bir numarak girilmezse Sherlock yanlış girdi olduğunu söylecek ve ekrana -1 yazacaktır.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Kısıtlamalar&lt;/strong&gt;&lt;br&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1≤T≤20&lt;/li&gt;
&lt;li&gt;1≤N≤100000&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Açıklama&lt;/strong&gt;&lt;br&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;N = 1 için, geçerli değildir.&lt;/li&gt;
&lt;li&gt;N = 3 için, 555 tek olası sayıdır.&lt;/li&gt;
&lt;li&gt;N = 5 için 33.333 tek olası sayıdır.&lt;/li&gt;
&lt;li&gt;N = 11, 55555533333 bu rakamlarla oluşturulabilecek olasılıklar arasındaki en büyük sayıdır.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h1 id=&quot;çözümümüz&quot;&gt;&lt;a href=&quot;#%C3%A7%C3%B6z%C3%BCm%C3%BCm%C3%BCz&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Çözümümüz&lt;/h1&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;/*
 * Coding by hkucuk
 */&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; java&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;io&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;SolutionSTB&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;String&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; throws IOException &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;

        StringBuffer sb &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StringBuffer&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        BufferedReader br &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BufferedReader&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;InputStreamReader&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;in&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        
        byte&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; mults &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;byte&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

        &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;int &lt;span class=&quot;token constant&quot;&gt;T&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; Integer&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;parseInt&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;br&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;readLine&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;T&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;T&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;

            String &lt;span class=&quot;token constant&quot;&gt;S&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; br&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;readLine&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            int &lt;span class=&quot;token constant&quot;&gt;N&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; Integer&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;parseInt&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;S&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            
            &lt;span class=&quot;token comment&quot;&gt;// Silinecek kaç tane 5&apos;li grup var&lt;/span&gt;
            int &lt;span class=&quot;token constant&quot;&gt;G&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; mults&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;S&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;charAt&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;S&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;length&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;48&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token constant&quot;&gt;N&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;G&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            
            &lt;span class=&quot;token comment&quot;&gt;// Eğer numara çok küçükse&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;N&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; sb&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;-1\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;continue&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 5 gruplarını ekleme for(G += 5*(N/15); G &gt; 0; G--){&lt;/span&gt;
                sb&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;555&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
            
            &lt;span class=&quot;token comment&quot;&gt;// 3 gruplarını ekleme&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;G&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;N&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;G&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;G&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                sb&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;33333&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
            
            &lt;span class=&quot;token comment&quot;&gt;// Yeni satır ekleme&lt;/span&gt;
            sb&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        
        System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;out&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;sb&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Örnek Girdi&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;
&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;
&lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;
&lt;span class=&quot;token number&quot;&gt;11&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Örnek Çıktı&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;token number&quot;&gt;555&lt;/span&gt;
&lt;span class=&quot;token number&quot;&gt;33333&lt;/span&gt;
&lt;span class=&quot;token number&quot;&gt;55555533333&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2016/sherlock-mu-ben-mi-super-bilgisayar-mi/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Bir Aritmetik Serinin Kayıp Teriminin Bulunması]]></title><description><![CDATA[Bu yazıda dedektif kahramanların en ünlüsü Sherlock Holmes‘e yardımcı olmaya çalışacağız. Sherlock Holmes süper bilgisayara karşı.]]></description><link>https://blog.hkucuk.com/2015/bir-aritmetik-serinin-kayip-teriminin-bulunmasi/</link><guid isPermaLink="false">https://blog.hkucuk.com/2015/bir-aritmetik-serinin-kayip-teriminin-bulunmasi/</guid><pubDate>Sat, 15 Aug 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Aritmetik bir seride sayılar, aralarındaki oran sabit kalacak şekilde artış gösterirler.&lt;/p&gt;
&lt;p&gt;Orjinal bir aritmetik serinin bir elemanının eksik olduğunu düşünelim. Bu durumda eksik olan bu elemanın bulunması için geliştirilebilecek bir algoritma aşağıdaki gibi olacaktır.&lt;/p&gt;
&lt;p&gt;Problemi daha iyi anlayabilmek adına bir örnek verelim:&lt;br&gt;
&lt;strong&gt;Örnek girdi:&lt;/strong&gt; 1 3 5 9 11&lt;br&gt;
&lt;strong&gt;Örnek çıktı:&lt;/strong&gt; 7&lt;/p&gt;
&lt;hr&gt;
&lt;h1 id=&quot;çözümümüz&quot;&gt;&lt;a href=&quot;#%C3%A7%C3%B6z%C3%BCm%C3%BCm%C3%BCz&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Çözümümüz&lt;/h1&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; java&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;io&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; java&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;util&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Scanner&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;SolutionAP&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;String args&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; throws Exception &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        
        Scanner &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scanner&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;in&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        
        String temp&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        String temp2&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        
        temp &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;nextLine&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        temp2 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;nextLine&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        
        int totalNum &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; Integer&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;parseInt&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;temp&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;totalNum &lt;span class=&quot;token operator&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        
        String&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; tempNums &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; temp2&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot; &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;      
        
        &lt;span class=&quot;token comment&quot;&gt;// parse the integer array&lt;/span&gt;
        int&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; nums &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;totalNum&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;int i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; totalNum&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            nums&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; Integer&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;parseInt&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;tempNums&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        
        int &lt;span class=&quot;token constant&quot;&gt;SUM&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;nums&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; nums&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;totalNum &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;totalNum &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        
        &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;int i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; totalNum&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token constant&quot;&gt;SUM&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-=&lt;/span&gt; nums&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        
        System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;out&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;SUM&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2015/bir-aritmetik-serinin-kayip-teriminin-bulunmasi/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Bizim Gibi Bir Kaybeden, Charles Bradley]]></title><description><![CDATA[Bir kaybeden, ezilen, duygu insanı, sahneden göz yaşları içinde inip, kendisini dinleyenleri tek tek kucaklayacak kadar yoğun...]]></description><link>https://blog.hkucuk.com/2015/bizim-gibi-bir-kaybeden-charles-bradley/</link><guid isPermaLink="false">https://blog.hkucuk.com/2015/bizim-gibi-bir-kaybeden-charles-bradley/</guid><pubDate>Tue, 28 Jul 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Bir kaybeden, ezilen, duygu insanı,&lt;br&gt;
sahneden göz yaşları içinde inip,&lt;br&gt;
kendisini dinleyenleri tek tek kucaklayacak kadar yoğun,&lt;br&gt;
yıllarca sokaklarda yaşamak zorunda kalan bir evsiz,&lt;br&gt;
içtenlikle, daha iyi bir ülke, daha iyi bir dünya isteyen bir meczup,&lt;br&gt;
65 yaşında ünlenmeyi bekleyebilecek bir sabır taşı,&lt;br&gt;
her dinleyenin kalbine, içinden geçenleri sesiyle işleyebilen,&lt;br&gt;
dünyada örneği az kalmış siyah bir inci:&lt;br&gt;
Charles Bradley&lt;/p&gt;
&lt;hr&gt;
&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.25%; position: relative; height: 0; overflow: hidden; margin-bottom: 1.0725rem&quot; &gt; &lt;iframe src=&quot;https://www.youtube.com/embed/ZEN5epZJGG8&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;allowfullscreen&quot; style=&quot; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot;&gt;&lt;/iframe&gt; &lt;/div&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2015/bizim-gibi-bir-kaybeden-charles-bradley/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Suits'den Gelen Esintiler]]></title><description><![CDATA[Diziler konuları, oyuncuları, yapımcıları gibi değişkenlerle bizleri kendilerine bağlıyorlar. Kuşkusuz bunlar bir diziyi dizi yapan temel taşları.]]></description><link>https://blog.hkucuk.com/2015/suitsden-gelen-esintiler/</link><guid isPermaLink="false">https://blog.hkucuk.com/2015/suitsden-gelen-esintiler/</guid><pubDate>Fri, 03 Jul 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Diziler konuları, oyuncuları, yapımcıları gibi değişkenlerle bizleri kendilerine bağlıyorlar. Kuşkusuz bunlar bir diziyi dizi yapan temel taşları. Fakat müzik anlatılamayanları anlatabilme yeteneği sayesinde bu değişkenleri hem destekleyen hem de kendi başına bir değişken olma durumunda.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://tr.wikipedia.org/wiki/Suits&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Suits&lt;/a&gt;; harika bir dizi. Harvey Specter ve Mike Ross’un zeka, karizma ve özgüven taşkınlıklarını izlemek insanı çok farklı bir şekilde etkiliyor. Suits’in konusu kadar bölümlerinde seçilen ve konuyu duygusal olarak bizlere aktarmada çok yardımcı olan müzikleri de muazzam. O kadar ki hayranları bu müzikleri tekrar tekrar dinlemek, onlar ile yaşamak dahi istiyorlar. Tüm bölümlerin müziklerini sunan bir &lt;a href=&quot;http://songsinsuits.tumblr.com/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;bloğun&lt;/a&gt; varlığı bile bunu kanıtlar nitelikte.&lt;/p&gt;
&lt;p&gt;Her bölümde bir sürü farklı şarkı kulaklarımıza kazındı. Benim dinlediğim ve vazgeçemediğim şarkılar aşağıdaki spotify listesinde ve sürekli güncellenme durumunda. Suits devam ettiği sürece de güncellenmeye devam edecek.&lt;/p&gt;
&lt;hr&gt;
&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 126.66666666666666%; position: relative; height: 0; overflow: hidden; margin-bottom: 1.0725rem&quot; &gt; &lt;iframe src=&quot;https://open.spotify.com/embed/playlist/14wzcgpQvRVInClM1TW7Z7&quot; frameborder=&quot;0&quot; allowtransparency=&quot;true&quot; allow=&quot;encrypted-media&quot; style=&quot; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot;&gt;&lt;/iframe&gt; &lt;/div&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2015/suitsden-gelen-esintiler/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Anroid Hesap Makinesi - Mobil Programlama]]></title><description><![CDATA[Bu seneki beni en çok heyecanlandıran ders hiç kuşkusuz ki Mobil Programlama dersi. İlk sekiz haftalık periyot nesneye dayalı programlama ile geçmesine rağmen, sonraki süreç benim için gerçekten bir kazanıma dönüşüyor.]]></description><link>https://blog.hkucuk.com/2015/anroid-hesap-makinesi-mobil-programlama/</link><guid isPermaLink="false">https://blog.hkucuk.com/2015/anroid-hesap-makinesi-mobil-programlama/</guid><pubDate>Fri, 09 Jan 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Bu seneki beni en çok heyecanlandıran ders hiç kuşkusuz ki Mobil Programlama dersi. İlk sekiz haftalık periyot nesneye dayalı programlama ile geçmesine rağmen, sonraki süreç benim için gerçekten bir kazanıma dönüşüyor.&lt;/p&gt;
&lt;p&gt;Ders kapsamında verilen bir çok ödevi yapmamama rağmen, mobil programlama ile ile ilgili ödevleri yapmaya gayret gösteriyorum. Çünkü öğrenmek istediğim, bilmediğim taraf burası.&lt;/p&gt;
&lt;p&gt;İlk mobil programlama ödevimiz basit bir hesap makinesi yapımıydı. Toplama, çarpma, bölme, çıkarma gibi temel işlemleri yapması beklenen hesap makinesinin bu ödev için en zor tarafı bir textbox’a yazılacak formülün google.com üzerinde hesaplatılıp webview ile görüntülenmesiydi.&lt;/p&gt;
&lt;p&gt;Benim ödevde kullandığım çözümler ve proje raporunu aşağıdaki linki kullanarak indirebilirsiniz.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://dl.dropboxusercontent.com/u/18296433/%C3%96dev/MobilProgramlama.zip&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;İndirmek için tıklayınız&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Kolay gelsin.&lt;/p&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2015/anroid-hesap-makinesi-mobil-programlama/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Kırılmış Bir Oyuncak İçin Sone]]></title><description><![CDATA[Karmaşa ve giderek artan bilinmezlik. Bu bilinmezlik içerisinde hayata karşı beklediklerini elde etmek için çabalamanın verdiği sevinç ya da bıkmaya yakınlık hissi.]]></description><link>https://blog.hkucuk.com/2014/kirilmis-bir-oyuncak-icin-sone/</link><guid isPermaLink="false">https://blog.hkucuk.com/2014/kirilmis-bir-oyuncak-icin-sone/</guid><pubDate>Thu, 27 Feb 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Karmaşa ve giderek artan bilinmezlik. Bu bilinmezlik içerisinde hayata karşı beklediklerini elde etmek için çabalamanın verdiği sevinç ya da bıkmaya yakınlık hissi. Beklenen ne? Bazen küçük bir oyuncak, bazense kırılmış bir oyuncağın eskisi gibi olabilmesi. Oyuncak ve beklenti deyince aklımıza düşer, Rus şair Yunna Morits’in “Oyuncak satıcısına sone” adlı şu şiiri:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Oyuncaklar satıyordu sakat bir ihtiyar&lt;br&gt;
Çocuklar sevinçten çıldırmış, ustanında keyfi yerinde.&lt;br&gt;
Cıvıldıyor, miyavlıyor, ötüyor oyuncaklar&lt;br&gt;
Takla atıyor kimi, kimi amuda kalkmış kulağı üstünde.&lt;br&gt;
İhtiyar da coştu, numaralar yapıyor şimdi&lt;br&gt;
Üflüyor kuyruğuna bir kuşun ve öykünüyor ona&lt;br&gt;
Gurulduyor, kuğuruyor, eğlendiriyor izleyenleri,&lt;br&gt;
Çekiyor sümüklü bir serseriyi mıknatısıyla&lt;br&gt;
Akşamla, yaylıya koşan bir at gibi koşup tezgahına&lt;br&gt;
Gider o koltuk değneklerinde sekerek bir meyhaneye&lt;br&gt;
Birkaç meze atıştırıp, fıçı birası içmeye.&lt;br&gt;
Ve bu sonede bir delik açarak iki yüz yıl sonra&lt;br&gt;
Uçarak yükselip bir inciçiçeğinin sapından havaya&lt;br&gt;
Bir kuşa ıslık çalacaktır iç sızlatan bir kederle&lt;br&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Oyuncak ve insan kalbi çok benzer birbirine. Bazen tamiri olmaz ikisinin de!&lt;/p&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2014/kirilmis-bir-oyuncak-icin-sone/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Veri Yapıları ve Algoritmaları Dönem Projesi]]></title><description><![CDATA[Geçtiğimiz dönem Veri Yapıları ve Algoritmaları (Data Structures and Algorithms) dersinin dönem projesi olarak, bir öğrenci bilgi sistemini yapılar (“struct”), bağlaçlı listeler(“linked list”) ve dosyalar(“file”) kullanılarak gerçekleştirdik.]]></description><link>https://blog.hkucuk.com/2014/veri-yapilari-ve-algoritmalari-donem-projesi/</link><guid isPermaLink="false">https://blog.hkucuk.com/2014/veri-yapilari-ve-algoritmalari-donem-projesi/</guid><pubDate>Fri, 14 Feb 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Geçtiğimiz dönem Veri Yapıları ve Algoritmaları (Data Structures and Algorithms) dersinin dönem projesi olarak, bir öğrenci bilgi sistemini yapılar (“struct”), bağlaçlı listeler(“linked list”) ve dosyalar(“file”) kullanılarak gerçekleştirdik. C ve temel veri yapılarını anlamada çok yararlı olan bu projeyi kendisini geliştirmek isteyenlerin yararlanması adına paylaşıyorum. Aşağıda Proje Metnini ve benim çözümümü bulabilirsiniz.&lt;/p&gt;
&lt;hr&gt;
&lt;h1 id=&quot;proje-metni&quot;&gt;&lt;a href=&quot;#proje-metni&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Proje Metni&lt;/h1&gt;
&lt;p&gt;Projede bir öğrenci işleri bilgi sistemi simülasyonunun yapılar (“struct”), bağlaçlı listeler(“linked list”) ve dosyalar (“file”) kullanılarak yapılması istenmektedir. Buna göre;&lt;/p&gt;
&lt;p&gt;a) course olarak adlandırılan bir yapı oluşturun. Bu yapının üyeleri, code, name, instructor, term (Spring veya Fall değerleri alabilir), year ve bir course işaretçisi olsun. Öğrencilerin aldıkları dersler bağlaçlı liste ile tutulmak istendiğinden course veri yapısı elemanları üzerinde işlem yapacak void insertCourse(CourseNodePtr* cr, CourseNodePtr* inscr, char* code), char* deleteCourse(CourseNodePtr* cr, CourseNodePtr* inscr, char* code) prototipine sahip fonksiyonları yazınız. insertCourse() fonksiyonunu yazarken aynı öğrencinin aynı dersi birden fazla kez almasını engelleyiniz.&lt;/p&gt;
&lt;p&gt;b) student olarak adlandırılan bir yapı oluşturun. Bu yapının üyeleri, id, name, surname, department, class (B.Sc., M.Sc., Ph.D. değerlerini alabilir), faculty, gpa, year, bir course işaretçisi ve bir student işaretçisi olsun. Öğrenciler bilgi sisteminde bağlaçlı liste ile tutulmak istendiğinden student veri yapısı elemanları üzerinde işlem yapacak void insertStudent(FILE* filePtr, StudentNodePtr* cr, int id), int deleteStudent(FILE* filePtr, StudentNodePtr* cr, int id) prototipine sahip fonksiyonları yazınız. insertStudent() fonksiyonunu yazarken aynı öğrencinin sisteme birden fazla kez girilmesini engelleyiniz. Hem insertStudent() fonksiyonunda hem de deleteStudent() fonksiyonlarında bağlaçlı listedeki elemanları filePtr ile işaret edilen main() fonksiyonu içinde açtığınız dosyanın içine yazınız. Böylece bağlaçlı listenizin en son hali bir dosya içinde de olacağından programınız farklı çalıştırmalarda da en son veritabanını kullanmış olacaktır.&lt;/p&gt;
&lt;p&gt;c) Girilen öğrenci id’sine göre sistemde arama yapan ve eğer öğrenci sistemde mevcutsa onunla ilgili bilgileri ekranda gösteren bir void displayStudent(FILE* filePtr, int id) fonksiyonu yazınız. Fonksiyonunuz öncelikle dosyadan okuma yaparak öğrencileri bir bağlaçlı liste içine yerleştirmelidir. Daha sonra bu bağlaçlı liste üzerinde id’ye göre arama yapmalıdır ve eğer öğrenci mevcutsa onunla ilgili bilgileri ekranda göstermelidir. Örnek çıktı: Öğrencinin id’sini giriniz? &gt; 2008199999 id Name Surname Department Class Faculty Gpa Year Recv. Courses 20 John White ICI M.Sc. Ege 82 2009 UBI501,UBI503,UBI505&lt;/p&gt;
&lt;p&gt;d) Her bir öğrenci class’ına ait sistemde mevcut kayıtlı kaç adet öğrencinin bulunduğunu hesaplayan ve bunu ekranda uygun şekilde gösteren bir void displayClassNumbers(FILE* filePtr, int id) fonksiyonu yazınız. Fonksiyonunuz öncelikle dosyadan okuma yaparak öğrencileri bir bağlaçlı liste içine yerleştirmelidir. Daha sonra bu bağlaçlı liste üzerinde class değerlerine göre hesaplama yapmalıdır. Örnek çıktı: Class Number of Students B.Sc. 120 M.Sc. 55 Ph.D. 18&lt;/p&gt;
&lt;p&gt;e) Girilen ders code’una, term değerine ve year değerine göre o dersi istenen dönem ve yıl içinde almış olan öğrencileri sistemde bulup ekranda gösteren bir void displayRecvCourse (FILE* filePtr, char* code, char* term, int year) fonksiyonu yazınız. Fonksiyonunuz öncelikle dosyadan okuma yaparak öğrencileri bir bağlaçlı liste içine yerleştirmelidir. Daha sonra bu bağlaçlı liste üzerinde değerlere göre arama yapmalıdır ve eğer öğrenci mevcutsa onunla ilgili bilgileri ekranda göstermelidir. Örnek çıktı: Dersin kodunu giriniz? &gt; UBI503 Dönemi giriniz? &gt; Fall Yılı giriniz? &gt; 2008 id Name Surname 20 John White 25 Jeny McCain 29 Gregory Whitehead&lt;/p&gt;
&lt;p&gt;f) a ve b şıkkında tanımlamış olduğunuz insertStudent(FILE* filePtr, StudentNodePtr* cr, int id) ve insertCourse(CourseNodePtr* cr, CourseNodePtr* inscr, char* code) fonksiyonunu kullanarak detaylı bir şekilde kullanıcıdan girdi alıp öğrenci kaydı yapan void registration(FILE* filePtr) fonksiyonu yazınız. Bu fonksiyon kullanıcıdan öğrenci ile ilgili bütün bilgileri aldıktan sonra onun kaydını gerçekleştirmelidir.&lt;/p&gt;
&lt;p&gt;g) Bundan önceki yazdığınız bütün şıklardaki fonksiyonları kullanarak bir menu oluşturunuz. Menünüzün öğrenci kaydı girişi, öğrenci kaydı silme, arama gibi temel özellikleri içermesi gerekmektedir.&lt;/p&gt;
&lt;hr&gt;
&lt;h1 id=&quot;proje-çözümü&quot;&gt;&lt;a href=&quot;#proje-%C3%A7%C3%B6z%C3%BCm%C3%BC&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Proje Çözümü&lt;/h1&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;/* Hüseyin Küçük
* Öğrenci İşleri Bilgi Sistemi
*/&lt;/span&gt;
#include
#include
#include

&lt;span class=&quot;token comment&quot;&gt;// Student yapısı&lt;/span&gt;
struct student&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
int id&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
char name&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
char surname&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
char department&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
char clas&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
char faculty&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
int gpa&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
int year&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
struct course &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;coursePtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
struct student &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;studentPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Course yapısı&lt;/span&gt;
struct course&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
char code&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
char name&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;30&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
char instructor&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;30&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
char term&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
int year&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
struct course &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;coursePtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Kolay kullanabilir hale getirelim&lt;/span&gt;
typedef struct course Course&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
typedef Course&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; CourseNodePtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
typedef struct student Student&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
typedef Student&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; StudentNodePtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Fonksiyon prototype-larımız&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;readFile&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;FILE&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; filePtr&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; StudentNodePtr&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; sPtr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Veritabanındaki bilgileri belleğe taşıma&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;readStudent&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;StudentNodePtr&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; sPtr&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; StudentNodePtr&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; readingPtr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Dosyadan okunan öğrenci bilgilerinin belleğe, öğrenci listesine yazılması&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;readCourse&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;CourseNodePtr&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; crSPtr&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; CourseNodePtr&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; crReadPtr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Dosyadan okunan ders bilgilerinin belleğe, ders listesine yazılması&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;registration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;StudentNodePtr&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; sPtr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Yeni öğrenci kayıt etme&lt;/span&gt;
StudentNodePtr &lt;span class=&quot;token function&quot;&gt;insertStudent&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;StudentNodePtr &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;sPtr&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int id&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Öğrenci ile ilgili bilgilerin alınıp, uygun şekilde listeye eklenmesi&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;insertCourse&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;CourseNodePtr&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; cr&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; char&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; code&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Öğrencinin aldığı derslerin bilgilerinin alınıp listeye eklenmesi&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;findStudent&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;StudentNodePtr&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; sPtr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Öğrenci arama&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;displayClassNumbers&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;StudentNodePtr&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; sPtr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Öğrenci sınıflarında kaç kişinin olduğunun hesaplanması&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;displayRecvCourse&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;StudentNodePtr&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; sPtr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Belli bir dersi alan kişilerin listesi&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;deleteStudent&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;StudentNodePtr&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; sPtr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Öğrenci silme&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;deleteCourse&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;StudentNodePtr&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; sPtr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Ders silme&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;writeDb&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;FILE&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; filePtr&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; StudentNodePtr&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; sPtr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Bellekteki verileri dosyaya yazma&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Ana fonksiyonumuz&lt;/span&gt;
int &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;/* Tanımlamalarımız
* studentStartPtr : student yapısında bir kopya üretir. Bu yapımız aracılığı ile
dosyadaki verilerimizi bellekte tutacağız
* filePtr : dosyamıza ulaşmak için kullanacağımız pointer
* menu : menümüzden yapılan seçimi tutacağımız değişken
*/&lt;/span&gt;
StudentNodePtr studentStartPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token constant&quot;&gt;FILE&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;filePtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
int menu&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Veri dosyamızdaki tüm bilgileri daha rahat işlem yapabilmek adına linked-list-imiz&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// aracılığı ile belleğimize çekiyoruz&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;readFile&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;filePtr&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;studentStartPtr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;/* Menümüz
* 1: Yeni öğrenci ve ders kaydı
* 2: Öğrenci arama
* 3: Öğrenci silme
* 4: Öğrenci&apos;nin aldığı derslerin arasından silme işlemi
* 5: Öğrenci sayısının sınıfa göre dağılımı
* 6: İstenen dersi alan öğrencilerin listesi
* 7: Çıkış
*/&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n\t------------------------------------------------------\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n\tSTUDENT INFORMATION SYSTEM \n\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\tEnter 1 &gt; Registration for Student and Courses\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\tEnter 2 &gt; Find a student\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\tEnter 3 &gt; Delete a student\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\tEnter 4 &gt; Delete a course from a student&apos;s courses\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\tEnter 5 &gt; Display class numbers\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\tEnter 6 &gt; Display received courses\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\tEnter 7 &gt; Exit\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n\t------------------------------------------------------\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\tYour Choice &gt; &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;menu&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Kullanıcının seçimi&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Kullanıcının seçimine göre işlemlere yönleniyoruz&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;switch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;menu&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;registration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;studentStartPtr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;findStudent&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;studentStartPtr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;deleteStudent&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;studentStartPtr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;deleteCourse&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;studentStartPtr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;displayClassNumbers&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;studentStartPtr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;displayRecvCourse&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;studentStartPtr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;writeDb&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;filePtr&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;studentStartPtr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;menu &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// end main&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;/* return null
* Açıklama: Bu fonksiyon program başlatıldığı anda veritabanı dosyasındaki verileri
düzenli bir şekilde (öğrenci bilgilerini öğrenci listesine, ders bilgilerini ders
listesine) belleğe çekmektedir.
Bu fonksiyon çalışması anında readStudent() ve readCourse() fonksiyonlarını çağırmaktadır.
* Öncelikler: student.dat dosyasının oluşturulmuş ve okuma yazma izinlerinin verilmiş olması gerekmektedir.
*/&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;readFile&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;&lt;span class=&quot;token constant&quot;&gt;FILE&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; filePtr&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; StudentNodePtr&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; sPtr&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
int counter &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Öğrenciye bağlı tüm dersleri okumak için sayacımız&lt;/span&gt;
StudentNodePtr studentReadPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
StudentNodePtr currentPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
CourseNodePtr courseReadPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Dosyamızı içerisindeki verileri okuyabilecek şekilde hazırlıyoruz.&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Herhangi bir hata durumunda kullanıcıyı bilgilendiriyoruz&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;filePtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;fopen&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;student.dat&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;rb&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n\tFile couldn&apos;t be opened!!!\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;1. If This is the first run or no data has been saved at first run, IGNORE this message.\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;2. If it&apos;s not the first run, check your file system permitions,\n avaible disk space and avaible memory space\n\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Dosyanın içerisindeki tüm verileri okuyana kadar dosyada dolaşıyoruz&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;feof&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;filePtr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Bilgilerimizi tutmak için bellekten yer alıyoruz&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;studentReadPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;malloc&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sizeof&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;Student&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;No memory space&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Öğrenci listemizin büyüklüğü kadar veri yapısını dosyamızdan okuyoruz&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;fread&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;studentReadPtr&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;sizeof&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;Student&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; filePtr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Öğrenci yapımızın referans göstereceği öğrenci kaydını bilmediğimiz için null atıyoruz&lt;/span&gt;
studentReadPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;studentPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Dosyadan gelen verileri öğrenci listemize yazıyoruz&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;readStudent&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;sPtr&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;studentReadPtr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Öğrenciye bağlı ders kaydı var ise o bilgileri de listemize alıyoruz&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;studentReadPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;coursePtr &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Hafızamızda yer var mı? varsa az alalım&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;courseReadPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;malloc&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sizeof&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;Course&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;No memory space&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Öğrenciye bağlı dersler bilinmediği için null&lt;/span&gt;
studentReadPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;coursePtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Ders bilgilerini okuyalım&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;fread&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;courseReadPtr&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;sizeof&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;struct course&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; filePtr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Okunan dersin referans gösterdiği başka ders var ise sayaç 1&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;courseReadPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;coursePtr &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
counter &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
counter &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Okunan ders bilgileri belleğe alınıypr&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;readCourse&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;studentReadPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;coursePtr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;courseReadPtr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Başka ders olduğu sürece okumaya devam ediyoruz&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;counter &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Bilgilerimizi tutmak için bellekten yer alıyoruz&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;courseReadPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;malloc&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sizeof&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;Course&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;No memory space&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Veriyi dosyadan alıyoruz&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;fread&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;courseReadPtr&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;sizeof&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;struct course&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; filePtr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Bu dersin referans gösterdiği başka ders var mı?&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;courseReadPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;coursePtr &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
counter &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
counter &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Okunan ders bilgileri belleğe alınıypr&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;readCourse&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;studentReadPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;coursePtr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;courseReadPtr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// end if&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// end while&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// end if&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// end while&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// end if&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// end while&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Dosyamızı kapatıyoruz&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;fclose&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;filePtr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// end if&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// end readFile()&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;/* return null
* Açıklama: Fonksiyon dosyadan okuduğumuz öğrenci bilgilerini öğrenci listemize
eklemektedir.
* Öncelikler: Fonksiyon dosya içerisindeki verilerin doğru sıralanmış olduğu koşuluyla
verileri listenin süreli sonuna eklemektedir.
*/&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;readStudent&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;StudentNodePtr&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; sPtr&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; StudentNodePtr&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; readingPtr&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
StudentNodePtr newPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;readingPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Dosyadan gelen verilerimiz&lt;/span&gt;
StudentNodePtr currentPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;sPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Öğrenci listemizin başlangıç noktası&lt;/span&gt;
StudentNodePtr previousPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Bir önceki işlem yapılan alan. Başlangıçta null&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Listemizin sonuna gidiyoruz&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;currentPtr &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
previousPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; currentPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
currentPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;studentPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Daha önce listeye bir veri eklenmediyse yeni verimiz listemizin başına geliyor&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;previousPtr &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;sPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; newPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Eğer listede önceden veri varsa yeni verimizi listenin sonuna ekliyoruz&lt;/span&gt;
previousPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;studentPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; newPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// end if&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// end readStudent()&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;/* return null
* Açıklama: Fonksiyon dosyadan okunan öğrenciye bağlı dersleri ders listesine eklemektedir.
* Öncelikler: Fonksiyon dosya içerisindeki verilerin doğru sıralanmış olduğu koşuluyla
verileri listenin süreli sonuna eklemektedir.
*/&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;readCourse&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;CourseNodePtr&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; crSPtr&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; CourseNodePtr&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; crReadPtr&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
CourseNodePtr newPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;crReadPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Dosyadan okunan ders bilgileri&lt;/span&gt;
CourseNodePtr currentPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;crSPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Ders listesinin başlangıcı ve dolaşma anında aktif olacak noktası&lt;/span&gt;
CourseNodePtr previousPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Bir önceki noktamız başlangıçta null&lt;/span&gt;
newPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;coursePtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Dersin referans edeceği dersi bilmediğimiz için null&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Ders listemizin sonunu belirliyoruz&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;currentPtr &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
previousPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; currentPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
currentPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;coursePtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;previousPtr &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Liste boş ise yeni veri listenin başlangıcı oluyor&lt;/span&gt;
&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;crSPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; newPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Liste boş değil ise listenin sonuna ekleme yapılıyor&lt;/span&gt;
previousPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;coursePtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; newPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// end if&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// end readCourse()&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;/* return null
* Açıklama: Bu fonksiyon sisteme yeni öğrenci kaydı yapmamızı ve öğrencinin aldığı derslerin
kaydının yapılmasını sağlamaktadır.
* Fonksiyon işlem aşamasında öğrenciye bağlı ayrıntılı belgeleri alıp kaydetmek için insertStudent()
ve ders kayıdı yapmak için insertCourse() fonksiyonlarını çağırmaktadır.
* Fonksiyon bir sefer de 1 adet öğrenci kaydı yapabilmektedir. Fakat her öğrenciye istenilen sayıda ders
ataması yapılabilmektedir.
* Öncelikler: İstenilen bilgi alanlarına istenilen bilginin tipinde bilgi girileceği ön görülmüştür.
*/&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;registration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;StudentNodePtr&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; sPtr&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;/* Tanımlamalar
* currentPtr : student yapımız içerisinde işlem yapma aşamasında gezinme işlemimiz sırasında
işlem yapılan geçerli alanı tutacak
* id : öğrenciin id-si
* yesNo : öğrenciye bağlı ders eklemeye devam edilip edilmeyeceğinin cevabı
* code : ders kodu
*/&lt;/span&gt;
StudentNodePtr currentPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;sPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
int id&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
char yesNo&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
char code&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n Student&apos;s Identification Number &gt; &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;id&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// girilen id ile daha önceden herhangi bir kayıt oluşturulup oluşturulmadığına bakıyoruz&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;currentPtr &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;id &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; id&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
currentPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;studentPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Eğer bu id ile daha önce kayıt yapıldı ise hata verdiriyoruz&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;currentPtr &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;id &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; id&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n ID is already in database. Try new one!\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// eğer bu id ile daha önce kayıt yapılmadıysa kayıt işlemine devam ediyoruz&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;/* insertStudent aracılığı ile öğrenci ile ilgili diğer bilgileri alarak listemize ekliyoruz
Bu fonksiyon bize eklenen veri bloğunun bilgilerini döndürecek.
Eklenen öğrencinin listedeki alanı döndürülerek ona bağlı derslerin kayıt edilmesi sağlanmakta
*/&lt;/span&gt;
currentPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;insertStudent&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;sPtr&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; id&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Birden fazla ders eklemesi yapılabileceği için do - while&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Öğrenciye atanacak olan kurs kodunu alıyoruz&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n\n Enter Course Code (Example: UBI503) &gt; &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%s&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; code&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;/* Öğrenci listesinin course pointer adresini fonksiyonumuza gönderiyoruz.
Fonksiyon içerisinde derse ait diğer bilgilerin alınmasının ardından kaydedilecekleri
course listesinin başlangıç noktası bu değer olacak.
*/&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;insertCourse&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;coursePtr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; code&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Bir öğrenci birden fazla ders alabilir. Ders ekleme işleminin devam edip etmeyeceğini soruyoruz&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n\n Do you want to continue to enter course(Y/N)? &gt;&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
yesNo &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;getch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;yesNo &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;Y&apos;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;||&lt;/span&gt; yesNo &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;y&apos;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// end if&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//end registration()&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;/* return int
* Açıklama: Fonksiyon öğrenci kaydında öğrenci&apos;nin bilgilerini almayı ve bu alınan bilgileri
öğrenci listesinde id-sine göre uygun olan yere yerleştirmektedir. Öğrenci bilgilerinin öğrenci
listesinde eklendiği alanın bilgisi öğrencinin aldığı derslerin kayıt aşamasında gerekli olduğu için
çıktı olarak gönderilmektedir.
* Öncelikler: İstenilen bilgi alanlarına istenilen bilginin tipinde bilgi girileceği ön görülmüştür.
*/&lt;/span&gt;
StudentNodePtr &lt;span class=&quot;token function&quot;&gt;insertStudent&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;StudentNodePtr &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;sPtr&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int id&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;/* Tanımlamalar
* newPtr : kullanıcıdan alınacak verilerin tutulacağı student yapısı
* currentPtr : Başlangıç değeri üzerinde işlem yapacağımız ve dosyadan okuduğumuz verilerimizi
tutan listemizin ilk alanı olacak. Liste üzerinde gezinme yaparken o an üzerinde işlem yaptığımız
alan ifade edecek
* previousPtr : Liste üzerinde işlem yaparken o anki alandan önceki son alanımızı ifaed edecek
*/&lt;/span&gt;
StudentNodePtr newPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
StudentNodePtr currentPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;sPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
StudentNodePtr previousPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Başlangıçta null çünkü herhangi bir gezinme yapılmadı&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Kayıtlarımız için hafızadan yer alıyoruz, yani almaya çalışıyoruz&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;newPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;malloc&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sizeof&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;Student&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;No memory space!!!&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// alamazsak hata veriyoruz, oha :D&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
newPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;id &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; id&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// öğrencinin id-sini yapımıza atıyoruz&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// ve öğrenci ile ilgili diğer bilgileri almaya başlıyoruz&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n Student Name &gt; &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%s&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; newPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n Student Surname &gt; &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%s&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; newPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;surname&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n Student Department &gt; &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%s&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; newPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;department&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n Student Class (B.Sc., M.Sc., Ph.D.) &gt; &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%s&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; newPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;clas&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n Student Faculty &gt; &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%s&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; newPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;faculty&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n Student GPA &gt; &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;newPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;gpa&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n Student Year &gt; &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;newPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;year&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
newPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;studentPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Bir sonraki adresi bilmediğimiz için null&lt;/span&gt;
newPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;coursePtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Henüz ders eklemesi yapmadığımız için null&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Yeni veri yapımızdaki bilgilerin listemizde nereye yerleşeceğini belirliyoruz&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;currentPtr &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;newPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;id &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;id&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Gezinme işlemi&lt;/span&gt;
previousPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; currentPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Şuan baktığımız kayıt en son bakılan oluyor&lt;/span&gt;
currentPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;studentPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Şuan baktığımız kaydın referans gösterdiği&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// kayıt yeni şuanki kaydımız oluyor&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Verimizi listemize yerleştirelim&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;previousPtr &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Eğer liste boş ise kaydımızı listenin başına ekliyoruz&lt;/span&gt;
newPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;studentPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;sPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;sPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; newPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Kayıt noktamızı döndürüyoruz&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; newPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Listenin herhangi bir alanına ekliyoruz&lt;/span&gt;
previousPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;studentPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; newPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
newPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;studentPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; currentPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Kayıt noktamızı döndürüyoruz&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; newPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// end if&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// end insertStudent()&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;/* return null
* Açıklama: Fonksiyon yeni öğrenci kaydı sırasında öğrenciye bağlı derslerin ders listesine
uygun şekilde ders koduna göre eklenmesini sağlamaktadır.
* Öncelikler: İstenilen bilgi alanlarına istenilen bilginin tipinde bilgi girileceği ön görülmüştür.
*/&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;insertCourse&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;CourseNodePtr&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; cr&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; char&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; code&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;/* Tanımlamalar
* newPtr : Eklenecek ders&apos;in bilgileri
* currentPtr : Ekleme yapılacak ders listemiz
* previousPtr : Ekleme aşamasında ders listesini gezinme işlemimizde en son işlem yapılan
ders listesi alanı
*/&lt;/span&gt;
CourseNodePtr newPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
CourseNodePtr currentPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;cr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
CourseNodePtr previousPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Daha önce bu ders&apos;in öğrenciye atanıp atanmadığına bakıyoruz&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;currentPtr &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;strcmp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;code&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; code&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
currentPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;coursePtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Eğer bu code ile daha önce kayıt yapıldı ise hata verdiriyoruz&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;currentPtr &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;strcmp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;code&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; code&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n This course is already assinged. Please assign an other one or quit.\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;/* Daha önce bu kod ile bir ders eklenmemiş ise ders ile ilgili diğer bilgileri de
alarak listemize ekliyoruz */&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Umarım hafızamızda yer vardır O_o&lt;/span&gt;
newPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;malloc&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sizeof&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;Course&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;strcpy&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;newPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;code&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; code&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n\t Course Name &gt; &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;gets&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;newPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Bu kod parçacığını iki kez yazmamdaki amaç; bir kez yazığımda&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;gets&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;newPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// hata alıyor olmamdır.&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n\t Course Instructor Name &gt; &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;gets&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;newPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;instructor&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n\t Course Term (Spring/Fall) &gt; &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%s&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; newPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;term&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n\t Course Year (2014) &gt; &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;newPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;year&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
newPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;coursePtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Referans edeceği yeni alanı bilmediğimiz için null&lt;/span&gt;
previousPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Bir önce işlem yapılan alan olmadığı için null&lt;/span&gt;
currentPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;cr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;/* currentPtr-i başlangıçta gelen code ile daha önce bir kayıt
girilip girilmediğini belirlemek için kullanmıştık. Bu yüzden tuttuğu değer değişmişti.
Listemizi tekrardan dolaşmak ve yeni kaydın yerleşeceği yeri belirlemek için kayıt
yapacağımız listemizin ilk alanını atıyoruz */&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Yeni kaydın listemiz de nereye yerleşeceği belirliyoruz&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;currentPtr &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;strcmp&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;newPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;code&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;code&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
previousPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; currentPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Şuan baktığımız kayıt en son bakılan oluyor&lt;/span&gt;
currentPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;coursePtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Şuan baktığımız kaydın referans gösterdiği&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// kayıt yeni şuanki kaydımız oluyor&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Verimizi listemize yerleştirelim&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;previousPtr &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Eğer liste boş ise kaydımızı listenin başına ekliyoruz&lt;/span&gt;
newPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;coursePtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;cr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;cr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; newPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Listenin herhangi bir alanına ekliyoruz&lt;/span&gt;
previousPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;coursePtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; newPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
newPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;coursePtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; currentPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// end if&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//end insertCourse()&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;/* return null
* Açıklama: Fonksiyon girilecek id-ye göre öğrenci listesinde arama yapmaktadır.
Bulunan öğrencinin tüm bilgileri ve öğrenciye bağlı derslerin kodları listelenmektedir.
*/&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;findStudent&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;StudentNodePtr&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; sPtr&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
int id&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// aranan öğrenci id-si&lt;/span&gt;
StudentNodePtr currentPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;sPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Üzerinde işlem yapılan öğrenci listesi noktası&lt;/span&gt;
CourseNodePtr tempCoursePtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Öğrenci&apos;nin course listesinde referans ettiği nokta&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Eğer öğrenci listemiz boş ise aranacak öğrenci de yok demektir&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;currentPtr &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n There is no student registration in DataBase!!!\n\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Aranacak öğrenci id-sini alıyoruz&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n Enter Student&apos;s ID &gt; &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;id&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Tüm listeyi kontrol ediyoruz, öğrenci bilgilerini bulabilmek için&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;currentPtr &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Eğer aranan öğrenci listemizde var ise bilgilerini okuyabiliriz&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;id &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; id&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Öğrenci&apos;nin course listesinde referans ettiği noktayı tutuyoruz&lt;/span&gt;
tempCoursePtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;coursePtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n%-8s%-8s%-10s%-15s%-8s%-10s%-6s%-8s%-13s&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Id&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Name&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Surname&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Department&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Class&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Faculty&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Gpa&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Year&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Courses&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n%-8d%-8s%-10s%-15s%-8s%-10s%-6d%-8d&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;id&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;surname&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;department&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;clas&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;faculty&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;gpa&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;year&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Referans aldığımız noktadan başlayarak tüm bağlı dersleri okuyoruz&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;tempCoursePtr &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%s, &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; tempCoursePtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;code&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
tempCoursePtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; tempCoursePtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;coursePtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// end while&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Öğrenciyi bulduğumuz noktadan sonraki kayıtlara bakmamıza gerek yok.&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Zamandan ve kaynak kullanımından tasarruf =)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// end if&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Öğrenciyi bulamadığımız sürece bir sonraki alana bakıyoruz&lt;/span&gt;
currentPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;studentPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// end while&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Liste içerisinde öğrenci bulunamazsa olmadığını söylüyoruz&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;currentPtr &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n Student couldn&apos;t be found in DataBase!!!\n\n &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// end if&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// end findStudent()&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;/* return null
* Açıklama: Fonksiyon öğrenci listesinden id değerine göre öğrenci kaydı silme
işlemini yapmaktadır. Silme işlemi gerçekleşmeden önce arama fonksiyonundaki gibi
öğrenci bilgileri (aldığı dersler hariç) gösterilmektedir. Kullanıcının sildiği kayıttan
emin olması sağlanmaktadır.
Öğrenci bilgileri ile birlikte öğrencinin aldığı dersler de ders listesinden silinmektedir.
*/&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;deleteStudent&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;StudentNodePtr&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; sPtr&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
int id&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Silinmek istenen öğrenci&apos;nin id-si&lt;/span&gt;
char yesNo&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Silme işlemi onayı&lt;/span&gt;
StudentNodePtr currentPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
StudentNodePtr previousPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
StudentNodePtr tempPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Silinecek noktanın bilgisini tutacak&lt;/span&gt;
previousPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
currentPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;sPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
CourseNodePtr tempCoursePtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Öğrencinin derslerini silmede tampon&lt;/span&gt;
CourseNodePtr currentCoursePtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// İşlem yapılan ders alanı&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Silinmek istenen öğrencinin id-sini alıyoruz&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n Enter student&apos;s Id that you want to delete &gt; &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;id&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Öğrenci&apos;nin listedeki yerini belirlemeye çalışıyoruz&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;currentPtr &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Öğrenci&apos;nin yerini belirlediğimiz anda silme işlemine başlıyoruz&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;id &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; id&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Öğrenci&apos;nin ders listesindeki ilk ders kaydının bilgisini alıyoruz&lt;/span&gt;
currentCoursePtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;coursePtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Kullanıcının doğru kaydı silip silmediğini görebilmesi için öğrenci bilgilerini ekrana basıyoruz&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\nYou&apos;re about to delete following student !!!\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n%-8s%-8s%-10s%-15s%-8s%-10s%-6s%-8s&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Id&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Name&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Surname&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Department&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Class&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Faculty&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Gpa&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Year&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n%-8d%-8s%-10s%-15s%-8s%-10s%-6d%-8d&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;id&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;surname&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;department&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;clas&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;faculty&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;gpa&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;year&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Gerçekten silmek istiyor mu? istemiyor mu?&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n\n Are you sure to delete (Y/N) &gt; &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
yesNo &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;getch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;yesNo &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;y&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;yesNo &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;Y&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Öğrenciye bağlı tüm dersleri siliyoruz&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;currentCoursePtr &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
tempCoursePtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; currentCoursePtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
currentCoursePtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; currentCoursePtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;coursePtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;free&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;tempCoursePtr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Alanımızı bellekten kaldırıyoruz&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;id &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;sPtr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;id&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Silinecek nokta listenin başlangıç noktası ise&lt;/span&gt;
tempPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;sPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Silinecek alanı tutuyoruz&lt;/span&gt;
&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;sPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;sPtr &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;studentPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Listenin yeni başlangıç listesini silinecek&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// alanın referans ettiği alan yapıyoruz&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;free&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;tempPtr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Alanımızı listeden siliyoruz&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Silinecek nokta başlangıçtan farklı bir yerde ise&lt;/span&gt;
tempPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; currentPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
previousPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;studentPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;studentPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;free&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;tempPtr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Alanımızı listeden siliyoruz&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;//return id;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n\n STUDENT IS DELETED\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// end if&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Öğrenciyi bulduğumuz noktadan sonrasına bakmaya gerek yok&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token comment&quot;&gt;/*end if*/&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Listeyi dolaşma işlemine devam ediyoruz.&lt;/span&gt;
previousPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; currentPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
currentPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;studentPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// end while&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;currentPtr &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Eğer id listede yok ise yok diyoruz =)&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n Student&apos;s ID is not in database!&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// end deleteStudent()&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;/* return null
* Açıklama: Fonksiyon öğrenci listesinde kayıtlı olan bir öğrenciye atanmış dersler
arasından herhangi bir veya daha fazlasını silme işlemini yapmakltadır.
Girilen id değerine göre öğrenci listesinde bulunan öğrencinin bilgileri ev aldığı derslerin
kodları kullanıcının rahat işlem yapabilmesi adına listelenmektedir.
Kullanıcının gireceği ders koduna göre ders listesinden ilgili dersi silme işlemi gerçekleştirilmektedir.
*/&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;deleteCourse&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;StudentNodePtr&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; sPtr&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;/* Tanımlamalar
id: Öğrenci&apos;nin id-si
wannaDeleteCode : Silinecek course kodu
yesNo : Silme işlemi onayı
currentPtr : Öğrenci listesi&apos;nin o anda işlem yapılan alanı
currentCoursePtr : Üzerinde işlem yapılan ders alanı
tempCoursePtr : Silinecek ders bilgisi
previousCoursePtr : Bir önce üzerinde işlem yapılan ders alanı
*/&lt;/span&gt;
int id&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
char wannaDeleteCode&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
char yesNo&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
StudentNodePtr currentPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;sPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
CourseNodePtr currentCoursePtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
CourseNodePtr tempCoursePtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
CourseNodePtr previousCoursePtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Öğrenci listemiz boş ise herhangi bir işlem yapamayız&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;currentPtr &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n There is no student registration in DataBase!!!\n\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Ders kaydını sileceğimiz öğrencinin id-sini alıyoruz&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n Enter Student&apos;s ID which you want to delete his/her course &gt; &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;id&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Öğrenci listemizi dolaşıyoruz, istenen öğrencinin bilgilerini bulabilmek için&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;currentPtr &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Öğrencinin listedeki yerini bulduk isek işlemlere başlayalım&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;id &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; id&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Öğrenci&apos;nin ders listesindeki ilk ders kaydının bilgisini alıyoruz&lt;/span&gt;
currentCoursePtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;coursePtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Öğrenci bilgilerini kullanıcıya sunalım ki doğru öğrenci üzerinde işlem yaptığından emin olsun&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n%-8s%-8s%-10s%-15s%-8s%-10s%-6s%-8s%-13s&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Id&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Name&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Surname&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Department&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Class&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Faculty&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Gpa&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Year&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Courses&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n%-8d%-8s%-10s%-15s%-8s%-10s%-6d%-8d&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;id&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;surname&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;department&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;clas&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;faculty&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;gpa&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;year&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Öğrenciye bağlı dersleri yazdıralım&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;currentCoursePtr &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%s, &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; currentCoursePtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;code&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
currentCoursePtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; currentCoursePtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;coursePtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;currentCoursePtr &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Silinmek istenen ders&apos;in kodu-nu alalım&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n Enter Course Code which you want to delete &gt; &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token comment&quot;&gt;/*course code is got from user*/&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%s&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; wannaDeleteCode&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;/* Dersleri yazdırma aşamasında ders başlangıç noktamızı kaybettiğimiz için
başlangıç noktamızı yeniden alıyoruz */&lt;/span&gt;
currentCoursePtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;coursePtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Silinmek istenen dersin alanını bulabilmek için listeyi sonuna kadar dolaşıyoruz&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;currentCoursePtr &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Dersin yerini belirlediysek silme işlemine başlıyoruz&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;strcmp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;currentCoursePtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;code&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; wannaDeleteCode&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Kullanıcı dersi silmekten gerçekten emin mi?&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n Are you sure to delete (Y/N) ? &gt;&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
yesNo &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;getch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Emin ise silme işlemine geçelim&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;yesNo &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;y&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;yesNo &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;Y&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Silinecek nokta listenin başlangıcı ise&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;strcmp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;coursePtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;code&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; wannaDeleteCode&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
tempCoursePtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;coursePtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Silinecek alanımızı tutuyoruz&lt;/span&gt;
currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;coursePtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;coursePtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;coursePtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Silinecek alanın referans gösterdiği alanı&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// listenin başlangıç npktası yapıyoruz&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;free&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;tempCoursePtr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Alanımızı bellekten kaldırıyoruz&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n\n &gt; COURSE IS DELETED\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Dersi bulduğumuz noktadan sonrasına bakmaya gerek yok&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Silinecek nokta başlangıçta değilse&lt;/span&gt;
tempCoursePtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; currentCoursePtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
previousCoursePtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;coursePtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; currentCoursePtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;coursePtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;free&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;tempCoursePtr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Alanımızı bellekten kaldırıyoruz&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n\n &gt; COURSE IS DELETED\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Dersi bulduğumuz noktadan sonrasına bakmaya gerek yok&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// end if&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// end if&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Listemizi dolaşmaya devam ediyoruz&lt;/span&gt;
previousCoursePtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; currentCoursePtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
currentCoursePtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; currentCoursePtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;coursePtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// end while&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// İstenen code ile öğrenciye ders ataması yapılmamış ise uyarıyoruz&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;currentCoursePtr &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n This course is not assigned to this student!&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Dolaşmaya evam etmemize gerek yok&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// end if&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Öğrenciyi bulmak için listeyi dolaşmaya devam ediyoruz&lt;/span&gt;
currentPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;studentPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// end while&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Öğrenci listede yok ise uyarıyoruz&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;currentPtr &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n Student couldn&apos;t be found in DataBase!!!\n\n &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// end if&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// end deleteCourse()&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;/* return null
* Açıklama: Fonksiyon sınıf dönemlerinde kaç adet öğrencinin olduğunu hesaplamakta
ve ekrana yazdırmaktadır.
*/&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;displayClassNumbers&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;StudentNodePtr&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; sPtr&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
StudentNodePtr currentPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;sPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Öğrenci listesi başlangıç noktası&lt;/span&gt;
int bsc &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// B.Sc. olan kişi sayısı&lt;/span&gt;
int msc &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// M.Sc. olan kişi sayısı&lt;/span&gt;
int phd &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Ph.D. olan kişi sayısı&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Öğrenci listesinin tamamını dolaşıyoruz&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;currentPtr &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Tipe göre değer arttırmalarımızı yapıyoruz&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;strcmp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;clas&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;B.Sc.&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
bsc&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;strcmp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;clas&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;M.Sc.&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
msc&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;strcmp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;clas&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Ph.D.&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
phd&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// end if&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Listeyi dolaşmaya devam ediyoruz&lt;/span&gt;
currentPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;studentPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// end while&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Sonuçları ekrana basıyoruz&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n\t%-10s%-25s\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;CLASS&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;NUMBER OF STUDENTS&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\t%-10s%-25d\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;B.Sc.&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; bsc&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\t%-10s%-25d\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;M.Sc.&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; msc&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\t%-10s%-25d\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Ph.D.&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; phd&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n\t&gt; LISTED&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// end displayClassNumbers()&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;/* return null
* Açıklama: Fonksiyon kullanıcının gireceği ders kodu, ders dönemi ve yılı bilgileri
ile kısıtlanan arama koşulunda bu dersi alan öğrencileri listelemektedir.
* Öncelikler: İstenilen bilgi alanlarına istenilen bilginin tipinde bilgi girileceği ön görülmüştür.
*/&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;displayRecvCourse&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;StudentNodePtr&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; sPtr&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
StudentNodePtr currentPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;sPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Öğrenci listesi başlangıcı&lt;/span&gt;
CourseNodePtr courseCurrentPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Ders listesi o anki noktası&lt;/span&gt;
char courseCode&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// İstenen dersin kodu&lt;/span&gt;
char courseTerm&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// İstenen dersin dönemi&lt;/span&gt;
int courseYear&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// İstenen dersin yılı&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Kullanıcıdan ders kriterlerini alalım&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n\tCourse Code &gt; &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%s&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; courseCode&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n\tCourse Term &gt; &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%s&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; courseTerm&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n\tCourse Year &gt; &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;courseYear&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n\t%-10s%-20s%-20s\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;ID&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;NAME&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;SURNAME&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Öğrenci listesinin tamamını dolaşalım&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;currentPtr &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Üzerinde işlem yapılan öğrenciye bağlı ders listesi alanı&lt;/span&gt;
courseCurrentPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;coursePtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Başlangıç liste noktası ve buna bağlı alanların gezerek ders kriterlerimize uygun&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// ders olup olmadığına bakıyoruz&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;courseCurrentPtr &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// O an üzerine işlem yaptığımız ders&apos;in bilgileri kriterlerimize uygun ise ekrana yazdırıyoruz&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;strcmp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;courseCurrentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;code&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; courseCode&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;strcmp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;courseCurrentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;term&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;courseTerm&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;courseCurrentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;year &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; courseYear&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\t%-10d%-20s%-20s\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;id&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;surname&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Bir tane uyan bulmamız, öğrencinin o dersi aldığının kanıtı. Diğer dersleri dolaşmamıza gerek yok.&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Bakılan kriterlere uygun ders değil ise bir diğer ders ile aramaya devam ediyoruz&lt;/span&gt;
courseCurrentPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; courseCurrentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;coursePtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// end while&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Diğer öğrenci&apos;nin dersi alıp almadığına bakıyoruz&lt;/span&gt;
currentPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;studentPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// end while&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n\t&gt; LISTED&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// end displayRecvCourse()&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;/* return null
* Açıklama: Bu fonksiyon kullanıcının sistemden çıkışı sırasında bellekte bulunan
öğrenci ve ders listesi içerisindeki bilgileri veritabanımız olan student.dat
dosyası içerisine kaydetmektedir.
*/&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;writeDb&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;&lt;span class=&quot;token constant&quot;&gt;FILE&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; filePtr&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; StudentNodePtr &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; sPtr&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
StudentNodePtr currentPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;sPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Öğrenci listesinin başlangıç noktası&lt;/span&gt;
CourseNodePtr tempCoursePtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Öğrenciye bağlı dersleri dolaşmada kullanılacak nokta tutucu&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Veritabanı olarak kullanacağımız dosyayı işlem yapılabilir hale getirelim&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;filePtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;fopen&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;student.dat&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;r+&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n file can&apos;t be opened!!!\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Öğrenci listesinin tamamını dolaşalım&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;currentPtr &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Öğrenciye bağlı derslerin ders listesindeki başlangıç noktasını tutalım&lt;/span&gt;
tempCoursePtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;coursePtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// O anki öğrencinin bilgilerini dosyamıza yazalım&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;fwrite&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;currentPtr&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;sizeof&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;struct student&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; filePtr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Öğrenciye bağlı tüm dersleri de dosyamıza yazalım&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;tempCoursePtr &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Bilgileri dosyaya yazalım&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;fwrite&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;tempCoursePtr&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;sizeof&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;struct course&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; filePtr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Bir sonraki derse geçelim&lt;/span&gt;
tempCoursePtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; tempCoursePtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;coursePtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Bir sonraki öğrenciye geçelim&lt;/span&gt;
currentPtr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; currentPtr&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;studentPtr&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// end while&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// end while&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;close&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;filePtr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Dosyamızı kapatalım&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n Data has been saved to the student.dat File\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//end writeDb()&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2014/veri-yapilari-ve-algoritmalari-donem-projesi/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[C İle Kodlanmış Algoritma Örnekler]]></title><description><![CDATA[Bu sene Yüksek Lisans kapsamında aldığımız Veri Yapıları ve Algoritmaları dersinde her hafta için farklı ödevler hazırladık.]]></description><link>https://blog.hkucuk.com/2014/c-ile-kodlanmis-algoritma-ornekler/</link><guid isPermaLink="false">https://blog.hkucuk.com/2014/c-ile-kodlanmis-algoritma-ornekler/</guid><pubDate>Mon, 20 Jan 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Bu sene Yüksek Lisans kapsamında aldığımız Veri Yapıları ve Algoritmaları dersinde her hafta için farklı ödevler hazırladık. Bu ödevlerin her biri temel veri yapılarını anlamayı, temel algoritma geliştirme becerilerini geliştirmeyi ve algoritmik düşünmeyi geliştirmeyi amaçlıyordu. Bu amaçlarla ortak hedefleri olan kişilerin yararlanabilmeleri adına aşağıda proje programlarını ve çözümlerini bulabilirsiniz.&lt;/p&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li&gt;Ödev içerisinde geliştirilmesi istenenler:&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;İkilik sayı sistemindeki bir sayının onluk sistemdeki karşılığının hesaplayan programın kodlanması
Pozitif bir sayının faktöryelini hesaplayan programın kodlanması
Matematiksel Sabit e ‘ yi hesaplayan programın kodlanması&lt;/p&gt;
&lt;p&gt;Program: &lt;a href=&quot;https://dl.dropboxusercontent.com/u/18296433/Blog/dosya/%C3%96dev_1.rar&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;C ile geliştirilmiş çözüm algoritmaları için tıklayınız&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ödev Raporu: &lt;a href=&quot;https://dl.dropboxusercontent.com/u/18296433/Blog/belge/Proje%20Raporlar%C4%B1/1.%20Hafta%20%C3%96devi.docx&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;İndirmek için tıklayınız&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;Ödev içerisinde geliştirilmesi istenenler:&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Bir şirketin çalışanlarına haftalık olarak yapacağı ödemeleri hesaplayan programın kodlanması
1994 ile 1999 yılları arasındaki tarihlerden istenilenin takvimini listeleyen programın kodlanması&lt;/p&gt;
&lt;p&gt;Program: &lt;a href=&quot;https://dl.dropboxusercontent.com/u/18296433/Blog/dosya/%C3%96dev_2.rar&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;C ile geliştirilmiş çözüm algoritmaları için tıklayınız&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ödev Raporu: &lt;a href=&quot;https://dl.dropboxusercontent.com/u/18296433/Blog/belge/Proje%20Raporlar%C4%B1/2.%20Hafta%20%C3%96devi.docx&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;İndirmek için tıklayınız&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;Ödev içerisinde geliştirilmesi istenenler:&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;1 ile 1000 arasında üretilen bir sayıyı tahmin etmek için oynanan oyunun programı
Fibonacci sayılarının istenilen adımı kadar hesaplanmasını sağlayan ve sistemin hesaplayabileceği en büyük fibonacci sayısını bulan program
İki sayının en büyük ortak bölen’ini hesaplayan program&lt;/p&gt;
&lt;p&gt;Program: &lt;a href=&quot;https://dl.dropboxusercontent.com/u/18296433/Blog/dosya/%C3%96dev_3.rar&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;C ile geliştirilmiş çözüm algoritmaları için tıklayınız&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ödev Raporu: &lt;a href=&quot;https://dl.dropboxusercontent.com/u/18296433/Blog/belge/Proje%20Raporlar%C4%B1/3.%20Hafta%20%C3%96devi.docx&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;İndirmek için tıklayınız&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;ol start=&quot;4&quot;&gt;
&lt;li&gt;Ödev içerisinde geliştirilmesi istenenler:&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Matematikte Eratosthenes (Eratosten) Eleği olarak bilinen ve belirli bir sayıya kadar yer alan asal sayıların bulunması amacıyla kullanılan yöntem aracılığı ile 1 – 1000 arasındaki sayılardan asal olanları bulan sistemin kodlanması&lt;/p&gt;
&lt;p&gt;Program: &lt;a href=&quot;https://dl.dropboxusercontent.com/u/18296433/Blog/dosya/%C3%96dev_4.rar&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;C ile geliştirilmiş çözüm algoritmaları için tıklayınız&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ödev Raporu: &lt;a href=&quot;https://dl.dropboxusercontent.com/u/18296433/Blog/belge/Proje%20Raporlar%C4%B1/4.%20Hafta%20%C3%96devi.docx&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;İndirmek için tıklayınız&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;ol start=&quot;5&quot;&gt;
&lt;li&gt;Ödev içerisinde geliştirilmesi istenenler:&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;İki hayvanın yarışmasını anlatan Kaplumbağa ile Tavşan hikayesinden yola çıkarak, Kaplumbağa ve Tavşan’ın yarışmalarını sağlayan programın kodlanması&lt;/p&gt;
&lt;p&gt;Program: &lt;a href=&quot;https://dl.dropboxusercontent.com/u/18296433/Blog/dosya/%C3%96dev_5.rar&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;C ile geliştirilmiş çözüm algoritmaları için tıklayınız&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ödev Raporu: &lt;a href=&quot;https://dl.dropboxusercontent.com/u/18296433/Blog/belge/Proje%20Raporlar%C4%B1/5.%20Hafta%20%C3%96devi.docx&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;İndirmek için tıklayınız&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;ol start=&quot;6&quot;&gt;
&lt;li&gt;Ödev içerisinde geliştirilmesi istenenler:&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Bir hırdavat dükkanının sahibi olarak, envarterlerimizin kayıtlarını tutabileceğimiz programın kodlanması&lt;/p&gt;
&lt;p&gt;Program: &lt;a href=&quot;https://dl.dropboxusercontent.com/u/18296433/Blog/dosya/%C3%96dev_6.rar&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;C ile geliştirilmiş çözüm algoritmaları için tıklayınız&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ödev Raporu: &lt;a href=&quot;https://dl.dropboxusercontent.com/u/18296433/Blog/belge/Proje%20Raporlar%C4%B1/6.%20Hafta%20%C3%96devi.docx&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;İndirmek için tıklayınız&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;ol start=&quot;7&quot;&gt;
&lt;li&gt;Ödev içerisinde geliştirilmesi istenenler:&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Sıralanmış iki tam sayı listesini birleştirerek sıralı tek bir tam sayı listesi yapan programın kodlanması&lt;/p&gt;
&lt;p&gt;Program: &lt;a href=&quot;https://dl.dropboxusercontent.com/u/18296433/Blog/dosya/%C3%96dev_7.rar&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;C ile geliştirilmiş çözüm algoritmaları için tıklayınız&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ödev Raporu: &lt;a href=&quot;https://dl.dropboxusercontent.com/u/18296433/Blog/belge/Proje%20Raporlar%C4%B1/7.%20Hafta%20%C3%96devi.docx&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;İndirmek için tıklayınız&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Her programın kodlaması ile ilgili açıklamalar raporlarının içerisinde ayrıntılı yer almaktadır. Bununla beraber kodlar içerisinde yorum satırları ile de gerekli açıklamalar yapılmıştır. Programların çalıştırılmasından kaynaklanacak hatalardan sorumlu olmadığımı da belirtmek isterim. Yararlı olmasını dilerim.&lt;/p&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2014/c-ile-kodlanmis-algoritma-ornekler/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Bir Çocuktan Katil Yaratma]]></title><description><![CDATA[Bir çocuktan katil yaratma öykülerinin en korkuncu 1920'li yıllarda başlamıştır.]]></description><link>https://blog.hkucuk.com/2013/bir-cocuktan-katil-yaratma/</link><guid isPermaLink="false">https://blog.hkucuk.com/2013/bir-cocuktan-katil-yaratma/</guid><pubDate>Mon, 25 Nov 2013 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;… Bir çocuktan katil yaratma öykülerinin en korkuncu 1920’li yıllarda başlamıştır. Chicago’lu şekerleme fabrikatörü Otto Schnering, piyasaya sunduğu yeni &gt;ürününe, ABD Başkanı Cleveland’ın yeni doğan kızı Ruth’tan etkilenerek, “Babe Ruth” adını verir. Babe Ruth, üstü çikolata kaplı çubuk şekerlerdir. Schnering, &gt;ürünün tanıtımı için Doug Davis’le anlaşır. Davis, ordudan ayrılan bir pilottur ve birlaç uçaklık filonun da sahibidir. Reklam kampanyası olarak, kağıttan &gt;yapılan küçük paraşütlere bağlı “Babe Ruth” çikolataları uçaktan halkın üstüne atılacaktır. Pilot Davis, bir arkadaşının evine ziyarete gittiğinde yeni aldığı &gt;reklam işini anlatır. Sohbete kulak misafiri olan evin çocuğu Paul, çikolataları uçaktan atmayı çok istediğini söylese de, babası bunu tehlikeli bulur ve izin &gt;vermez. Reklam kampanyasında bir çocuğun kullanılması fikri hoşuna giden Davis, güç olsada arkadaşını ikna etmeyi başarır. O günden sonra, bir uçak sesi duyan &gt;halk gökyüzüne bakmakta ve 12 yaşındaki Paul’un pilot kabininin penceresinden attığı çikolataları kapışmaktadır. Havacılığı uçaktan çikolata atmakla seven &gt;Paul Tibbets adlı o çocuk pilot olacak ve 6 Ağustos 1945  tarihinde Hiroşima’ya “Little Boy” adlı atom bombasını atacaktır.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Sunay Akın, Geyikli Park, Türkiye İş Bankası Kültür Yayınları&lt;/strong&gt;&lt;/p&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2013/bir-cocuktan-katil-yaratma/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Kutsal Olmayan Bir Arzunun Kurbanı]]></title><description><![CDATA[Gençken, bir gün ormanda okla yaraladığım bir kuşun ölümünü seyretmiştim; bu dünyayı terk etme arzumu harekete geçiren işte bu olaydır.]]></description><link>https://blog.hkucuk.com/2013/kutsal-olmayan-bir-arzunun-kurbani/</link><guid isPermaLink="false">https://blog.hkucuk.com/2013/kutsal-olmayan-bir-arzunun-kurbani/</guid><pubDate>Mon, 22 Jul 2013 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;Gençken, bir gün ormanda okla yaraladığım bir kuşun ölümünü seyretmiştim; bu dünyayı terk etme arzumu harekete geçiren işte bu olaydır. Kuşun kanayan göğsünü &gt;hatırladıkça hala ürperiyorum. Bugün bile kendimi o kuş gibi görüyorum; az önce özgürce uçabilirken, bir dakika sonra yere çakılmış can çekişen bir canlı…&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;…Cinlerim bu sabah iş başında! Erimiş mum kokan kasvetli taş hücremde, her şey bir yana, bunların yalnızca küçük kederler olduğuna kendimi ikna etmem çok &gt;zor oluyor. Kalbimin tedirginliği ile karşılaştırıldığında ölü bir kuşun cansızlığı aslında küçük bir olay. Ruhum huzursuz; çünkü sürekli olarak, her türlü &gt;mantığa meydan okuyan bir şeye elimi uzatıyorum. İmanım, özlemlerimin o geniş ve boş uzamını kuşatmaya yeterli görünmüyor…&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;James Cowan, -A Mapmaker’s Dream- Haritacının Rüyası, Literatür Yayınları.&lt;/strong&gt;
&lt;em&gt;Çeviri: Zarife Biliz&lt;/em&gt;&lt;/p&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2013/kutsal-olmayan-bir-arzunun-kurbani/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Madımak, Kirlenmiş Bir Renkten Fazlası]]></title><description><![CDATA[Gençken, bir gün ormanda okla yaraladığım bir kuşun ölümünü seyretmiştim; bu dünyayı terk etme arzumu harekete geçiren işte bu olaydır.]]></description><link>https://blog.hkucuk.com/2013/madimak-kirlenmis-bir-renkten-fazlasi/</link><guid isPermaLink="false">https://blog.hkucuk.com/2013/madimak-kirlenmis-bir-renkten-fazlasi/</guid><pubDate>Tue, 02 Jul 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;Kova Kaleci&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Yedi kova su yeterliydi&lt;br&gt;
sıvas’taki ateşi söndürmek için&lt;br&gt;
oysa her biri devlet dairesindeki kovaların&lt;br&gt;
üstüne yazılı altı harfli bir sözcüktü yangın&lt;br&gt;
Yedinci kova taşar engellenemez biçimde&lt;br&gt;
çünkü emekçilerin alın teriyle doludur&lt;br&gt;
işte bu yüzden sinek ölüleri yüzemez&lt;br&gt;
üstünde Futbol takımında mahallenin&lt;br&gt;
kova kaleciydi lakabım ilk kez sevinecektim buna&lt;br&gt;
ama yalnızca avuçlarıma alabildiğim suyu&lt;br&gt;
bir kova gibi sıvas’a taşıyamadım&lt;br&gt;
G harfi boştur yangın kovalarının&lt;br&gt;
ki ortaya çıkar dolu olanları&lt;br&gt;
okununca madımak oteli’nin&lt;br&gt;
merdivenlerinde kurtulmayı bekleyenler için verilen karar: Yan ın&lt;br&gt;
Ve başında anladım&lt;br&gt;
ki bir kuyunun ipin&lt;br&gt;
ucunda derinlerdeki suya uzanan birer kova gibidirler&lt;br&gt;
yangınları söndürmek isteyen darağacına asılı devrimciler.&lt;br&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Sunay AKIN&lt;/strong&gt;&lt;/p&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2013/madimak-kirlenmis-bir-renkten-fazlasi/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[İlköğretim Birinci Kademe Öğrencileri İçin HTML Öğrenme Sistemi]]></title><description><![CDATA[Geçen sene öğretim materyali hazırlama ile ilgili bir dersimiz kapsamında ilköğretim birinci kademe Bilişim Teknolojileri dersinin ders programlarında da yer alan "İnternet Sitesi Yapıyorum" ünitesi üzerinden hareketle, öğrencilerin videolu anlatımlar aracılığıyla HTML dilini öğrenmelerini amaçlayan bir site tasarlamıştım.]]></description><link>https://blog.hkucuk.com/2012/ilkogretim-birinci-kademe-ogrencileri-icin-html-ogrenme-sistemi/</link><guid isPermaLink="false">https://blog.hkucuk.com/2012/ilkogretim-birinci-kademe-ogrencileri-icin-html-ogrenme-sistemi/</guid><pubDate>Tue, 01 May 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Geçen sene öğretim materyali hazırlama ile ilgili bir dersimiz kapsamında ilköğretim birinci kademe Bilişim Teknolojileri dersinin ders programlarında da yer alan “İnternet Sitesi Yapıyorum” ünitesi üzerinden hareketle, öğrencilerin videolu anlatımlar aracılığıyla HTML dilini öğrenmelerini amaçlayan bir site tasarlamıştım. İş dosyalarımı tuttuğum klasörümü düzenlemeye çalışırken sildim sandığım :D bu siteyi sapasağlam bir şekilde buluverdim.&lt;/p&gt;
&lt;p&gt;Bu sene İzmir Dr. Cavit ÖZYEĞİN İlköğretim Okulunda öğretmenlik stajımı yapıyorum. İkinci dönem boyunca 7/C sınıfının derslerini yürütüyorum ve derslerimde öğrencilerime HTML öğretmeyi, daha doğrusu HTML ile ilgili temel bilgileri onlara kazandırmayı amaçlıyorum. Bu derslere başlamadan önce geçen sene yaptığım ve buradan paylaşıyor olduğum programı çok aramıştım fakat bulamamıştım. Derslerin bitmesine çok az bir zaman kala karşıma çıkan programı tekrardan incelediğimde birinci kademe öğrencileri için biraz ağır olduğunu düşünmeme rağmen öğrencilerimle paylaşmayı düşünüyorum. Biraz zorlanma olmadan kalıcı bilgiler elde edilemez. Fakat sadece öğrencilerim bu kaynaktan faydalanmasın, ihtiyacı olan herkes kullanabilsin, öğrenebilsin diyerek bloğuma da koymaya karar verdim :)&lt;/p&gt;
&lt;p&gt;Program içerisinde;&lt;br&gt;
*Html Nedir?&lt;br&gt;
*Html Etiketleri&lt;br&gt;
*Html Parametreler&lt;br&gt;
*Html Metin Biçimlendirme&lt;br&gt;
*Html Listeleme&lt;br&gt;
*Html Formları&lt;br&gt;
*Html Form Action&lt;br&gt;
*Html Tablolar&lt;br&gt;
*Html Bağlantı&lt;br&gt;
*Html Arka Plan&lt;br&gt;
*Html Font&lt;br&gt;
*Html Stiller&lt;br&gt;
*Html Script&lt;br&gt;
*Html Başlık&lt;br&gt;
*Html URL&lt;br&gt;&lt;/p&gt;
&lt;p&gt;konu başlıkları basit bir dille anlatılmaya çalışılmaktadır. Ayrıca basit örnek kodlar ve basit bir değerlendirme kısmı da program içerisinde yer almaktadır.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://dl.dropbox.com/u/18296433/Blog/dosya/HTML.rar&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Programı indirmek için tıklayınız.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Yararlı olması dileklerimle ;)&lt;/p&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2012/ilkogretim-birinci-kademe-ogrencileri-icin-html-ogrenme-sistemi/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Denizli'de Çalışma Toplantısı]]></title><description><![CDATA[3 - 4 - 5 - 6 Mayıs tarihlerinde Denizli'de Toplum Gönüllüleri Atak Organizasyonlarından biri gerçekleştirilecek. "Pati Atak" adını taşıyan bu proje ile sokak hayvanları hakkında bireylerin bilinçlendirilmesi, bir farkındalık oluşturulması amaçlanıyor.]]></description><link>https://blog.hkucuk.com/2012/denizlide-calisma-toplantisi/</link><guid isPermaLink="false">https://blog.hkucuk.com/2012/denizlide-calisma-toplantisi/</guid><pubDate>Sun, 29 Apr 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;3 - 4 - 5 - 6 Mayıs tarihlerinde Denizli’de Toplum Gönüllüleri Atak Organizasyonlarından biri gerçekleştirilecek. “Pati Atak” adını taşıyan bu proje ile sokak hayvanları hakkında bireylerin bilinçlendirilmesi, bir farkındalık oluşturulması amaçlanıyor. 4 gün sürecek olan bu organizasyon için 50’ e yakın kişi farklı şehirlerden Denizliye gelecek ve koordineli bir organizasyon yapılması gerekiyor. Bizde organizasyona katkı sağlamak için Saha Koordinatörümüz ile birlikte geçen hafta sonunu Denizli’de geçirdik ve bir çalışma toplantısı gerçekleştirdik.&lt;/p&gt;
&lt;p&gt;Bu çalışma toplantımızın amacı ekibin atak sonuna kadar yapacaklarının neler olduğunun üzerinde çalışarak bir iş takvimi çıkartmaktı. İş takvimi çıkarmanın öncesinde yapılacak olan atağın ilk fikir süreçleri, hazırlık süreci, hazırlık sürecinde yaşanılan olumlu ve olumsuz durumlar, atak anı ve sonrası hakkında konuşarak ne durumdayız, nereye varmak istiyoruzu biraz daha belirgin hale getirdik. Güzel de oldu :)&lt;/p&gt;
&lt;p&gt;İş takvimi oluşturma aşamasında her ekip (ulaşım, konaklama, yemek, iletişim vb.) kendi iş kalemleri üzerinde çalıştılar. İlk olarak yarım saatlik bu süreçte oluşturdukları iş kalemlerini diğer ekiplere de sunarak eksik olan yerler tamamlandı, yanlışlar düzeltildi. Bu süreçte bir çalışma toplantısından atak toplantısına dönüşen anlar olsa da ekip için verimli tartışmalar da yaşandı. Sunumların ardından her ekip tekrardan bir araya gelerek çıkan iş kalemlerini düzenli bir yapıya getirerek (iş kalemlerinin gruplandırılması, her iş kaleminin hangi tarihler arasında, kim tarafından yapılacağının belirlenmesi) görsel olarak iş takvimlerini oluşturdular. Tüm ekiplerin iş kalemlerinin toplanmasının ardından 137 satırlık bir çalışma takvimi oluşturuldu. :D Allah kolaylık versin :))&lt;/p&gt;
&lt;p&gt;Ekip oluşturduğumuz çalışma takvimi üzerinde hareket ederek daha sağlıklı bir şekilde bu organizasyonun altından kalkacaktır diye düşünüyorum. Her türlü o ekip bu işin üstesinden gelecek, sadece işleri kolaylaştırmanın bir yolunu sunduk biz onlara. Umarım haftaya çok güzel bir organizasyon gerçekleştirirler :) Ben onlarla olamayacağım çünkü büyük ihtimal Bandırma’da yapılacak olan atakta olacağım.&lt;/p&gt;
&lt;p&gt;Dipnot: Toplum Gönüllüleri sahasında yapılan, yapılacak bir çok etkinlik var :) Bunların neler olduğunu merak ediyorsanız Tog Takvim aracılığıyla bu merakınızı giderebilirsiniz :)&lt;/p&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2012/denizlide-calisma-toplantisi/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[İYTE Anahtar Eğitiminleri]]></title><description><![CDATA[Geçtiğimiz hafta sonu İYTE (İzmir Yüksek Teknoloji Enstitüsü) de Toplum Gönüllüleri Vakfı anahtar eğitimlerini gerçekleştirdik. Mavi(Sivil Toplum, STK, Gönüllülük), Kırmızı (Proje Yönetimi), Yeşil(Ekip Çalışması, Etkili İletişim) anahtar eğitimlerini eğitmen arkadaşım Hasan ALTUNOK ile birlikte gerçekleştirdik. Bir de bu eğitimlerden önce Sarı Anahtar - Tog oryantasyonu vardı.]]></description><link>https://blog.hkucuk.com/2012/iyte-anahtar-egitiminleri/</link><guid isPermaLink="false">https://blog.hkucuk.com/2012/iyte-anahtar-egitiminleri/</guid><pubDate>Wed, 18 Apr 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Geçtiğimiz hafta sonu İYTE (İzmir Yüksek Teknoloji Enstitüsü) de Toplum Gönüllüleri Vakfı anahtar eğitimlerini gerçekleştirdik. Mavi(Sivil Toplum, STK, Gönüllülük), Kırmızı (Proje Yönetimi), Yeşil(Ekip Çalışması, Etkili İletişim) anahtar eğitimlerini eğitmen arkadaşım Hasan ALTUNOK ile birlikte gerçekleştirdik. Bir de bu eğitimlerden önce Sarı Anahtar - Tog oryantasyonu vardı. İYTE Saha Sorumlusu Cihan’ın başka bir eğitime gitmesinden ötürü oryantasyonu da ben gerçekleştirdim. Süper, tog, sivil toplum, gençlik, enerji dolu bir hafta sonu oldu.&lt;/p&gt;
&lt;p&gt;Eğitimlere ve oryantasyona ortalama 22 - 24 kişi katıldı. Zaten var olan ekip, eğitimlere katılan arkadaşlar ile daha da genişledi. Eğitimler sırasında gerek uygulamalarımız da gerekse canlandırıcılar da bir gençlik topluluğunda olmanın ne demek olduğunu gösterircesine canlı, enerjik, verimli zamanlar geçirdik. Bundan sonraki süreçte orada kaynaşan ekibin güzel işler çıkarması en büyük dileklerimden bir tanesi. Ki bunu yapabileceklerini gösterdiler hem bizlere hem birbirlerine :)&lt;/p&gt;
&lt;p&gt;İYTE kampüsü benim hoşuma gitti. Çok eleştiri vardı ama ben beğendim :) Gayet geniş, havadar, doğal bir yer. Fakat kampüs de bu kadar çok köpeğin olması biraz ürkütücü :P Havadar demişken, Hasan kardeşim eğitimin birinci gününde bende dönüşünde hasta olduk. Biraz fazla havadardı anlayacağınız :D&lt;/p&gt;
&lt;p&gt;Cumartesi akşamı gittiğimiz mekan (Calipso), kır evi tadındaki kafe, kyk zamalarımı hatırlamamı sağlayan kyk yemekhanesi, iyte kütüphanesine girmek için çektiklerimiz :P her şey yorgunluğuna rağmen güzeldi, verimliydi.&lt;/p&gt;
&lt;p&gt;Son olarak cumartesi gecesi bizi evinde misafir eden Egem’e, eğitime katılan tüm gönüllülere teşekkür ederim.&lt;/p&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2012/iyte-anahtar-egitiminleri/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Sorumlular ve Proje Atölyesi Uygulama Yöntemleri]]></title><description><![CDATA[Şu yazımda Manisa'da yaptığımız Proje ve sorumlular atölyelerinden bahsetmiştim. Atölyelerin nasıl uygulandığı, hangi metotların kullanıldığı gibi konulara değinmemiş, bunlarla ilgili bir döküman oluşturacağımı söylemiştir. O dökümanı daha yeni oluşturabildim :D]]></description><link>https://blog.hkucuk.com/2012/sorumlular-ve-proje-atolyesi-uygulama-yontemleri/</link><guid isPermaLink="false">https://blog.hkucuk.com/2012/sorumlular-ve-proje-atolyesi-uygulama-yontemleri/</guid><pubDate>Wed, 04 Apr 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Şu yazımda Manisa’da yaptığımız Proje ve sorumlular atölyelerinden bahsetmiştim. Atölyelerin nasıl uygulandığı, hangi metotların kullanıldığı gibi konulara değinmemiş, bunlarla ilgili bir döküman oluşturacağımı söylemiştir. O dökümanı daha yeni oluşturabildim :D&lt;/p&gt;
&lt;p&gt;Döküman içerisinde uygulamalar ile ilgili açıklamaları bulabilirsiniz.&lt;/p&gt;
&lt;p&gt;Yararlı olması dileklerimle. &lt;a href=&quot;https://dl.dropboxusercontent.com/u/18296433/Belge/at%C3%B6lyeler.pdf&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Dökümanı indirmek için tıklayınız.&lt;/a&gt;&lt;/p&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2012/sorumlular-ve-proje-atolyesi-uygulama-yontemleri/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Manisa'da Sorumlular Atölyesi]]></title><description><![CDATA[Okulumun son döneminde hafta içi iki buçuk gün boşluğum olmasına rağmen oldukça yoğun olduğumu söylemem gerekiyor. Bu yoğunluk genellikle iş hayatım ve toplum gönüllülerine ayırdığım zamanlardan ve okul ile oluşuyor. Geçen haftayı atölyeler, saha ziyaretleri, okul proje toplantıları ve derslerle geçirdim. Şikayetçi olduğum için bunları dile getirmiyorum :) aksine bu yaptıklarım sayesinde mutlu oluyorum :)]]></description><link>https://blog.hkucuk.com/2012/manisada-sorumlular-atolyesi-ve-proje-atolyesi/</link><guid isPermaLink="false">https://blog.hkucuk.com/2012/manisada-sorumlular-atolyesi-ve-proje-atolyesi/</guid><pubDate>Sun, 01 Apr 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Geçtiğimiz hafta sonu Manisa’da Celal Bayar Üniversitesi Toplum Gönüllüsü arkadaşlar ile iki adet atölye yaptık. Tog Manisa da örgütlenme içerisinde uygulanacak olan sorumluluk sisteminde sorumluluk alacak kişilerin hangi işleri yapacağını konuştuğumuz, belirlediğimiz sorumlular atölyesi ile örgütlenme içerisinde uygulanması için yeni projelerin oluşturulmasını amaçladığımız proje atölyesini gerçekleştirdik. İtiraf etmeliyim, iki atölyenin toplamda 7 buçuk saat sürmesinden dolayı çok yorulduk. Fakat hedeflediğimiz verimi elde ettiğimiz için bu yorgunluk hiç önemli değildi :)&lt;/p&gt;
&lt;p&gt;Manisa Celal Bayar Üniversitesi Tıp Fakültesi Dersliklerinde yaptığımız atölyeler sırasında oldukça eğlenceli ama en önemlisi de konuşarak, tartışarak, üreterek zaman geçirdik. Kocaman derslikte atölyenin sonunda poster asacak duvar kalmaması, ellerimizin board marker ve keçeli kalemler yüzünden rengarenk olması zamanımızı hiç de boşuna geçirmediğimizin birer kanıtıydı :) Atölyeler de neler yaptık, nasıl yaptık gibi konulara girmeyeceğim. Atölyelerin çıktıları tamamlanır tamamlanmaz ve atölyelerde uyguladığım metodlardan oluşan dökümanı hazırlar hazırlamaz buradan paylaşmayı düşünüyorum. Ayrıntıları merak edenler dökümanları inceleyebilirler. Kim bilir, farklı alanlarda bu bilgilerden yararlanmak isteyenler olabilir :)&lt;/p&gt;
&lt;p&gt;Atölyelere katılarak değerli zamanlarını ayıran, bilgilerini sunan tüm katılımcılara bir kez daha teşekkür ediyorum :) Önümüzdeki hafta sonu da İzmir Üniversitesi Toplum Gönüllüleri ile aynı atölyeleri gerçekleştiricez. Aynı güzellik ve verimlilikte geçeceğinden şüphem yok :D&lt;/p&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2012/manisada-sorumlular-atolyesi-ve-proje-atolyesi/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Nezle ve Nezle Adam]]></title><description><![CDATA[Ne illet bir şeydir nezle. Herhangi bir şekilde yakalandıktan sonra ellerimizde kağıt mendillerle gezmeye başlarız. Uzun bir süre devam eder bu.]]></description><link>https://blog.hkucuk.com/2012/nezle-ve-nezle-adam/</link><guid isPermaLink="false">https://blog.hkucuk.com/2012/nezle-ve-nezle-adam/</guid><pubDate>Wed, 28 Mar 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Ne illet bir şeydir nezle. Herhangi bir şekilde yakalandıktan sonra ellerimizde kağıt mendillerle gezmeye başlarız. Uzun bir süre devam eder bu. Öğrenciysek, kendi işimizi yapıyorsak ya da izin alması kolay olan bir işte çalışıyorsak tek derdimiz nezle ile mücadele etmek için işi gücü bırakıp kalabiliriz evimizde. Ohh rahat, sıcak evimiz de yatar, musluk olan burnumuzun civataları düzelene kadar yapmayız bir şey. Bu şekilde “nezle-adam” olmuş sayılmayız. Nezle olan adam/kadın ile nezle adam farklı şeylerdir.&lt;/p&gt;
&lt;p&gt;Elbette her insan gibi şairler de zaman zaman nezle olmuş, olmakla kalmayıp nezleyi şiirlerinde misafir etmişlerdir. Şair A. Kadir bir dizesi ile her burnumu silişimde çıkardığım seste bir aşk melodisi aramama sebep oldu. İşte o dizeler;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Ben burda kasvetli bir yerde olurum&lt;br&gt;
Sen orda rüzgarlı bir yerde olursun&lt;br&gt;
Ben burda öksürür nezle olurum&lt;br&gt;
Sen orda öksürür nezle olursun&lt;br&gt;
Nezleyi dizelerinde misafir eden bir diğer şair de Orhon Murat Arıburnu’dur.&lt;br&gt;
Gani gönüllü Mustafa Bol verir,&lt;br&gt;
herkes sever Lakin Macuun!..&lt;br&gt;
diye bağırırken sesi sevilmez&lt;br&gt;
Nezledir!..&lt;br&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Rengarenk tablasının arkasında “Macuun” diye bağıran seyyar satıcının sesi elbet kırıktır. Nezle olsa bile çocuklarının cep harçlıklarını toplamak, akşam sofrasına ekmek taşıyabilmek için hasta hasta adımlar durur sokakları, bir çok işçi kardeşi gibi… Bir çok kişi tek derdi nezleymiş gibi evinde kalıp hastalığı atlatmaya çalışırken kafasını cama çevirip de dışarıda, soğukta çalışan insanları görmez. Ama gören birisi vardır.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Bardaktan boşanan yağmurun altında&lt;br&gt;
kablo çekiyor amele&lt;br&gt;
bizimse odamız sıcak çay ibriği kaynıyor&lt;br&gt;
bir derdimiz var: Nezle!&lt;br&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Dışarıya bakıpta soğukta, yağmurun altında çalışmak zorunda olan işçileri gözlemleyen kişi Oktay Rifat’dır. Tek derdimiz nezle olmasa bile öyle davranmaktan kendimizi alamamamız, ne komik bir şeydir.&lt;/p&gt;
&lt;p&gt;Nezle olan kadın/adam, aynı zaman da “nezle-adam” olmuyor demiştik. Peki ama nedir bu “nezle-adam”? Bunun cevabını Nazım Hikmet’ten dinliyoruz.&lt;/p&gt;
&lt;p&gt;“Nezleye benzeyen nezle-adam’lar vardır. Nezle-adam size yapacağı kötülüğü önceden bildirmeyecek, anlatmayacak kadar güçsüzdür, boysuz bossuzdur. Ancak onun bütün gücü, bütün boyu bosu buradadır. Nezle nasıl bir öksürükle, bir el sıkmasıyla yakanıza yapışırsa, nezle-adam da bir iki söz, ufacık bir yalanla yakanıza yapışır ve yapıştı mı bir, onun yumuşak, ıslak ellerinden kolay kolay kurtulamazsınız. Ne nezle olun, ne nezle-adam’larla arkadaş…”&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sunay AKIN - İstanbul’un Nazım Planı&lt;/strong&gt;&lt;/p&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2012/nezle-ve-nezle-adam/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Kriptoloji = Kriptografi + Kriptoanaliz]]></title><description><![CDATA[İlgimi uzun zamandır çeken ve üzerinde çeşitli araştırmalar, çalışmalar yaptığım kriptoloji; bilgisayar biliminde güvenlik, gizlilik dendiğinde akla gelen ilk alan olması sebebiyle hem yazılımcılar hem de bilgisayar kullanıcıları açısından büyük önem taşıyor.]]></description><link>https://blog.hkucuk.com/2012/kriptolojikriptografi-kriptoanaliz/</link><guid isPermaLink="false">https://blog.hkucuk.com/2012/kriptolojikriptografi-kriptoanaliz/</guid><pubDate>Mon, 27 Feb 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;İlgimi uzun zamandır çeken ve üzerinde çeşitli araştırmalar, çalışmalar yaptığım kriptoloji; bilgisayar biliminde güvenlik, gizlilik dendiğinde akla gelen ilk alan olması sebebiyle hem yazılımcılar hem de bilgisayar kullanıcıları açısından büyük önem taşıyor.&lt;/p&gt;
&lt;p&gt;Teknolojinin inanılmaz hızlı gelişimi sırasında hayatımızı kolaylaştıran, güzelleştiren yapılar bir yandan da güvenliğimizi tehdit edecek eksiklikleri de kendileri ile birlikte hayatımıza sokuyorlar. İnsanların ağlar aracılığı ile birbirleri ile bilgi paylaşımlarında bulunmaları bir yandan da bu bilgilerin üçüncü, beşinci, onuncu kişiler tarafından elde edilme olasılıklarını arttırıyor.&lt;/p&gt;
&lt;p&gt;“Facebook da arkadaşımla sohbet etmem de ve o konuşmalarımın alınmasında ne sorun var ki?” diye bir soru aklınıza gelebilir. “Hey, naber?”, “İyidir, senden naber?” gibisinden bir sohbet evet sizler için ileride bir sorun teşkil etmeyebilir ama daha derin konuşmalarınızdan bilgisayar korsanlarının yararlanabileceğincen emin olabilirsiniz ;) Olayı biraz daha geniş düşünmekte fayda var.&lt;/p&gt;
&lt;p&gt;Devlet kurumları, askeri birimler vb. önemli kuruluşlar da internette, bilgisayar ortamında bilgi paylaşımında bulunuyorlar ve evet onların paylaştıkları bilgiler “Naber?” değil. Bir e-ticaret platformundan yaptığımız alış verişlerimiz de kart numaramızdan tutunda bir çok bilgiyi sisteme güvenerek bir yerelere gönderiyoruz. Peki ama nereye gidiyor? Nasıl gidiyor? Giderken yolculuğu nasıl geçiyor, başına bir şey geliyor mu? diye düşünüyor muyuz? İşte bu soruları aklımıza getirmeden, güvenli bir şekilde bilgisayar dünyasından paylaşımlarda bulunmamız için bilgisayar bilimciler kriptolojiyi kullanıyorlar.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Peki ama Kriptoloji tam olarak ne?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Kriptoloji; temeli zor matematiksel işlemlere dayanan, bilgi paylaşımında bulunan iki veya daha fazla tarafın arasındaki iletişimin güvenli bir şekilde sağlanması için kullanılan tekniklerin adıdır. Kriptoloji bir matematik bilimidir ve genelde sayılar teorisi üstüne kuruludur. Kriptoloji konusunda çalışan kişiler, bir yandan bilgilerin daha etkili bir şekilde gizlenmesi (Kriptografi) ile uğraşırken bir yandan da bu şifrelerin nasıl çözüleceği (Kriptoanaliz) ile ilgili çalışmaktadırlar. İşte bu yüzden şifre bilimi kendi içerisinde iki farklı alana ayrılır. Kriptografi’nin temel amacı iki veya daha fazla ilgili kişi arasında giden gelen verilerin ilgisiz, alakasız kişiler tarafından anlaşılamamasını sağlamaktır. Bunun için gönderici tarafından gönderilecek olan veri belirli kurallar uygulanarak anlaşılamayan bir veri elde edilir.&lt;/p&gt;
&lt;p&gt;Örnek: Açık mesaj: Merhaba ------------ Kapalı mesaj: abahreM&lt;/p&gt;
&lt;p&gt;Bu anlaşılamayan mesaj ( burda anlaşılıyor ama aldırmayın :P ) alıcıya ulaştığında, alıcı mesajın oluşturulma kuralını tersten kullanarak orjinal mesajı elde eder (Kriptoanaliz). Kriptolojinin önemi gün geçtikçe artıyor. Modern kriptoloji mesajın istenmeyen kişiler tarafından anlaşılamaması, iletimi sırasından değiştirilememesi, mesajı gönderenin saha sonradan “Bunu ben göndermedim.” diyememesi ve mesajı kimin göderdiğinin anlaşılabilmesi gibi konularla ilgilenmektedir. Kriptolojiye küçük bir giriş yaptığım bu konunun ardından kriptoloji dili, kripto sistemler ve bir sürü konu ile ilgili makaleler paylaşacağım. Bilgilerin yararlı olması dileklerimle.&lt;/p&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2012/kriptolojikriptografi-kriptoanaliz/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Odamın Duvarında Volta Atan Mahkumlar, Tutuklular Çemberi]]></title><description><![CDATA[Dünyaya açılımı 1800'lü yıllar da imparator Meici tarafından sağlanan Japonya, bu dönemde Avrupa'ya tabak, çanak, fincan gibi japon seramiklerini ithal etmeye başlamıştı. Tüccarlar uzun süren deniz yolculuklarında eşyaların kırılmaması için kağıtlara sıkıştırılmalarını isterler. Porselen ve seramikler hazırdır, sipariş de vardır, ama ambalaj olarak kullanılacak kağıt ihtiyacı da çoktur.]]></description><link>https://blog.hkucuk.com/2012/odamin-duvarinda-volta-atan-mahkumlar-tutuklular-cemberi/</link><guid isPermaLink="false">https://blog.hkucuk.com/2012/odamin-duvarinda-volta-atan-mahkumlar-tutuklular-cemberi/</guid><pubDate>Tue, 31 Jan 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Dünyaya açılımı 1800’lü yıllar da imparator Meici tarafından sağlanan Japonya, bu dönemde Avrupa’ya tabak, çanak, fincan gibi japon seramiklerini ithal etmeye başlamıştı. Tüccarlar uzun süren deniz yolculuklarında eşyaların kırılmaması için kağıtlara sıkıştırılmalarını isterler. Porselen ve seramikler hazırdır, sipariş de vardır, ama ambalaj olarak kullanılacak kağıt ihtiyacı da çoktur.&lt;/p&gt;
&lt;p&gt;Geleneksel Japon resim sanatı olan “ukiye-o” yetişir imdada. Doğa ve gündelik hayata ilişkin olan bu resimlerden Japonya’da öylesine çok vardır ki, eski ve kullanılmayan “ekiye-o”ler Avrupa’ya gönderilen kırılacak aşyanın sarılmasında kullanılır.&lt;/p&gt;
&lt;p&gt;Gemiler Avrupa kenarlarına ulaştığında, akılları porselen ve seramiklerin kırılıp kırılmadığında olan tüccarlar, paketleri açıp eşyaları kontrol ederler ve bu sırada da kağıtları atarlar.&lt;/p&gt;
&lt;p&gt;Zamanla, “ekiye-o” resimlerinin limanda biriken kağıtları sanatsever tüccarların ilgisini çeker. İnsana huzur veren reklerle çizilen resimlerden etkilenenler o kadar çoktur ki, onlardan biri Anvers Limanı’na her gün gelmekte ve porselen takımları koruma görevi sona erdikten sonra atılan resimleri toplamaktadır. O adam Hollandalıdır ve hiç tanımadığı Japon sanatının dilinden etkilenerek tablolar yapıp, altlarına imzasını “Vincent van Gogh” olarak atacaktır.&lt;/p&gt;
&lt;p&gt;Vincent van Gogh’un öyle bir tablosu vardır ki, sanatçının diğer eserleri arasında aykırı ve çok farklı durmaktadır. Moskova Puşkin Müzesi’ndeki bu tablonun adı Prisoners Round-after Gustave Dore’dir (Tutuklular Çemberi - Gustave Dore’den sonra). Bu tablunun öyküsü Fransa’nın Strasbourg kentinde yaşayan yedi yaşındaki bir çocuktadır…&lt;/p&gt;
&lt;p&gt;Dadısı Françoise, kapıyı açtığında karşısındaki çocuğu görünce çok şaşırır. “Tanrı aşkına! Efendi Gustave, ne oldu sana böyle?.. Kutsal bakire aşkı için, ayakkabıların nerede? Annen seni bu durumda görünce ne diyecek? Neredeydin?”&lt;/p&gt;
&lt;p&gt;Soğuk bir kış günü eve yalın ayak dönen çocuk yanıt verir: “Tamam Françoise, bugün oldukça talihsiz bazı kimselerle, özellikle de kokunç derecede yoksul küçük bir çocukla bayağı bir yol yürüdüm. Benim gibi biriydi, ama paçavralar içindeydi ve ayağında pabuçları yoktu. Kışta kıyamette onu öyle görmek beni üzer biliyorsun. Bu yüzden ona kendiminkileri verdim, çünkü onun benim gibi ayakkabı alacak bir babası yok. Bu konuda hiç bir şey söyleme. Eski pabuçlarını dört ay daha giyerim. Ayaklarına tam uydu; ne şans değil mi?”&lt;/p&gt;
&lt;p&gt;Gustave Dore’dir, ayakkabılarını çıplak ayaklı bir arkadaşına verecek kadar duyarlı olan çocuğun adı… Ve, bu duyarlılığını büyüdüğünde resimlerine, gravürlerine taşıyacaktır.&lt;/p&gt;
&lt;p&gt;Vincent van Gogh, 1890 yılında, Arles’daki St. Paul Akıl Hastanesi’nde tedavi görürken, kardeşi Theo ona Gustave Dore’nin bir gravürünü gönderir. Dore’nin Newgate-Exercise Yard (Newgate Hapishanesi’nde Volta Atan Mahkumlar) adlı bu eserinde, Charles Dickens’ın “Londra’nın sefaletini ve suçluluğunu barındıran bir depo ” olarak tanımladığı ünlü hapishanede çember şeklinde volta atan mahkumlar görülür. Van Gogh, Dore’nin bu eserinden öylesine çok etkilenir ki, aynısını tuvale aktarır. Dore’nin gravüründeki hapsedilmişlik duygusu ve duvarlar arasından kurtulma arzusu, van Gogh’un akıl hastanesinde yaşadığı sıkılmışlıkla birebir örtüşmektedir. Öyle ki, resimde adımlarını tutuklusu ve suçluluk duygusuyla atan adamlar arasında, ortada duran bize doğru bakan şapka giymemiş tek mahkum Vincent van Gogh’tan başkası değildir.&lt;/p&gt;
&lt;p&gt;Kendimi sıkışmış, isteksiz hissettiğimde bu iki tabloya bakarım. Çoğu sabah bu resimlerden kurtulan birinin hissedebileceği gibi mutlu çıkarım evden. Özgürlüğü hatırlatan bu resimlere bu günlerde farklı bir sebepten daha bakıyorum. Bu soğuk havalar da tuvalden bana bakan van Gogh ile her göz göze gelişimizde dışarıda olan, üşüyen , insanlar geliyor aklıma. Gustave Dore gibi ayakkabılarımı vererek herhangi birisine yardımcı olabilmek istiyorum. Ama hangi birisine yetebilirim ki.&lt;/p&gt;
&lt;p&gt;Sokakta, soğukta olduğunu bildiğiniz gördüğünüz kişilere aşağıdaki numaralara ulaşarak yardımcı olabilirsiniz. Ayakkabılarımızı vererek yeterince yardımcı olamayabiliriz fakat bir telefon ile çok yardımcı olabiliriz.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token constant&quot;&gt;ANKARA&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4186662&lt;/span&gt;
İ&lt;span class=&quot;token constant&quot;&gt;STANBUL&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4551300&lt;/span&gt;
İ&lt;span class=&quot;token constant&quot;&gt;ZM&lt;/span&gt;İ&lt;span class=&quot;token constant&quot;&gt;R&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3617151&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2012/odamin-duvarinda-volta-atan-mahkumlar-tutuklular-cemberi/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Php de Anagram Şifreleme]]></title><description><![CDATA[Son zamanlarda kritografiye ilgi duymaya başladım. Okul, staj, iş, toplum gönüllüleri derken yazılımsal anlamda ilgi duyduğum farklı alanlar konusunda çalışma yapmak konusunda pek zamanım kalmasa da arada sırada zamanım oluyor :) Dünde böyle bir zaman ayırdım kendime ve edebiyatta bir sözcüğün harflerinin farklı dizilmesi ile yeni bir sözcük elde etme olarak bilinen anagram tekniğini kullanarak bir şifreleme scripti yazdım. Anagram tekniği hakkında bilgi almak için tıklayın.]]></description><link>https://blog.hkucuk.com/2011/php-de-anagram-sifreleme/</link><guid isPermaLink="false">https://blog.hkucuk.com/2011/php-de-anagram-sifreleme/</guid><pubDate>Mon, 19 Dec 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Son zamanlarda kritografiye ilgi duymaya başladım. Okul, staj, iş, toplum gönüllüleri derken yazılımsal anlamda ilgi duyduğum farklı alanlar konusunda çalışma yapmak konusunda pek zamanım kalmasa da arada sırada zamanım oluyor :) Dünde böyle bir zaman ayırdım kendime ve edebiyatta bir sözcüğün harflerinin farklı dizilmesi ile yeni bir sözcük elde etme olarak bilinen anagram tekniğini kullanarak bir şifreleme scripti yazdım. Anagram tekniği hakkında bilgi almak için &lt;a href=&quot;http://tr.wikipedia.org/wiki/Anagram&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;tıklayın&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Anagram ile bir metnin şifrelenmesi çok karmaşık olmayan bir algoritma ile sağlanabiliyor. PHP nin karakter işlemler için sağladığı fonksiyonları doğru yerlerde kullanarak, çok uzun olmayan bir kodlama ile şifreye ulaşabilirsiniz :)
Ben scripti yaparken daha dinamik bir sistem olması düşüncesi ile Php’nin yanında Javascript(ajax) kullandım. Tek sayfa üzerinden işlemimizi halledebiliyoruz.
Anagram Şifrele Kaynak Dosyaları: &lt;a href=&quot;http://dl.dropbox.com/u/18296433/Blog/dosya/anagram.rar&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Anagram Şifreleme Kayank Kodları&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;NOT: Script i indirdiğiniz taktirde kodların açıklamalarını dosyanın içerisinde bulacağınız için tekrardan buradan açıklamak istemiyorum.
Yararlı olması dileklerimle, kolay gelsin :)&lt;/p&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2011/php-de-anagram-sifreleme/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[PHP de BiSection Method ile Bir Fonksiyonun Kökünü Bulma]]></title><description><![CDATA[Matematikte bir fonksiyonun köklerini bulmaya yarayan bisection method, verilen değer aralıklarından başlayarak sürekli olarak bu iki değer arasından yeni bir değer oluşturup bu değerin fonksiyonu sıfıra ne kadar yaklaştırdığına bakarak, fonksiyonun kökünü bulamaya yarayan yöntemdir. Ayrıntılı bilgi için tıklayın.]]></description><link>https://blog.hkucuk.com/2011/php-de-bisection-method-ile-bir-fonksiyonun-kokunu-bulma/</link><guid isPermaLink="false">https://blog.hkucuk.com/2011/php-de-bisection-method-ile-bir-fonksiyonun-kokunu-bulma/</guid><pubDate>Sun, 18 Dec 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Matematikte bir fonksiyonun köklerini bulmaya yarayan bisection method, verilen değer aralıklarından başlayarak sürekli olarak bu iki değer arasından yeni bir değer oluşturup bu değerin fonksiyonu sıfıra ne kadar yaklaştırdığına bakarak, fonksiyonun kökünü bulamaya yarayan yöntemdir. Ayrıntılı bilgi için &lt;a href=&quot;http://en.wikipedia.org/wiki/Bisection_method&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;tıklayın&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Karabük Üniversitesi Bilgisayar Mühendisliği’nde okuyan can dostum &lt;a href=&quot;http://uysal-mustafa.blogspot.com/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Mustafa UYSAL&lt;/a&gt;‘ın algoritma dersi kapsamında, bisection method kullanılarak bir fonksiyonun kökünü hesaplayan programı C programlama dilinde geliştirmesi gerekiyordu. Bu yüzden bende yardımım dokunabilmesi için bisection method ile ilgili araştırma yapıp bir algoritma çıkartmak için kolları sıvadım. Araştırmalarım sonucunda algoritmamı hazırladım ve ardından daha somut bir şeyler görebilmek için PHP kullanarak fonksiyonun köklerini hesaplayan bir script ortaya çıkardım. Bu script’in kaynak kodları içerisinde her adım da yapılan işlemlerin açıklamalarını bulabileceğiniz için tekrardan buradan anlatma gereği duymuyorum.
Bu yazıda sadece benim PHP kullanarak oluşturduğum scriptin kaynak kodlarını sizlerle paylaşacağım. C dilinde yazdığımız program ile ilgili paylaşımları Mustafa UYSAL proje teslimi ve değerlendirmelerin ardından kendi sitesinden yapacaktır.&lt;/p&gt;
&lt;p&gt;Kaynak Dosyaları: &lt;a href=&quot;http://dl.dropbox.com/u/18296433/Blog/dosya/bisection.rar&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;BiSection Kaynak Dosyaları&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Yararlı olması dileklerimle, kolay gelsin.&lt;/p&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2011/php-de-bisection-method-ile-bir-fonksiyonun-kokunu-bulma/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Kuşlar Cıvıldıyor, Evet Uyanmışım...]]></title><description><![CDATA[Az önce uyandım. Uyanıp uyanmadığımı anlamak için uzun süre kendimle soru cevap oyunu oynamak zorunda kaldım. Midem gerçekten ağrıyor muydu? Yoksa gece yarısı sadece dolaşmaya mı çıkmalıydım, yemek yemekte nereden çıktı? Yatak iktiriyor beni. Bir şeyler batırarak, ağırlığımdan yorulduğu için kovuyor beni. Kalk. Kalkamıyorum. Bedenimin ağırlığı değil ki bu... Düşüncelerimin gerçek yüzlerinin dayanılmaz çekingenliğinde, gerçeklere bakmanın, gerçekleri yaşamanın verdiği isteksizlik.]]></description><link>https://blog.hkucuk.com/2011/kuslar-civildiyor-evet-uyanmisim/</link><guid isPermaLink="false">https://blog.hkucuk.com/2011/kuslar-civildiyor-evet-uyanmisim/</guid><pubDate>Tue, 22 Nov 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Az önce uyandım. Uyanıp uyanmadığımı anlamak için uzun süre kendimle soru cevap oyunu oynamak zorunda kaldım. Midem gerçekten ağrıyor muydu? Yoksa gece yarısı sadece dolaşmaya mı çıkmalıydım, yemek yemekte nereden çıktı? Yatak iktiriyor beni. Bir şeyler batırarak, ağırlığımdan yorulduğu için kovuyor beni. Kalk. Kalkamıyorum. Bedenimin ağırlığı değil ki bu… Düşüncelerimin gerçek yüzlerinin dayanılmaz çekingenliğinde, gerçeklere bakmanın, gerçekleri yaşamanın verdiği isteksizlik.&lt;/p&gt;
&lt;p&gt;Bugün gerçekten işe gitmeli miyim? İşe gidip öğleye kadar bilgisayar başında en iyi yaptığım işlerden birini yapıcam. Ne kadar iyi yaptığım iş var ki? Evde kalıp kitap okusam? Midem ağrıyor. Yatak kalk üstümden diyor. Yorganın ağırlığı ezmeye başlıyor beni. Öğle işten çıkıp derse gitmeliyim. İletişim ile ilgili zar zor iletişime girilerek yapılan bir ders. Sevgili, aşk, sex … Konuşabildiğimiz konuların ilişkiler ile sınırlandığı bu derste olmalı mıyım? Tüm gün işte olma fikri geliyor aklıma. Vazgeçiyorum.&lt;/p&gt;
&lt;p&gt;Hafta sonu gördüğüm, tatlı gülüşüne takıldığım kız geliyor aklıma. Ne kadar da saf, temiz duruyordu. Bu düşünceyi kovuyorum hemen. Başıma gelenlerin hepsinin en temel sebebi bu değil miydi? Saf, temiz insan … “Acaba sevgilisi var mıdır?” diye düşünüyorum bir ara. İğreniyorum bu düşüncemden hemen. Sevgilisi olmasa ne olacak ki? Dün yaşadığım beş saniyelik bir an geliyor aklıma. Beş saniye, fakültemin girişindeki kızın kırmızı rujuna takıldığım an. Bir şiir’den, kızın diliyle ıslattığı hafif parlayan ince ve kırmızı dudaklardan başka bir şey hatırlamıyorum. Şiiri tekrar hatırlıyorum. Sunay AKIN’ın kırmızı şiiri;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Sevgilim kızma sakın ve lütfen yanlış anlama kırmızı rujunu
sürünce paramın yetmediği elma şekerleri geliyor aklıma.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Yatakta doğruluyorum artık. Evet uyandım. Yüzümü yıkamalıyım. Su… Ne kadar derin bir kelime. Ama artık o da saf değil ki… Tekrar yatmak istiyorum. İnsanların gerçekleri dile getirme konusundaki beceriksizlikleri geliyor aklıma. Ya da onlardan kaçma isteği. Kaçamayacağını bilemeyerek. Ne istediğini bilmeyenler var bir de. Davranışları ile söyledikleri birbirini tutmayanları ne yapmalı. Son yaşadığım olay geliyor aklıma. Çarpık diyorum, tek kelime. Arkadaşlık anlattığı gibi olmaz. Yüzümü yıkıyorum, odama dönüyorum. Sifonu çekmiş miydim? Yazma isteği duyuyorum. Bilgisayarı açıp açmama konusunda bir kararsızlık. Hem okumak hem yamak istiyorum. Yazma isteği ağır basıyor. Bilgisayar açılırken Dostoyevski’nin Budalasından bir kesit geliyor aklıma.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Gözümün doğrusuna yürüsem, göğün yerle birleştiği
çizgiyi geçince bütün bilinmezlerin çözüleceği inancına kapılırdım.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Bilgisayar açılıyor. Midem hala kötü. Saat ilerliyor. Evden çıkma vaktim geldi. Yazmak güzel geldi. Ama hala bir sürü düşünce aklımda. İşe gitme kararım kesin, sonrasında da derse gitme. Ardından ne yaparım. Belki yine kırmızı rujlu kızı görürüm. Bu kez yüzünü de aklımda tutmalıyım.&lt;/p&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2011/kuslar-civildiyor-evet-uyanmisim/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Paradokslar - Düşünce]]></title><description><![CDATA[Paradoks; görünüşte doğru olan bir ifade veya ifadeler topluluğunun bir çelişki yaratması veya sezgiye karşı bir sonuç yaratmasıdır. Doğru gibi gözüken önerme veya fikirler, tamamen yanlış olarak çıkar karşımıza. Bazende, yıllarca yanlış olarak zannettiğimiz olaylar, düşünceler doğru olarak bizi şaşkına çevirirler.]]></description><link>https://blog.hkucuk.com/2011/paradokslar-dusuncenin-yokusu/</link><guid isPermaLink="false">https://blog.hkucuk.com/2011/paradokslar-dusuncenin-yokusu/</guid><pubDate>Tue, 15 Nov 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Paradoks; görünüşte doğru olan bir ifade veya ifadeler topluluğunun bir çelişki yaratması veya sezgiye karşı bir sonuç yaratmasıdır. Doğru gibi gözüken önerme veya fikirler, tamamen yanlış olarak çıkar karşımıza. Bazende, yıllarca yanlış olarak zannettiğimiz olaylar, düşünceler doğru olarak bizi şaşkına çevirirler.&lt;/p&gt;
&lt;p&gt;Hayatımın çok çok yoğun olduğu bugünler de bir sürü şey düşünüyorum. Kendime ayırdığım zamanlarda da beynim sürekli bir arayış içerisine giriyor. Bu süreçleri değerlendirmek için başvurduğum yollardan birisi de paradoksları araştırmak, üzerlerine düşünmek oldu. Bloguma uzun süren bir aranın ardından dönüş olması için de bulduğum bazı paradoksları sizlerle paylaşmak istedim. Umarım okurken, düşünürken sizde keyif alırsınız. Hadi iyi düşünceler :))&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Giritli Eupiminides&lt;/strong&gt;
“Bütün Giritliler Yalancıdır.”
Eğer gerçekten giritliler yalancı ise kendisi de giritli olduğuna göre o da yalancıdır.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Eublides&lt;/strong&gt;
“Yaptığım Açıklama Yanlıştır.”
Cümlenin doğru olduğunu düşünürse cümlenin yanlış olması gerekir, eğer cümlenin yanlış olduğunu düşünürsek de doğru olduğunu kabul etmiş olur fakat yanlış olduğunu başta kabul ettiğimiz için tam bir paradoksa düşmüş oluyoruz.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cümle Paradoksu&lt;/strong&gt;
“Bu cümle yanlıştır.”
Cümle yanlışsa doğru, doğruysa da yanlış olmak zorundadır.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Timsah Paradoksu&lt;/strong&gt;
“Bir annenin elinden çocuğunu kapan timsah, çocuğa ne yapacağını annenin bilmesi durumunda çocuğu vereceğini söyler. Anne, timsaha çocuğunu yiyeceğini söyler, böylelikle meydana gelen paradoksal durum sonucunda çocuğunu kurtarır.”&lt;/p&gt;
&lt;p&gt;Şöyle ki, timsah çocuğu yiyecekse anne timsahın ne yapacağını bilmiş olacak ve timsah çocuğu teslim edecek ancak çocuk teslim edilince anne timsahın ne yapacağını bilememiş olacak; timsah çocuğu yemeyecekse anne bilemediğinden çocuğu yiyecek ama o zaman anne timsahın yapacağının bilmiş olacak ve bu yüzden yememesi gerekecek.
Kısaca, bu iki durumda da timsah çocuğu ne yiyebilir ne de yiyemez.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SOCRATES&lt;/strong&gt;
“Bildiğim tek şey var; o da hiç bir şey bilmediğim.”&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yalancı paradoksu&lt;/strong&gt;
“Şimdi yalan söylüyorum.”&lt;/p&gt;
&lt;p&gt;Bu önermenin doğruluk değeri nedir? Yani “şimdi yalan söylüyorum” derken doğru mu söylüyorum yoksa yalan mı söylüyorum? Düşünecek olursak;Bu önermenin doğru olduğunu varsayalım. Öyleyse yalan söylüyorum. Ancak önermenin doğru olduğunu varsaymıştım öyleyse çelişkiye düştüm.Bu önermenin yalan olduğunu varsayalım. O zaman bu cümle doğru olmalıdır. Gene bir çelişki.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yamyam Paradoksu&lt;/strong&gt;
” Bir adada yaşayan bir grup yamyamın eline bir mantıkçı düşer. Yamyamlar mantıkçıya şöyle derler: “Biz her yakaladığımız yabancıyı yeriz. Kimini haşlayıp, kimini kızartıp yeriz. Avımıza bir soru sorarız. Avımız soruyu doğru yanıtlarsa haşlarız, yanlış yanıtlarsa kızartırız.”&lt;/p&gt;
&lt;p&gt;Dedikleri gibi de yaparlar. Mantıkçıya şu soruyu sorarlar: “Seni haşlayıp da mı yiyeceğiz, yoksa kızartıp da mı yiyeceğiz?” Mantıkçı bir süre düşündükten sonra soruyu çok akıllıca cevaplar: ‘Kızartacaksınız!’ ”
Bir an için mantıkçının kızartılacağını varsayalım. O zaman verdiği yanıt doğru olur. Ama yanıt doğru olduğu için -yamyamların kendi kurallarına göre- mantıkçının haşlanması gerekmektedir. Demek mantıkçı kızartılamaz. Şimdi de mantıkçının haşlanacağını varsayalım. O zaman mantıkçının yanıtı yanlış olacak. Yanıt yanlış olduğundan da kızartılması gerekmektedir. Demek mantıkçı haşlanamaz da. Yamyamlar tam bir kısırdöngüye girmişlerdir. Kızartsalar haşlamaları gerekecek, haşlasalar kızartmaları! Sonuç olarak adamımız kurtulur.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Berber Paradoksu&lt;/strong&gt;
“Seville’ in kendini traş etmeyenlerini traş eden berberi kendini traş eder mi etmez mi?”
Kendini traş etmeyenleri traş eden berber kendini traş ederse kendi kendiyle çelişki içine düşer. Kendini traş etmezse tanımdan ötürü kendini traş etmesi gerekir, ama bu da bir çelişkidir.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Kant&lt;/strong&gt;
“Her ne kadar ben inanmasam da bir tanrının var olduğunu kabul etmek gerekir.”&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Para paradoksu&lt;/strong&gt;
“Aynı paradan ikisini yan yana koyup birini sabit tutarak diğerini onun etrafında döndürün. Döndürülen para yarım tur attığında kendi ekseni etrafında bir tam tur atmış olacaktır.”&lt;/p&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2011/paradokslar-dusuncenin-yokusu/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Ayçöreği ve Deniz Yıldızı --- Sunay AKIN]]></title><description><![CDATA[Sunay AKIN dünyası farklı; bilginin, ayrıntının yoğunluğunda insanın düşünmek için var olduğu bir dünya. Ayçöreği ve Denizyıldızı da o dünyaya açılan kapılardan bir tanesi sadece.]]></description><link>https://blog.hkucuk.com/2011/aycoregi-ve-deniz-yildizi-sunay-akin/</link><guid isPermaLink="false">https://blog.hkucuk.com/2011/aycoregi-ve-deniz-yildizi-sunay-akin/</guid><pubDate>Sat, 15 Oct 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Sunay AKIN dünyası farklı; bilginin, ayrıntının yoğunluğunda insanın düşünmek için var olduğu bir dünya. Ayçöreği ve Denizyıldızı da o dünyaya açılan kapılardan bir tanesi sadece.&lt;/p&gt;
&lt;hr&gt;
&lt;h1 id=&quot;arka-kapak&quot;&gt;&lt;a href=&quot;#arka-kapak&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Arka Kapak&lt;/h1&gt;
&lt;p&gt;Bir adam var bilir misiniz? Her gece deniz ilk dalgalarla uyanana değin, umutları, hüzünleri, bekleyişleri ve ruhun ışığını, eski kitapların hamuruna katarak rengarenk ayçörekleri yaratan; özgürlük adına, barış adına, emek adına…
Peki, hiç yediniz mi onun bu sihirli ayçöreklerinden? Eğer kocaman bir parça ısıracak olursanız, kendinizi bir anda, küçücük ışıklardan oluşmuş bir gemide bulabilirsiniz; minareler arasında uyuyan bir mahyaya yelken açmış… Belki de birdenbire duyuverirsiniz tulumbacıların o alevlenen şarkılarını; cariyelerin aklına başından alan… Ya da bir tarlanın başucundan, koşarak geliverir yanınıza bir korkluk -emeğin bu en eski koruyucularından sevimli ve cesur varlık- ve onunla elele gidersiniz miting alanlarına, yine kucaklamaya; sevgiyi, alınterini, kardeşliği… Korkmayın sakın, başınızın üzerinden ansızın uçuverirse bir cadı; kaçmaktadır belki o da yakılmaktan…
Sunay Akın “Ayçöreği ve Denizyıldızı”nı yine bir filozof zekası ve inceliğini, bir çocuğun kalbi, bir şairin duyarlılığı ve bir serüvencinin düşgücüyle sunuyor bizlere. Kitabın her lokması; yaşamın bir başka ucu, dünyanın bir başka köşesi…
“Ayçöreği ve Denizyıldızı” tam bir Sunay Akın’sal deneme… Ama kitaptaki her denemenin sonunu, bir roman okuyormuşcasına merakla beklediğiniz için; yazılanlar belki bir roman, dizelere yansımış, neredeyse hiçbir gerçek kalmadığı için dünyada; belki de bir şiir tüm yazdıkları. Yine de her şeyden önce, çok düşünen, merak eden, araştıran, kolay ikna olmayan bir kitap gezgininin görüp keşfettikleriyle dolu, bambaşka bir iklim bulutu bir yapıt…
Kitabı okuyup bitirdikten sonra bazı geceler “Anne Frank”ın solgun şarkılarıyla uyanacaksınız uykularınızdan… Ve birlikte, ayışığında titreyen bir kumsalda bulacaksınız kendinizi… İşte o an, eğilip deniz yıldızlarını topladığını göreceksiniz “Anne Frank”ın… Sabahın ışıklarıyla, hiç beklemedikleri bir anda, onlar da yanıp kül olmasınlar diye..&lt;/p&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2011/aycoregi-ve-deniz-yildizi-sunay-akin/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[İstanbul'un Nazım Planı]]></title><description><![CDATA[Sunay AKIN dünyasının o güzel ahengi ile Nazım HİKMET 'in birleştiği bir eser. Şiir bir düz yazıya daha ne kadar güzel harmanlanabilir ki?]]></description><link>https://blog.hkucuk.com/2011/istanbulun-nazim-plani-sunay-akin/</link><guid isPermaLink="false">https://blog.hkucuk.com/2011/istanbulun-nazim-plani-sunay-akin/</guid><pubDate>Sun, 02 Oct 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Sunay AKIN dünyasının o güzel ahengi ile Nazım HİKMET ‘in birleştiği bir eser. Şiir bir düz yazıya daha ne kadar güzel harmanlanabilir ki?&lt;/p&gt;
&lt;hr&gt;
&lt;h1 id=&quot;arka-kapak-yazısı&quot;&gt;&lt;a href=&quot;#arka-kapak-yaz%C4%B1s%C4%B1&quot; aria-hidden class=&quot;anchor&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Arka Kapak Yazısı&lt;/h1&gt;
&lt;p&gt;Saraylardan haber uçar “bizi de yaz” diye, duymazlıktan gelir. İnadına gecekondular, Kız Kulesi’ni, işçi kahvelerini yazar.
Yağmur pencerede sırasını beklerken; o şemsiyeleri yazar. Pembe dizilerde balonlar uçarken; işçi sigaralarının ucunu yazar. İncili boncuklu kadınlar aynalarda gezerken, o, “lambalı kadın”ı yazar.&lt;/p&gt;
&lt;p&gt;Birileri Hırsızıstan’a damat olurken; hiç üşenmez, Berberistan’ın kanaryalarını yazar. Yarış atlarına ve süs köpeklerine övgüler düzer birileri; o, atlıkarıncaya içi giderek bakan çocukları yazar. Bal tutanlar parmaklarını yalarlar; o, denize dökülen simitleri yazar.&lt;/p&gt;
&lt;p&gt;Medya hokkabaları para sayma makinalarını ceplerinde taşırken; o, Ahmet Samim’i yazar. Haydarpaşa’nın işçi tulumuyla dolu gardırobunu yazar. Ve herkes gecenin bir yerinde söndürmüşken fenerini; Sunay Akın birileri ateşin altını beslesin, karanlık defolup gitsin diye, “devrim” sözcüğü güzel kitapların ilk sayfasına yazılsın diye, sabahlara kadar beynine fazla mesai yaptırıp, Nazım Hikmet’in gülümseyen bir fotoğrafına bakarak “İstanbul’un Nazım Planı’nı yazar.&lt;/p&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2011/istanbulun-nazim-plani-sunay-akin/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Madımaktan Amsterdama Düşülen Not]]></title><description><![CDATA[Anne Frank, saat 6 da uyanır, 13 yaşına girdiği 1942 yılının 12 Haziran günü. Anne ve babasının kızaacğından korktuğu için bir saat yatağın içinde oyalanır. Sonra da yemek odasında kendisini bekleyen armağan paketlerini açmaya koyulur. Gözüne ilk çarpan bir hatıra defteri olur. Sanki bir insanmış gibi sayfalarında "Kitty" diye sesleneceği, yaşantısının geride kalan iki yılını günü gününe yazacağı, pembe kaplı, sırdaş bir hatıra defteri.]]></description><link>https://blog.hkucuk.com/2011/madimaktan-amsterdama-dusulen-not/</link><guid isPermaLink="false">https://blog.hkucuk.com/2011/madimaktan-amsterdama-dusulen-not/</guid><pubDate>Tue, 05 Jul 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Anne Frank, saat 6 da uyanır, 13 yaşına girdiği 1942 yılının 12 Haziran günü. Anne ve babasının kızaacğından korktuğu için bir saat yatağın içinde oyalanır. Sonra da yemek odasında kendisini bekleyen armağan paketlerini açmaya koyulur. Gözüne ilk çarpan bir hatıra defteri olur. Sanki bir insanmış gibi sayfalarında “Kitty” diye sesleneceği, yaşantısının geride kalan iki yılını günü gününe yazacağı, pembe kaplı, sırdaş bir hatıra defteri. Hasan Hüseyin’in “Büyük Sürü” şiirinde bu defterle karşılaşırız:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Sen her gün Hitler’sin
Ben her gün Yahudi
Oturur ağlarsın utancından
Anne Frank’ın hatıra defterine&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Amsterdam’da yaşayan Frank ailesi, gamalı haçların bu şehrin sokaklarına da asılmaya başlamasıyla ölüm korkusunu enselerinde duyar. Yahudi oldukları için her an toplama kampına götürülme olasılıkları vardır. Otto Frank’ın aklına bir kurnazlık gelir. Kendisi için toplama kamplarına götürülme çağrısı gelince planını uygulamaya koyar. Plan şudur: Kaçar gibi yapacaklar, arkalarında öyle bir hava estirecekler, fakat kentten ayrılmayıp bir evin çatısında gizleneceklerdir.&lt;/p&gt;
&lt;p&gt;Anne Frank, gizlendikleri evde ilk olarak 9 ağustos günü seslenir Kitty’ye. Prinsengracht 263 adresinde bulunan ev gizlenmek için ideal bir yerdir. Otto Frank’ın eşi ve iki kızıyla birlikte sokağa hiç çıkmadan, gündüz yüksek sesle konuşmadan, gürültü yapmadan, perdeleri kımıldatmadan barış dolu günleri beklemeye koyulduğu yer, iş yerinin üst katlarıdır. Peter adlı bir oğulları bulunan Van Daan ailesinin de gelmesiyle gizlenenlerin sayısı yediye yükselir. Kısa bir süre sonra da yaşlı bir diş doktoru katılır aralarına. Sekiz insan yakalanıp öldürülme pahasına dostlarının getirdikleri yiyeceklerle doyururlar karınlarını. Bundan sonrası umut ve korkunun sarmaşık gibi birbirine dolandığı günlerdir. Anne Frank’ın ablası Margot’un, babasına doğum günü armağanı olarak yazdığı şiir, gizli bölmenin nabzını tutar:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Gece yarısı duyuldu ilk top sesi.
Ne oldu, ne var? Kapımı gıcırdıyor ne?
Bir kızcağız görünür, sapsarı beti benzi,
Bir yastık bastırmış sıskacık göğsüne.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;25 Eylül 1942’de, Anne Frank şunları yazar Kitty’ye: “Dün gece yukarı yukarı çıkıp Van Daan’ları ziyaret ettim. Peter’den söz ettik. Peter’in ikide bir yanağımı okşadığını anlattım şikayet yollu. Sevmiyorum oğlan çocuklarının böyle üstüme varmasına.”
Yanağının, kendisinden yaşça büyük Peter tarafından okşanılması hoşuna gitmeyen Anne Frank, 1944 yılının 16 Nisan günü “Dünkü tarihi aklından çıkarma” diye seslendiği Kitty’ye en önemli sırlarından birini verir: “Kızların hayatlarında illk öpüştükleri günü dönüm noktasıdır. Benim başıma geldi de bu. Artık Bram’ın sol yanağıma, Walker’ın sağ yanağıma oturttuğu öpücüklerin pabucu dama atıldı.”&lt;/p&gt;
&lt;p&gt;15 Nisan 1944’te faşistlerin çok korktuğu bir şey olur. Amsterdam’daki ahşap bir evin çatı katında bir aşk doğar. Peter ile anne Frank arasında: “Dün akşam saat sekizde Peter ile divan üzerinde oturuyorduk, çok geçmeden elini belime attı. Baya bir yakınlaştık ve iş bununla bitmedi.”&lt;/p&gt;
&lt;p&gt;4 Ağustos 1944’te, Gestapo’nun çizmeleri gıcırdatır tahtaları. Anne Frank’ın, Goethe’nin “Gökler katında ya da umutsuzluğun derinliklerinde” dizesiyle tanımladığı evde gizlenen sekiz insan, çok korktukları toplama kamplarına gönderilirler. Nasıl yakalandıklarını, kendilerini kimin ihbar ettiğini öğrenemezler. Bu soruların yanıtı günümüzde de verilememektedir.&lt;/p&gt;
&lt;p&gt;Savaş sonrasında geriye ilk dönen Otto Frank olur. Bombalardan harabeye dönen bir kentte ailesinden, arkadaşlarından bir haber alabilmek için uğraşırken, gizlendikleri günlerde yardım eden Bayan Miep, götürülmelerinin ardından yerde bulduğu bir defter uzatır kendisine. Otto Frank, küçük kızının elyazısıyla dolu olan sayfalrı okurken, bekleyişinin bir kez daha boşuna olduğunu öğrenir. Bir evin çatısında saklanan sekiz kişiden yedisi toplama kamplarında öldürülürler!.. Kurtulan bir tek Otto Frank’tır… Bir de, Kitty!&lt;/p&gt;
&lt;p&gt;Amsterdam’daki hatıra defterinin bir diğeri de, Thuys ailesinin evindeki bir çekmecede durmaktadır. Bu defter, antropoloji öğrenimi gören Carina Thuys’un el yazısını taşır. Deftere en son 2 Temmuz 1993 tarihinde, Sivas’ta yazılır. Yer, Madımak Oteli’nin merdivenleridir: “Şimdi durum kritik. Bir süreden beeri oteldeyiz. Dışarıda büyük bir güruh bağırıyor. Bu otelde özgür düşünür, laik yazar Aziz Nesin kalıyor. O, Şeytan Ayetleri’ni yayımlamayı düşünüyor. Durum hiç de hoş değil. Kendimi gergin hissediyorum. Çünkü ne olacağını hiç bilmiyorum. Bu durum aşırı dincilerin bir oyunudur. Slogan atıyor ve tahribat yapıyorlar. Oldukça polis var. Ama ben ne yapabilirim ki? Bağırılıyor, çağırılıyor ama ben anlayamıyorum…”
Sivas’ta yakılan 37 insandan biri olan Carina Thuys, tezine konu olarak seçtiği Alevi kültürüni daha yakından tanımak, çalışmalar yapmak üzere Pir Sultan Abdal şenliklerine katılır. Ailesine gönderilen eşyalar arasından çıkan günlüğe, 22 Haziran 1993’te, Amsterdam Havaalanı’nda şunları yazar genç kız: “Türkiye’ye giden uçakta adım yoktu. Bir kaç dakika korktum: Gidemeyecek miydim?..”&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sunay AKIN, Ayçöreği ve Denizyıldızı&lt;/strong&gt;&lt;/p&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2011/madimaktan-amsterdama-dusulen-not/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[İlk Ev Arkadaşım, Hoşlandığım Kadın ve Dostum Sandığım Adam]]></title><description><![CDATA[Hayat bir şakadan ibaret geliyor artık bana. Bazen kötü bazen güzel şakalara maruz kalıyoruz. İnsanın yaşanmışlıkları attıkça güzeli de kötüsü de karşısına fazlasıyla çıkmaya başlıyor. Yaşadığım ve başardığım onca güzel şeye rağmen şu son 7 ay içerisinde 3 kişinin bana yaşattıkları yüzünden psikolojim alt üst oldu. İnsan içine çıkma isteğim kalmadı, girdiğim ortamlardan zevk alamadım, kendimi işime vererek oyalanmaya çalıştım. Şuan bu yazıyı yazabiliyor olmam iyileştiğimin bir göstergesidir.]]></description><link>https://blog.hkucuk.com/2011/ilk-ev-arkadasim-hoslandigim-kadin-ve-dostum-sandigim-adam/</link><guid isPermaLink="false">https://blog.hkucuk.com/2011/ilk-ev-arkadasim-hoslandigim-kadin-ve-dostum-sandigim-adam/</guid><pubDate>Fri, 01 Jul 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hayat bir şakadan ibaret geliyor artık bana. Bazen kötü bazen güzel şakalara maruz kalıyoruz. İnsanın yaşanmışlıkları attıkça güzeli de kötüsü de karşısına fazlasıyla çıkmaya başlıyor. Yaşadığım ve başardığım onca güzel şeye rağmen şu son 7 ay içerisinde 3 kişinin bana yaşattıkları yüzünden psikolojim alt üst oldu. İnsan içine çıkma isteğim kalmadı, girdiğim ortamlardan zevk alamadım, kendimi işime vererek oyalanmaya çalıştım. Şuan bu yazıyı yazabiliyor olmam iyileştiğimin bir göstergesidir.&lt;/p&gt;
&lt;p&gt;Mevlana bir sözünde şöyle seslenir bizlere: “Denizin dibinde incilerle taşlar karışık olarak bulunurlar, övülecek şeyler de kusur ve yanlışların arasında bulunurlar.”. Benim de yaptığım onca güzel şey yalnız kalamazlardı ve kalamadılar da.&lt;/p&gt;
&lt;p&gt;İlk kötü şakayı, ilk ev arkadaşım yaptı. Bu adam üniversiteye ilk geldiğim de tanıştığım, bölümüme geçtikten sonra arkadaşlığımızı devam ettirdiğimiz birisiydi. İyi denebilecek seviyede şiir yazan ve boş konuşmak üzerine ileri düzey bir yeteneği olan bu arkadaş; onca sınıf arkadaşı olmasına, katılıyorum dediği onca topluluk olmasına rağmen benimle arkadaşlık etmek istiyordu. Bunun sebebi iyi bir dost olmam da olabilir fakat asıl sebep insanlar arasında kendisine yer edinememesiydi. Kim ne yapsın böyle adamı? Boş boş konuşup insanları rahatsız eden, her kadına sırnaşmaya çalışan, haksız olduğu zamanlarda karşısındakine haklısın diyemeyecek kadar aciz bir insan. İşte ben böyle bir adamla aynı evde yaşama kararı aldım. Bunun sebebi başka arkadaşım olmaması değildi. Benim ben geliyorum dediğimde evini açacak hatta evini değiştirecek bir sürü arkadaşım var. Fakat insanlar içinde yer edinemeyen, toplumsal alanda tutunmayı bilemeyen bu arkadaşıma iki yıl uğraştığım gibi daha yakından uğraşarak bir şeyler katabilirim diye düşündüm. Düşünmez olsaydım keşke.&lt;/p&gt;
&lt;p&gt;Bir dönem (üniversite eğitim dönemi) boyunca aynı evde kaldık. Elimden geldiğince yardımcı olmaya çalıştım. Tabi o da bana yardımcı olmaya çalıştı. Ev işlerinden anlamam ve bana çok yardımı oldu. Onu bir çok ortama soktum, arkadaşımla tanıştırdım. Yanlışlarını göstermeye çalıştım. Fakat hiç bir düzelme göstermeyen bu adamın beni tanımadığına kesin kanaat getirdiğim bir zamanda yanından ayrılmaya karar verdim. Bunu kendisine 1.5 ay önceden söyledim ve ilk olarak onunda tanıdığı yeni ev arkadaşım ile beraber yani üçümüz çıkalım istedim fakat o istemedi. Neyse. Ben dönem arasında yeni evime çıktım. İşte olaylar o zaman başladı. Benim para konuşmayı hiç sevmediğimi tüm dostlarım iyi bilir. Cebime giren çıkan paranın hesabını bilmem ben. Para muhabbeti yapmaktan da nefret ederim. Fakat beni en iyi tanıması gereken kişilerden biri olan bu fizikçi arkadaş bunu bilmiyormuş.&lt;/p&gt;
&lt;p&gt;Bir gün telefonuma bir mesaj geldi. Mesaj da benden bu arkadaş evin kirasını istiyordu. Pardon! Ben kiramı ödeyip çıkmıştım evden ve benden para istiyordu. Güzelce açıkladım ve bu kez de fatura parası istedi. Evet son ayın faturalarını ödememiştik ve onları verecektim zaten. Fakat benden 150 tl isteyen arkadaşımın açıklaması beni şaşırttı. Ona göre biz geçen ayı ödememişiz. Yani 2 aylık faturaymış bunlar. İyi de ben geçen ayın parasını eline verdiğimi dün gibi hatırlıyorum? aa orada başladı tartışma işte. Benim TOG ile tanıştırıp içerisine girmesine vesile olduğum, arkadaşlarım ile tanıştırıp kendisine yer edinmesini sağladığım, hasta olduğunda ilk ben koştuğum, başı sıkıştığında (maddi - manevi) yanında olduğum, eski sevgilisi yüzünden tartıştığı adamlardan olaylarla alakam yok iken hakaret işittiğim ve kavga ettiğim bu adam benden para koparmaya çalışıyordu. Adam gibi ihtiyacı olduğunu söylese ben ona bir şekilde mutlaka yardımda bulunurdum ama olay farklıydı. Tog da benim aracılığım ile girebildiği ortamlarda benim arkadaşlarıma benim hakkımda atıp tuttuğunu duydum. Bunu da söylediği insanlardan duydum. Benim faturaları ödemeyip kaçtığımı, onu yalnız bıraktığımı söyleyip beni karalamaya çalışan bu adama en güzel cevabı ona inanmayan arkadaşlarım verdi zaten. Fakat son konuşmamızda ağzının payını güzel bir şekilde verdim bu arkadaşın ve son ayın faturalarını ödeyerek aramızdaki muhabbeti kapattım.&lt;/p&gt;
&lt;p&gt;Dostum sandığım, beni tanıdığını sandığım, onun için elimden geleni yaptığım bir insandan böyle davranışlarda bulunmasını beklemezdim. Gerçekten benim için çok kötü bir durum. Ona son bir şey söylemek istiyorum, onun en çok sevdiği sanatçını Sezen AKSU’nun ağzından: “Soğuk yenir kin, ihanet intikamsız kalmaz.”.&lt;/p&gt;
&lt;p&gt;İlk şakanın gelişme sürecinde birisinden hoşlanıyordum. Görünüşüyle gerçek kimliğini gizleyen kişiler vardır ya, işte öyle birisiymiş. Ağzından sevgi lafını eksik etmeyen ama sevmenin ne olduğunu bilmeyen kişilerden. Bana göre sevmek Sunay AKIN ın dizelerinde saklı:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Saçak altına sığınmış göçmen kuşun kar tanecikleri arasında
düşen beyaz tüyünü de görebilmek
İşte sevmek.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;İşte sevmek, tüm dikkatimi onun üzerine vermiş, tüm çabamı kendisine olan özgüveni geri kazanması için uğraşmaya adamıştım. Eğitimlere ve çeşitli organizasyonlara katılması için sorumluluklar alması için çabalar gösterdim. Bu çabalarım sonuç verdi. Ona duygularımı söylediğim de beklemediğim bir cevap aldım. O beni sadece dostu olarak görüyormuş. Dost. Bu olabilecek bir şey. Yaptığım onca şeyi bir dosttan ayrı bir ilgiyle yaptığımı ona da hissettirdiğimi düşünüyorum. Fakat istemiyorum demenin farklı bir yöntemi işte olabilir. Saygı duyarım. Fakat beni kıran nokta beraber katıldığımız bir ortamda benim yanımda hiç tanımadığı veya az biraz tanıdığı adamlar ile gecenin bir körü dışarı çıkıp, zaman geçirmesi oldu. Yanı başında oturan ve dostum dediği adamı çağırmaması ki yanlarına gittiği adamların kimseye söylemeyin demesi yüzünden bunu yaptı, kabul edilemez bir durum.&lt;/p&gt;
&lt;p&gt;Bunu yapan kişinin kişiliğinden şüphe etmek gerekir. Hiç tanımadığın bir yerde, ne oldukları belli olmayan bu adamlar ile (kişilere sözüm yok yanlış anlaşılmasın) gecenin bir saati dışarı çıkıp zaman geçirmek, ki bunu dostum dediği kişiden habersiz yapmak kimlere uygun bir davranıştır adını siz koyun. O olaydan sonra haksızlığını, yanlışını kabul etmesi güzel bir durumdu ama bunu hiç yapmaması gerekirdi. Ona da güzel bir konuşma yaptım. İzmir de gece arada bir dışarı çıkar arkadaşlarım ile eğlenirim. Bu çıkmalarım da onunla karşılaşmam ve bulunduğu ortamı görme şansı yakalamam iyi ki böyle birisinden kurtulmuşum dedirtti bana.&lt;/p&gt;
&lt;p&gt;İkinci şakadan sonra hayatım tam anlamıyla cehennem oldu. Ruh gibi dolaştığım, uyuyamadığım zamanları hatırlıyorum. Tam düzelmeye başladığım bir dönemde de dostumuz dediğimiz bir kişinin sorunları patlak verdi. Bir insan düşünün ki her şeyi bildiğini sanır ama hiç bir şeyden anlamaz, üstün gözükmeye çalışır fakat yaptığı kendisini bitirmektir. İşte böyle bir adamın bir çok yanlışını dostumuz dediğimiz için görmezden geldik. Taki son olaya kadar. Bir insan kardeşim dediği adamın eski sevgilisiyle birlikte olmak için nasıl uğraşır? Nasıl bir işkemben var senin. Sonra düşündük ki bize söylediği yalanlar, onu soktuğumuz ortamlarda arkadaşlarımıza sırnaşmaya çalışmaları, saygısızca hareketleri. Biz bu adamı çok görmezden gelmişiz. Kendisini bitiren insanlardan nefret ederim. Kişiliği oturmamış insanlardan da.&lt;/p&gt;
&lt;p&gt;Fakat bu son şaka diğer ikisi kadar derin yara vermedi. Ona son bir konuşma yapma gereği dahi duymadım. Gerek yok çünkü. Kaybeden, ahlaksız durumuna düşen de o. Gerisini o düşünsün artık.&lt;/p&gt;
&lt;p&gt;Bir kızıl derili atasözü şöyle der: “İhanet arkadaşlık zincirini karartır, fakat vefa onu her zamankinden parlak yapar.” Herkesin hayatında vefasız insanlar vardır. Önemli olan onlara dahi vefalı davrandım diyebilmektir. Ben rahat bir şekilde bunu söyleyebiliyorum. Her arkadaşıma, dostuma elinden geldiğince yardımcı olmaya, onun yanında olduğumu hissettirmeye çalıştım. Gerisi onların karakterlerine kalmış. Büyük konuşmayı sevmem ama benim dostluğumu kaybetmek servet kaybetmekten daha zordur. Fakat kaybedilirse de dünyaları kaybetmekten beter olur.&lt;/p&gt;
&lt;p&gt;Yaptığım iyilikleri söylemek asla huyum değildir. Burada söylemem gerekiyordu çünkü bu şekilde, bu yazıyı yazarak müthiş bir rahatlık duyacağımı düşünüyordum ve duyuyorum :)&lt;/p&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2011/ilk-ev-arkadasim-hoslandigim-kadin-ve-dostum-sandigim-adam/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Registry Booster 2011 Crack - Serial (Yerel Makine Hack)]]></title><description><![CDATA[Registry Booster programı; windows işletim sisteminde bulunan ve bilgisayar ile ilgili önemli bilgileri içerisinde bulunduran kayıt defterleri içerisinde ki hataları bulup düzeltmek için kullanılmaktadır. Kayıt Defterinde ki hatalar bilgisayarımızın yavaşlamasına, programların hata vermesine sebep olmaktadır. Bu yüzden hata içeren bölümlerin düzeltilmesi gerçekten önemlidir.]]></description><link>https://blog.hkucuk.com/2011/registry-booster-2011-crack-serial-yerel-makine-hack/</link><guid isPermaLink="false">https://blog.hkucuk.com/2011/registry-booster-2011-crack-serial-yerel-makine-hack/</guid><pubDate>Mon, 27 Jun 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Registry Booster programı; windows işletim sisteminde bulunan ve bilgisayar ile ilgili önemli bilgileri içerisinde bulunduran kayıt defterleri içerisinde ki hataları bulup düzeltmek için kullanılmaktadır. Kayıt Defterinde ki hatalar bilgisayarımızın yavaşlamasına, programların hata vermesine sebep olmaktadır. Bu yüzden hata içeren bölümlerin düzeltilmesi gerçekten önemlidir.&lt;/p&gt;
&lt;p&gt;Programın 2011 versiyonlarında internet üzerinden yayılan seriallar, crackler işe yaramamaktadır. Bu da programın demo sürü ile verimsiz bir şekilde çalışmasına sebep olmaktadır. Aşağıdaki video da programın kurulumunu ve kayıt defteri ile kendi bilgisayarımızı hackleyerek programı full versiyon kullanmamızı sağlayacak işlemleri anlattım. Umarım yararını görürsünüz :)) Programı indirmek için TIKLAYINIZ.&lt;/p&gt;
&lt;p&gt;Program ile ilgili sorularınız için iletişim bölümünden bana mail atabilirsiniz. Görüşmek Üzere :)&lt;/p&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2011/registry-booster-2011-crack-serial-yerel-makine-hack/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Mersin Tog Atak Geldi Geçti]]></title><description><![CDATA[Mayıs ayının 20, 21 ve 22 sinde düzenlenen bu sene ki Toplum Gönllüleri Vakfı atak organizasyonlarından Mersin Atak'a ben ve Ege Üniversitesi Toplum Gönüllüleri Örgütlenmesinden Dilara OMAY arkadaşım ile birlikte Tog Ege'yi temsilen katıldık.]]></description><link>https://blog.hkucuk.com/2011/mersin-tog-atak-geldi-gecti/</link><guid isPermaLink="false">https://blog.hkucuk.com/2011/mersin-tog-atak-geldi-gecti/</guid><pubDate>Thu, 02 Jun 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Mayıs ayının 20, 21 ve 22 sinde düzenlenen bu sene ki Toplum Gönllüleri Vakfı atak organizasyonlarından Mersin Atak’a ben ve Ege Üniversitesi Toplum Gönüllüleri Örgütlenmesinden Dilara OMAY arkadaşım ile birlikte Tog Ege’yi temsilen katıldık. Akdeniz’in güzel mi güzel şehrinde yolculuk dışında güzel zaman geçirdik. Mersin Atak’ta yaşadıklarımıza geçmeden önce atak nedir’in bi cevabını verelim. Atak; en az 1 en çok 3 gün süren, Türkiye genelinden Toplum Gönüllülerinin katılımıyla ulusal düzeyde geniş çaplı bir şekilde gerçekleştirilen, bir sosyal duyarlılık projesidir. Amaç yerel kamuoyunun dikkatini sosyal sorumluluk projelerine çekmektir. Daha ayrıntılı bilgi için buyurun.&lt;/p&gt;
&lt;p&gt;Biz İzmir’den 18 Mayıs gecesi yola çıktık. Yolculuk öncesi yaptığım küçük çaplı araştırmamda yolumuzun 9 - 10 saat süreceği kanaatine vardım. Bir çok kanalda söylenen oydu çünkü :)) Fakat yola koyulup 10 saat geçtikten sonra işin doğrusunun öyle olmadığı, internet çöplüğünün pisliğine bulanmış bilgiler ile kandırıldığımızı anladım. 15 saat süren yolculuktan sonra ancak Mersin’e varabildik. Neyse ki yol arkadaşım ile iyi ikili olduk ve yolculukta hiç sıkılmadım. Dilara da sıkılmadı diye tahmin ediyorum :)) Bizi otogar da Mersin Organizasyon Ekibi’nden gönüldaşlarımız karşıladı. Diğer gelen gönüllü arkadaşlarımızın yanına bizleri götürdüler. Bekleme noktamız aynı zamanda Mersin Tog’un toplantılarını yaptığı bir kültür sanat eviydi. Gerçekten hoşuma giden bir mekandı. Bekleme sırasında Mersin de küçük bir iki tur attık ve küçük olmasına rağmen zevkli geçen bu gezinti ile Mersin’i tanımaya çalıştık. Ne kadar tanıdık? Çok az ama olsun :))
Gece kararmaya başladığı sıralarda servis ile yola koyulduk. Eğitimlerin yapılacağı ve konaklayacağımız -adını unuttuğum- motel tadında, denize sıfır, yurt olmadığına çok sevindiğim yerimize yarı uykulu, şarkı söyleyip alkış yapıp vardık ve odalarımıza yerleştir. İlk geceden eğitimlere başlamamız biraz verimsiz olsa da güzel bir ilk gün geçirmiş olduk :))&lt;/p&gt;
&lt;p&gt;Atak teması “Kuşak Çatışma”sıydı. 80 ler, 90 lar, 2000 ler temelli eğitim içerikleri amacına uygun atölyelerden ve oturumlardan oluşuyordu. Fakat gelişi güzel sıralanmış olduğu izlenimi veren eğitimlerin kalıcılığı konusunda şüpheliyim. Atak çıktıları henüz paylaşılmadığı için de şüphem devam ediyor ;) Her şeye rağmen böyle bir konu işlendiği için mutlu oldum diyebilirim. Çünkü Tog çatısı altında “Gençlerin Öncülüğünde” yürütmeye çalıştığımız sosyal sorumluluk projelerinde ilk hedef kitlelerimizi gençler oluşturuyor. Fakat bizler çocuklara yönelik, yaşlılara yönelik projeler yapmaya kendimizi o kadar çok kaptırdık ki toplum da sorun teşkil eden, sivil örgütlenmelerin öncülüğünde çözüm geliştirilebilecek konulara değinmez olduk ve en önemlisi de gençlerimizi unutur olduk. Gençlerin sorunlarını görmemeye başladık. Bu yüzden, gençlerin yaşamlarında ki en önemli sorunlardan bir tanesine hatta sadece gençler değil toplumun bir çok kesimini ilgilendiren “Kuşak Çatışması” konusu üzerine eğilmek öze dönmek anlamında bir hareketti diye düşünüyorum. Bu başlangıç ile farklı bir çok sivil toplum örgütünün de farkındalıklarının artacağını ümit ediyorum.&lt;/p&gt;
&lt;p&gt;Atak’a dönecek olursak 2. günümüzde kanlıdivane de geçekleştirdiğimiz, sıcağın altında tarihi kalıntılar arasında dolaşarak yaptığımız atölye’nin hiç yararlı olduğunu düşünmüyorum. Taş zihniyetiyle kalıntılara bakmıyorum evet ama oraların kullanılış şekilleri ile “Kuşak Çatışması” nı birleştiremedim ve hala da birleştiremiyorum. Zaman kaybı olan bir atölyeydi. Bunun aksine kız kalesi gezisi öncesi yaptığımız emekli öğretmenlerin, sağlık çalışanlarının ve lise öğrencisi(mezunu) arkadaşların katılımıyla geçekleşen oturum zevkli, gerçekten amacına yönelik, etkileşimi yüksek bir sürece sahipti.&lt;/p&gt;
&lt;p&gt;Atak sırasında Kuşaklar partisi eğlencenin tavan yaptığı zamanlardan bir tanesiydi. Kostüm değiştirip 80 lerde ki 90 larde ki gibi giyinen arkadaşlar çok güzel gözüküyorlardı. (Ben değiştirmedim, 2000 ler de kaldım :P) Ayrıca Kuşaklar partisini yaptığımız ve aynı zaman da eğitimlerimizi yaptığımız salonun yakınında, partimizin olduğu gece gerçekleşen düğüne bu kılıklarla katılarak güzel anılar elde ettik :)) Eğitimler arasında sahile inip sohbet etmek, sahil yolunda ki duvarda oturup sohbet etmek, deniz manzaralı açık havada yemeklerimizi yemek atağın tatlı anlarına bazı örnekler olabilir.&lt;/p&gt;
&lt;p&gt;En son Kız kalesi gezimizin ardından atağımıza son noktayı koymuş olduk ve otogara doğru yola koyulduk. 15 saatlik yolculuğa doğru. Dönüş yolu çoğu aşaması uyku ile geçmiş olmasına rağmen Dilara ile zevkli bir şekilde geçti :))
Bitirirken…&lt;/p&gt;
&lt;p&gt;Mersin Atak Organizasyon Ekibine emeklerinden ötürü, bize gösterdikleri yakınlıktan ötürü, sıcaklıklarından ötürü, zevkli bir atak geçirmemizi sağladıkları için çok teşekkür ederim. Katılımcı arkadaşlarıma da katılımlarından ötürü kendi adıma teşekkür ederim. Umarım ulusal etkinliklerde hepsiyle tekrardan görüşme şansına erişiriz.&lt;/p&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2011/mersin-tog-atak-geldi-gecti/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Kule Canbazı --- Sunay AKIN]]></title><description><![CDATA[Çocukluğunuzda oyalanmanız için elinize tutuşturulan boyalı kalemlerle üzerinde gidip geldiğiniz sayfaları bir kerecik Sunay Akın'a vermeyi hiç düşündünüz mü? Onun büyülü sözcükleriyle çizdiği resimlerin içinde hiç kimsenin göremediği güzel bir ayrıntıydınız belki de...]]></description><link>https://blog.hkucuk.com/2011/kule-canbazi-sunay-akin/</link><guid isPermaLink="false">https://blog.hkucuk.com/2011/kule-canbazi-sunay-akin/</guid><pubDate>Fri, 20 May 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Çocukluğunuzda oyalanmanız için elinize tutuşturulan boyalı kalemlerle üzerinde gidip geldiğiniz sayfaları bir kerecik Sunay Akın’a vermeyi hiç düşündünüz mü? Onun büyülü sözcükleriyle çizdiği resimlerin içinde hiç kimsenin göremediği güzel bir ayrıntıydınız belki de…&lt;/p&gt;
&lt;p&gt;Gün oldu, o resimlerde sizi Hezarfen’in kanatlarına bindirdi; herkes o güzelim insana şaşkınlıkla bakarken, siz bulutlara yüzünüzü sürdünüz. Gün oldu, batan bir denizaltının haberiyle sarsılırken tüm dünya, içinizden bir parça koptu; siz hafifledikçe belki o gemi yeniden suyüzüne çıkar diye düşündünüz… Ama o resimlerde kızgın bir çöle bile düşseniz, Sunay Akın’ın usta elleriyle verdiği gölgelere sığınabileceğinizi hep bildiniz.&lt;/p&gt;
&lt;p&gt;Serüven sürüyor…&lt;/p&gt;
&lt;p&gt;Haliç’te yan yana duran yedi gemi düşünün ve uzunca bir halatın o gemilerin yedi direğine gerildiğini… Haliç’i o halatın üstünde geçmeyi başaran Canbaz Şahin olmak istemez miydiniz? Ne dediniz, yükseklik korkunuz mu var? O halde, bir koyunu omuzlarına alıp ip üstünde ilerleyen ve hatta onu kurban edip mangalda pişirerek afiyetle yiyen Ahmet Ağa’nın muhteşem gösterisini izlemeye hayır diyemeyeceksiniz…&lt;/p&gt;
&lt;p&gt;Düşlerinizde bir çizgi çekin dün ve bugün arasına, hatta yarına uzayıp giden, yılları yıllara bağlayan… Gördünüz mü, o çizgi üstünde Sunay Akın yürüyor!.. Oyuncaklarla dolu bir el arabasını katmış önüne, şiirler okuyarak dengesini buluyor yaşamın. Düşecek diye korkmayın sakın. Bir yanı şiir, bir yanı düzyazı; hangisine düşse söz canbazı oluyor bu kez. Ve ustaca beceriyor her ikisini de!..&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tanıtım Yazısı’ndan Alıntı&lt;/strong&gt;&lt;/p&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2011/kule-canbazi-sunay-akin/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[PHP de Türkçe Karakter Sorunu]]></title><description><![CDATA[Öncelikle merhaba =) İnternet dünyasında aradığınızda üzerine en çok konuşulmuş, konuşulan konulardan birisidir aslında "Türkçe Karakter Sorunu". Web yazılımı / tasarımı ile uğraşanlar sık sık ya da genellikle bu sorunla karşılaşmaktadır. Kendi açımdan konuşmam gerekirse ne kadar tecrübem olursa olsun, ne kadar çok bu sorun üzerine çözümüm olursa olsun yine de projelerin belirli sürelerini Türkçe Karakterlerle uğraşmaya ayırıyorum.]]></description><link>https://blog.hkucuk.com/2011/php-de-turkce-karakter-sorunu/</link><guid isPermaLink="false">https://blog.hkucuk.com/2011/php-de-turkce-karakter-sorunu/</guid><pubDate>Sun, 15 May 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Öncelikle merhaba =) İnternet dünyasında aradığınızda üzerine en çok konuşulmuş, konuşulan konulardan birisidir aslında “Türkçe Karakter Sorunu”. Web yazılımı / tasarımı ile uğraşanlar sık sık ya da genellikle bu sorunla karşılaşmaktadır. Kendi açımdan konuşmam gerekirse ne kadar tecrübem olursa olsun, ne kadar çok bu sorun üzerine çözümüm olursa olsun yine de projelerin belirli sürelerini Türkçe Karakterlerle uğraşmaya ayırıyorum.&lt;/p&gt;
&lt;p&gt;Üzerinde çalıştığım en son projem de başıma gelenlerin hala cevabını bulamadım. Bir çözüm geliştirdim ama aklımda müthiş bir soru işareti olarak kaldı yaşadıklarım. Kısaca açıklamam gerekirse, projemin veri tabanı ile bağlantılı (ki hepsi bağlantılıydı, index hariç) sayfalarında charsetimi utf8 olarak tanımladım.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token constant&quot;&gt;HTML&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; charset&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;utf&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;8&lt;/span&gt;&quot; &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Veri tabanımın ve toblolarımın karakter karşılaştırma tiplerini de utf8&lt;em&gt;turkish&lt;/em&gt;ci olarak ayarladım. Yönetici panelim dahil hiçbir sayfa da türkçe karakter sorunum olmadı fakat index.php sayfam da ilginç bir şeyler yaşanmaya başlandı. İçeriği, menuleri vb. include ettiğim sayfamda türkçe karakterler ama hepsi değil sadece ş ve ğ sorun çıkartıyordu.&lt;/p&gt;
&lt;p&gt;İlk olarak sayfa charsetini ISO ya çevirdim ve veri tabanımın karşılaştırma tiplerini latin5&lt;em&gt;turkish&lt;/em&gt;ci yaptım.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token constant&quot;&gt;HTML&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; charset&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;ISO&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;8859&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;9&lt;/span&gt;&quot; &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Fakat sorun yine aynı kaldı. index.php sorunluydu. Ardından veri tabanı bağlantımdan sonra karakter tipim ile ilgili sorgular döndürerek karakter tipimi sağlam bir şekilde tanımlamak istedim.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token function&quot;&gt;mysql_select_db&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;veritabanı_adı&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;mysql_query&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;SET NAMES ´latin5´&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;mysql_query&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;SET CHARACTER SET latin5&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Fakat sonuç tekrardan hüsran ile bitti. index.php sorunlu çalışmaya devam etti. Uygulumalaya çalıştığım ilk çözümlerin ardından 3 güne yakın bu sorun ile uğraştım ve merakımın giderek artmasına rağmen çözüm aramayı bıraktım ve gözünü sevdiğim html kodları ile (türkçe karakterlerin html kodları) sorunu hallettim.&lt;/p&gt;
&lt;p&gt;Öncelikle PHP de bir fonksiyon yazdım.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;tr&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;$yazi&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    $yazi &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;trim&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;$yazi&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    $ara &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;array&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Ç&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;ç&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Ğ&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;ğ&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;ı&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;İ&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Ö&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;ö&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Ş&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;ş&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Ü&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;ü&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    $degistir &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;array&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Ç&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;ç&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Ğ&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;ğ&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;ı&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;İ&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Ö&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;ö&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Ş&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;ş&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Ü&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;ü&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    $yeni_yazi &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;str_replace&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;$ara&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;$degistir&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;$yazi&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; $yeni_yazi&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Bu fonksiyonun ne işe yaradığı zaten ortada ama kısaca türkçe karakterleri verilen string bloğu içerisinden bulup html kodlarıyla değiştiriyor. Bu fonksiyonu yazdıktan sonra veri tabanına kayıt aşamasında verilerimi bu fonksiyonumun süzgecinden geçirerek kayıt ettim ve hiç bir sorun olmadan index.php sayfamda türkçe karakterleri kullanabildim. Hala index.php üzeinde oluşan ilk sorunun nedenini merak etmekteyim ve umarım çalışmalarım sonucunda sorunu çözerim =)&lt;/p&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2011/php-de-turkce-karakter-sorunu/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Karpuz ve İlişkiler]]></title><description><![CDATA[Bir zamanlar karpuzdan fenerler yapılırmış. Şöyle bir düşündüğümüzde estetik açıdan farklılık oluşturmak açısından güzel fikir gibi duruyor. Karanlıkta yolumuzu aydınlatan ışık kaynaklarına belki de bir tatlılık katmak amacı gütmüş olabilir ilk karpuzdan feneri yapan kişi. Orhan Veli "Sakal" isimli şiirinde;]]></description><link>https://blog.hkucuk.com/2011/karpuz-ve-iliskiler/</link><guid isPermaLink="false">https://blog.hkucuk.com/2011/karpuz-ve-iliskiler/</guid><pubDate>Tue, 26 Apr 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Bir zamanlar karpuzdan fenerler yapılırmış. Şöyle bir düşündüğümüzde estetik açıdan farklılık oluşturmak açısından güzel fikir gibi duruyor. Karanlıkta yolumuzu aydınlatan ışık kaynaklarına belki de bir tatlılık katmak amacı gütmüş olabilir ilk karpuzdan feneri yapan kişi. Orhan Veli “Sakal” isimli şiirinde;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hanginiz bilir, benim kadar,
Karpuzdan fener yapmasını.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;diyerek bu işte ne kadar iyi olduğunu hiç de mütevazi olmayan bir şekilde bizlere söyler. Şüphesiz ki Orhan Veli gibi bu işte usta olan birisi her karpuzu kullanmıyordu fenerleri yaparken. En iyilerini seçmeye çalışıyordu. Karpuzların nasıl seçildiğini bilir misiniz?Şöyle bir ele alınır karpuz, ellenir kurcalanır. Öyle karar verilir karpuz iyi mi kötü mü…&lt;/p&gt;
&lt;p&gt;Bir başka şairimiz Cevat Çapan’ın bir şiirinde de geçer karpuz;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Babam iki tek atınca,
“Hadi seni karpuzlara götüreyim” derdi.
(Karpuzlar Gebze’de oturan kızlardı)
Annem kızarır, kızar,
“Bey, çocuk daha küçük” diye çıkışır,
Mutfağa gider ağlardı.
Babam karpuzdan anlardı.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Şiirinde karpuz’u kadınların yerine kullanan Cevat usta ile Orhan Veli yi birleştirdiğimizde ilişkiler ile ilgili bir noktaya varıyoruz aslında, erkekler açısından. Tabi yorumu tersten yaparsak kadınların açısından da bir noktaya varabiliriz. Kendimiz için en iyi kadını / erkeği bulabilmek için (Yolumuzu aydınlatmamıza yardımcı olacak fenerlerimizi bulabilmek için) öncelikle ona duygusal olarak dokunmamız gerekiyor. Daha sonrasında da psikolojik olarak kurcalamamız gerekiyor. Bunların hepsi en iyi için yapılıyor. Tabi bu aşamalarda biraz ileriye gidersek işler sarpa sarabiliyor. Aşırı ilgi, baskı, bağlılık, kopamama … Az olması da gerçeği görmeyi zorlaştırıyor.&lt;/p&gt;
&lt;p&gt;Tabi bu seçim aşaması her zaman göründüğü gibi işlemeyebiliyor. Her ne kadar her şeyi kararında yapsanızda bazen karpuzun için geçiş veya tam olgunlaşmamış olabiliyor. Bu aşama ya aşırıya kaçmayı ya da karpuzu atmayı gerektiriyor. Artık seçim kişiye kalmıştır.
Peki her şeyi nasıl doğru yapıcaz? Bunu bilemem. Karşınızdaki ve sizin kişiliğinize göre değişkenlik gösterebilecek bu süreçleri iyi tahlil etmek ve gerçekleşen olayları iyi yorumlamak gerekiyor. Eğer dikkatli olunursa doğruya ulaşılabilir.
Her yaz sonunda bir şekilde bitip giden karpuzlarımız için …&lt;/p&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2011/karpuz-ve-iliskiler/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[PHP ile Access Veri Tabanı Bağlantısı]]></title><description><![CDATA[PHP nin her veri tabanı ile çalışabildiği gerçeği, bu dilin en önemli özelliklerinden bir tanesi. Video dersimizde de bunun bir örneğini görüyoruz. Tam olarak bir veri tabanı bile sayılmayan access e PHP ile bağlanıp, üzerinde işlemler yapıyoruz. Kullandığımız fonksiyonlar odbc_connect ve odbc_exec.]]></description><link>https://blog.hkucuk.com/2011/php-ile-access-veri-tabani-baglantisi/</link><guid isPermaLink="false">https://blog.hkucuk.com/2011/php-ile-access-veri-tabani-baglantisi/</guid><pubDate>Sun, 17 Apr 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;PHP nin her veri tabanı ile çalışabildiği gerçeği, bu dilin en önemli özelliklerinden bir tanesi. Video dersimizde de bunun bir örneğini görüyoruz. Tam olarak bir veri tabanı bile sayılmayan access e PHP ile bağlanıp, üzerinde işlemler yapıyoruz. Kullandığımız fonksiyonlar odbc&lt;em&gt;connect ve odbc&lt;/em&gt;exec.&lt;/p&gt;
&lt;p&gt;Algoritmik içeriği merak ediyorsanız, video merakınızı giderecektir. İyi seyirler =) ve iyi çalışmalar =)&lt;/p&gt;
&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.25%; position: relative; height: 0; overflow: hidden; margin-bottom: 1.0725rem&quot; &gt; &lt;iframe src=&quot;https://www.youtube.com/embed/i4h9bLZeg2w&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot; style=&quot; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot;&gt;&lt;/iframe&gt; &lt;/div&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2011/php-ile-access-veri-tabani-baglantisi/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[PHP ile Veri Tabansız Telefon Rehberi]]></title><description><![CDATA[Bölümümüzün en iyi hocası olduğunu düşündüğüm Tarık KIŞLA hocamızından bu dönem hem ağ hem de veritabanı dersini alıyoruz. Geçen sene misafir!!! bir öğretim görevlisinden aldığımız veritabanı dersi pek yararlı geçmemiş, çoğu insan hak etmediği puanları almış ve en önemlisi de kimse bir şey öğrenememişti. Bu dönem bu dersi Tarık Hocadan almamız bizim için müthiş bir şans.]]></description><link>https://blog.hkucuk.com/2011/php-ile-veri-tabansiz-telefon-rehberi/</link><guid isPermaLink="false">https://blog.hkucuk.com/2011/php-ile-veri-tabansiz-telefon-rehberi/</guid><pubDate>Thu, 14 Apr 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Bölümümüzün en iyi hocası olduğunu düşündüğüm Tarık KIŞLA hocamızından bu dönem hem ağ hem de veritabanı dersini alıyoruz. Geçen sene misafir!!! bir öğretim görevlisinden aldığımız veritabanı dersi pek yararlı geçmemiş, çoğu insan hak etmediği puanları almış ve en önemlisi de kimse bir şey öğrenememişti. Bu dönem bu dersi Tarık Hocadan almamız bizim için müthiş bir şans.&lt;/p&gt;
&lt;p&gt;Bu şansı tüm BÖTE 3. sınıf öğrencilerinin en iyi şekilde kullanabilmesi en büyük temennim.&lt;/p&gt;
&lt;p&gt;Tarık Hoca’nın veri tabanı dersine henüz girmemiş olsam da :D verdiği ödevden arkadaşlarım sayesinde haberdar oldum. Hocamız bize veritabanının önemini anlamamız amacıyla veritabanı yerine bir .txt kullanarak telefon rehberi yazmamızı istemiş. Bir not defteri ve istediğimiz bir dili kullanacakmışız. :) Hocamızın mantığı çok hoşuma gitti. Hemen oturup yazmak istedim ama kısmet bu güneymiş. Anca zamanım oldu :D Ben bu ödevi yaparken PHP, Ajax(Javascript), CSS, HTML teknolojilerini kullandım. Ödevin teslim günü benim grubum için salı günü. Erkenden ödevi paylaşmamda ki amaç, arkadaşlarıma yardımcı olabileceğini ya da en azından fikir verebileceğini düşünmemdir. Yanlız bir hatırlatma. Eğer buradaki kodlardan bir şeyler öğrenmek istiyorsanız, LÜTFEN algoritmayı anlamaya çalışın. Kopyala yapıştırdan kaçının.&lt;/p&gt;
&lt;p&gt;Proje kodlarını görmek isteyenler, iletişim sayfasındaki form aracılığı ile bana ulaşabilirler.&lt;/p&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2011/php-ile-veri-tabansiz-telefon-rehberi/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Anahtar Eğitmen Eğitimi || İstanbul Eğlencesi]]></title><description><![CDATA[Şiledeki eğitimimizin ardından yaşadığımız şehirlere geri dönebilme için bizleri İstanbul'a getirdiler :) Taksimde servisten indik ve acelesi olmayan arkadaşlar ile birlikte biletlerimizi aldık, cebimize koyduk ;) Sonrasında da hadi birazcık İstanbul dedik. Pek bir açılamasak da istiklalde geçirdiğimiz anlar harikaydı :D]]></description><link>https://blog.hkucuk.com/2011/anahtar-egitmen-egitimi-istanbul-eglencesi/</link><guid isPermaLink="false">https://blog.hkucuk.com/2011/anahtar-egitmen-egitimi-istanbul-eglencesi/</guid><pubDate>Wed, 13 Apr 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Şiledeki eğitimimizin ardından yaşadığımız şehirlere geri dönebilme için bizleri İstanbul’a getirdiler :) Taksimde servisten indik ve acelesi olmayan arkadaşlar ile birlikte biletlerimizi aldık, cebimize koyduk ;) Sonrasında da hadi birazcık İstanbul dedik. Pek bir açılamasak da istiklalde geçirdiğimiz anlar harikaydı :D&lt;/p&gt;
&lt;p&gt;Önce karnızı doyurduk ki enerji alalım dedik. Sonrasında da istiklalin ara sokaklarından bir tanesine girip oradaki barlardan bir tanesine oturduk. Kimimiz alkol aldı kimimiz nargile içti. Hafif sohbetler eşliğinde biraz zaman geçirdik ama sıkıldık. Ne yapalım dedik? Akla bir şey gelmiyor. Derken bir iki arkadaş geldi. Kan ter içerisinde :D İstiklalde koşturmuş akıllı arkadaşlarım :) Dedik ki bizde yapar mıyız? yaparız.&lt;/p&gt;
&lt;p&gt;Attık kendimizi istiklale :D başladık koşmaya, kovalamacaya. Evet bu aşamada etraftaki insanlara biraz rahatsızlık vermiş olsakta heyecanımızı görerek bir şey demediler sağ olsunlar :D neyse el ele tutuşup tren şeklinde istiklalin ortasında zik zak çizerek koştuktan sonra bizim eğitimlerde uyguladığımız ve canlandırıcı adını verdiğimiz insanların kendilerine gelmelerine yardımcı olan uygulamalardan bir kaçını uygulamaya karar verdik. İstiklalin ortasında tramvay yolunun üzerinde bir çember olduk ilk olarak ve başladık at gibi ayak sesleri çıkarmaya, zıplamaya :D Bu aşamada turistler de katıldı aramıza. Uygulamayı ingilizce yürütmeye başladık :D Uygulamanın sonlarına doğru çemberimizin ucuna devriye gezen bir polis otosu geldi ve durdu. Onlarda bizleri izlemeye koyuldu. :D&lt;/p&gt;
&lt;p&gt;Ekip otosunun geçmesi için ara verdiğimiz uygulamamıza devam etmedik. İstiklalde biraz daha yol aldıktan sonra bir iki uygulama daha yaptık. En ilginci yine çember halinde iken sırayla hepimizin bağırmaya başladığı uygulamaydı. Bu uygulama aşamasında bizi eli sandılar kesin :D ama sanan sansın öenmli değil. Biz eğlendik =)&lt;/p&gt;
&lt;p&gt;Oradan yorulmuş halde yine istiklalin ara sokaklarından bir tanesinde bulunan, Galatasaray Lisesinin yan sokağında bulunan (yanlış hatırlamıyorsam) “45lik” isimli mekana girdik. Eski 45liklerin eşliğinde bazı zamanlar eşlik ederek bazı zamanlar sadece dinleyerek güzel vakit geçirdik. =)&lt;/p&gt;
&lt;p&gt;Derken otobüs saatlerimiz geldi :( ayrılık vakti geliyordu artık. 45lik isimli mekandan kalktık ve servislerimize doğru yol aldık. Ayrılık aşamalarını pek sevmem. Yine sevmedim ama ayrıldık :( Güzel dostluklarımız ile beraber yollara düştük.&lt;/p&gt;
&lt;p&gt;Müthiş bir tecrübe olan bu eğitime bir çok okurumun da dahil olmasını çok isterim. Umarım bu hazza, bu duygulara sizlerde sahip olursunuz =)&lt;/p&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2011/anahtar-egitmen-egitimi-istanbul-eglencesi/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Anahtar Eğitmen Eğitimi || 5. ve 6. GÜN]]></title><description><![CDATA[Eğitimin 5. ve 6. günleri yani 26 Şubat ile 27 Şubat günleri bizlerin sahaya çıktığımızda yapacağımız eğitimlerin provalarını yapacağımız günlerdi. Mavi, Kırmızı ve Yeşil Anahtar eğitimlerinin sunumları bu günlerde gerçekleştirildi. Bu aşamalarda iki eşit gruba ayrıldı. Her iki grup kendi içerisinde bu eğitimleri ayrı olarak yerine getirdi. Bu iki grup da kendi içerisinde eşit üç gruba ayrıldı çünkü üç adet eğitim gerçekleştirilecekti.]]></description><link>https://blog.hkucuk.com/2011/anahtar-egitmen-egitimi-5-ve-6-gun/</link><guid isPermaLink="false">https://blog.hkucuk.com/2011/anahtar-egitmen-egitimi-5-ve-6-gun/</guid><pubDate>Tue, 12 Apr 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Eğitimin 5. ve 6. günleri yani 26 Şubat ile 27 Şubat günleri bizlerin sahaya çıktığımızda yapacağımız eğitimlerin provalarını yapacağımız günlerdi. Mavi, Kırmızı ve Yeşil Anahtar eğitimlerinin sunumları bu günlerde gerçekleştirildi. Bu aşamalarda iki eşit gruba ayrıldı. Her iki grup kendi içerisinde bu eğitimleri ayrı olarak yerine getirdi. Bu iki grup da kendi içerisinde eşit üç gruba ayrıldı çünkü üç adet eğitim gerçekleştirilecekti.&lt;/p&gt;
&lt;p&gt;Ben Mavi Anahtar Eğitimini gerçekleştirecek olan gruba düştüm. Bu ilk eğitimi bizim yapacağımız anlamına geliyordu :D Bu eğitimlerin gerçekleşeceği günlerin bir önceki akşamı iyi hazırlıkların yaşandığı, ekip çalışmasının ve verimin arttığı zamanlardı.
Her grup iyi çalışmalar yaparak sunumlarını gerçekleştirdiler. Her eğitimden sonra o eğitim gerçekleştiren arkadaşlarımız üzerine ve katılımcılar üzerine kısaca konuştuk. Geri bildirimlerin çok önemli böylesi ortamlarda yapılabilecek en önemli şey iyi bir iletişim kurabilmektir. Kurabildiğimizi düşünüyorum. Sadece bir eğitim sonrasında bir eğitmen arkadaş ile yaşadığımız kısa süreli tartışma o arkadaşın bizler ile düzgün bir iletişimde olmadığı düşüncesini doğurdu bende. Rahatsız olduğu bir durumu söyleyerek “Bu konu üzerine düşünün ve sonra konuşalım.” edikten sonra söz alarak o konu üzerindeki düşüncelerimi dile getirmeye çalıştım.Bana “Düşünün de konuşun dedim.” gibisinden kaba bir cevap veren bu arkadaşın tüm çabalarına rağmen düşüncelerimi söyledim. Bu yaptığından ötürü de kendisini kınadım. Eğer düşünmemiş olsam zaten konuşmam. Sen kimsin ki bana böyle bir yaklaşımda bulunuyorsun. Neyse.&lt;/p&gt;
&lt;ol start=&quot;5&quot;&gt;
&lt;li&gt;günümüz eğitimlerin ardından GDG leri yaptıktan sonra sona erdi. Biz rahatladık ama Yeşil anahtar Eğitimini yapacak arkadaşlar rahatlayamadılar. Çünkü onların sunumları 6. gündü ve çalışmaları gerekiyordu.&lt;/li&gt;
&lt;li&gt;gün yeşil anahtardan sonra “Birlikte Nasıl Çalışıyoruz?” oturumu ile devam etti. Burada eğitimlere çıkmaya başladığımız zaman neler yapmamız gerekiyor? Nasıl sorumlulukları yerine getirmeliyiz? vb. soruları konuştuk ve şuan da orada öğrendiklerimizi uyguluyoruz. Hatta bu yazıyı yazmadan önce formları doldurdum ve vakfa yolladım :D&lt;/li&gt;
&lt;li&gt;günümüzün sonunda eğlence vardı ama eğitmenler bizlere harika bir uygulama yaptılar. Bizleri düşünceler iten o uygulama üzerine konuşmayacağım. Bizleri daha bir bütünleştiren o uygulama gerçekten duygusal anlara sahne oldu. Ağlamadım ama ağlama aşamasına geldim diyebilirim =)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Bu günden sonra eğitimimiz sona erdi. Dönüşlerimizin ardından eğitime çıkmayı beklemeye başladı :D&lt;/p&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2011/anahtar-egitmen-egitimi-5-ve-6-gun/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Anahtar Eğitmen Eğitimi || 3. ve 4. GÜN]]></title><description><![CDATA[Eğitimin üçüncü gününde yani 24 Şubat Perşembe günü "Öğrenme ve Eğitim" isimli oturum ile başladı. Bu oturumda öğrenme nedir? eğitim nedir üzerinden giderek yapacağımız işin temelleri üzerinde konuştuk. Bizim fakülte derslerinde aldığımız eğitim bilimleri derslerinin formal olmayan eğitim ortamlarında nasıl daha verimli olabileceğini canlı olarak yaşadım =)]]></description><link>https://blog.hkucuk.com/2011/anahtar-egitmen-egitimi-3-ve-4-gun/</link><guid isPermaLink="false">https://blog.hkucuk.com/2011/anahtar-egitmen-egitimi-3-ve-4-gun/</guid><pubDate>Sun, 10 Apr 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Eğitimin üçüncü gününde yani 24 Şubat Perşembe günü “Öğrenme ve Eğitim” isimli oturum ile başladı. Bu oturumda öğrenme nedir? eğitim nedir üzerinden giderek yapacağımız işin temelleri üzerinde konuştuk. Bizim fakülte derslerinde aldığımız eğitim bilimleri derslerinin formal olmayan eğitim ortamlarında nasıl daha verimli olabileceğini canlı olarak yaşadım =)&lt;/p&gt;
&lt;p&gt;Bu oturumun sonunda bir yemek arası verildi ve ardından eğitmenlerimizin “Barcelona” adını verdikleri, daha sonradan da imece dediğimiz, ekip çalışması ve güzen temelli uygulamayı gerçekleştirdik. Kafalarımız yan yana gelecek şekilde yere uzandık ve en baştan başlayarak arkadaşlarımızı ellerimizin üzerinde taşıdık. Eğlenceli ama dikkat gerektiren bir uygulamaydı. Sonunda uygulama üzerinde konuşarak günü bitirdik. Sonrasında serbest zamanımızı kullandık :D Tabi GDG yapmayı ihmal etmedik.&lt;/p&gt;
&lt;p&gt;Eğitimin dördüncü gününde yani 25 Şubat Cuma günü “Eğitmenlik becerileri I” oturumu ile başladı ve “Eğitmenlik Becerileri II” oturumu ile devam etti. Adından da anlaşılacağı üzere bir eğitmen nasıl olmalı? neleri yapmalı? neleri yapmamalı gibi konular üzerinde durduk. Daha sonra bir bir yemek arasından sonra “Program Tasarlama” oturumumuzu gerçekleştirdik. Eğitim programları Eğitim Bilimlerinin en önemli kısımlarındandır.Biz de tog da proje tasarlamaya eğindik ama aşamalar benzerlik gösterdiği için burada eğitim planı da çıkardık diyebiliriz :) Bu oturumumuzdan sonra yemek arası verdik ve GDG mizi gerçekleştirdik.&lt;/p&gt;
&lt;p&gt;Bu iki günümüz biraz sıkılarak ama çoğunlukla öğrenerek ve eğlenerek geçti. Tadılası şeylerdi =)&lt;/p&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2011/anahtar-egitmen-egitimi-3-ve-4-gun/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Onlar Hep Oradaydı --- Sunay AKIN]]></title><description><![CDATA[Sunay AKIN'ın kendisi hakkında çıkmış sorulara ve eleştirilere cevap niteliği de taşıyan kitap "Kız Kulesindeki Kızılderili" kitabına göre az olsa da kızılderililer hakkında bizlere güzel bilgiler sunuyor. Sunay AKIN ustanın anlatımıyla, olayların en küçük ayrıntılardan nasıl birbirlerine bağlandığına şahit olacaksınız.]]></description><link>https://blog.hkucuk.com/2011/onlar-hep-oradaydi-sunay-akin/</link><guid isPermaLink="false">https://blog.hkucuk.com/2011/onlar-hep-oradaydi-sunay-akin/</guid><pubDate>Sat, 09 Apr 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Sunay AKIN’ın kendisi hakkında çıkmış sorulara ve eleştirilere cevap niteliği de taşıyan kitap “Kız Kulesindeki Kızılderili” kitabına göre az olsa da kızılderililer hakkında bizlere güzel bilgiler sunuyor. Sunay AKIN ustanın anlatımıyla, olayların en küçük ayrıntılardan nasıl birbirlerine bağlandığına şahit olacaksınız.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Kitabın Arka Kapak Yazısı&lt;/strong&gt;
Her hafta yüzlerce çadırın kurulduğu Kuşdili çayırında intihar eden Hamdi Bey’i nasıl kıskanmasın, beton ve çelikten gökdelenlerin yükseldiği Manhattan’da yaşama gözlerini yuman Kızılderili? Ki bir geyik olarak gelir dünyaya hiç doğmamış çocuğu…&lt;/p&gt;
&lt;p&gt;Ve Resneli Niyazi’nin hürriyet mücadelesine katılır Balkanlar’ın dağlarında. Haliç kıyısındaki şadırvanın çatısında bir yerde saklıdır, sırtına sıkılan kurşun… O günden beri de Sunay Akın yalnızca okurlarına güvenir, sırtını dönebilecek kadar… Çok iyi bilir çünkü, özgürlük direnişi boyunca onlar hep arkasındaydılar… Onlar hep oradaydılar.&lt;/p&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2011/onlar-hep-oradaydi-sunay-akin/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Anahtar Eğitmen Eğitimi || 2. GÜN]]></title><description><![CDATA[12. Anahtar Eğitmen Eğitimini tamamladık ama ben yaşadıklarımızı - en azından bir kısmını anlatmayı tamamlayamadım. Gerek zamanımın olmamasından gerekse şu son blog engelinden sonra isteksizleştim. Fakat devam ediyorum ve eğitimin tam olarak başladığı gün ile devam ediyorum.]]></description><link>https://blog.hkucuk.com/2011/anahtar-egitmen-egitimi-2-gun/</link><guid isPermaLink="false">https://blog.hkucuk.com/2011/anahtar-egitmen-egitimi-2-gun/</guid><pubDate>Wed, 06 Apr 2011 00:00:00 GMT</pubDate><content:encoded>&lt;ol start=&quot;12&quot;&gt;
&lt;li&gt;Anahtar Eğitmen Eğitimini tamamladık ama ben yaşadıklarımızı - en azından bir kısmını anlatmayı tamamlayamadım. Gerek zamanımın olmamasından gerekse şu son blog engelinden sonra isteksizleştim. Fakat devam ediyorum ve eğitimin tam olarak başladığı gün ile devam ediyorum.&lt;/li&gt;
&lt;li&gt;gün ilk olarak “Sivil Toplum” oturumu ile başladı. Bu oturumda Sivil Toplum’un tarihsel gelişimine kısaca değinildikten sonra bizlerin Sivil toplum dendiğinde ne anladığımızdan yola çıkarak Sivil Toplum’un ne olduğu üzerine koştuk. Sivil Toplum “Belirli amaçlar uğrunda insanların birlikte hareket etmesi.” olarak söylendiğinde tam anlamıyla ifade edilmiş olur mu? Bu tarz terimleri sözcük anlamlarıyla mı anlamalıyız yoksa kendi anlam yüklemelerimiz ile mi anlamalıyız? Bu sorulara benim verdiğim cevaplar şunlar.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;ST dediğimizde akla gelecek en temel kavramlar insanlar, birey, amaçlar ve birlikteliktir. Biraz önce belirttiğim tanımda bu temel kavramların birlikteliğinden oluşturulmuş bir tanım ve benim anlam yüklemelerimle örtüşüyor. Bu yazıyı okuyan şanslı ve bilinçli blog okuyucularının da ST ve yazı da geçecek diğer terimleri kendi anlam yüklemeleriniz ile yorumlamanızı öneriyorum :) Kısa bir aradan sonra eğitim “Sivil Toplum Kuruluşları” oturumu ile devam etti. En etkili yöntemlerden birisi olduğunu düşündüğüm tartışma yöntemi ile (çok tartışmasak da) bu kez STK nedir? neden vardır? gibi sorulara cevap aramaya çalıştık. STK dendiğinde üzerinde durulacak en önemli unsurlar bence örgütlenme, katılım, toplumsal fayda ve şiddetsiz eylemler. Daha bir sürü kavram çıkabilir çünkü bu da yoruma açık bir durum. Bu yüzden eğitim esnasında da tam olarak bir tanımını yapmadık. Öğle yemeğimizden sonra Mandala uygulaması ile başlayarak “Gönüllülük” oturumunu gerçekleştirdik. Mandala, büyülü çemberler dendiğinde tam anlamına ulaşıyor kanımca.Daha ayrıntılı bilgi için BURAYA bakabilirsiniz.&lt;/p&gt;
&lt;p&gt;Bu oturumda da tahmin edeceğiniz gibi gönüllü nedir? e ulaşmaya çalıştık. Mandala da gruplara ayrılarak politika, ekip çalışması, katılım gibi öğeleri tema yaparak mandala çemberleri oluşturduk ve sonrasında da mandalalarımızın hazırlanma aşamalarını, o aşamalarda neler düşündüğümüzü diğer gruplarda ki arkadaşlarımıza sunduk. Benim yer aldığım grup politika temalı mandala çemberini yaptı :) Bir aradan sonra “Örgütlenme” oturumu ile devam ettik. Bu oturumda örgütlenmek üzerine kısaca konuşulsa da asıl olan bir örgütlenmenin örgütlenme olması ne demektir? soruydu. Bu soruya kısaca hemde çok kısaca şu cevabı verebiliriz. Örgütlenme bir fikir ile yapılanan, vizyon ve misyonları belli yapılardır. Bir örgütlenmenin örgütlenme olabilmesi için şu aşamaları yerine getirebilmesi gereklidir.&lt;/p&gt;
&lt;p&gt;Planlama Organize Etme Yürütme Kontrol Etme Akşam yemeğinden sonra programda GDG (Günlük Değerlendirme Grupları) olmasına rağmen biz BBŞO yaptık. Açılımını hatırlayamadığım bu oturumda bir kısmımızın gemi olduğu, bir kısmımızın deniz feneri olduğu, bir kısmımızın korsan olduğu güven ekip çalışması temelli bir uygulama yaptık. Gerçekten eğlenceli bir uygulamaydı ve bir eğitimde ilk kez denenmişti. Başarılı olduğunu ve bundan sonraki eğitimlerde de uygulanması gerektiğini düşünüyorum. BBŞO dan sonra toplan 6 kişiden oluşan (bir kişi eğitmen) GDG mizi yaptık. O gün gerçekleştirilen oturumları, kendi katılımımız, eğitmenleri, diğer katılımcıları daha doğrusu aklınıza ne geliyorsa hepsini konuştuğumuz bir oturum olan GDG ler benim en çok hoşuma giden eğitim parçalarından bir tanesiydi. GDG ler de ki konuşmaların gerçekten verimli olduğunu düşünüyorum. Çünkü küçük gruplar da daha çok nesne nesne uyumu gerçekleştirilebiliyor ;)&lt;/p&gt;
&lt;p&gt;İkinci günümüz kısaca ama gerçekte uzun ve yoğunca böyleydi. Görüşürüz tekrardan :D&lt;/p&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2011/anahtar-egitmen-egitimi-2-gun/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Anahtar Eğitmen Eğitimi || 1. GÜN]]></title><description><![CDATA[İlk gün eğitim anlamında neler yaşadığımızı anlatmaya başlamadan önce yolculuk ve şileye hareketimiz öncesi İstanbul turumuzdan bahsetmek istiyorum. Pazar akşamı saat 23:59 ( evet 00:00 değil ) aracı ile diğer bir eğitmen adayı arkadaşım ve ben İstanbula hareket ettik. Yolculukları ve yolculuk süresince ekrandan yolu izlemeyi seven birisi olarak, yolculuğumuzdan sıkılmadığımı itiraf etmeliyim yalnız feribot da ki zamanımızı bundan çıkartmak istiyorum. Yavaş yavaş hareket eden feribot da soğuktan dolayı otobüste oturduğumuz için belki de o kadar çok sıkıldım ki anlatamam. Kabus gibiydi.]]></description><link>https://blog.hkucuk.com/2011/anahtar-egitmen-egitimi-1-gun/</link><guid isPermaLink="false">https://blog.hkucuk.com/2011/anahtar-egitmen-egitimi-1-gun/</guid><pubDate>Tue, 05 Apr 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;İlk gün eğitim anlamında neler yaşadığımızı anlatmaya başlamadan önce yolculuk ve şileye hareketimiz öncesi İstanbul turumuzdan bahsetmek istiyorum. Pazar akşamı saat 23:59 ( evet 00:00 değil ) aracı ile diğer bir eğitmen adayı arkadaşım ve ben İstanbula hareket ettik. Yolculukları ve yolculuk süresince ekrandan yolu izlemeyi seven birisi olarak, yolculuğumuzdan sıkılmadığımı itiraf etmeliyim yalnız feribot da ki zamanımızı bundan çıkartmak istiyorum. Yavaş yavaş hareket eden feribot da soğuktan dolayı otobüste oturduğumuz için belki de o kadar çok sıkıldım ki anlatamam. Kabus gibiydi.&lt;/p&gt;
&lt;p&gt;Sabah İstanbul trafiğinin de etkisiyle saat 9:00 gibi Esenler otogarına vardık. Oradan servise binip çapa ya oradan da metro ile Sirkeci’ye geçtik. Hemen Toplum Gönüllüleri Vakfının yerini aramaya koyulduk. Zor olmadı bulduk :D Vakfın bulunduğu bina dışarıdan eski (içeriden de eski sayılır) ama benim çok hoşuma gitti. Eskileri severim. Eşyalarımızı vakfa bıraktıktan sonra attık kendimizi dışarıya ) Gamze’nin İstanbul da yaşayan bir arkadaşı ile buluştuk. Ne yapalım ne edelim derken hasta Beşiktaşlı arkadaş bize Beşiktaş’a gitmeyi önerdi ve bizde kabul ettik.&lt;/p&gt;
&lt;p&gt;Yolculuk sırasında ki görsel şölen diyebileceğim manzaralar harikaydı. Neyse Beşiktaş’a gittik ve kahvaltı için bir restorana oturduk. Beşiktaş semti manzaralı kahvaltımızdan sonra nargile içelim dedik. Elma nane bir nargileden sonra bir sahafa girdik. Küçük ama içerisine girince zevk veren bir dükkandı. Kitaplara dalarak baktım kaldım :) sonrasında da tekrar aynı yolu izleyerek sirkeciye döndük. Yalnız Beşiktaş hakkında bir şeyler söylemek isterim. Sokakların zemin döşemesinden evlerin yapısına harika bir oturmuşluğu var. Yaşamak isteyeceğim bir İstanbul semti. Dar ve küçük ara sokaklarına ise bayıldım. Hele ki meyhanelerin olduğu o sokağa :P Sirkeci’ye geldikten sonra daha zamanımız olduğu için gamze ve ben deniz kenarında biraz dolaşalım ve fotoğraf çekelim dedik.&lt;/p&gt;
&lt;p&gt;Vapur iskelesinin girişinden ötürü deniz kenarının telle çevrili olması ??? yüzünden uzun bir mesafe yürüdükten sonra Galata Kulesinin manzarasını arkamıza alarak fotoğraf çektirdik J sonrasında da fotoğraf çeke çeke vakfın yolunu tuttuk. Vakıfta toplantı odasında diğer eğitmen adayı arkadaşları beklemeye koyulduk. Ofis çalışanı arkadaşlarla ve kendi aramızda sohbet ederek zamanı geçirmeye çalıştığımız sırada bir ofis çalışanı arkadaş ile bir anlaşma yaptık. Bana bir çakmak verdi ve eğitimin son gününe kadar bu çakmağı saklamamı ve kaybetmememi söyledi ama nedenini söylemedi. Bende kabul ettim. Ne olacağını merak ediyorum ve bunu öğrendiğim zaman ismini de buradan paylaşıcam :) Neyse 24 arkadaş toplandık ve şileye hareket ettik. Boğaz köprüsünden geçerek yola koyulduk. Boğaz Köprüsünden geçmenin tadı çok hoşuma gitti. Bunun tekrarları mutlaka olacak :) yolun bazı zamanlarında uyudum bazı zamanlarında şapşal bir şekilde uyanıktım. Bu yüzden ayrıntıları hatırlamıyorum.&lt;/p&gt;
&lt;p&gt;Yaklaşık 2 saatlik bir yolculuktan sonra şilede şuan da kaldığımız otelimize geldik. Grand Otel ;) Kaydımızı yaptırıp odalarımıza yerleştik. Yerleştik dediğim eşyaları fırlattık attık odalara hemen lobiye indik J Saat 8 gibi de ilk toplantımızı yaptık. Tanışma eğitimi desek çok daha doğru olur. Bu tarz yaptık ettik dolu bir yazı yazmamın ve olayları kısaca yazmamın sebebi zamanımın olmaması. Sürekli eğitimlerdeyiz ve ben bilgisayara zorla dokunuyorum ama bundan şikayetçi değilim. Çünkü bizler bu eğitimden döndükten sonra sahaya çıkıp gönüllü arkadaşlarımıza aktarımlarda bulunacağız. Bunun içinde bizlerin donanımlı olması gerekiyor ve bunun içinde şuanda ki eğitim yoğunluğunun tamamına katılmamız gerekiyor. Sonuç olarak şikayetçi değilim aksine çok memnunum. Diğer günlerde de neler yaşadığımızı zaman buldukça paylaşmaya çalışacağım. Hadi ben eğitime kaçtım :D&lt;/p&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2011/anahtar-egitmen-egitimi-1-gun/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Ay Hırsızı --- Sunay AKIN]]></title><description><![CDATA[Sunay AKIN eğitimini aldığı konulara değiniyor bu kez. Gözünü yukarılara ve çok uzaklara dikiyor. Karanlıklar içerisini hayatımızla öyle güzel noktalardan birleştiriyor ki tadına doyamıyorsunuz. Mutlaka okunması gereken bir yapıt.]]></description><link>https://blog.hkucuk.com/2010/ay-hirsizi-sunay-akin/</link><guid isPermaLink="false">https://blog.hkucuk.com/2010/ay-hirsizi-sunay-akin/</guid><pubDate>Sun, 28 Feb 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Sunay AKIN eğitimini aldığı konulara değiniyor bu kez. Gözünü yukarılara ve çok uzaklara dikiyor. Karanlıklar içerisini hayatımızla öyle güzel noktalardan birleştiriyor ki tadına doyamıyorsunuz. Mutlaka okunması gereken bir yapıt.&lt;/p&gt;
&lt;p&gt;Sunay Akın yeni kitabı Ay Hırsızı’nda gözünü Ay’a dikiyor ve bir arkeoloğun sabrıyla kazıyor insanlığın ortak birikiminin üzerine çöken tozu toprağı… Ortaya çıkardığı bilgiyi şair duyarlığıyla ilmek ilmek dokuyor ve okurunu hayrete düşürecek öyküler bir bir diziliyor karşımıza.&lt;/p&gt;
&lt;p&gt;Cervantes ve Mimar Sinan hangi caminin inşaatında buluştu? .. Enver Paşa’nın uçağı kaç kez düştü? .. Piri Reis’in haritası Topkapı Sarayı’nda nasıl bulundu? .. İstanbul Boğazı’nı yürüyerek geçen Attila Hülagü’nün sırrı neydi? 157 yıl yaşayan Zaro Ağa’nın Amerika seferi… Atatürk neden hiç uçağa binmedi? ..&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tanıtım Bülteninden&lt;/strong&gt;&lt;/p&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2010/ay-hirsizi-sunay-akin/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[NBA All Star 2011 Yetenek Yarışmaları]]></title><description><![CDATA[Aristoteles'in güzel bir sözü şöyle der "Hiç bir dahi, biraz çılgınlık karışımından yoksun olamaz." Basketbolun dahilerinin şov gecesi de işte bu sözdeki çılgınlıkların sergilendiği ve izleyenlerin müthiş zevk aldıkları bir gece oldu. Özellikle smaç yarışması ben dahil bir çok basketbolseveri büyüledi.]]></description><link>https://blog.hkucuk.com/2010/nba-all-star-2011-yetenek-yarismalari/</link><guid isPermaLink="false">https://blog.hkucuk.com/2010/nba-all-star-2011-yetenek-yarismalari/</guid><pubDate>Sat, 20 Feb 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Aristoteles’in güzel bir sözü şöyle der: “Hiç bir dahi, biraz çılgınlık karışımından yoksun olamaz.” Basketbolun dahilerinin şov gecesi de işte bu sözdeki çılgınlıkların sergilendiği ve izleyenlerin müthiş zevk aldıkları bir gece oldu. Özellikle smaç yarışması ben dahil bir çok basketbolseveri büyüledi. Arabanın üzerinden zıplayanı, üç topu smaç yapanı, iki potaya aynı anda smaç yapanı… Öldü denilen, eski tadını bir daha yakalayamaz denilen smaç yarışması tarihin en güzel (bana göre) yarışmasına dönüştü. Beklenildiği gibi Blake Griffin smaç yarışmasını kazandı. Üçlük yarışmasını bence süpriz bir şekilde son şampiyon Paul Pierce ve benim favorim Ray Allen’ın önünde James Jones kazandı. Yetenekte ise Stephen Curry birinci geldi.&lt;/p&gt;
&lt;p&gt;Smaç Yarışması
Katılımcılar Blake Griffin, Serge Ibaka, JaVale McGee ve DeMar DeRozan idi :) Harika bir çekişme yaşandı. Her smaç alkışı hak etti ve her smaç görülmeye değerdi. Tabi bazıları diğerlerinden ayrılıyordu. Ben de bir ayrım yaptım. Şampiyonun videolarını bloguma taşıdım. İşte o akıldan silinemeyecek smaçlar.
Blake Griffin’in havada 360 derece dönür çift el ile bastığı smaç görülmeye değerdi. Evet bunu daha önce yapanlar oldu ama çift elle bitirebilen çok az kişi var.&lt;/p&gt;
&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.25%; position: relative; height: 0; overflow: hidden; margin-bottom: 1.0725rem&quot; &gt; &lt;iframe src=&quot;https://www.youtube.com/embed/TnyTmBhwF6E&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot; style=&quot; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot;&gt;&lt;/iframe&gt; &lt;/div&gt;
&lt;p&gt;Sakatlanma tehlikesine rağmen havada tam tur dönerek yaptığı smaçtan sonra hızlanacağı belliydi. Takım arkadaşı Baron Davis’in panyaya çarptırarak verdiği topu değirmen ile bitirdiği smaç bunun göstergesiydi.&lt;/p&gt;
&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.25%; position: relative; height: 0; overflow: hidden; margin-bottom: 1.0725rem&quot; &gt; &lt;iframe src=&quot;https://www.youtube.com/embed/V_Lu9sEAOk0&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot; style=&quot; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot;&gt;&lt;/iframe&gt; &lt;/div&gt;
&lt;p&gt;Bu iki smaç griffin’in finale kalmasına yetti de arttı bile :) Final de ise tam anlamıyla bir büyüleme operasyonu vardı. İlk olarak Carter’ın kolunun dirseğine kadar olan kısmını potaya sokarak yaptığı smacın benzerini fakat panyadan pas alarak olanını yaptı Blake.&lt;/p&gt;
&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.25%; position: relative; height: 0; overflow: hidden; margin-bottom: 1.0725rem&quot; &gt; &lt;iframe src=&quot;https://www.youtube.com/embed/MOlg-0UNwKM&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot; style=&quot; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot;&gt;&lt;/iframe&gt; &lt;/div&gt;
&lt;p&gt;Ve bitiriş. Staphes Center’ın ortasında bir koro, koronun dilinde “I believe I can flying (uçabileceğime inanıyorum)”, potanın altında bir araba ve arabanın üstünden uçan bir adam. Blake Griffin.&lt;/p&gt;
&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.25%; position: relative; height: 0; overflow: hidden; margin-bottom: 1.0725rem&quot; &gt; &lt;iframe src=&quot;https://www.youtube.com/embed/c6FTmm2N5J4&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot; style=&quot; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot;&gt;&lt;/iframe&gt; &lt;/div&gt;
&lt;p&gt;Müthiş bir sunum :) I believe I can fly şarkısı Michael Jordan’ın oynadığı Space Jam filminin de müziğiydi. Jordan akıllardan asla çıkmıyor :) Bu son smaç ile şampiyonluğunu kesinleştirdi Blake Griffin. Tam anlamıyla hak ettiğine inanıyorum. Bu müthiş geceyi bize yaşattıkları için bu basketbol dahilerine teşekkür ediyorum. &lt;/p&gt;
&lt;p&gt;Diğer smaçları izlemek istiyorsanız &gt;&gt;&gt; &lt;a href=&quot;http://www.youtube.com/user/medyunhavba?feature=mhum&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;http://www.youtube.com/user/medyunhavba?feature=mhum&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;İyi seyirler.&lt;/p&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2010/nba-all-star-2011-yetenek-yarismalari/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[17. Gençlik Konseyi --- Ankara]]></title><description><![CDATA[5 - 8 Şubat tarihleri arasında Ankarada gerçekleştirilen Toplum Gönüllüleri Vakfı 17. Gençlik Konseyinin katılımcılarından bir tanesi de bendim. Her ne kadar kaçak olarak katılmış olsamda katılımcı olduğum gerçeği göz ardı edilemez :D 4 gün boyunca Ankarada tog dolu günler geçirdik.]]></description><link>https://blog.hkucuk.com/2010/17-genclik-konseyi-ankara/</link><guid isPermaLink="false">https://blog.hkucuk.com/2010/17-genclik-konseyi-ankara/</guid><pubDate>Tue, 16 Feb 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;5 - 8 Şubat tarihleri arasında Ankarada gerçekleştirilen Toplum Gönüllüleri Vakfı 17. Gençlik Konseyinin katılımcılarından bir tanesi de bendim. Her ne kadar kaçak olarak katılmış olsamda katılımcı olduğum gerçeği göz ardı edilemez :D 4 gün boyunca Ankarada tog dolu günler geçirdik.&lt;/p&gt;
&lt;p&gt;Türkiyenin dört bir yanından gelen hatta Kıbrıs ve Azerbeycandan dahi gelen Toplum Gönüllüleri ile birlikte bitmek bilmeyen otobüs yolculuklarımızda, konferans aralarında, yurt kantin ve spor salonunda kısaca bulduğumuz her alanda kaynaşmaya, iletişim kurmaya çalıştık. Çünkü bu kadar farklı kültürü bir arada bulmak çok kolay olmuyor. Bu fırsatımızı en iyi şekilde değerlendirmek, yeni arkadaşlıklar edinmek, yeni şeyler öğrenmek amacıyla arı misali her çiçeği dolaştık (Çiçekler Toplum Gönüllüleri :)) Her çiçekten bir şeyler almaya, oraya bir şeyler bırakmaya çalıştık. Bu dolaşmaların, konuşmaların ne kadar sağlıklı olduğunu konsey dönüşü örgütlenmek için farklı yollarla bir araya gelmeye çalışan arkadaşlarımı görünce anladım. Evet işe yaramış dedim :)
Konseyin benim açımdan bir değerlendirmesi yapmak istiyorum şimdi. Kısaca ama benim için önem arz eden şeyler ;)&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Organizasyon&lt;/strong&gt;
Organizasyonda ankara organizasyon ekibinin eksik kaldığını düşünüyorum. Gelişlerden başlayarak gidişlere kadar bir sürü aksaklıklar yaşandı. Ne gibi mi? İşte bir kaçı.&lt;/p&gt;
&lt;p&gt;Ege Üniversitesi Toplum Gönüllülerinden bir katılımcı ve iki adet atölye uygulatıcısı ile birlikte Ankaraya geldim. Bize ilk olarak ODTÜ karşısındaki KYK yurduna (adını unuttumda :P) gelmemiz söylendi. Orada buluşulup yemeğe gidilecekti. Evet biz yurda gittik ama güvenlikten öğrendiğimiz bilgi ile sinir olduk. Kadın bize “Yurt değiştirildi. Başka bir yurda geçiş yaptı onlar” dedi. Haydeee. Hemen saha sorumlularından bir tanesini arayıp yerlerini öğrendik.Gecikmeli olarak diğer yurda ulaştık. Millet bizi beklemiş. Kimse kusura bakmasın ama bizim suçumuz değildi.
Ege Üniversitesi Toplum Gönüllüleri katılımcılarından bir tanesi konsey öncesi bilgilendirme için aranmadı. Sorduğumuzda arandık dendi. Hayır aranmadı. Aranması gerekiyordu.
Büyük bir şehirde olmanın verdiği bir sıkıntı olsa dahi yerleşim, yemek ve konferans salonlarının mesafesinin bu kadar çok olmaması iyi olabilirdi. Otobüs ile seyahat etmekten bir yerlerimiz ağrıdı. Kendimi bir ara koyun gibi hissettim.
Atölye salonlarının daha sakin alanlar olması beklenir. Dışarıdaki sesin atölyede yeri yoktur. Fakat ortalık yerde atölye yapmamız istendi. Yaptık ama millete susar mısınız demekten atölyeye odaklanamadık.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;İçerik&lt;/strong&gt;
İçerik konusunda ilk olarak Bolu konseyinin daha dolu olduğunu söylemem gerekiyor. Tabi ki de yaz konseyi ile bahar konseyi arasında fark olacaktır. Çünkü bahar konseyesinde YK seçimi ön plandadır. Fakat bu kadarda kısır olamaz ama ya.&lt;/p&gt;
&lt;p&gt;İlk gün tanışma ve bilgilendirmeler ile geçti. Neden? Yarım saatlik bir dilimin yeterli olduğu bu alana neden tek bir gün ayrıldı? Gereksiz zaman kaybı.
Atölye uygulama süreleri çok kısaydı. Sonradan farkına varıldı atölye sırasında uzatıldı. Atölye uygulatıcıları her şeylerini ayarlamış planlamışken. Eğitimden anlamak lazım biraz.&lt;/p&gt;
&lt;p&gt;B planı olmayan bir organizasyon olamaz. Gençlik kollarının foruma gelememesi ile oluşan boşluk berbattı. Gerçi gelmiş olsalardı süre yetmicekti ya ona birazdan değinelim.
Süre kullanımlarında dikkatli davranılmadı. Sürekli sarkmalar oldu. Sürekli olması sıkıntılı olan durum. Bir iki kabul edilebilir.
Konuk olarak çağırılan ve konuşma yapan kişilerin Toplum Gönüllüleri ile ilgili bilgilendirilmeleri gerekirdi. Konuşmalarından, tavırlarından hiç bir şekilde Tog hakkında bir bilgilerinin olmadığı belli oluyordu. İdeolojik savaş bile yaşandı bir ara.
Sunum yapan kişilerin biraz daha işlerini ciddiye almaları gerekiyor. Hepsine lafım yok ama bir kısmının laubali tavırları hiç hoş değildi.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Olumlu&lt;/strong&gt;
Olumsuz bazı kısımları söyledik fakat olumlu yönler de vardı :D&lt;/p&gt;
&lt;p&gt;Şehir içi ulaşım her ne kadar biraz söylendiysemde başarılıydı. 4 gün boyunca, günde 4 ile 6 kez 300 - 350 kişilik bir grubu Ankara içerisinde hareket ettirmek kolay değildir ve bunda gayet başarılı olunduğunu söylemek zor değil.
KYK yurdunun ayarlanması hatta güze bir yurdun ayarlanması :D gerçekten güzeldi.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bitirirken Söyleyeceklerim&lt;/strong&gt;
Dönüş için bilet ayarlamaya çalışırken sadece telefon numarası istediğim kadının bana hırsız muamelesi yapması hiç hoş değildi. Böyle zihniyetsiz, kendisini beğenmiş, kendini yüksek gören bir kişinin Tog da olması üzdü beni.
Bir şarkı sözü “A me piace così, e non chiedo il permesso, perchè questo dolore è amore per te.” yani “Bunu seviyorum, ve izin istemeye gerek yok, bu acı senin aşkın için” diyor. (ya tam çevirememiş olabilirim :P mazur görün :P) Çektiğimiz her çile tog için dolayısıyla toplumsal barış için, gençler için, bizim için ;) İşte bunu seviyorum.&lt;/p&gt;
&lt;p&gt;Şarkı sözünün geçtiği şarkıyla bitirelim :)&lt;/p&gt;
&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.25%; position: relative; height: 0; overflow: hidden; margin-bottom: 1.0725rem&quot; &gt; &lt;iframe src=&quot;https://www.youtube.com/embed/EkjoCMvc-lI&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot; style=&quot; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot;&gt;&lt;/iframe&gt; &lt;/div&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2010/17-genclik-konseyi-ankara/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Değişim ve Yeni Hayat]]></title><description><![CDATA[Ne gariptir ama hayatını devam ettirebilmek için her şeyini, bütün düzenini, bütün arkadaşlarını bırakıp hiç bilmediğin bir yere gelmek ve o yerde hayatına şekil vermek. Yeni bir okul, yepyeni arkadaşlar, yepyeni bir ev (yurt). Bunların nedeni sürekli bir değişimin hüküm sürmesi ve bizlerinde ona ayak uydurmamız. Çünkü ayak uydurmamamız sonucunda hayat çekilmez olarak onun oyununa uymamanın cezasını kesiyor bize.]]></description><link>https://blog.hkucuk.com/2010/degisim-ve-yeni-hayat/</link><guid isPermaLink="false">https://blog.hkucuk.com/2010/degisim-ve-yeni-hayat/</guid><pubDate>Fri, 22 Jan 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Ne gariptir ama hayatını devam ettirebilmek için her şeyini, bütün düzenini, bütün arkadaşlarını bırakıp hiç bilmediğin bir yere gelmek ve o yerde hayatına şekil vermek. Yeni bir okul, yepyeni arkadaşlar, yepyeni bir ev (yurt). Bunların nedeni sürekli bir değişimin hüküm sürmesi ve bizlerinde ona ayak uydurmamız. Çünkü ayak uydurmamamız sonucunda hayat çekilmez olarak onun oyununa uymamanın cezasını kesiyor bize. Gariplik dediğim nokta hayatımızı devam ettirmek için bu kadar çabaya gerek var mı? Her şey yerli yerindeyken - ben annemin yanı başında, babamın sert bakışları altında - bu süreci atlatıp, düzenli bir hayata sahip olamaz mıyım? Olurum evet haklısınız.&lt;/p&gt;
&lt;p&gt;Burada önemli olan nokta insanın bir şekilde yanlızlığı öğrenmesinin gerektiğidir. Hayatlarımızı bir şekilde yoluna koyabiliriz ama onun ruhsal olarak iyi bir şekilde devam edebilmesi işte bu yanlızlıkta gizli. Bir arkadaşınızdan kötü bir kazık yiyebilirsiniz, anne ve babanız yanınızdan ayrılabilir :’( , insanlar size boğucu gelmeye başlayabilir. İşte bu noktalarda bir köşeye çekilip kendinizle olmanız gerekebilir. O arkadaşınız güvendiğiniz tek insan olabilir, anne ve babanız artık yoklarken nasıl bir hayat devam ettireceksiniz?, insanlar dedim onlardan uzak durmak için onlara yanaşmazsınız di mi? işte bu gibi durumlarda sağlıklı kalabilmek, iyi kararlar verebilmek için kendinizle iyi bir arkadaş olmanız gereklidir. Bunun için de erken yaşlardaki bu değişim önemli bir hal alıyor.&lt;/p&gt;
&lt;p&gt;Bende bu değişime uyan bir bir kişiyim. Benim değişimim İzmir de oluyor. Hala oluyor çünkü değişmeyen tek şey değişimin kendisi :) İzmire gelişimi sorguluyorum uzun süredir. Sonuçta hep iyi ki gelmişim diyorum :) Bunu söylememin sebebi burada sürekli güzel şeyler yaşamam değil. Aksine çok kötü, beni etkileyen olaylarla karşı karşıya kalarak, bir nebze de olsa hayatı öğrenmeye başlamamdır. Elbette güzelliklerini de gördüm ama önemli olan nokta acı duyduğum noktalar şuan da. (Not: Mazoşist değilim)&lt;/p&gt;
&lt;p&gt;Aşağıda beni üzen, büyük ihtimalle sizlerinde hayatınızda karşılaştığınız durumlardan bazılarını yazıcam. Tam şuan da arka planda çalan şarkıda “When people run in circles it’s a very very mad world (Daireler içinde döner insanlar bu delirmiş dünyada)” diyor. Aşağıda okuyacaklarınızı bu sözü de düşünerek yorumlamanızı rica ediyorum :)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Yardım etmeyi amaçlarsın. Bunun için elinden geleni yaparsın. Karşılığında aldığın cevap “Sen ne yaptın ki?” dir. İyi olmamayı bu durumlarda sevmiyorum.&lt;/li&gt;
&lt;li&gt;Çok çok önemli işlerin, sınavların olduğu halde zaman ayırıp derdine ortak olduğun dostun, başka bir kişi için seni tanımaz. O kişi benim için o an bitmiştir.&lt;/li&gt;
&lt;li&gt;Çok çalışmışsındır ama sınavın kötü gelir. Hocaya elam vermen dahi yetecektir notunun yükselmesine ama sen haketmediğini düşünerek, arkadaşlarına haksızlık olacağını düşündüğünden tenezzül bile etmezsin. Fakat bazıları senin tersindir. Onlar senin gibi düşünmüyordur. Bu insanlara güvenim o anda azalır.&lt;/li&gt;
&lt;li&gt;Seversin ya da çok hoşlanırsın. Karşındaki kişiden de bu hisleri teyit eden davranışlar görürsün ama konuştuğunda o kişinin acısı vardır ve henüz böyle bir şeye hazırlıklı değildir. Bir olsa anlarım da fazlası zarar. Ben yardım kurumu değilim.&lt;/li&gt;
&lt;li&gt;Bir işte uzmansındır en azından bulunduğun ortamda. Fakat öyle kişiler vardır ki sana sorulan alanınla ilgili sorularda dahi sözünü kesip bilmedikleri halde söze karışarak saçmalarlar. Yaptıkları size ve bilginize saygısızlıktır. Bu insanlara yararım dokunacağını bilsem dahi zor yardım ederim.&lt;/li&gt;
&lt;li&gt;Sabahlarsın akşamlarsın bir ekip olarak bir şeyleri ortaya çıkarırsın. Birisi çıkar ben yaptım diyerek söz etmeye başlar. Al o adamı boğazla.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Uykum geldi artık. Daha bir çok örnek verilebilir ama türevler size kalsın. Son olarak yukarıda bir iki sözünü paylaştığım şarkıyla güle güle demek istiyorum sizlere =)&lt;/p&gt;
&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.25%; position: relative; height: 0; overflow: hidden; margin-bottom: 1.0725rem&quot; &gt; &lt;iframe src=&quot;https://www.youtube.com/embed/4N3N1MlvVc4&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot; style=&quot; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot;&gt;&lt;/iframe&gt; &lt;/div&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2010/degisim-ve-yeni-hayat/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Önce Çocuklar ve Kadınlar --- Sunay AKIN]]></title><description><![CDATA[Deniz ve denizin oyuncakları gemiler, vapurlar vb. Sunay AKIN dan dünya tarihindeki önemli deniz olayları üzerine önemli bir yapıt. Bir şair bakış ve anlatış açısıyla :)]]></description><link>https://blog.hkucuk.com/2010/once-cocuklar-ve-kadinlar-sunay-akin/</link><guid isPermaLink="false">https://blog.hkucuk.com/2010/once-cocuklar-ve-kadinlar-sunay-akin/</guid><pubDate>Fri, 15 Jan 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Deniz ve denizin oyuncakları gemiler, vapurlar vb. Sunay AKIN dan dünya tarihindeki önemli deniz olayları üzerine önemli bir yapıt. Bir şair bakış ve anlatış açısıyla :)
Eski şarkıcı ozanlara benzer Sunay Akın. Ortaçağda kasaba kasaba dolaşan, köy meydanlarında türkülerini söyleyen ozanlara. Geçtiği her yerde insanların yüreğine bir şair izi bırakır. Ama aynı zamanda bir tarih yazarıdır o.&lt;/p&gt;
&lt;p&gt;Şiirsel gizli tarihimizin yazarı! Açarsanız bu kitabın kapağını geçmişe, denizlerin derinliklerine ineceksiniz. Sizin olan batıkların öyküsünü, yaşanmış ölümsüz anların nasıl buluştuğunu göreceksiniz. Denizdeki kavun kabuklarının izinin Che Guevara’ya, astronot James Irwin’in uzay gemisinin kendi çocukluğuna çıktığını ve 1942’de Boğaz sularında yüzlerce insanın nasıl öldürüldüğünü okuyacaksınız.&lt;/p&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2010/once-cocuklar-ve-kadinlar-sunay-akin/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[Narmanlı Hanı]]></title><description><![CDATA[Bedri Rahmi EYÜPOĞLU, Ahmet Hamdi TANPINAR gibi bir çok sanatçımızın yaşamış ve çalışmış olduğu Narmanlı Hanı 1831 yılında inşa edilmiştir. İstanbul Beyoğlun da yer alan bina 1880 yılına kadar Rus Büyükelçiliği, 1914 e kadar Rus Hapishanesi, daha sonrasında da Harmanlı ailesi mülkü olarak kullanılmıştır.]]></description><link>https://blog.hkucuk.com/2010/narmanli-han/</link><guid isPermaLink="false">https://blog.hkucuk.com/2010/narmanli-han/</guid><pubDate>Sat, 09 Jan 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;http://tr.wikipedia.org/wiki/Bedri_Rahmi_Ey%C3%BCbo%C4%9Flu&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Bedri Rahmi EYÜPOĞLU&lt;/a&gt;, &lt;a href=&quot;http://tr.wikipedia.org/wiki/Ahmet_Hamdi_Tanp%C4%B1nar&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Ahmet Hamdi TANPINAR&lt;/a&gt; gibi bir çok sanatçımızın yaşamış ve çalışmış olduğu Narmanlı Hanı 1831 yılında inşa edilmiştir. İstanbul Beyoğlun da yer alan bina 1880 yılına kadar Rus Büyükelçiliği, 1914 e kadar Rus Hapishanesi, daha sonrasında da Harmanlı ailesi mülkü olarak kullanılmıştır. Sonra ki yıllarda bir çok sanatçımıza yaşama ve çalışma alanı olmuştur.&lt;/p&gt;
&lt;p&gt;Beş ressam tarafından &lt;a href=&quot;http://tr.wikipedia.org/wiki/D_Grubu&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;D Grubu&lt;/a&gt; 1933 yılında ilk sergisini burada açmıştır.&lt;/p&gt;
&lt;p&gt;Bir zamanların istanbulunun merkezlerinden olan, 170 yıllık istanbul tarihine tanıklık etmiş bu binada bu yıllarda sadece bir noter ofisi bulunuyor. Ben gidip görmedim ama içerisinde elli adet kediye sahip bir kadının yaşadığı da söyleniyor. Yekta KOPAN ın &lt;a href=&quot;http://filucusu.blogspot.com/2011/01/narmanl-han-ne-olacak.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Narmanlı Hanı Ne Olacak&lt;/a&gt; adlı yazısını okuduktan sonra ben de bir şeyler söylemek istedim.&lt;/p&gt;
&lt;p&gt;Tarih kokan böyle bir yapının; bir müzeye, bir kültür merkezine dönüştürülmesini beklemeye hepimizin hakkının olduğunu düşünüyorum. Düşünsenize; İstanbulun merkezinde, tarih kokan bir depoya tarihinizi koyarak onu koruma altına alıyorsunuz ve düzenli bir şekilde insanlara bunu sunuyorsunuz. Müzeler kültürel depo alanlarıdır. Yekta KOPAN “İstanbul şehrinin merkezinde bir “Kent Müzesi” yok.” diyor. Kültürünüzü koruma altına almazsanız, başkaları gelir onu sahiplenir sesinizi bile çıkaramazsınız. Kaybolur, yıpratılır ve sizde tarihinize hakaret etmiş olursunuz.&lt;/p&gt;
&lt;p&gt;İstanbulda her gün bu binanın yanından geçen ama o binanın nasıl bir çınar olduğunu bilmeyen bir sürü insan var. Peki bilmemek sadece onların suçu mu?&lt;/p&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2010/narmanli-han/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item><item><title><![CDATA[The “Bug-O” Notation]]></title><description><![CDATA[What is the 🐞(<i>n</i>) of your API?]]></description><link>https://blog.hkucuk.com/2007/the-bug-o-notation/</link><guid isPermaLink="false">https://blog.hkucuk.com/2007/the-bug-o-notation/</guid><pubDate>Thu, 25 Jan 2007 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When you write performance-sensitive code, it’s a good idea to keep in mind its algorithmic complexity. It is often expressed with the &lt;a href=&quot;https://rob-bell.net/2009/06/a-beginners-guide-to-big-o-notation/&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;Big-O notation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Big-O is a measure of &lt;strong&gt;how much slower the code will get as you throw more data at it&lt;/strong&gt;. For example, if a sorting algorithm has O(&lt;i&gt;n&lt;sup&gt;2&lt;/sup&gt;&lt;/i&gt;) complexity, sorting ×50 times more items will be roughly 50&lt;sup&gt;2&lt;/sup&gt; = 2,500 times slower. Big O doesn’t give you an exact number, but it helps you understand how an algorithm &lt;em&gt;scales&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Some examples: O(&lt;i&gt;n&lt;/i&gt;), O(&lt;i&gt;n&lt;/i&gt; log &lt;i&gt;n&lt;/i&gt;), O(&lt;i&gt;n&lt;sup&gt;2&lt;/sup&gt;&lt;/i&gt;), O(&lt;i&gt;n!&lt;/i&gt;).&lt;/p&gt;
&lt;p&gt;However, &lt;strong&gt;this post isn’t about algorithms or performance&lt;/strong&gt;. It’s about APIs and debugging. It turns out, API design involves very similar considerations.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;A significant part of our time goes into finding and fixing mistakes in our code. Most developers would like to find bugs faster. As satisfactory as it may be in the end, it sucks to spend the whole day chasing a single bug when you could have implemented something from your roadmap.&lt;/p&gt;
&lt;p&gt;Debugging experience influences our choice of abstractions, libraries, and tools. Some API and language designs make a whole class of mistakes impossible. Some create endless problems. &lt;strong&gt;But how can you tell which one is which?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Many online discussions about APIs are primarily concerned with aesthetics. But that &lt;a href=&quot;https://blog.hkucuk.com/optimized-for-change/&quot;&gt;doesn’t say much&lt;/a&gt; about what it feels like to use an API in practice.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;I have a metric that helps me think about this. I call it the &lt;em&gt;Bug-O&lt;/em&gt; notation:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=&quot;40&quot;&gt;🐞(&lt;i&gt;n&lt;/i&gt;)&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;The Big-O describes how much an algorithm slows down as the inputs grow. The &lt;em&gt;Bug-O&lt;/em&gt; describes how much an API slows &lt;em&gt;you&lt;/em&gt; down as your codebase grows.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;For example, consider this code that manually updates the DOM over time with imperative operations like &lt;code class=&quot;language-text&quot;&gt;node.appendChild()&lt;/code&gt; and &lt;code class=&quot;language-text&quot;&gt;node.removeChild()&lt;/code&gt; and no clear structure:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;trySubmit&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;// Section 1&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;let&lt;/span&gt; spinner &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;createSpinner&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  formStatus&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;appendChild&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;spinner&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;submitForm&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;then&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  	&lt;span class=&quot;token comment&quot;&gt;// Section 2&lt;/span&gt;
    formStatus&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;removeChild&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;spinner&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;let&lt;/span&gt; successMessage &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;createSuccessMessage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    formStatus&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;appendChild&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;successMessage&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;catch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;error&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  	&lt;span class=&quot;token comment&quot;&gt;// Section 3&lt;/span&gt;
    formStatus&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;removeChild&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;spinner&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;let&lt;/span&gt; errorMessage &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;createErrorMessage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;error&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;let&lt;/span&gt; retryButton &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;createRetryButton&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    formStatus&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;appendChild&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;errorMessage&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    formStatus&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;appendChild&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;retryButton&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    retryButton&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;addEventListener&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;click&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;token comment&quot;&gt;// Section 4&lt;/span&gt;
      formStatus&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;removeChild&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;errorMessage&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      formStatus&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;removeChild&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;retryButton&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;token function&quot;&gt;trySubmit&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The problem with this code isn’t that it’s “ugly”. We’re not talking about aesthetics. &lt;strong&gt;The problem is that if there is a bug in this code, I don’t know where to start looking.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Depending on the order in which the callbacks and events fire, there is a combinatorial explosion of the number of codepaths this program could take.&lt;/strong&gt; In some of them, I’ll see the right messages. In others, I’ll see multiple spinners, failure and error messages together, and possibly crashes.&lt;/p&gt;
&lt;p&gt;This function has 4 different sections and no guarantees about their ordering. My very non-scientific calculation tells me there are 4×3×2×1 = 24 different orders in which they could run. If I add four more code segments, it’ll be 8×7×6×5×4×3×2×1 — &lt;em&gt;forty thousand&lt;/em&gt; combinations. Good luck debugging that.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;In other words, the Bug-O of this approach is 🐞(&lt;i&gt;n!&lt;/i&gt;)&lt;/strong&gt; where &lt;em&gt;n&lt;/em&gt; is the number of code segments touching the DOM. Yeah, that’s a &lt;em&gt;factorial&lt;/em&gt;. Of course, I’m not being very scientific here. Not all transitions are possible in practice. But on the other hand, each of these segments can run more than once. &lt;span style=&quot;word-break: keep-all&quot;&gt;🐞(&lt;em&gt;¯\_(ツ)_/¯&lt;/em&gt;)&lt;/span&gt; might be more accurate but it’s still pretty bad. We can do better.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;To improve the Bug-O of this code, we can limit the number of possible states and outcomes. We don’t need any library to do this. It’s just a matter of enforcing some structure on our code. Here is one way we could do it:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;let&lt;/span&gt; currentState &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token literal-property property&quot;&gt;step&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;initial&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// &apos;initial&apos; | &apos;pending&apos; | &apos;success&apos; | &apos;error&apos;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;trySubmit&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;currentState&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;step &lt;span class=&quot;token operator&quot;&gt;===&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;pending&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// Don&apos;t allow to submit twice&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;setState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token literal-property property&quot;&gt;step&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;pending&apos;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;submitForm&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;then&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;setState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token literal-property property&quot;&gt;step&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;success&apos;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;catch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;error&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;setState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token literal-property property&quot;&gt;step&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;error&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; error &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;setState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;nextState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;// Clear all existing children&lt;/span&gt;
  formStatus&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;innerHTML &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  currentState &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; nextState&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;switch&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;nextState&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;step&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;initial&apos;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;
      &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;pending&apos;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;
      formStatus&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;appendChild&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;spinner&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;success&apos;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;
      &lt;span class=&quot;token keyword&quot;&gt;let&lt;/span&gt; successMessage &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;createSuccessMessage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      formStatus&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;appendChild&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;successMessage&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;error&apos;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;
      &lt;span class=&quot;token keyword&quot;&gt;let&lt;/span&gt; errorMessage &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;createErrorMessage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;nextState&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;error&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;token keyword&quot;&gt;let&lt;/span&gt; retryButton &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;createRetryButton&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      formStatus&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;appendChild&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;errorMessage&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      formStatus&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;appendChild&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;retryButton&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      retryButton&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;addEventListener&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;click&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; trySubmit&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This code might not look too different. It’s even a bit more verbose. But it is &lt;em&gt;dramatically&lt;/em&gt; simpler to debug because of this line:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight has-highlighted-lines&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;setState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;nextState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;// Clear all existing children&lt;/span&gt;
&lt;span class=&quot;gatsby-highlight-code-line&quot;&gt;  formStatus&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;innerHTML &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;// ... the code adding stuff to formStatus ...&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;By clearing out the form status before doing any manipulations, we ensure that our DOM operations always start from scratch. This is how we can fight the inevitable &lt;a href=&quot;https://blog.hkucuk.com/the-elements-of-ui-engineering/&quot;&gt;entropy&lt;/a&gt; — by &lt;em&gt;not&lt;/em&gt; letting the mistakes accumulate. This is the coding equivalent of “turning it off and on again”, and it works amazingly well.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If there is a bug in the output, we only need to think &lt;em&gt;one&lt;/em&gt; step back — to the previous &lt;code class=&quot;language-text&quot;&gt;setState&lt;/code&gt; call.&lt;/strong&gt; The Bug-O of debugging a rendering result is 🐞(&lt;em&gt;n&lt;/em&gt;) where &lt;em&gt;n&lt;/em&gt; is the number of rendering code paths. Here, it’s just four (because we have four cases in a &lt;code class=&quot;language-text&quot;&gt;switch&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;We might still have race conditions in &lt;em&gt;setting&lt;/em&gt; the state, but debugging those is easier because each intermediate state can be logged and inspected. We can also disallow any undesired transitions explicitly:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;trySubmit&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;currentState&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;step &lt;span class=&quot;token operator&quot;&gt;===&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;pending&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// Don&apos;t allow to submit twice&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Of course, always resetting the DOM comes with a tradeoff. Naïvely removing and recreating the DOM every time would destroy its internal state, lose focus, and cause terrible performance problems in larger applications.&lt;/p&gt;
&lt;p&gt;That’s why libraries like React can be helpful. They let you &lt;em&gt;think&lt;/em&gt; in the paradigm of always recreating the UI from scratch without necessarily doing it:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;FormStatus&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;let&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;state&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; setState&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;useState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token literal-property property&quot;&gt;step&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;initial&apos;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;handleSubmit&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;e&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    e&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;preventDefault&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;state&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;step &lt;span class=&quot;token operator&quot;&gt;===&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;pending&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;token comment&quot;&gt;// Don&apos;t allow to submit twice&lt;/span&gt;
      &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;setState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token literal-property property&quot;&gt;step&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;pending&apos;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;submitForm&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;then&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;token function&quot;&gt;setState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token literal-property property&quot;&gt;step&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;success&apos;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;catch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;error&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;token function&quot;&gt;setState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token literal-property property&quot;&gt;step&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;error&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; error &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;let&lt;/span&gt; content&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;switch&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;state&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;step&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;pending&apos;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;
      content &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;Spinner&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;success&apos;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;
      content &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;SuccessMessage&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;error&apos;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;
      content &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token plain-text&quot;&gt;
          &lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;ErrorMessage&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;error&lt;/span&gt;&lt;span class=&quot;token script language-javascript&quot;&gt;&lt;span class=&quot;token script-punctuation punctuation&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;state&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;error&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token plain-text&quot;&gt;
          &lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;RetryButton&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;onClick&lt;/span&gt;&lt;span class=&quot;token script language-javascript&quot;&gt;&lt;span class=&quot;token script-punctuation punctuation&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;handleSubmit&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token plain-text&quot;&gt;
        &lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;form&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;onSubmit&lt;/span&gt;&lt;span class=&quot;token script language-javascript&quot;&gt;&lt;span class=&quot;token script-punctuation punctuation&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;handleSubmit&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token plain-text&quot;&gt;
      &lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;content&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token plain-text&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;form&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The code may look different, but the principle is the same. The component abstraction enforces boundaries so that you know no &lt;em&gt;other&lt;/em&gt; code on the page could mess with its DOM or state. Componentization helps reduce the Bug-O.&lt;/p&gt;
&lt;p&gt;In fact, if &lt;em&gt;any&lt;/em&gt; value looks wrong in the DOM of a React app, you can trace where it comes from by looking at the code of components above it in the React tree one by one. No matter the app size, tracing a rendered value is 🐞(&lt;em&gt;tree height&lt;/em&gt;).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Next time you see an API discussion, consider: what is the 🐞(&lt;em&gt;n&lt;/em&gt;) of common debugging tasks in it?&lt;/strong&gt; What about existing APIs and principles you’re deeply familiar with? Redux, CSS, inheritance — they all have their own Bug-O.&lt;/p&gt;
&lt;hr&gt;
                &lt;div style=&quot;margin-top=55px; font-style: italic;&quot;&gt;(This is an article posted to my blog at hkucuk.me. You can read it online by &lt;a href=&quot;https://blog.hkucuk.com/2007/the-bug-o-notation/&quot;&gt;clicking here&lt;/a&gt;.)&lt;/div&gt;
              </content:encoded></item></channel></rss>