<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://program.sonsuz.us/feed.xml" rel="self" type="application/atom+xml" /><link href="https://program.sonsuz.us/" rel="alternate" type="text/html" /><updated>2026-10-28T06:05:55+00:00</updated><id>https://program.sonsuz.us/feed.xml</id><title type="html">SonsuzUs</title><subtitle>Programlama ve Yazılım</subtitle><author><name>Sonsuz Us</name></author><entry><title type="html">Dijital İkizlerle Kişiselleştirilmiş Tedavi: Hastanın Sanal Kopyası Nasıl Çalışır?</title><link href="https://program.sonsuz.us/posts/dijital-ikizlerle-kisisellestirilmis-tedavi-hastanin-sanal-kopyasi-nasil-calisir/" rel="alternate" type="text/html" title="Dijital İkizlerle Kişiselleştirilmiş Tedavi: Hastanın Sanal Kopyası Nasıl Çalışır?" /><published>2026-10-28T00:00:00+00:00</published><updated>2026-10-28T00:00:00+00:00</updated><id>https://program.sonsuz.us/posts/dijital-ikizlerle-kisisellestirilmis-tedavi-hastanin-sanal-kopyasi-nasil-calisir</id><content type="html" xml:base="https://program.sonsuz.us/posts/dijital-ikizlerle-kisisellestirilmis-tedavi-hastanin-sanal-kopyasi-nasil-calisir/"><![CDATA[<p><img src="/img/dijital-ikizlerle-kisisellestirilmis-14.svg" alt="dijital-ikizlerle-kisisellestirilmis-14" /></p>

<p>Bir tedavinin işe yarayıp yaramayacağını hastaya uygulamadan önce görebildiğimizi düşünün. Dijital ikiz teknolojisi, bir organın veya fizyolojik sistemin verilerle beslenen sanal bir kopyasını oluşturarak bu fikri gerçeğe yaklaştırıyor. Böylece farklı ilaç dozları, cerrahi yaklaşımlar ya da yaşam tarzı değişiklikleri bilgisayar ortamında sınanabiliyor. Kısacası doktorlar, gerçek hastaya dokunmadan önce onun dijital benzeri üzerinde güvenli bir prova yapabiliyor.
``</p>

<h2 id="dijital-ikiz-tam-olarak-nedir">Dijital ikiz tam olarak nedir?</h2>

<p>Dijital ikiz, yalnızca üç boyutlu bir organ modeli değildir. Anatomik yapının yanında kan akışı, elektriksel aktivite, metabolizma ve ilaçlara verilen tepki gibi dinamik süreçleri de temsil eder. Manyetik rezonans görüntüleri, bilgisayarlı tomografi, laboratuvar sonuçları, genetik veriler ve giyilebilir sensör ölçümleri ortak bir modelde birleştirilebilir.</p>

<p>Modelin temelinde matematiksel denklemler bulunur. Örneğin kandaki ilaç yoğunluğunun zamanla değişimi basitleştirilmiş olarak şöyle gösterilebilir:</p>

\[\frac{dC}{dt} = \frac{D}{V} - kC\]

<p>Burada $C$ ilaç konsantrasyonunu, $D$ uygulanan dozu, $V$ dağılım hacmini ve $k$ ilacın vücuttan uzaklaştırılma hızını temsil eder. Hastaya özgü böbrek fonksiyonu veya vücut ağırlığı değiştiğinde bu parametreler güncellenir. Böylece aynı ilacın iki kişide neden farklı sonuçlar doğurabileceği simüle edilir.</p>

<h2 id="sanal-hasta-nasıl-oluşturulur">Sanal hasta nasıl oluşturulur?</h2>

<p>Süreç genellikle dört aşamada ilerler:</p>

<ol>
  <li><strong>Veri toplama:</strong> Görüntüleme, tahlil, sensör ve hasta geçmişi verileri alınır.</li>
  <li><strong>Model kurma:</strong> Organın geometrisi çıkarılır ve fizyolojik kurallar modele eklenir.</li>
  <li><strong>Kalibrasyon:</strong> Simülasyon sonuçları hastanın gerçek ölçümleriyle karşılaştırılır.</li>
  <li><strong>Senaryo denemeleri:</strong> Farklı dozlar ve tedavi seçenekleri sanal ortamda test edilir.</li>
</ol>

<table>
  <thead>
    <tr>
      <th>Geleneksel yaklaşım</th>
      <th>Dijital ikiz yaklaşımı</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Ortalama hasta verilerine dayanabilir</td>
      <td>Hastaya özgü parametreleri kullanır</td>
    </tr>
    <tr>
      <td>Tedavi etkisi uygulamadan sonra gözlenir</td>
      <td>Olası etkiler önceden simüle edilir</td>
    </tr>
    <tr>
      <td>Doz ayarlaması deneme-yanılma içerebilir</td>
      <td>Çok sayıda doz sanal olarak karşılaştırılır</td>
    </tr>
    <tr>
      <td>Sınırlı sayıda senaryo değerlendirilebilir</td>
      <td>Binlerce senaryo hızlıca taranabilir</td>
    </tr>
  </tbody>
</table>

<h2 id="basitleştirilmiş-bir-doz-simülasyonu">Basitleştirilmiş bir doz simülasyonu</h2>

<p>Aşağıdaki Python örneği, farklı dozların kandaki tahmini ilaç yoğunluğunu nasıl değiştirdiğini hesaplar. Gerçek klinik modeller çok daha karmaşıktır; bu kod yalnızca temel mantığı gösterir.</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">import</span> <span class="n">math</span>

<span class="k">def</span> <span class="nf">konsantrasyon</span><span class="p">(</span><span class="n">doz</span><span class="p">,</span> <span class="n">hacim</span><span class="p">,</span> <span class="n">atilim_hizi</span><span class="p">,</span> <span class="n">saat</span><span class="p">):</span>
    <span class="c1"># Tek doz sonrası üstel azalmayı yaklaşık olarak hesaplar.
</span>    <span class="n">baslangic</span> <span class="o">=</span> <span class="n">doz</span> <span class="o">/</span> <span class="n">hacim</span>
    <span class="k">return</span> <span class="n">baslangic</span> <span class="o">*</span> <span class="n">math</span><span class="p">.</span><span class="nf">exp</span><span class="p">(</span><span class="o">-</span><span class="n">atilim_hizi</span> <span class="o">*</span> <span class="n">saat</span><span class="p">)</span>

<span class="n">hasta</span> <span class="o">=</span> <span class="p">{</span>
    <span class="sh">"</span><span class="s">dagilim_hacmi</span><span class="sh">"</span><span class="p">:</span> <span class="mi">42</span><span class="p">,</span>
    <span class="sh">"</span><span class="s">atilim_hizi</span><span class="sh">"</span><span class="p">:</span> <span class="mf">0.12</span>
<span class="p">}</span>

<span class="k">for</span> <span class="n">doz</span> <span class="ow">in</span> <span class="p">[</span><span class="mi">50</span><span class="p">,</span> <span class="mi">100</span><span class="p">,</span> <span class="mi">150</span><span class="p">]:</span>
    <span class="n">sonuc</span> <span class="o">=</span> <span class="nf">konsantrasyon</span><span class="p">(</span>
        <span class="n">doz</span><span class="p">,</span>
        <span class="n">hasta</span><span class="p">[</span><span class="sh">"</span><span class="s">dagilim_hacmi</span><span class="sh">"</span><span class="p">],</span>
        <span class="n">hasta</span><span class="p">[</span><span class="sh">"</span><span class="s">atilim_hizi</span><span class="sh">"</span><span class="p">],</span>
        <span class="n">saat</span><span class="o">=</span><span class="mi">8</span>
    <span class="p">)</span>
    <span class="nf">print</span><span class="p">(</span><span class="sa">f</span><span class="sh">"</span><span class="si">{</span><span class="n">doz</span><span class="si">}</span><span class="s"> mg için 8. saat: </span><span class="si">{</span><span class="n">sonuc</span><span class="si">:</span><span class="p">.</span><span class="mi">2</span><span class="n">f</span><span class="si">}</span><span class="s"> mg/L</span><span class="sh">"</span><span class="p">)</span>
</code></pre></div></div>

<p>Bu simülasyonda dağılım hacmi ve atılım hızı hastaya göre değiştirilerek kişiselleştirme yapılır. Ardından sonuçlar, hedeflenen güvenli konsantrasyon aralığıyla karşılaştırılabilir. Ancak model çıktısı tek başına tedavi kararı değildir; doktor değerlendirmesi ve klinik kanıt gerekir.</p>

<h2 id="nerelerde-kullanılabilir">Nerelerde kullanılabilir?</h2>

<p>Kalbin dijital ikizi, ritim bozukluğunda elektrotların en uygun konumunu araştırabilir. Tümör modelleri, radyoterapi dozunun sağlıklı dokuya etkisini tahmin edebilir. Akciğer ikizleri ventilatör ayarlarını, damar modelleri ise stent yerleşimini değerlendirebilir. Sürekli sensör verisi geldiğinde ikiz de güncellenir; yani statik bir fotoğraf değil, hastayla birlikte değişen dijital bir yol arkadaşıdır.</p>

<h2 id="güçlü-fakat-kusursuz-değil">Güçlü fakat kusursuz değil</h2>

<p>Eksik veri, hatalı sensörler ve aşırı basitleştirilmiş biyolojik varsayımlar güvenilmez sonuçlar üretebilir. Ayrıca sağlık verilerinin mahremiyeti, algoritmik önyargı ve modelin kararından kimin sorumlu olacağı önemli tartışma alanlarıdır. Bu nedenle dijital ikizler doktorların yerini alan makineler olarak değil, kararlarını sayısal deneylerle destekleyen araçlar olarak görülmelidir.</p>

<p>Gelecekte daha hızlı hesaplama, gelişmiş yapay zekâ ve standartlaştırılmış sağlık verileri sayesinde kişiye özel sanal denemeler yaygınlaşabilir. Belki de reçete yazılmadan önce dijital ikizimiz kısa bir prova yapacak; fakat son sözü yine klinik uzmanlık, etik ilkeler ve gerçek dünya kanıtları söyleyecek.</p>]]></content><author><name>Sonsuz Us</name></author><category term="Bilgi" /><category term="dijital ikiz" /><category term="kişiselleştirilmiş tıp" /><category term="sağlık teknolojileri" /><category term="yapay zeka" /><category term="simülasyon" /><category term="biyoinformatik" /><summary type="html"><![CDATA[Bir tedavinin işe yarayıp yaramayacağını hastaya uygulamadan önce görebildiğimizi düşünün. Dijital ikiz teknolojisi, bir organın veya fizyolojik sistemin verilerle beslenen sanal bir kopyasını oluşturarak bu fikri gerçeğe yaklaştırıyor. Böylece farklı ilaç dozları, cerrahi yaklaşımlar ya da yaşam tarzı değişiklikleri bilgisayar ortamında sınanabiliyor. Kısacası doktorlar, gerçek hastaya dokunmadan önce onun dijital benzeri üzerinde güvenli bir prova yapabiliyor.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://program.sonsuz.us/img/dijital-ikizlerle-kisisellestirilmis-14.png" /><media:content medium="image" url="https://program.sonsuz.us/img/dijital-ikizlerle-kisisellestirilmis-14.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Finansal Zaman Serileri: Bilgisayar Geçmiş Fiyatlardan Geleceği Öğrenebilir mi?</title><link href="https://program.sonsuz.us/posts/finansal-zaman-serileri-bilgisayar-gecmis-fiyatlardan-gelecegi-ogrenebilir-mi/" rel="alternate" type="text/html" title="Finansal Zaman Serileri: Bilgisayar Geçmiş Fiyatlardan Geleceği Öğrenebilir mi?" /><published>2026-10-28T00:00:00+00:00</published><updated>2026-10-28T00:00:00+00:00</updated><id>https://program.sonsuz.us/posts/finansal-zaman-serileri-bilgisayar-gecmis-fiyatlardan-gelecegi-ogrenebilir-mi</id><content type="html" xml:base="https://program.sonsuz.us/posts/finansal-zaman-serileri-bilgisayar-gecmis-fiyatlardan-gelecegi-ogrenebilir-mi/"><![CDATA[<p>Borsa grafiklerine bakıp “Bu çizgi birazdan kesin yükselir!” demek kolaydır; bunu tutarlı biçimde kanıtlamak ise oldukça zordur. Bilgisayarlar geçmiş fiyatları insanlardan çok daha hızlı inceleyebilir, ancak geleceği gösteren sihirli bir küreye sahip değildir. Finansal zaman serisi analizi, fiyatların içindeki tekrar eden örüntüleri, riskleri ve olasılıkları matematiksel yöntemlerle araştırır.</p>

<p><img src="/img/finansal-zaman-serileri-26.svg" alt="finansal-zaman-serileri-26" /></p>

<p>``</p>

<h2 id="finansal-zaman-serisi-nedir">Finansal zaman serisi nedir?</h2>

<p>Bir varlığın belirli zamanlarda ölçülen fiyatları bir zaman serisi oluşturur:</p>

\[P_1, P_2, P_3, \ldots, P_t\]

<p>Burada $P_t$, varlığın $t$ anındaki fiyatıdır. Fakat doğrudan fiyatları modellemek çoğu zaman yanıltıcıdır. Fiyat serileri genellikle durağan değildir; ortalamaları ve oynaklıkları zamanla değişebilir. Bu nedenle analistler çoğunlukla <strong>getiri</strong> kullanır:</p>

\[r_t = \frac{P_t-P_{t-1}}{P_{t-1}}\]

<p>Logaritmik getiri ise farklı dönemleri toplamayı kolaylaştırır:</p>

\[r_t = \ln\left(\frac{P_t}{P_{t-1}}\right)\]

<p>Örneğin fiyat 100’den 103’e çıkarsa basit getiri yaklaşık yüzde 3’tür. Bilgisayar açısından asıl soru şudur: Önceki getiriler, sıradaki getiri hakkında anlamlı bilgi taşıyor mu?</p>

<h2 id="bilgisayar-hangi-sinyalleri-arar">Bilgisayar hangi sinyalleri arar?</h2>

<p>Algoritmalar trend, momentum, mevsimsellik, işlem hacmi ve oynaklık gibi özellikleri araştırabilir. Ancak bulunan her ilişki gerçek bir ekonomik mekanizma değildir. Bazen model, verideki rastlantısal gürültüyü öğrenir; buna <strong>aşırı öğrenme</strong> denir.</p>

<table>
  <thead>
    <tr>
      <th>Kavram</th>
      <th>Ne anlatır?</th>
      <th>Yaygın risk</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Trend</td>
      <td>Uzun dönemli yön</td>
      <td>Yönün aniden değişmesi</td>
    </tr>
    <tr>
      <td>Momentum</td>
      <td>Hareketin kısa süre devam etmesi</td>
      <td>Geç sinyal üretmesi</td>
    </tr>
    <tr>
      <td>Ortalama dönüş</td>
      <td>Fiyatın tipik seviyeye yaklaşması</td>
      <td>“Tipik” seviyenin değişmesi</td>
    </tr>
    <tr>
      <td>Oynaklık</td>
      <td>Hareketlerin büyüklüğü</td>
      <td>Krizlerde hızla sıçraması</td>
    </tr>
    <tr>
      <td>Hacim</td>
      <td>Piyasa katılımı</td>
      <td>Tek başına yön göstermemesi</td>
    </tr>
  </tbody>
</table>

<p>Basit bir hareketli ortalama, son $n$ fiyatın ortalamasıdır:</p>

\[MA_t = \frac{1}{n}\sum_{i=0}^{n-1}P_{t-i}\]

<p>Kısa dönemli ortalama uzun dönemli ortalamayı geçtiğinde yükseliş sinyali üretilebilir. Ne var ki bu, geleceğin kesin yükseleceği anlamına gelmez; yalnızca geçmiş hareketin belirli bir özetidir.</p>

<h2 id="python-ile-küçük-bir-deney">Python ile küçük bir deney</h2>

<p>Aşağıdaki kod fiyatlardan getiri üretir, beş günlük hareketli ortalamayı hesaplar ve bir sonraki günün yönünü tahmin etmek için lojistik regresyon kullanır:</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">import</span> <span class="n">pandas</span> <span class="k">as</span> <span class="n">pd</span>
<span class="kn">from</span> <span class="n">sklearn.linear_model</span> <span class="kn">import</span> <span class="n">LogisticRegression</span>
<span class="kn">from</span> <span class="n">sklearn.metrics</span> <span class="kn">import</span> <span class="n">accuracy_score</span>

<span class="c1"># CSV dosyasında Date ve Close sütunları bulunduğunu varsayıyoruz.
</span><span class="n">df</span> <span class="o">=</span> <span class="n">pd</span><span class="p">.</span><span class="nf">read_csv</span><span class="p">(</span><span class="sh">"</span><span class="s">prices.csv</span><span class="sh">"</span><span class="p">,</span> <span class="n">parse_dates</span><span class="o">=</span><span class="p">[</span><span class="sh">"</span><span class="s">Date</span><span class="sh">"</span><span class="p">])</span>
<span class="n">df</span> <span class="o">=</span> <span class="n">df</span><span class="p">.</span><span class="nf">sort_values</span><span class="p">(</span><span class="sh">"</span><span class="s">Date</span><span class="sh">"</span><span class="p">)</span>

<span class="n">df</span><span class="p">[</span><span class="sh">"</span><span class="s">return</span><span class="sh">"</span><span class="p">]</span> <span class="o">=</span> <span class="n">df</span><span class="p">[</span><span class="sh">"</span><span class="s">Close</span><span class="sh">"</span><span class="p">].</span><span class="nf">pct_change</span><span class="p">()</span>
<span class="n">df</span><span class="p">[</span><span class="sh">"</span><span class="s">ma5</span><span class="sh">"</span><span class="p">]</span> <span class="o">=</span> <span class="n">df</span><span class="p">[</span><span class="sh">"</span><span class="s">Close</span><span class="sh">"</span><span class="p">].</span><span class="nf">rolling</span><span class="p">(</span><span class="mi">5</span><span class="p">).</span><span class="nf">mean</span><span class="p">()</span>
<span class="n">df</span><span class="p">[</span><span class="sh">"</span><span class="s">distance</span><span class="sh">"</span><span class="p">]</span> <span class="o">=</span> <span class="n">df</span><span class="p">[</span><span class="sh">"</span><span class="s">Close</span><span class="sh">"</span><span class="p">]</span> <span class="o">/</span> <span class="n">df</span><span class="p">[</span><span class="sh">"</span><span class="s">ma5</span><span class="sh">"</span><span class="p">]</span> <span class="o">-</span> <span class="mi">1</span>
<span class="n">df</span><span class="p">[</span><span class="sh">"</span><span class="s">target</span><span class="sh">"</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">df</span><span class="p">[</span><span class="sh">"</span><span class="s">return</span><span class="sh">"</span><span class="p">].</span><span class="nf">shift</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">).</span><span class="nf">astype</span><span class="p">(</span><span class="nb">int</span><span class="p">)</span>
<span class="n">df</span> <span class="o">=</span> <span class="n">df</span><span class="p">.</span><span class="nf">dropna</span><span class="p">()</span>

<span class="n">split</span> <span class="o">=</span> <span class="nf">int</span><span class="p">(</span><span class="nf">len</span><span class="p">(</span><span class="n">df</span><span class="p">)</span> <span class="o">*</span> <span class="mf">0.8</span><span class="p">)</span>
<span class="n">train</span><span class="p">,</span> <span class="n">test</span> <span class="o">=</span> <span class="n">df</span><span class="p">.</span><span class="n">iloc</span><span class="p">[:</span><span class="n">split</span><span class="p">],</span> <span class="n">df</span><span class="p">.</span><span class="n">iloc</span><span class="p">[</span><span class="n">split</span><span class="p">:]</span>

<span class="n">features</span> <span class="o">=</span> <span class="p">[</span><span class="sh">"</span><span class="s">return</span><span class="sh">"</span><span class="p">,</span> <span class="sh">"</span><span class="s">distance</span><span class="sh">"</span><span class="p">]</span>
<span class="n">model</span> <span class="o">=</span> <span class="nc">LogisticRegression</span><span class="p">()</span>
<span class="n">model</span><span class="p">.</span><span class="nf">fit</span><span class="p">(</span><span class="n">train</span><span class="p">[</span><span class="n">features</span><span class="p">],</span> <span class="n">train</span><span class="p">[</span><span class="sh">"</span><span class="s">target</span><span class="sh">"</span><span class="p">])</span>

<span class="n">prediction</span> <span class="o">=</span> <span class="n">model</span><span class="p">.</span><span class="nf">predict</span><span class="p">(</span><span class="n">test</span><span class="p">[</span><span class="n">features</span><span class="p">])</span>
<span class="nf">print</span><span class="p">(</span><span class="sh">"</span><span class="s">Doğruluk:</span><span class="sh">"</span><span class="p">,</span> <span class="nf">accuracy_score</span><span class="p">(</span><span class="n">test</span><span class="p">[</span><span class="sh">"</span><span class="s">target</span><span class="sh">"</span><span class="p">],</span> <span class="n">prediction</span><span class="p">))</span>
</code></pre></div></div>

<p>Buradaki kronolojik ayırma kritik önemdedir. Veriyi rastgele karıştırmak, gelecekteki bilgilerin eğitim kümesine sızmasına yol açabilir. Bu durum modelin gerçekte sahip olamayacağı bir avantaj kazanmasıdır.</p>

<h2 id="tahmin-başarısı-nasıl-değerlendirilir">Tahmin başarısı nasıl değerlendirilir?</h2>

<p>Yüzde 52 doğruluk ilk bakışta etkileyici görünmeyebilir; ancak işlem maliyetleri düşükse değerli olabilir. Tersine, yüzde 60 doğruluk yüksek komisyonlar ve büyük kayıplar nedeniyle zararla sonuçlanabilir. Bu yüzden doğruluğun yanında getiri, maksimum düşüş, Sharpe oranı ve işlem maliyetleri incelenmelidir.</p>

<p>Bilgisayar geçmişten olasılıksal ilişkiler öğrenebilir; fakat savaşlar, düzenlemeler, şirket haberleri ve yatırımcı psikolojisindeki kırılmalar geçmişte bulunmayabilir. En iyi yaklaşım, modeli bir kâhin değil, belirsizlik altında karar vermeye yardımcı olan ölçüm aracı olarak görmektir. Finansal tahminin asıl başarısı geleceği kusursuz bilmekten değil, yanlış çıkıldığında riski yönetebilmekten gelir.</p>]]></content><author><name>Sonsuz Us</name></author><category term="Bilgi" /><category term="finans" /><category term="zaman-serileri" /><category term="makine-öğrenmesi" /><category term="python" /><category term="veri-bilimi" /><category term="tahminleme" /><summary type="html"><![CDATA[Borsa grafiklerine bakıp “Bu çizgi birazdan kesin yükselir!” demek kolaydır; bunu tutarlı biçimde kanıtlamak ise oldukça zordur. Bilgisayarlar geçmiş fiyatları insanlardan çok daha hızlı inceleyebilir, ancak geleceği gösteren sihirli bir küreye sahip değildir. Finansal zaman serisi analizi, fiyatların içindeki tekrar eden örüntüleri, riskleri ve olasılıkları matematiksel yöntemlerle araştırır.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://program.sonsuz.us/img/finansal-zaman-serileri-26.png" /><media:content medium="image" url="https://program.sonsuz.us/img/finansal-zaman-serileri-26.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Oyun Motorlarının İç Mimarisi: Render, Fizik ve Girdi Döngüleri</title><link href="https://program.sonsuz.us/posts/oyun-motorlarinin-ic-mimarisi-render-fizik-ve-girdi-donguleri/" rel="alternate" type="text/html" title="Oyun Motorlarının İç Mimarisi: Render, Fizik ve Girdi Döngüleri" /><published>2026-10-28T00:00:00+00:00</published><updated>2026-10-28T00:00:00+00:00</updated><id>https://program.sonsuz.us/posts/oyun-motorlarinin-ic-mimarisi-render-fizik-ve-girdi-donguleri</id><content type="html" xml:base="https://program.sonsuz.us/posts/oyun-motorlarinin-ic-mimarisi-render-fizik-ve-girdi-donguleri/"><![CDATA[<p>Bir oyun motoru, ekrandaki karakterleri hareket ettiren basit bir programdan çok daha fazlasıdır. Unity ve Unreal Engine gibi motorlar; oyuncu girdilerini okumak, fizik kurallarını hesaplamak, yapay zekâyı güncellemek ve görüntüyü çizmek gibi görevleri son derece düzenli döngüler içinde yürütür. Perde arkasında çalışan bu mimariyi anlamak, hem performans sorunlarını çözmeyi hem de daha kararlı oyun sistemleri geliştirmeyi kolaylaştırır.</p>

<p>``</p>

<h2 id="her-şeyin-kalbi-oyun-döngüsü">Her Şeyin Kalbi: Oyun Döngüsü</h2>

<p>Oyun motorlarının merkezinde <strong>game loop</strong>, yani oyun döngüsü bulunur. Motor çalıştığı sürece bu döngü girdiyi okur, oyun dünyasını günceller ve yeni kareyi ekrana gönderir.</p>

<p>Basitleştirilmiş akış şöyledir:</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>while oyun_calışıyor:
    girdileri_oku()
    fiziği_hesapla()
    oyun_mantığını_güncelle()
    sahneyi_render_et()
</code></pre></div></div>

<p>Bir karenin işlenme süresi ile saniyedeki kare sayısı arasındaki ilişki şu formülle gösterilebilir:</p>

\[FPS = \frac{1}{\Delta t}\]

<p>Örneğin bir kare $0.0166$ saniyede hazırlanıyorsa oyun yaklaşık $60$ FPS üretir. Ancak bütün sistemleri değişken $\Delta t$ ile güncellemek doğru değildir. Render döngüsü ekran hızına göre değişebilirken fizik hesaplamaları çoğunlukla sabit zaman aralıklarında çalıştırılır.</p>

<h2 id="render-döngüsü-nasıl-çalışır">Render Döngüsü Nasıl Çalışır?</h2>

<p>Render sistemi, oyun dünyasındaki nesneleri GPU’nun anlayabileceği komutlara dönüştürür. Kamera dışında kalan nesneler ayıklanır, görünür yüzeyler belirlenir, materyaller hazırlanır ve çizim komutları GPU’ya gönderilir.</p>

<table>
  <thead>
    <tr>
      <th>Aşama</th>
      <th>Görevi</th>
      <th>Olası Darboğaz</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Culling</td>
      <td>Görünmeyen nesneleri eler</td>
      <td>CPU hesaplaması</td>
    </tr>
    <tr>
      <td>Geometry</td>
      <td>Üçgenleri işler</td>
      <td>Yüksek poligon sayısı</td>
    </tr>
    <tr>
      <td>Shading</td>
      <td>Işık ve materyalleri hesaplar</td>
      <td>Karmaşık shader’lar</td>
    </tr>
    <tr>
      <td>Post-processing</td>
      <td>Bloom, renk ve efekt uygular</td>
      <td>GPU bant genişliği</td>
    </tr>
  </tbody>
</table>

<p>Unity; Built-in, URP ve HDRP gibi farklı render yaklaşımları sunar. Unreal Engine ise deferred rendering, Nanite ve Lumen gibi sistemlerle yüksek detaylı sahneleri yönetir. Her iki motorda da amaç aynıdır: Görsel kaliteyi korurken kare süresini bütçe içinde tutmak. 60 FPS hedefinde bu bütçe yaklaşık $16.67$ milisaniyedir.</p>

<h2 id="fizik-neden-sabit-döngü-kullanır">Fizik Neden Sabit Döngü Kullanır?</h2>

<p>Fizik motorları çarpışma, hız, ivme ve kuvvet hesaplarını mümkün olduğunca tutarlı gerçekleştirmelidir. Temel hareket denklemlerinden biri şöyledir:</p>

\[x_{yeni} = x_{eski} + v\Delta t\]

<p>$\Delta t$ sürekli değişirse aynı kuvvet farklı bilgisayarlarda farklı sonuçlar üretebilir. Unity bu nedenle fizik işlemlerini ağırlıklı olarak <code class="language-plaintext highlighter-rouge">FixedUpdate</code> düzeninde yürütür. Unreal Engine tarafında fizik güncellemeleri tick grupları ve alt adımlar aracılığıyla kontrol edilebilir.</p>

<table>
  <thead>
    <tr>
      <th>Döngü</th>
      <th>Zamanlama</th>
      <th>Uygun Kullanım</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Değişken güncelleme</td>
      <td>Her render karesinde</td>
      <td>Kamera, arayüz, görsel animasyon</td>
    </tr>
    <tr>
      <td>Sabit güncelleme</td>
      <td>Belirli aralıklarla</td>
      <td>Fizik, kuvvet ve çarpışma</td>
    </tr>
    <tr>
      <td>Geç güncelleme</td>
      <td>Ana güncellemeden sonra</td>
      <td>Takip kamerası, son konum düzeltmeleri</td>
    </tr>
  </tbody>
</table>

<h2 id="girdi-sistemi-ve-gecikme">Girdi Sistemi ve Gecikme</h2>

<p>Klavye, fare veya kontrolcü verileri işletim sisteminden alınır ve motorun girdi katmanına aktarılır. Girdi mümkün olduğunca erken okunursa oyuncunun yaptığı hareket ile ekrandaki sonuç arasındaki gecikme azalır.</p>

<div class="language-csharp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">void</span> <span class="nf">Update</span><span class="p">()</span>
<span class="p">{</span>
    <span class="kt">float</span> <span class="n">yatay</span> <span class="p">=</span> <span class="n">Input</span><span class="p">.</span><span class="nf">GetAxis</span><span class="p">(</span><span class="s">"Horizontal"</span><span class="p">);</span>
    <span class="n">hareketYonü</span> <span class="p">=</span> <span class="k">new</span> <span class="nf">Vector3</span><span class="p">(</span><span class="n">yatay</span><span class="p">,</span> <span class="m">0f</span><span class="p">,</span> <span class="m">0f</span><span class="p">);</span>
<span class="p">}</span>

<span class="k">void</span> <span class="nf">FixedUpdate</span><span class="p">()</span>
<span class="p">{</span>
    <span class="n">govde</span><span class="p">.</span><span class="nf">AddForce</span><span class="p">(</span><span class="n">hareketYonü</span> <span class="p">*</span> <span class="n">kuvvet</span><span class="p">);</span>
<span class="p">}</span>
</code></pre></div></div>

<p>Bu Unity örneğinde girdi her karede okunur; fiziksel kuvvet ise sabit döngüde uygulanır. Böylece kısa süreli tuş hareketleri kaçırılmaz ve fizik davranışı kare hızından daha az etkilenir. Modern Unity Input System ve Unreal Enhanced Input, girdileri eylem tabanlı tanımlayarak farklı cihazları ortak bir soyutlama altında toplar.</p>

<h2 id="i̇ş-parçacıkları-ve-senkronizasyon">İş Parçacıkları ve Senkronizasyon</h2>

<p>Güncel motorlar tüm işleri tek çekirdekte yürütmez. Render hazırlığı, animasyon, ses ve fizik görevleri iş parçacıklarına dağıtılabilir. Unity Job System ve Unreal Task Graph bu yaklaşımın örnekleridir. Yine de render, fizik ve oyun mantığı birbirinin verisine ihtiyaç duyduğundan senkronizasyon noktaları oluşur. Bir görev geciktiğinde diğer sistemler bekleyebilir.</p>

<p>Sonuç olarak oyun motoru, farklı hızlarda çalışan orkestraya benzer. Girdi sistemi notaları toplar, fizik ritmi korur, render sistemi ise performansı seyirciye sunar. Başarılı bir oyun mimarisi, bu döngülerin doğru sırada ve mümkün olduğunca az bekleyerek çalışmasını sağlar.</p>

<p><img src="/img/oyun-motorlarinin-ic-45.svg" alt="oyun-motorlarinin-ic-45" /></p>]]></content><author><name>Sonsuz Us</name></author><category term="Bilgi" /><category term="oyun motoru" /><category term="unity" /><category term="unreal engine" /><category term="render" /><category term="fizik motoru" /><category term="game loop" /><summary type="html"><![CDATA[Bir oyun motoru, ekrandaki karakterleri hareket ettiren basit bir programdan çok daha fazlasıdır. Unity ve Unreal Engine gibi motorlar; oyuncu girdilerini okumak, fizik kurallarını hesaplamak, yapay zekâyı güncellemek ve görüntüyü çizmek gibi görevleri son derece düzenli döngüler içinde yürütür. Perde arkasında çalışan bu mimariyi anlamak, hem performans sorunlarını çözmeyi hem de daha kararlı oyun sistemleri geliştirmeyi kolaylaştırır.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://program.sonsuz.us/img/oyun-motorlarinin-ic-45.png" /><media:content medium="image" url="https://program.sonsuz.us/img/oyun-motorlarinin-ic-45.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Prosedürel Anlatı ve Dinamik Hikâye Motorları Nasıl Çalışır?</title><link href="https://program.sonsuz.us/posts/prosedurel-anlati-ve-dinamik-hikaye-motorlari-nasil-calisir/" rel="alternate" type="text/html" title="Prosedürel Anlatı ve Dinamik Hikâye Motorları Nasıl Çalışır?" /><published>2026-10-28T00:00:00+00:00</published><updated>2026-10-28T00:00:00+00:00</updated><id>https://program.sonsuz.us/posts/prosedurel-anlati-ve-dinamik-hikaye-motorlari-nasil-calisir</id><content type="html" xml:base="https://program.sonsuz.us/posts/prosedurel-anlati-ve-dinamik-hikaye-motorlari-nasil-calisir/"><![CDATA[<p><img src="/img/prosedurel-anlati-ve-26.svg" alt="prosedurel-anlati-ve-26" /></p>

<p>Bir oyunda verdiğiniz masum bir kararın saatler sonra bir krallığın çökmesine yol açtığını düşünün. Bu sonuç önceden yazılmış tek bir senaryodan değil, seçimlerinizi değerlendiren dinamik bir hikâye motorundan doğabilir. Prosedürel anlatı; karakterleri, olayları ve sonuçları belirli kurallar doğrultusunda birleştirerek her oyuncuya farklı bir hikâye deneyimi sunmayı amaçlar.</p>

<p>``</p>

<h2 id="prosedürel-anlatı-nedir">Prosedürel anlatı nedir?</h2>

<p>Geleneksel anlatıda yazar, olayların sırasını büyük ölçüde önceden belirler. Oyuncu bazen farklı yollar seçse de bunlar çoğunlukla elle yazılmış dallardır. Prosedürel anlatıda ise yazar yalnızca olayları değil, <strong>olay üretme kurallarını</strong> da tasarlar.</p>

<p>Bir hikâye motorunun kararını basitçe şöyle modelleyebiliriz:</p>

\[S_{t+1} = F(S_t, A_t, R)\]

<p>Burada $S_t$ mevcut dünya durumunu, $A_t$ oyuncunun eylemini, $R$ anlatı kurallarını ve $S_{t+1}$ yeni durumu temsil eder. Örneğin oyuncu bir tüccarı soyarsa para miktarı artabilir; fakat itibar düşer, muhafızların şüphe seviyesi yükselir ve tüccarın ailesi ileride intikam görevi başlatabilir.</p>

<table>
  <thead>
    <tr>
      <th>Yaklaşım</th>
      <th>Hikâye yapısı</th>
      <th>Avantajı</th>
      <th>Riski</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Doğrusal anlatı</td>
      <td>Sabit olay sırası</td>
      <td>Güçlü tempo ve dramatik kontrol</td>
      <td>Düşük tekrar oynanabilirlik</td>
    </tr>
    <tr>
      <td>Dallanan anlatı</td>
      <td>Önceden yazılmış seçim yolları</td>
      <td>Anlamlı ve kontrollü kararlar</td>
      <td>Dal sayısı hızla büyür</td>
    </tr>
    <tr>
      <td>Prosedürel anlatı</td>
      <td>Kurallarla üretilen olaylar</td>
      <td>Yüksek çeşitlilik</td>
      <td>Tutarsız veya anlamsız sonuçlar</td>
    </tr>
    <tr>
      <td>Hibrit sistem</td>
      <td>Yazılmış sahneler ve dinamik kurallar</td>
      <td>Kontrol ile özgürlük arasında denge</td>
      <td>Tasarımı ve testi zordur</td>
    </tr>
  </tbody>
</table>

<h2 id="durum-değişkenleri-ve-koşullar">Durum değişkenleri ve koşullar</h2>

<p>Dinamik hikâye motorlarının hafızası, durum değişkenlerinden oluşur. İtibar, korku, sadakat, kaynak miktarı ve karakter ilişkileri bu değişkenlere örnektir. Motor, uygun olayları seçerken koşulları kontrol eder.</p>

<p>Aşağıdaki Python örneği, dünya durumuna göre yeni bir anlatı olayı seçer:</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">import</span> <span class="n">random</span>

<span class="k">def</span> <span class="nf">uygun_olaylari_bul</span><span class="p">(</span><span class="n">durum</span><span class="p">,</span> <span class="n">olaylar</span><span class="p">):</span>
    <span class="n">uygunlar</span> <span class="o">=</span> <span class="p">[]</span>

    <span class="k">for</span> <span class="n">olay</span> <span class="ow">in</span> <span class="n">olaylar</span><span class="p">:</span>
        <span class="n">kosullar</span> <span class="o">=</span> <span class="n">olay</span><span class="p">[</span><span class="sh">"</span><span class="s">kosullar</span><span class="sh">"</span><span class="p">]</span>
        <span class="k">if</span> <span class="nf">all</span><span class="p">(</span><span class="n">durum</span><span class="p">.</span><span class="nf">get</span><span class="p">(</span><span class="n">anahtar</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="o">&gt;=</span> <span class="n">deger</span>
               <span class="k">for</span> <span class="n">anahtar</span><span class="p">,</span> <span class="n">deger</span> <span class="ow">in</span> <span class="n">kosullar</span><span class="p">.</span><span class="nf">items</span><span class="p">()):</span>
            <span class="n">uygunlar</span><span class="p">.</span><span class="nf">append</span><span class="p">(</span><span class="n">olay</span><span class="p">)</span>

    <span class="k">return</span> <span class="n">uygunlar</span>

<span class="k">def</span> <span class="nf">olay_sec</span><span class="p">(</span><span class="n">durum</span><span class="p">,</span> <span class="n">olaylar</span><span class="p">):</span>
    <span class="n">uygunlar</span> <span class="o">=</span> <span class="nf">uygun_olaylari_bul</span><span class="p">(</span><span class="n">durum</span><span class="p">,</span> <span class="n">olaylar</span><span class="p">)</span>
    <span class="k">return</span> <span class="n">random</span><span class="p">.</span><span class="nf">choice</span><span class="p">(</span><span class="n">uygunlar</span><span class="p">)</span> <span class="k">if</span> <span class="n">uygunlar</span> <span class="k">else</span> <span class="bp">None</span>

<span class="n">olaylar</span> <span class="o">=</span> <span class="p">[</span>
    <span class="p">{</span><span class="sh">"</span><span class="s">ad</span><span class="sh">"</span><span class="p">:</span> <span class="sh">"</span><span class="s">Köylülerin İsyanı</span><span class="sh">"</span><span class="p">,</span> <span class="sh">"</span><span class="s">kosullar</span><span class="sh">"</span><span class="p">:</span> <span class="p">{</span><span class="sh">"</span><span class="s">korku</span><span class="sh">"</span><span class="p">:</span> <span class="mi">70</span><span class="p">}},</span>
    <span class="p">{</span><span class="sh">"</span><span class="s">ad</span><span class="sh">"</span><span class="p">:</span> <span class="sh">"</span><span class="s">Kraliyet Daveti</span><span class="sh">"</span><span class="p">,</span> <span class="sh">"</span><span class="s">kosullar</span><span class="sh">"</span><span class="p">:</span> <span class="p">{</span><span class="sh">"</span><span class="s">itibar</span><span class="sh">"</span><span class="p">:</span> <span class="mi">60</span><span class="p">}},</span>
    <span class="p">{</span><span class="sh">"</span><span class="s">ad</span><span class="sh">"</span><span class="p">:</span> <span class="sh">"</span><span class="s">Gizemli Tüccar</span><span class="sh">"</span><span class="p">,</span> <span class="sh">"</span><span class="s">kosullar</span><span class="sh">"</span><span class="p">:</span> <span class="p">{</span><span class="sh">"</span><span class="s">altin</span><span class="sh">"</span><span class="p">:</span> <span class="mi">20</span><span class="p">}}</span>
<span class="p">]</span>
</code></pre></div></div>

<p><code class="language-plaintext highlighter-rouge">uygun_olaylari_bul</code> fonksiyonu, koşulları sağlanan olayları filtreler. <code class="language-plaintext highlighter-rouge">olay_sec</code> ise bunlardan birini rastgele seçer. Gerçek bir motorda rastgelelik genellikle ağırlıklıdır; önemli olayların seçilme ihtimali daha yüksek tutulabilir.</p>

<p>Bir olayın puanı şu şekilde hesaplanabilir:</p>

\[P(o) = w_rR + w_dD + w_cC - w_tT\]

<p>Burada $R$ rastgelelik, $D$ dramatik değer, $C$ mevcut durumla uyum ve $T$ yakın zamanda tekrar edilme cezasıdır. $w$ katsayıları tasarımcının hangi özelliğe önem verdiğini belirler.</p>

<h2 id="anlamlı-seçim-nasıl-üretilir">Anlamlı seçim nasıl üretilir?</h2>

<p>Her seçimin dünyayı değiştirmesi gerekmez; ancak oyuncu, kararının fark edildiğini hissetmelidir. İyi bir sistem üç katmanda tepki verir:</p>

<ol>
  <li><strong>Anlık sonuç:</strong> Karakter hemen kızar veya ödül verir.</li>
  <li><strong>Sistemsel sonuç:</strong> İtibar, ekonomi ya da ilişki değeri değişir.</li>
  <li><strong>Gecikmiş sonuç:</strong> Eski karar, saatler sonra yeni bir görev veya düşman üretir.</li>
</ol>

<p>Buradaki en büyük tehlike, sayısız ama yüzeysel seçenek sunmaktır. Beş anlamsız düğme yerine, bedeli açık olmayan iki güçlü seçenek genellikle daha etkilidir. Ayrıca sistemin tamamen kontrolsüz olması komik tutarsızlıklar doğurabilir: Dün ölen kralın bugün oyuncuya mektup göndermesi gibi!</p>

<h2 id="tasarımcı-hâlâ-hikâyenin-yazarı-mı">Tasarımcı hâlâ hikâyenin yazarı mı?</h2>

<p>Evet; fakat artık yalnızca sahneleri değil, olasılık uzayını da yazar. Karakterlerin hedeflerini, dünyanın sınırlarını ve hangi olayların birlikte anlamlı olduğunu tanımlar. Böylece motor doğaçlama yaparken temadan kopmaz.</p>

<p>Başarılı bir dinamik hikâye motoru, matematiksel kurallar ile insan yaratıcılığını birleştirir. Amaç sonsuz içerik üretmek değil, oyuncunun seçimlerinin hatırlandığına ve dünyanın gerçekten karşılık verdiğine inanmasını sağlamaktır.</p>]]></content><author><name>Sonsuz Us</name></author><category term="Bilgi" /><category term="prosedürel anlatı" /><category term="oyun geliştirme" /><category term="dinamik hikâye" /><category term="yapay zekâ" /><category term="oyuncu seçimi" /><category term="durum makineleri" /><summary type="html"><![CDATA[Bir oyunda verdiğiniz masum bir kararın saatler sonra bir krallığın çökmesine yol açtığını düşünün. Bu sonuç önceden yazılmış tek bir senaryodan değil, seçimlerinizi değerlendiren dinamik bir hikâye motorundan doğabilir. Prosedürel anlatı; karakterleri, olayları ve sonuçları belirli kurallar doğrultusunda birleştirerek her oyuncuya farklı bir hikâye deneyimi sunmayı amaçlar.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://program.sonsuz.us/img/prosedurel-anlati-ve-26.png" /><media:content medium="image" url="https://program.sonsuz.us/img/prosedurel-anlati-ve-26.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Saniyelerle Yarışmak: Speedrun Kültürü ve Glitch Ustalığı</title><link href="https://program.sonsuz.us/posts/saniyelerle-yarismak-speedrun-kulturu-ve-glitch-ustaligi/" rel="alternate" type="text/html" title="Saniyelerle Yarışmak: Speedrun Kültürü ve Glitch Ustalığı" /><published>2026-10-28T00:00:00+00:00</published><updated>2026-10-28T00:00:00+00:00</updated><id>https://program.sonsuz.us/posts/saniyelerle-yarismak-speedrun-kulturu-ve-glitch-ustaligi</id><content type="html" xml:base="https://program.sonsuz.us/posts/saniyelerle-yarismak-speedrun-kulturu-ve-glitch-ustaligi/"><![CDATA[<p>Bir oyunu bitirmek çoğu oyuncu için hikâyeyi keşfetmek, görevleri tamamlamak ve son düşmanı yenmek demektir. Speedrunner içinse oyun; ölçülebilen, parçalarına ayrılabilen ve mümkün olan en kısa sürede çözülebilen dev bir optimizasyon problemidir. Duvarların içinden geçmek, ara sahneleri atlamak veya fizik motorunu şaşırtmak hile gibi görünebilir; fakat speedrun topluluklarında bunlar çoğu zaman yıllarca araştırılan teknik becerilerdir.</p>

<p>``</p>

<h2 id="speedrun-yalnızca-hızlı-oynamak-değildir">Speedrun yalnızca hızlı oynamak değildir</h2>

<p>Speedrun, belirlenmiş kurallar altında bir oyunu ya da oyun bölümünü en kısa sürede tamamlama yarışıdır. Oyuncular rotalarını tekrar tekrar deneyerek hareketleri, kaynak kullanımını ve savaşları optimize eder. Bu süreç matematiksel olarak bir maliyet minimizasyonuna benzetilebilir:</p>

\[T_{toplam} = T_{hareket} + T_{savaş} + T_{yükleme} + T_{hata}\]

<p>Amaç, toplam süreyi küçültmektir. Bir kısayol hareket süresini 20 saniye azaltırken başarısız olma riski nedeniyle ortalama 30 saniye kaybettiriyorsa rekor denemesi için uygun olmayabilir. Bu nedenle oyuncular yalnızca tekniğin teorik kazancını değil, başarı olasılığını da değerlendirir:</p>

\[E(T) = p \cdot T_{başarılı} + (1-p) \cdot T_{başarısız}\]

<p>Buradaki $p$, hareketin başarı ihtimalidir. Dünya rekoru peşindeki oyuncu düşük olasılıklı bir yöntemi seçebilirken maraton yayınındaki oyuncu daha güvenli bir rota kullanabilir.</p>

<h2 id="glitch-nasıl-keşfedilir">Glitch nasıl keşfedilir?</h2>

<p>Glitch, oyunun kodu ile oyuncunun eylemleri arasındaki beklenmeyen etkileşimdir. Keşif bazen tesadüfen gerçekleşir: Oyuncu zıplarken menüyü açar ve karakter bir kapının arkasına ışınlanır. Topluluk daha sonra olayı yeniden üretmeye çalışır, gerekli koşulları belirler ve bulguları kare kare inceler.</p>

<p>Bir glitch’in geliştirilmesi genellikle şu aşamalardan geçer:</p>

<ol>
  <li><strong>Gözlem:</strong> Beklenmeyen davranış fark edilir.</li>
  <li><strong>Yeniden üretim:</strong> Aynı sonucun hangi girdilerle oluştuğu aranır.</li>
  <li><strong>Modelleme:</strong> Kamera, çarpışma ve bellek gibi sistemlerin rolü incelenir.</li>
  <li><strong>Optimizasyon:</strong> Daha hızlı ve güvenilir uygulama geliştirilir.</li>
  <li><strong>Belgeleme:</strong> Video, zaman damgası ve rehber toplulukla paylaşılır.</li>
</ol>

<p>Yani meşhur kısayol, çoğunlukla tek bir kişinin şans eseri bulduğu numaradan ziyade kolektif bir araştırma ürünüdür.</p>

<table>
  <thead>
    <tr>
      <th>Teknik</th>
      <th>Temel fikir</th>
      <th style="text-align: right">Olası kazanç</th>
      <th>Risk</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Duvar geçişi</td>
      <td>Çarpışma sınırını aşmak</td>
      <td style="text-align: right">Yüksek</td>
      <td>Bölüm dışında kalmak</td>
    </tr>
    <tr>
      <td>Menü atlaması</td>
      <td>Oyun durumlarını yanlış sırada tetiklemek</td>
      <td style="text-align: right">Orta</td>
      <td>Kaydın bozulması</td>
    </tr>
    <tr>
      <td>Hız depolama</td>
      <td>Fizik değerini sonraki harekete taşımak</td>
      <td style="text-align: right">Yüksek</td>
      <td>Hassas zamanlama</td>
    </tr>
    <tr>
      <td>Güvenli rota</td>
      <td>Glitch kullanmadan optimize yürümek</td>
      <td style="text-align: right">Düşük</td>
      <td>Genellikle az</td>
    </tr>
  </tbody>
</table>

<h2 id="kareler-girdiler-ve-ölçüm">Kareler, girdiler ve ölçüm</h2>

<p>60 FPS çalışan bir oyunda tek kare yaklaşık olarak $1/60$ saniye, yani 16,67 milisaniyedir. Bir hareket yalnızca iki karelik pencerede yapılabiliyorsa oyuncunun doğru girdiyi yaklaşık 33 milisaniyelik aralıkta vermesi gerekir. Bu yüzden speedrunner’lar kayıtlarını analiz eden küçük araçlar kullanır.</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">splitler</span> <span class="o">=</span> <span class="p">[</span><span class="mf">42.18</span><span class="p">,</span> <span class="mf">39.72</span><span class="p">,</span> <span class="mf">41.05</span><span class="p">,</span> <span class="mf">38.91</span><span class="p">]</span>
<span class="n">hedef</span> <span class="o">=</span> <span class="mf">40.00</span>

<span class="k">for</span> <span class="n">bolum</span><span class="p">,</span> <span class="n">sure</span> <span class="ow">in</span> <span class="nf">enumerate</span><span class="p">(</span><span class="n">splitler</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="mi">1</span><span class="p">):</span>
    <span class="n">fark</span> <span class="o">=</span> <span class="n">sure</span> <span class="o">-</span> <span class="n">hedef</span>
    <span class="n">durum</span> <span class="o">=</span> <span class="sh">"</span><span class="s">yavaş</span><span class="sh">"</span> <span class="k">if</span> <span class="n">fark</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="k">else</span> <span class="sh">"</span><span class="s">hızlı</span><span class="sh">"</span>
    <span class="nf">print</span><span class="p">(</span><span class="sa">f</span><span class="sh">"</span><span class="s">Bölüm </span><span class="si">{</span><span class="n">bolum</span><span class="si">}</span><span class="s">: </span><span class="si">{</span><span class="nf">abs</span><span class="p">(</span><span class="n">fark</span><span class="p">)</span><span class="si">:</span><span class="p">.</span><span class="mi">2</span><span class="n">f</span><span class="si">}</span><span class="s"> sn </span><span class="si">{</span><span class="n">durum</span><span class="si">}</span><span class="sh">"</span><span class="p">)</span>
</code></pre></div></div>

<p>Bu Python örneği, bölüm sürelerini hedef değerle karşılaştırır. Gerçek analiz araçları aynı mantığı kişisel en iyi dereceler, ortalamalar ve rota alternatifleri üzerinde uygular.</p>

<h2 id="glitch-kullanmak-hile-midir">Glitch kullanmak hile midir?</h2>

<p>Cevap kategoriye bağlıdır. <strong>Any%</strong> kategorisi oyunu izin verilen her yöntemle bitirmeyi hedefler. <strong>Glitchless</strong> kategorisi belirli hataları yasaklar. <strong>100%</strong> ise tanımlanan tüm içeriklerin tamamlanmasını ister. Kuralları topluluk belirler; emülatör, mod, makro veya dışarıdan kod müdahalesi çoğunlukla yasaktır.</p>

<p>Speedrun kültürünü ilginç yapan şey, oyuncuların oyunu bozarken aslında onu olağanüstü ayrıntılı biçimde öğrenmesidir. Geliştiricinin kurduğu dünya bir laboratuvara, kontrolcü deney aracına, her başarısız deneme de yeni bir veri noktasına dönüşür. Ekranda birkaç saniyelik kısayol görünür; arkasında ise yüzlerce saatlik merak, iş birliği ve ustalık vardır.</p>

<p><img src="/img/saniyelerle-yarismak-speedrun-44.svg" alt="saniyelerle-yarismak-speedrun-44" /></p>]]></content><author><name>Sonsuz Us</name></author><category term="Bilgi" /><category term="speedrun" /><category term="glitch" /><category term="oyun geliştirme" /><category term="oyun kültürü" /><category term="algoritma" /><category term="performans" /><summary type="html"><![CDATA[Bir oyunu bitirmek çoğu oyuncu için hikâyeyi keşfetmek, görevleri tamamlamak ve son düşmanı yenmek demektir. Speedrunner içinse oyun; ölçülebilen, parçalarına ayrılabilen ve mümkün olan en kısa sürede çözülebilen dev bir optimizasyon problemidir. Duvarların içinden geçmek, ara sahneleri atlamak veya fizik motorunu şaşırtmak hile gibi görünebilir; fakat speedrun topluluklarında bunlar çoğu zaman yıllarca araştırılan teknik becerilerdir.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://program.sonsuz.us/img/saniyelerle-yarismak-speedrun-44.png" /><media:content medium="image" url="https://program.sonsuz.us/img/saniyelerle-yarismak-speedrun-44.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Akıllı Evin Beyni İçeride: Ev Otomasyonunda Yerel İşleme</title><link href="https://program.sonsuz.us/posts/akilli-evin-beyni-iceride-ev-otomasyonunda-yerel-isleme/" rel="alternate" type="text/html" title="Akıllı Evin Beyni İçeride: Ev Otomasyonunda Yerel İşleme" /><published>2026-10-27T00:00:00+00:00</published><updated>2026-10-27T00:00:00+00:00</updated><id>https://program.sonsuz.us/posts/akilli-evin-beyni-iceride-ev-otomasyonunda-yerel-isleme</id><content type="html" xml:base="https://program.sonsuz.us/posts/akilli-evin-beyni-iceride-ev-otomasyonunda-yerel-isleme/"><![CDATA[<p>Akıllı ampuller, hareket sensörleri, kameralar ve termostatlar her gün çok sayıda veri üretir. Bu verilerin tamamını uzak sunuculara göndermek yerine evdeki bir merkez üzerinde işlemek, otomasyonları hızlandırırken internet bağımlılığını ve mahremiyet risklerini azaltır. İşte edge computing, yani uçta veya yerelde işleme yaklaşımı tam olarak bunu sağlar.
``</p>

<h2 id="yerel-işleme-nedir">Yerel işleme nedir?</h2>

<p>Klasik bulut mimarisinde sensörden alınan veri internete çıkar, sağlayıcının sunucusunda değerlendirilir ve sonuç tekrar eve gönderilir. Yerel mimaride ise karar; Home Assistant çalıştıran bir mini bilgisayar, Raspberry Pi, NAS ya da özel bir otomasyon merkezi tarafından evin içinde verilir.</p>

<p>Örneğin koridordaki hareket sensörü etkinleştiğinde ışığın açılması için bulut sunucusundan cevap beklemek gerekmez. Merkez, sensör olayını yerel ağ üzerinden alır ve lambaya anında komut yollar.</p>

<p>Toplam tepki süresini basitçe şöyle düşünebiliriz:</p>

\[T = T_{iletim} + T_{isleme} + T_{cevap}\]

<p>Bulut tabanlı sistemde internet yolculuğu nedeniyle $T_{iletim}$ ve $T_{cevap}$ büyür. Yerel işlemede veri yalnızca ev ağı içinde dolaştığından toplam gecikme çoğu zaman belirgin biçimde azalır.</p>

<h2 id="bulut-ve-edge-computing-karşılaştırması">Bulut ve edge computing karşılaştırması</h2>

<table>
  <thead>
    <tr>
      <th>Özellik</th>
      <th>Bulut tabanlı işleme</th>
      <th>Yerel işleme</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>İnternet gereksinimi</td>
      <td>Genellikle zorunlu</td>
      <td>Çoğu otomasyonda gereksiz</td>
    </tr>
    <tr>
      <td>Tepki süresi</td>
      <td>Ağ durumuna bağlı</td>
      <td>Genellikle çok düşük</td>
    </tr>
    <tr>
      <td>Mahremiyet</td>
      <td>Veri dış sunucuya gider</td>
      <td>Veri evde kalabilir</td>
    </tr>
    <tr>
      <td>Kurulum kolaylığı</td>
      <td>Çoğunlukla daha kolay</td>
      <td>Teknik bilgi gerektirebilir</td>
    </tr>
    <tr>
      <td>Bakım</td>
      <td>Sağlayıcı tarafından yapılır</td>
      <td>Kullanıcı sorumluluğundadır</td>
    </tr>
    <tr>
      <td>Ölçeklenebilirlik</td>
      <td>Yüksek sunucu kapasitesi</td>
      <td>Donanım kapasitesiyle sınırlı</td>
    </tr>
  </tbody>
</table>

<p>Yerel yaklaşım her durumda bulutu çöpe atmak anlamına gelmez. Hava durumu tahmini veya ev dışından bildirim gönderme gibi hizmetlerde bulut yararlıdır. En dengeli çözüm, kritik kararları evde verip yalnızca gerekli verileri dış servislere aktaran hibrit mimaridir.</p>

<h2 id="bir-otomasyon-nasıl-çalışır">Bir otomasyon nasıl çalışır?</h2>

<p>Yerel merkezler genellikle olay güdümlü bir model kullanır. Sensör bir olay üretir, sistem koşulları denetler ve uygun eylemi gerçekleştirir:</p>

<ol>
  <li>Hareket sensörü <code class="language-plaintext highlighter-rouge">aktif</code> durumuna geçer.</li>
  <li>Merkez saatin gece olup olmadığını kontrol eder.</li>
  <li>Işık seviyesi belirlenen eşikten düşükse lambayı açar.</li>
  <li>Hareket kesildikten sonra zamanlayıcı başlatır.</li>
  <li>Süre dolunca lambayı kapatır.</li>
</ol>

<p>Aşağıdaki Home Assistant otomasyonu bu mantığın sade bir örneğidir:</p>

<div class="language-yaml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="na">alias</span><span class="pi">:</span> <span class="s">Gece koridor ışığı</span>
<span class="na">trigger</span><span class="pi">:</span>
  <span class="pi">-</span> <span class="na">platform</span><span class="pi">:</span> <span class="s">state</span>
    <span class="na">entity_id</span><span class="pi">:</span> <span class="s">binary_sensor.koridor_hareket</span>
    <span class="na">to</span><span class="pi">:</span> <span class="s2">"</span><span class="s">on"</span>
<span class="na">condition</span><span class="pi">:</span>
  <span class="pi">-</span> <span class="na">condition</span><span class="pi">:</span> <span class="s">numeric_state</span>
    <span class="na">entity_id</span><span class="pi">:</span> <span class="s">sensor.koridor_aydinlik</span>
    <span class="na">below</span><span class="pi">:</span> <span class="m">30</span>
<span class="na">action</span><span class="pi">:</span>
  <span class="pi">-</span> <span class="na">service</span><span class="pi">:</span> <span class="s">light.turn_on</span>
    <span class="na">target</span><span class="pi">:</span>
      <span class="na">entity_id</span><span class="pi">:</span> <span class="s">light.koridor</span>
  <span class="pi">-</span> <span class="na">delay</span><span class="pi">:</span> <span class="s2">"</span><span class="s">00:02:00"</span>
  <span class="pi">-</span> <span class="na">service</span><span class="pi">:</span> <span class="s">light.turn_off</span>
    <span class="na">target</span><span class="pi">:</span>
      <span class="na">entity_id</span><span class="pi">:</span> <span class="s">light.koridor</span>
</code></pre></div></div>

<p>Bu kod, hareket algılandığında ortam aydınlığı 30 lüksün altındaysa ışığı açar ve iki dakika sonra kapatır. Sensörler ile merkez aynı yerel ağdaysa işlem internet kesildiğinde de devam edebilir.</p>

<h2 id="mahremiyet-ve-kaynak-kullanımı">Mahremiyet ve kaynak kullanımı</h2>

<p>Kameralar yerel işlemenin değerini daha görünür hâle getirir. Görüntüyü buluta göndermek yerine cihaz üzerinde insan algılama modeli çalıştırılabilir. Böylece dışarıya video yerine yalnızca <code class="language-plaintext highlighter-rouge">insan algılandı</code> olayı çıkar.</p>

<p>Yerel donanım seçerken işlemci gücü, bellek ve enerji tüketimi birlikte değerlendirilmelidir. Verimlilik kabaca şu oranla yorumlanabilir:</p>

\[E = \frac{islenen\ olay\ sayisi}{enerji\ tuketimi}\]

<p>Basit sensör otomasyonları için düşük güçlü bir Raspberry Pi yeterli olabilir. Birden fazla kamera üzerinde yapay zekâ çalıştırılacaksa mini PC veya donanım hızlandırıcısı gerekebilir.</p>

<h2 id="sonuç">Sonuç</h2>

<p>Edge computing, akıllı evi yalnızca daha hızlı değil, aynı zamanda daha dayanıklı ve mahremiyet dostu hâle getirir. En iyi başlangıç yöntemi; ışık, sıcaklık ve hareket gibi basit otomasyonları yerelleştirmek, ardından kamera analizi gibi ağır işlemlere geçmektir. Böylece internet gittiğinde akıllı eviniz bir anda oldukça pahalı bir sıradan eve dönüşmez!</p>

<p><img src="/img/akilli-evin-beyni-38.svg" alt="akilli-evin-beyni-38" /></p>]]></content><author><name>Sonsuz Us</name></author><category term="Bilgi" /><category term="edge computing" /><category term="ev otomasyonu" /><category term="iot" /><category term="yerel işleme" /><category term="mahremiyet" /><category term="home assistant" /><summary type="html"><![CDATA[Akıllı ampuller, hareket sensörleri, kameralar ve termostatlar her gün çok sayıda veri üretir. Bu verilerin tamamını uzak sunuculara göndermek yerine evdeki bir merkez üzerinde işlemek, otomasyonları hızlandırırken internet bağımlılığını ve mahremiyet risklerini azaltır. İşte edge computing, yani uçta veya yerelde işleme yaklaşımı tam olarak bunu sağlar.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://program.sonsuz.us/img/akilli-evin-beyni-38.png" /><media:content medium="image" url="https://program.sonsuz.us/img/akilli-evin-beyni-38.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Akıllı Evlerde Hayalet Komutlar: Sesli Asistanlar Neden Yanlış Tetikleniyor?</title><link href="https://program.sonsuz.us/posts/akilli-evlerde-hayalet-komutlar-sesli-asistanlar-neden-yanlis-tetikleniyor/" rel="alternate" type="text/html" title="Akıllı Evlerde Hayalet Komutlar: Sesli Asistanlar Neden Yanlış Tetikleniyor?" /><published>2026-10-27T00:00:00+00:00</published><updated>2026-10-27T00:00:00+00:00</updated><id>https://program.sonsuz.us/posts/akilli-evlerde-hayalet-komutlar-sesli-asistanlar-neden-yanlis-tetikleniyor</id><content type="html" xml:base="https://program.sonsuz.us/posts/akilli-evlerde-hayalet-komutlar-sesli-asistanlar-neden-yanlis-tetikleniyor/"><![CDATA[<p>Televizyondaki bir karakterin söylediği sıradan bir cümle yüzünden ışıkların kapanması komik görünebilir. Ancak aynı yanlış anlaşılma kapının kilidini açıyor, alarmı devre dışı bırakıyor veya özel bir konuşmayı buluta gönderiyorsa mesele artık teknolojik bir şakadan ibaret değildir. Akıllı evlerde sesli komutların yanlış tetiklenmesi, kullanılabilirlik ile güvenlik arasındaki hassas dengeyi doğrudan etkileyen önemli bir tasarım problemidir.</p>

<p><img src="/img/akilli-evlerde-hayalet-17.svg" alt="akilli-evlerde-hayalet-17" /></p>

<p>``</p>

<h2 id="sesli-asistan-gerçekte-neyi-dinliyor">Sesli asistan gerçekte neyi dinliyor?</h2>

<p>Akıllı hoparlörler genellikle konuşmaların tamamını sürekli olarak buluta iletmez. Bunun yerine cihaz üzerinde çalışan düşük güçlü bir model, “Hey Asistan” gibi <strong>uyandırma sözcüğünü</strong> arar. Model yeterince yüksek bir güven skoru üretirse asıl ses kaydı işlenmeye başlanır.</p>

<p>Bu karar basitçe şöyle gösterilebilir:</p>

\[Karar = \begin{cases}
Tetikle, &amp; p(uyandırma\ sözcüğü \mid ses) \geq \theta \\
Bekle, &amp; p(uyandırma\ sözcüğü \mid ses) &lt; \theta
\end{cases}\]

<p>Buradaki $\theta$, sistemin karar eşiğidir. Eşik düşürülürse kullanıcı asistanı daha kolay uyandırır; fakat televizyon sesi, benzer kelimeler ve arka plan konuşmaları da komut sanılabilir. Eşik yükseltildiğinde yanlış tetiklenmeler azalırken gerçek komutların kaçırılma ihtimali artar.</p>

<table>
  <thead>
    <tr>
      <th>Eşik ayarı</th>
      <th style="text-align: right">Yanlış tetiklenme</th>
      <th style="text-align: right">Gerçek komutu kaçırma</th>
      <th>Kullanıcı deneyimi</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Düşük</td>
      <td style="text-align: right">Yüksek</td>
      <td style="text-align: right">Düşük</td>
      <td>Hızlı fakat huzursuz</td>
    </tr>
    <tr>
      <td>Dengeli</td>
      <td style="text-align: right">Orta</td>
      <td style="text-align: right">Orta</td>
      <td>Çoğu ev için uygun</td>
    </tr>
    <tr>
      <td>Yüksek</td>
      <td style="text-align: right">Düşük</td>
      <td style="text-align: right">Yüksek</td>
      <td>Güvenli fakat yorucu</td>
    </tr>
  </tbody>
</table>

<p>Bu ilişki, istatistikte <strong>yanlış pozitif</strong> ve <strong>yanlış negatif</strong> kavramlarıyla açıklanır. Yanlış pozitif, asistanın söylenmeyen bir komutu var sanmasıdır. Yanlış negatif ise gerçekten verilen komutu algılayamamasıdır.</p>

<h2 id="neden-yanlış-tetiklenir">Neden yanlış tetiklenir?</h2>

<p>Başlıca nedenler arasında fonetik benzerlik, televizyon ve radyo sesleri, yankılı odalar, çocukların tiz konuşmaları, farklı aksanlar ve düşük kaliteli mikrofonlar bulunur. Ayrıca ses tanıma modeli belirli yaş veya dil gruplarını yeterince temsil etmeyen verilerle eğitilmiş olabilir.</p>

<p>Saldırganlar da bu zayıflıklardan yararlanabilir. İnsan kulağında anlamsız veya zor fark edilen seslerin içine komut gizlenmesi, <strong>adversarial audio</strong> saldırısı olarak bilinir. Açık bir pencereden, televizyondaki videodan ya da ele geçirilmiş bir IoT cihazından yayılan ses teorik olarak asistana komut verebilir.</p>

<h2 id="güvenlik-ve-mahremiyet-etkileri">Güvenlik ve mahremiyet etkileri</h2>

<p>Her komut aynı risk düzeyine sahip değildir. Müziğin yanlışlıkla başlaması yalnızca can sıkıcıyken akıllı kilit, garaj kapısı, kamera veya alarm üzerinde işlem yapılması fiziksel güvenlik riski oluşturur. Yanlış tetiklenme sonrasında kaydedilen konuşmanın buluta gönderilmesi de mahremiyet sorununa dönüşebilir.</p>

<table>
  <thead>
    <tr>
      <th>İşlem</th>
      <th>Olası sonuç</th>
      <th>Önerilen doğrulama</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Işığı açma</td>
      <td>Düşük risk</td>
      <td>Tek sesli komut</td>
    </tr>
    <tr>
      <td>Alışveriş yapma</td>
      <td>Finansal kayıp</td>
      <td>PIN veya uygulama onayı</td>
    </tr>
    <tr>
      <td>Kapı kilidini açma</td>
      <td>Fiziksel erişim</td>
      <td>Telefon ve biyometri</td>
    </tr>
    <tr>
      <td>Alarmı kapatma</td>
      <td>Kritik güvenlik açığı</td>
      <td>Çok faktörlü doğrulama</td>
    </tr>
  </tbody>
</table>

<h2 id="basit-bir-risk-tabanlı-kontrol">Basit bir risk tabanlı kontrol</h2>

<p>Aşağıdaki Python örneği, komutun güven skoru ile işlem riskini birlikte değerlendirir. Kritik işlemlerde yalnızca ses tanımaya güvenmek yerine ikinci doğrulama ister:</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">def</span> <span class="nf">komutu_degerlendir</span><span class="p">(</span><span class="n">guven_skoru</span><span class="p">,</span> <span class="n">risk_seviyesi</span><span class="p">):</span>
    <span class="n">esikler</span> <span class="o">=</span> <span class="p">{</span><span class="sh">"</span><span class="s">dusuk</span><span class="sh">"</span><span class="p">:</span> <span class="mf">0.70</span><span class="p">,</span> <span class="sh">"</span><span class="s">orta</span><span class="sh">"</span><span class="p">:</span> <span class="mf">0.85</span><span class="p">,</span> <span class="sh">"</span><span class="s">yuksek</span><span class="sh">"</span><span class="p">:</span> <span class="mf">0.95</span><span class="p">}</span>

    <span class="k">if</span> <span class="n">guven_skoru</span> <span class="o">&lt;</span> <span class="n">esikler</span><span class="p">[</span><span class="n">risk_seviyesi</span><span class="p">]:</span>
        <span class="k">return</span> <span class="sh">"</span><span class="s">Komut reddedildi</span><span class="sh">"</span>

    <span class="k">if</span> <span class="n">risk_seviyesi</span> <span class="o">==</span> <span class="sh">"</span><span class="s">yuksek</span><span class="sh">"</span><span class="p">:</span>
        <span class="k">return</span> <span class="sh">"</span><span class="s">Telefon üzerinden ek onay gerekli</span><span class="sh">"</span>

    <span class="k">return</span> <span class="sh">"</span><span class="s">Komut uygulanabilir</span><span class="sh">"</span>

<span class="nf">print</span><span class="p">(</span><span class="nf">komutu_degerlendir</span><span class="p">(</span><span class="mf">0.92</span><span class="p">,</span> <span class="sh">"</span><span class="s">yuksek</span><span class="sh">"</span><span class="p">))</span>
</code></pre></div></div>

<p>Bu yaklaşım, güvenliği yalnızca model doğruluğuna bırakmaz; işlemin muhtemel zararını da hesaba katar.</p>

<h2 id="daha-güvenli-bir-akıllı-ev-için">Daha güvenli bir akıllı ev için</h2>

<p>Kullanıcılar ses kayıt geçmişini düzenli olarak kontrol etmeli, gereksiz satın alma özelliklerini kapatmalı ve kritik cihazları ayrı bir IoT ağına yerleştirmelidir. Üreticiler ise yerel ses işleme, kişiye özel konuşmacı doğrulama, görünür kayıt göstergeleri ve kolay erişilen fiziksel mikrofon düğmeleri sunmalıdır.</p>

<p>Kusursuz ses tanıma gerçekçi olmayabilir. En sağlam çözüm, sistemin hata yapacağını kabul edip sonuçları sınırlandırmaktır. Başka bir deyişle iyi bir akıllı ev, yalnızca sahibini anlayan değil, emin olmadığında “Bunu gerçekten yapmak istiyor musunuz?” diye sorabilen evdir.</p>]]></content><author><name>Sonsuz Us</name></author><category term="Bilgi" /><category term="akıllı ev" /><category term="ses tanıma" /><category term="siber güvenlik" /><category term="yapay zeka" /><category term="iot" /><category term="mahremiyet" /><summary type="html"><![CDATA[Televizyondaki bir karakterin söylediği sıradan bir cümle yüzünden ışıkların kapanması komik görünebilir. Ancak aynı yanlış anlaşılma kapının kilidini açıyor, alarmı devre dışı bırakıyor veya özel bir konuşmayı buluta gönderiyorsa mesele artık teknolojik bir şakadan ibaret değildir. Akıllı evlerde sesli komutların yanlış tetiklenmesi, kullanılabilirlik ile güvenlik arasındaki hassas dengeyi doğrudan etkileyen önemli bir tasarım problemidir.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://program.sonsuz.us/img/akilli-evlerde-hayalet-17.png" /><media:content medium="image" url="https://program.sonsuz.us/img/akilli-evlerde-hayalet-17.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Akıllı Protezler: Düşünceden Harekete Uzanan Biyonik Köprü</title><link href="https://program.sonsuz.us/posts/akilli-protezler-dusunceden-harekete-uzanan-biyonik-kopru/" rel="alternate" type="text/html" title="Akıllı Protezler: Düşünceden Harekete Uzanan Biyonik Köprü" /><published>2026-10-27T00:00:00+00:00</published><updated>2026-10-27T00:00:00+00:00</updated><id>https://program.sonsuz.us/posts/akilli-protezler-dusunceden-harekete-uzanan-biyonik-kopru</id><content type="html" xml:base="https://program.sonsuz.us/posts/akilli-protezler-dusunceden-harekete-uzanan-biyonik-kopru/"><![CDATA[<p>Bir bardağı tutmayı yalnızca düşünerek gerçekleştirdiğinizi hayal edin. Akıllı protezler, kaslarda ve sinirlerde oluşan elektriksel sinyalleri yorumlayarak bu düşünceyi mekanik harekete dönüştürür. Bilim kurgu filmlerindeki robot kolları hatırlatsa da bu teknoloji bugün laboratuvarlardan çıkıp gerçek kullanıcıların günlük yaşamına girmeye başlamış durumda.</p>

<p>``</p>

<h2 id="sinir-sistemi-protezle-nasıl-konuşur">Sinir sistemi protezle nasıl konuşur?</h2>

<p>Beyin bir hareket başlatmak istediğinde omurilik ve çevresel sinirler üzerinden kaslara elektriksel komutlar gönderir. Bir uzuv kaybedilmiş olsa bile geride kalan sinirler çoğu zaman bu komutları üretmeye devam eder. Elektromiyografi adı verilen yöntem, kasların üzerindeki elektrotlarla bu elektriksel etkinliği ölçer.</p>

<p>Ölçülen ham sinyal genellikle gürültülüdür. Kalp atışı, elektrotun kayması ve çevredeki elektronik cihazlar ölçümü etkileyebilir. Bu nedenle sinyal önce filtrelenir, ardından küçük zaman pencerelerine bölünür. Her pencereden ortalama mutlak değer, varyans veya frekans enerjisi gibi özellikler çıkarılır.</p>

<p>Bir sinyalin basitleştirilmiş enerji ölçümü şöyle ifade edilebilir:</p>

\[E = \sum_{i=1}^{N} x_i^2\]

<p>Burada $x_i$ ölçülen sinyal örneğini, $N$ ise pencere içindeki örnek sayısını gösterir. Kas daha güçlü kasıldığında enerji çoğunlukla yükselir. Ancak farklı hareketleri ayırmak için yalnızca enerji yetmez; sinyalin zamansal ve frekans özellikleri birlikte değerlendirilir.</p>

<h2 id="komuttan-mekanik-harekete">Komuttan mekanik harekete</h2>

<p>Sistemin işleyişi dört temel aşamaya ayrılır:</p>

<ol>
  <li>Elektrotlar sinir veya kas sinyalini toplar.</li>
  <li>Filtreleme işlemi paraziti azaltır.</li>
  <li>Bir makine öğrenmesi modeli hareket niyetini sınıflandırır.</li>
  <li>Denetleyici, protezin motorlarına uygun komutları yollar.</li>
</ol>

<p>Örneğin model, sinyali “eli aç”, “yumruk yap” veya “bileği döndür” sınıflarından birine yerleştirebilir. Motor komutu için basit bir oransal denetim kullanılabilir:</p>

\[u = K(e)\]

<p>Burada $e$, hedef konum ile mevcut konum arasındaki fark; $K$ ise tepki kuvvetini belirleyen katsayıdır. Büyük hata daha güçlü motor komutu üretir.</p>

<table>
  <thead>
    <tr>
      <th>Yaklaşım</th>
      <th>Avantajı</th>
      <th>Sınırlaması</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Yüzey EMG</td>
      <td>Ameliyat gerektirmez</td>
      <td>Elektrot kaymasından etkilenir</td>
    </tr>
    <tr>
      <td>İmplante elektrot</td>
      <td>Daha temiz sinyal sağlar</td>
      <td>Cerrahi işlem gerektirir</td>
    </tr>
    <tr>
      <td>Kural tabanlı kontrol</td>
      <td>Basit ve hızlıdır</td>
      <td>Karmaşık hareketlerde yetersizdir</td>
    </tr>
    <tr>
      <td>Makine öğrenmesi</td>
      <td>Kullanıcıya uyarlanabilir</td>
      <td>Eğitim verisine ihtiyaç duyar</td>
    </tr>
  </tbody>
</table>

<h2 id="küçük-bir-hareket-sınıflandırıcısı">Küçük bir hareket sınıflandırıcısı</h2>

<p>Aşağıdaki Python örneği, önceden çıkarılmış sinyal özelliklerinden hareket türünü öğrenen basit bir modeli gösterir:</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">from</span> <span class="n">sklearn.ensemble</span> <span class="kn">import</span> <span class="n">RandomForestClassifier</span>

<span class="c1"># Her satır: enerji, ortalama genlik ve frekans özelliği
</span><span class="n">X</span> <span class="o">=</span> <span class="p">[[</span><span class="mf">0.2</span><span class="p">,</span> <span class="mf">0.1</span><span class="p">,</span> <span class="mi">15</span><span class="p">],</span> <span class="p">[</span><span class="mf">0.8</span><span class="p">,</span> <span class="mf">0.7</span><span class="p">,</span> <span class="mi">32</span><span class="p">],</span>
     <span class="p">[</span><span class="mf">0.3</span><span class="p">,</span> <span class="mf">0.2</span><span class="p">,</span> <span class="mi">18</span><span class="p">],</span> <span class="p">[</span><span class="mf">0.9</span><span class="p">,</span> <span class="mf">0.8</span><span class="p">,</span> <span class="mi">35</span><span class="p">]]</span>
<span class="n">y</span> <span class="o">=</span> <span class="p">[</span><span class="sh">"</span><span class="s">ac</span><span class="sh">"</span><span class="p">,</span> <span class="sh">"</span><span class="s">kapat</span><span class="sh">"</span><span class="p">,</span> <span class="sh">"</span><span class="s">ac</span><span class="sh">"</span><span class="p">,</span> <span class="sh">"</span><span class="s">kapat</span><span class="sh">"</span><span class="p">]</span>

<span class="n">model</span> <span class="o">=</span> <span class="nc">RandomForestClassifier</span><span class="p">(</span><span class="n">n_estimators</span><span class="o">=</span><span class="mi">50</span><span class="p">,</span> <span class="n">random_state</span><span class="o">=</span><span class="mi">42</span><span class="p">)</span>
<span class="n">model</span><span class="p">.</span><span class="nf">fit</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>

<span class="n">yeni_sinyal</span> <span class="o">=</span> <span class="p">[[</span><span class="mf">0.75</span><span class="p">,</span> <span class="mf">0.68</span><span class="p">,</span> <span class="mi">30</span><span class="p">]]</span>
<span class="nf">print</span><span class="p">(</span><span class="n">model</span><span class="p">.</span><span class="nf">predict</span><span class="p">(</span><span class="n">yeni_sinyal</span><span class="p">)[</span><span class="mi">0</span><span class="p">])</span>
</code></pre></div></div>

<p>Bu kod doğrudan bir protezi yönetmez; sinyal çözümleme mantığının sadeleştirilmiş bir örneğidir. Gerçek sistemlerde binlerce örnek, gerçek zamanlı veri akışı ve güvenlik kontrolleri bulunur. Yanlış bir tahminin bardağı kırabileceği düşünülürse düşük gecikme kadar güvenilirlik de önemlidir.</p>

<h2 id="dokunmayı-geri-getirmek-mümkün-mü">Dokunmayı geri getirmek mümkün mü?</h2>

<p>Akıllı protezlerin en heyecan verici yönü çift yönlü iletişimdir. Basınç sensörleri, parmak ucundaki kuvveti ölçerek sinirlere kontrollü elektrik darbeleri gönderebilir. Böylece kullanıcı yalnızca protezi hareket ettirmez; tuttuğu nesnenin sertliği veya kaymak üzere olduğu hakkında geri bildirim de alabilir.</p>

<p>Gelecekte daha küçük elektrotlar, enerji verimli motorlar ve kullanıcıyla birlikte öğrenen algoritmalar göreceğiz. Bununla birlikte mahremiyet, bakım maliyeti, siber güvenlik ve erişilebilirlik unutulmamalıdır. Çünkü sinir sinyali yalnızca teknik veri değil, insan bedenine ait son derece kişisel bir bilgidir. Başarılı bir akıllı protez, metal ve koddan fazlasıdır: İnsan niyetiyle makine hareketi arasında güvenilir, sezgisel ve güvenli bir köprüdür.</p>

<p><img src="/img/akilli-protezler-dusunceden-75.svg" alt="akilli-protezler-dusunceden-75" /></p>]]></content><author><name>Sonsuz Us</name></author><category term="Bilgi" /><category term="akıllı protezler" /><category term="biyonik" /><category term="sinirbilim" /><category term="yapay zeka" /><category term="biyomedikal" /><category term="makine öğrenmesi" /><summary type="html"><![CDATA[Bir bardağı tutmayı yalnızca düşünerek gerçekleştirdiğinizi hayal edin. Akıllı protezler, kaslarda ve sinirlerde oluşan elektriksel sinyalleri yorumlayarak bu düşünceyi mekanik harekete dönüştürür. Bilim kurgu filmlerindeki robot kolları hatırlatsa da bu teknoloji bugün laboratuvarlardan çıkıp gerçek kullanıcıların günlük yaşamına girmeye başlamış durumda.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://program.sonsuz.us/img/akilli-protezler-dusunceden-75.png" /><media:content medium="image" url="https://program.sonsuz.us/img/akilli-protezler-dusunceden-75.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Akıllı Sulama Sistemlerinde Optimizasyon: Her Damlayı Algoritmayla Yönetmek</title><link href="https://program.sonsuz.us/posts/akilli-sulama-sistemlerinde-optimizasyon-her-damlayi-algoritmayla-yonetmek/" rel="alternate" type="text/html" title="Akıllı Sulama Sistemlerinde Optimizasyon: Her Damlayı Algoritmayla Yönetmek" /><published>2026-10-27T00:00:00+00:00</published><updated>2026-10-27T00:00:00+00:00</updated><id>https://program.sonsuz.us/posts/akilli-sulama-sistemlerinde-optimizasyon-her-damlayi-algoritmayla-yonetmek</id><content type="html" xml:base="https://program.sonsuz.us/posts/akilli-sulama-sistemlerinde-optimizasyon-her-damlayi-algoritmayla-yonetmek/"><![CDATA[<p>Geleneksel sulamada karar çoğu zaman takvime göre verilir: “Salı günü tarlayı sula.” Akıllı sulama sistemi ise daha meraklıdır; toprağın nemini, bitkinin gelişim dönemini, hava tahminini ve su deposunun durumunu sorgular. Böylece yalnızca gerekli bölgeye, gerekli zamanda ve gerekli miktarda su gönderir. Amaç musluğu robotlaştırmak değil, sınırlı suyu ölçülebilir bir optimizasyon problemi olarak yönetmektir.</p>

<p>``</p>

<h2 id="bitkinin-su-ihtiyacı-nasıl-hesaplanır">Bitkinin su ihtiyacı nasıl hesaplanır?</h2>

<p>Sistemin temel girdilerinden biri <strong>referans evapotranspirasyon</strong> değeridir. Evapotranspirasyon, topraktan buharlaşan ve bitkinin yapraklarından atmosfere aktarılan toplam suyu ifade eder. Belirli bir bitkinin yaklaşık ihtiyacı şöyle bulunabilir:</p>

\[ET_c = K_c \times ET_0\]

<p>Burada $ET_0$ hava koşullarına bağlı referans evapotranspirasyon, $K_c$ ise bitki katsayısıdır. Örneğin domatesin gelişim dönemindeki katsayısı, yeni ekilmiş bir bitkininkinden farklıdır.</p>

<p>Yağış ve mevcut toprak nemi de hesaba katıldığında net sulama ihtiyacı basitleştirilmiş biçimde şöyle modellenebilir:</p>

\[D = max(0, ET_c - P_e - M)\]

<p>$D$ verilecek suyu, $P_e$ etkili yağışı, $M$ ise kök bölgesinde kullanılabilir nem katkısını gösterir. <code class="language-plaintext highlighter-rouge">max</code> işlemi, yağış ihtiyacı zaten karşıladıysa negatif miktarda sulama yapılmasını engeller.</p>

<h2 id="takvim-tabanlı-ve-akıllı-sulama-karşılaştırması">Takvim tabanlı ve akıllı sulama karşılaştırması</h2>

<table>
  <thead>
    <tr>
      <th>Özellik</th>
      <th>Takvim tabanlı sulama</th>
      <th>Akıllı sulama</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Karar kaynağı</td>
      <td>Sabit gün ve saat</td>
      <td>Sensörler ve tahminler</td>
    </tr>
    <tr>
      <td>Su miktarı</td>
      <td>Genellikle sabit</td>
      <td>Bitki ihtiyacına göre değişken</td>
    </tr>
    <tr>
      <td>Yağmur tepkisi</td>
      <td>Manuel müdahale gerekir</td>
      <td>Sulama otomatik ertelenebilir</td>
    </tr>
    <tr>
      <td>Bölgesel kontrol</td>
      <td>Sınırlı</td>
      <td>Her vana ayrı yönetilebilir</td>
    </tr>
    <tr>
      <td>Risk</td>
      <td>Fazla veya yetersiz sulama</td>
      <td>Sensör hatasına bağımlılık</td>
    </tr>
  </tbody>
</table>

<p>Akıllı yaklaşım açıkça avantajlı görünse de sensör kalibrasyonu ihmal edilirse sistem son derece kararlı biçimde yanlış karar verebilir. Başka bir deyişle, kötü veri kullanan harika bir algoritma hâlâ kötü bir sulamacıdır.</p>

<h2 id="optimizasyon-problemi">Optimizasyon problemi</h2>

<p>Bir tarlada birden fazla sulama bölgesi bulunduğunu düşünelim. Her bölgenin ihtiyacı farklıdır, fakat pompanın debisi ve depodaki su sınırlıdır. Hedef fonksiyonu, ihtiyaç ile verilen su arasındaki farkı küçültebilir:</p>

\[minimize \sum_i w_i(D_i - x_i)^2\]

<p>Burada $D_i$ bölgenin ihtiyacı, $x_i$ tahsis edilen su ve $w_i$ öncelik katsayısıdır. Yeni dikilmiş veya su stresine hassas bitkilere daha yüksek ağırlık verilebilir. Model ayrıca şu kısıtları taşıyabilir:</p>

<ul>
  <li>Toplam dağıtılan su depo kapasitesini aşmamalıdır.</li>
  <li>Bir vananın çalışma süresi teknik sınırlar içinde kalmalıdır.</li>
  <li>Yağmur olasılığı yüksekse tahsis azaltılmalıdır.</li>
  <li>Pompa aynı anda yalnızca belirli sayıda bölgeyi beslemelidir.</li>
</ul>

<h2 id="basit-bir-python-karar-mekanizması">Basit bir Python karar mekanizması</h2>

<p>Aşağıdaki fonksiyon, nem eşiklerini ve beklenen yağışı kullanarak sulama süresi üretir:</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">def</span> <span class="nf">sulama_suresi</span><span class="p">(</span><span class="n">nem</span><span class="p">,</span> <span class="n">hedef_nem</span><span class="p">,</span> <span class="n">alan_m2</span><span class="p">,</span>
                   <span class="n">yagis_mm</span><span class="p">,</span> <span class="n">debi_litre_dk</span><span class="p">):</span>
    <span class="n">nem_acigi</span> <span class="o">=</span> <span class="nf">max</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">hedef_nem</span> <span class="o">-</span> <span class="n">nem</span><span class="p">)</span>

    <span class="c1"># Beklenen yağmur arttıkça ihtiyaç azaltılır.
</span>    <span class="n">gerekli_mm</span> <span class="o">=</span> <span class="nf">max</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">nem_acigi</span> <span class="o">*</span> <span class="mf">0.5</span> <span class="o">-</span> <span class="n">yagis_mm</span><span class="p">)</span>

    <span class="c1"># 1 mm yağış, 1 m² alanda yaklaşık 1 litre sudur.
</span>    <span class="n">gerekli_litre</span> <span class="o">=</span> <span class="n">gerekli_mm</span> <span class="o">*</span> <span class="n">alan_m2</span>
    <span class="n">dakika</span> <span class="o">=</span> <span class="n">gerekli_litre</span> <span class="o">/</span> <span class="n">debi_litre_dk</span>

    <span class="k">return</span> <span class="nf">round</span><span class="p">(</span><span class="n">dakika</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>

<span class="n">sure</span> <span class="o">=</span> <span class="nf">sulama_suresi</span><span class="p">(</span>
    <span class="n">nem</span><span class="o">=</span><span class="mi">24</span><span class="p">,</span>
    <span class="n">hedef_nem</span><span class="o">=</span><span class="mi">35</span><span class="p">,</span>
    <span class="n">alan_m2</span><span class="o">=</span><span class="mi">120</span><span class="p">,</span>
    <span class="n">yagis_mm</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span>
    <span class="n">debi_litre_dk</span><span class="o">=</span><span class="mi">18</span>
<span class="p">)</span>
<span class="nf">print</span><span class="p">(</span><span class="sa">f</span><span class="sh">'</span><span class="s">Sulama süresi: </span><span class="si">{</span><span class="n">sure</span><span class="si">}</span><span class="s"> dakika</span><span class="sh">'</span><span class="p">)</span>
</code></pre></div></div>

<p>Bu örnek üretim sistemi için tek başına yeterli değildir; ancak sensör verisinin fiziksel su miktarına ve vana süresine nasıl dönüştürüldüğünü gösterir. Gerçek projede sensör okumaları filtrelenmeli, anormal değerler elenmeli ve vana komutları kayıt altına alınmalıdır.</p>

<h2 id="daha-akıllı-bir-mimari">Daha akıllı bir mimari</h2>

<p>Uygulamada nem sensörleri MQTT gibi bir protokolle merkezi sunucuya veri gönderebilir. Sunucu hava tahminini alır, optimizasyonu çalıştırır ve vanalara komut iletir. Elektrik veya internet kesintisine karşı yerel denetleyicide güvenli bir varsayılan program bulunması önemlidir.</p>

<p>Sonuç olarak akıllı sulama; sensör, tarım bilgisi ve optimizasyonun ortak çalışmasıdır. Başarı yalnızca su tasarrufuyla değil, bitki sağlığı, enerji tüketimi ve ürün verimi birlikte izlenerek ölçülmelidir. En iyi sistem en çok sulayan değil, doğru damlayı doğru köke ulaştırandır.</p>

<p><img src="/img/akilli-sulama-sistemlerinde-76.svg" alt="akilli-sulama-sistemlerinde-76" /></p>]]></content><author><name>Sonsuz Us</name></author><category term="Proje" /><category term="akıllı sulama" /><category term="optimizasyon" /><category term="nesnelerin interneti" /><category term="python" /><category term="tarım teknolojileri" /><category term="sensörler" /><summary type="html"><![CDATA[Geleneksel sulamada karar çoğu zaman takvime göre verilir: “Salı günü tarlayı sula.” Akıllı sulama sistemi ise daha meraklıdır; toprağın nemini, bitkinin gelişim dönemini, hava tahminini ve su deposunun durumunu sorgular. Böylece yalnızca gerekli bölgeye, gerekli zamanda ve gerekli miktarda su gönderir. Amaç musluğu robotlaştırmak değil, sınırlı suyu ölçülebilir bir optimizasyon problemi olarak yönetmektir.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://program.sonsuz.us/img/akilli-sulama-sistemlerinde-76.png" /><media:content medium="image" url="https://program.sonsuz.us/img/akilli-sulama-sistemlerinde-76.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Bileğinizdeki Laboratuvar: Giyilebilir Sağlık Teknolojileri Nasıl Ölçüm Yapıyor?</title><link href="https://program.sonsuz.us/posts/bileginizdeki-laboratuvar-giyilebilir-saglik-teknolojileri-nasil-olcum-yapiyor/" rel="alternate" type="text/html" title="Bileğinizdeki Laboratuvar: Giyilebilir Sağlık Teknolojileri Nasıl Ölçüm Yapıyor?" /><published>2026-10-27T00:00:00+00:00</published><updated>2026-10-27T00:00:00+00:00</updated><id>https://program.sonsuz.us/posts/bileginizdeki-laboratuvar-giyilebilir-saglik-teknolojileri-nasil-olcum-yapiyor</id><content type="html" xml:base="https://program.sonsuz.us/posts/bileginizdeki-laboratuvar-giyilebilir-saglik-teknolojileri-nasil-olcum-yapiyor/"><![CDATA[<p>Akıllı saatler yalnızca adımlarımızı sayan dijital aksesuarlar değil; ışık, elektrik, hareket ve sıcaklık gibi fiziksel sinyalleri biyolojik verilere dönüştüren küçük laboratuvarlardır. Ancak ekranda gördüğümüz “72 BPM” veya “%98 SpO₂” değerleri doğrudan ölçülmez. Sensörlerden gelen gürültülü sinyaller, algoritmalar ve istatistiksel modeller yardımıyla tahmin edilir.
``</p>

<h2 id="işıkla-nabız-ölçmek-ppg">Işıkla nabız ölçmek: PPG</h2>

<p>Saatlerin arkasındaki yanıp sönen yeşil LED’ler, <strong>fotopletismografi (PPG)</strong> yönteminin parçasıdır. LED cilde ışık gönderir; fotodiyot ise geri yansıyan ışığı ölçer. Kalp her attığında damarlardaki kan hacmi değişir. Hemoglobin yeşil ışığı emdiği için yansıma miktarındaki periyodik değişim nabzı ortaya çıkarır.</p>

<p>İki tepe arasındaki süre $\Delta t$ saniye ise kalp atış hızı yaklaşık olarak şöyle hesaplanır:</p>

\[BPM = \frac{60}{\Delta t}\]

<p>Örneğin tepeler arasında $0.8$ saniye varsa sonuç $75$ BPM olur. Ne var ki kol hareketi, ter, dövme, gevşek kayış ve ortam ışığı sinyali bozabilir. Saat bu nedenle ivmeölçer verisini kullanarak hareket kaynaklı parazitleri ayıklamaya çalışır.</p>

<h2 id="oksijen-elektrik-ve-sıcaklık">Oksijen, elektrik ve sıcaklık</h2>

<p>Kandaki oksijen doygunluğu için kırmızı ve kızılötesi ışık kullanılır. Oksijenli ve oksijensiz hemoglobin bu dalga boylarını farklı oranlarda emer. Cihaz, emilim oranını kalibrasyon modeliyle karşılaştırarak <strong>SpO₂ tahmini</strong> üretir.</p>

<p>Elektrokardiyografi özellikli saatlerdeyse kullanıcı elektrotlara dokunarak elektrik devresini tamamlar. Elde edilen tek derivasyonlu EKG, kalbin elektriksel aktivitesini gösterir. Hastanedeki 12 derivasyonlu cihaz kadar kapsamlı değildir; yine de düzensiz ritim belirtilerinin yakalanmasına yardımcı olabilir.</p>

<table>
  <thead>
    <tr>
      <th>Sensör</th>
      <th>Ham veri</th>
      <th>Tahmin edilen bilgi</th>
      <th>Yaygın hata kaynağı</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>PPG</td>
      <td>Yansıyan ışık</td>
      <td>Nabız, SpO₂</td>
      <td>Hareket, gevşek temas</td>
    </tr>
    <tr>
      <td>İvmeölçer</td>
      <td>Üç eksenli ivme</td>
      <td>Adım, aktivite, uyku</td>
      <td>Araç yolculuğu, el hareketi</td>
    </tr>
    <tr>
      <td>Jiroskop</td>
      <td>Açısal hız</td>
      <td>Egzersiz biçimi</td>
      <td>Yanlış bilek konumu</td>
    </tr>
    <tr>
      <td>Elektrot</td>
      <td>Elektrik potansiyeli</td>
      <td>EKG, ritim</td>
      <td>Kuru cilt, temas kaybı</td>
    </tr>
    <tr>
      <td>Termistör</td>
      <td>Cilt sıcaklığı</td>
      <td>Sıcaklık eğilimi</td>
      <td>Oda sıcaklığı, terleme</td>
    </tr>
  </tbody>
</table>

<h2 id="hareketten-adıma-adımdan-uykuya">Hareketten adıma, adımdan uykuya</h2>

<p>İvmeölçer genellikle $x$, $y$ ve $z$ eksenlerinde örnek toplar. Yön etkisini azaltmak için toplam hareket büyüklüğü hesaplanabilir:</p>

\[a = \sqrt{x^2 + y^2 + z^2}\]

<p>Yerçekimi ve gürültü filtrelendikten sonra belirli eşikleri aşan ritmik tepeler adım olarak yorumlanır. Uyku takibi ise çoğunlukla hareketsizlik, kalp hızı, solunum eğilimi ve kalp hızı değişkenliğini birleştirir. Saat beynin elektriksel aktivitesini ölçmediği için uyku evreleri kesin teşhis değil, algoritmik tahmindir.</p>

<p>Aşağıdaki Python örneği, basitleştirilmiş ivme verisindeki tepeleri sayar:</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">import</span> <span class="n">numpy</span> <span class="k">as</span> <span class="n">np</span>
<span class="kn">from</span> <span class="n">scipy.signal</span> <span class="kn">import</span> <span class="n">find_peaks</span>

<span class="c1"># Üç eksenli ivmeden hareket büyüklüğünü hesapla
</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">z</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="nf">loadtxt</span><span class="p">(</span><span class="sh">"</span><span class="s">ivme.csv</span><span class="sh">"</span><span class="p">,</span> <span class="n">delimiter</span><span class="o">=</span><span class="sh">"</span><span class="s">,</span><span class="sh">"</span><span class="p">,</span> <span class="n">unpack</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
<span class="n">magnitude</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="nf">sqrt</span><span class="p">(</span><span class="n">x</span><span class="o">**</span><span class="mi">2</span> <span class="o">+</span> <span class="n">y</span><span class="o">**</span><span class="mi">2</span> <span class="o">+</span> <span class="n">z</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span>

<span class="c1"># Yerçekimi çevresindeki sapmaları belirginleştir
</span><span class="n">movement</span> <span class="o">=</span> <span class="n">magnitude</span> <span class="o">-</span> <span class="n">np</span><span class="p">.</span><span class="nf">mean</span><span class="p">(</span><span class="n">magnitude</span><span class="p">)</span>

<span class="c1"># Birbirine çok yakın titreşimleri adım saymamak için mesafe uygula
</span><span class="n">peaks</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="nf">find_peaks</span><span class="p">(</span><span class="n">movement</span><span class="p">,</span> <span class="n">height</span><span class="o">=</span><span class="mf">0.25</span><span class="p">,</span> <span class="n">distance</span><span class="o">=</span><span class="mi">20</span><span class="p">)</span>
<span class="nf">print</span><span class="p">(</span><span class="sa">f</span><span class="sh">"</span><span class="s">Tahmini adım: </span><span class="si">{</span><span class="nf">len</span><span class="p">(</span><span class="n">peaks</span><span class="p">)</span><span class="si">}</span><span class="sh">"</span><span class="p">)</span>
</code></pre></div></div>

<p>Gerçek cihazlar sabit bir eşikten fazlasını kullanır: filtreleme, kişisel kalibrasyon ve makine öğrenmesi modelleri farklı yürüyüş biçimlerini ayırır.</p>

<h2 id="ölçüm-mü-tahmin-mi">Ölçüm mü, tahmin mi?</h2>

<table>
  <thead>
    <tr>
      <th>Tıbbi cihaz</th>
      <th>Tüketici tipi giyilebilir cihaz</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Kontrollü koşullarda doğrulanır</td>
      <td>Günlük yaşam kolaylığına odaklanır</td>
    </tr>
    <tr>
      <td>Klinik yorumla birlikte kullanılır</td>
      <td>Eğilim ve farkındalık sağlar</td>
    </tr>
    <tr>
      <td>Çoklu elektrot veya profesyonel sensör içerir</td>
      <td>Boyut ve pil tüketimi sınırlıdır</td>
    </tr>
  </tbody>
</table>

<p>Giyilebilir cihazların asıl gücü tek bir ölçümden ziyade <strong>zaman içindeki değişimi</strong> göstermeleridir. Dinlenik nabzın günlerce yükselmesi veya sıcaklık eğiliminin değişmesi anlamlı olabilir. Yine de sensör hatası ile sağlık sorununu ayırmak her zaman kolay değildir. Bu nedenle saat bildirimleri tanı kabul edilmemeli; devam eden veya ciddi belirtilerde sağlık uzmanına başvurulmalıdır. Bileğinizdeki teknoloji iyi bir gözlemci olabilir, fakat henüz doktor önlüğü giymiyor.</p>

<p><img src="/img/bileginizdeki-laboratuvar-giyilebilir-43.svg" alt="bileginizdeki-laboratuvar-giyilebilir-43" /></p>]]></content><author><name>Sonsuz Us</name></author><category term="Bilgi" /><category term="giyilebilir teknoloji" /><category term="sağlık teknolojileri" /><category term="sensörler" /><category term="akıllı saat" /><category term="veri analizi" /><category term="biyometri" /><summary type="html"><![CDATA[Akıllı saatler yalnızca adımlarımızı sayan dijital aksesuarlar değil; ışık, elektrik, hareket ve sıcaklık gibi fiziksel sinyalleri biyolojik verilere dönüştüren küçük laboratuvarlardır. Ancak ekranda gördüğümüz “72 BPM” veya “%98 SpO₂” değerleri doğrudan ölçülmez. Sensörlerden gelen gürültülü sinyaller, algoritmalar ve istatistiksel modeller yardımıyla tahmin edilir.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://program.sonsuz.us/img/bileginizdeki-laboratuvar-giyilebilir-43.png" /><media:content medium="image" url="https://program.sonsuz.us/img/bileginizdeki-laboratuvar-giyilebilir-43.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry></feed>