<?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-28T00:05:47+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">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><entry><title type="html">Bir Dakika mı, Sonsuzluk mu? Oyunlarda Zaman Algısının Tasarımı</title><link href="https://program.sonsuz.us/posts/bir-dakika-mi-sonsuzluk-mu-oyunlarda-zaman-algisinin-tasarimi/" rel="alternate" type="text/html" title="Bir Dakika mı, Sonsuzluk mu? Oyunlarda Zaman Algısının Tasarımı" /><published>2026-10-27T00:00:00+00:00</published><updated>2026-10-27T00:00:00+00:00</updated><id>https://program.sonsuz.us/posts/bir-dakika-mi-sonsuzluk-mu-oyunlarda-zaman-algisinin-tasarimi</id><content type="html" xml:base="https://program.sonsuz.us/posts/bir-dakika-mi-sonsuzluk-mu-oyunlarda-zaman-algisinin-tasarimi/"><![CDATA[<p>Bir oyunda geçen 30 saniye her zaman 30 saniye gibi hissedilmez. Çatışmanın ortasında göz açıp kapayıncaya kadar geçen bu süre, boş bir yükleme ekranında küçük bir sonsuzluğa dönüşebilir. Çünkü oyuncunun sabrı yalnızca kronometreyle değil; dikkat, beklenti, kontrol hissi ve sunulan geri bildirimle yönetilir. İyi oyun tasarımı zamanı hızlandıramasa bile beynin onu nasıl yorumladığını ustalıkla değiştirebilir.</p>

<p><img src="/img/bir-dakika-mi-15.svg" alt="bir-dakika-mi-15" /></p>

<p>``</p>

<h2 id="fiziksel-zaman-ve-algılanan-zaman">Fiziksel zaman ve algılanan zaman</h2>

<p>Fiziksel zaman ölçülebilirken algılanan zaman öznel bir deneyimdir. Bunu basitleştirilmiş bir modelle şöyle ifade edebiliriz:</p>

\[T_a = T_g \times \frac{B + D}{E + K}\]

<p>Burada $T_a$ algılanan zamanı, $T_g$ gerçek süreyi, $B$ belirsizliği, $D$ dikkatin beklemeye yönelmesini, $E$ eğlenceyi ve $K$ kontrol hissini temsil eder. Bu bilimsel bir ölçüm formülü değil, tasarım kararlarını düşünmek için kullanışlı bir modeldir. Belirsizlik ve beklemeye odaklanma arttıkça süre uzamış gibi hissedilir. Eğlence ve kontrol hissi yükseldiğinde ise aynı süre daha kısa algılanır.</p>

<p>Örneğin yüzde göstergesi bulunmayan donmuş bir ekran, oyuncuya sistemin çalışıp çalışmadığını düşündürür. Belirsizlik yükselir ve oyuncu her saniyeyi izlemeye başlar. Hareketli bir ipucu, ilerleme çubuğu veya etkileşimli mini oyun ise dikkati dağıtır.</p>

<table>
  <thead>
    <tr>
      <th>Bekleme tasarımı</th>
      <th>Oyuncunun düşüncesi</th>
      <th>Algılanan etki</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Boş ve hareketsiz ekran</td>
      <td>“Oyun çöktü mü?”</td>
      <td>Süre çok uzun gelir</td>
    </tr>
    <tr>
      <td>İlerleme çubuğu</td>
      <td>“Ne kadar kaldığını biliyorum.”</td>
      <td>Belirsizlik azalır</td>
    </tr>
    <tr>
      <td>Oynanış ipuçları</td>
      <td>“Bu bilgiyi kullanabilirim.”</td>
      <td>Bekleme faydalı görünür</td>
    </tr>
    <tr>
      <td>Etkileşimli animasyon</td>
      <td>“Hâlâ bir şey yapıyorum.”</td>
      <td>Kontrol hissi artar</td>
    </tr>
    <tr>
      <td>Gizli yükleme koridoru</td>
      <td>“Dünyada ilerliyorum.”</td>
      <td>Yükleme fark edilmez</td>
    </tr>
  </tbody>
</table>

<h2 id="i̇lerleme-çubuğunun-küçük-oyunları">İlerleme çubuğunun küçük oyunları</h2>

<p>İlerleme çubukları her zaman yüklemenin gerçek hızını birebir göstermez. Dosyaların boyutu, disk hızı ve ağ gecikmesi değişken olduğu için doğrusal ilerleme üretmek zordur. Çubuğun uzun süre yüzde 99’da kalması özellikle sinir bozucudur; çünkü arayüz, bitiş sözü vermiş gibi görünür.</p>

<p>Daha dengeli bir gösterge için ölçülen ilerleme doğrudan ekrana verilmek yerine yumuşatılabilir:</p>

\[P_{yeni} = P_{eski} + \alpha(P_{gerçek} - P_{eski})\]

<p>$\alpha$ değeri 0 ile 1 arasındadır. Küçük değerler daha akıcı fakat daha yavaş tepki veren bir animasyon oluşturur. Aşağıdaki JavaScript örneği ani sıçramaları azaltır:</p>

<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">let</span> <span class="nx">displayedProgress</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>

<span class="kd">function</span> <span class="nf">updateLoading</span><span class="p">(</span><span class="nx">realProgress</span><span class="p">)</span> <span class="p">{</span>
  <span class="kd">const</span> <span class="nx">smoothing</span> <span class="o">=</span> <span class="mf">0.12</span><span class="p">;</span>
  <span class="nx">displayedProgress</span> <span class="o">+=</span>
    <span class="nx">smoothing</span> <span class="o">*</span> <span class="p">(</span><span class="nx">realProgress</span> <span class="o">-</span> <span class="nx">displayedProgress</span><span class="p">);</span>

  <span class="kd">const</span> <span class="nx">percent</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nf">floor</span><span class="p">(</span><span class="nx">displayedProgress</span> <span class="o">*</span> <span class="mi">100</span><span class="p">);</span>
  <span class="nb">document</span><span class="p">.</span><span class="nf">querySelector</span><span class="p">(</span><span class="dl">"</span><span class="s2">.progress-bar</span><span class="dl">"</span><span class="p">).</span><span class="nx">style</span><span class="p">.</span><span class="nx">width</span> <span class="o">=</span> <span class="s2">`</span><span class="p">${</span><span class="nx">percent</span><span class="p">}</span><span class="s2">%`</span><span class="p">;</span>
  <span class="nb">document</span><span class="p">.</span><span class="nf">querySelector</span><span class="p">(</span><span class="dl">"</span><span class="s2">.progress-label</span><span class="dl">"</span><span class="p">).</span><span class="nx">textContent</span> <span class="o">=</span> <span class="s2">`</span><span class="p">${</span><span class="nx">percent</span><span class="p">}</span><span class="s2">%`</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></div></div>

<p>Kod, gerçek yükleme oranına bir anda atlamak yerine ona kademeli biçimde yaklaşır. Ancak gösterge kullanıcıyı kandırmamalıdır. Gerçek işlem tamamlanmadan yüzde 100 göstermek, kısa vadede hızlı görünse de güven kaybına yol açabilir.</p>

<h2 id="beklemeyi-oynanışa-dönüştürmek">Beklemeyi oynanışa dönüştürmek</h2>

<p>Bazı oyunlar yüklemeyi dar geçitler, asansör yolculukları veya yavaş açılan kapılar içine saklar. Oyuncu hareket etmeye devam ettiği için teknik bekleme, kurgu dünyasının parçası olur. Buna karşılık aynı numara çok sık kullanılırsa oyuncular “Bu asansör aslında yükleme ekranı” diyerek perdenin arkasını görmeye başlar.</p>

<p>Respawn süreleri de bilinçli biçimde tasarlanır. Anında yeniden doğmak cezayı anlamsızlaştırabilir; aşırı uzun beklemek ise öfke yaratır. Takım oyunlarında bekleme süresi, oyuncuya haritayı izleme ve strateji kurma fırsatı veriyorsa pasif ceza olmaktan çıkar.</p>

<p>Başarılı zaman manipülasyonunun amacı oyuncuyu aldatmak değil, beklemeyi anlaşılır ve tahmin edilebilir kılmaktır. Geri bildirim verin, belirsizliği azaltın, mümkünse küçük bir kontrol alanı sunun. Saat aynı hızda ilerlese de oyuncunun zihnindeki kronometre böylece çok daha insaflı çalışır.</p>]]></content><author><name>Sonsuz Us</name></author><category term="Bilgi" /><category term="oyun tasarımı" /><category term="kullanıcı deneyimi" /><category term="zaman algısı" /><category term="yükleme ekranları" /><category term="oyuncu psikolojisi" /><category term="game development" /><summary type="html"><![CDATA[Bir oyunda geçen 30 saniye her zaman 30 saniye gibi hissedilmez. Çatışmanın ortasında göz açıp kapayıncaya kadar geçen bu süre, boş bir yükleme ekranında küçük bir sonsuzluğa dönüşebilir. Çünkü oyuncunun sabrı yalnızca kronometreyle değil; dikkat, beklenti, kontrol hissi ve sunulan geri bildirimle yönetilir. İyi oyun tasarımı zamanı hızlandıramasa bile beynin onu nasıl yorumladığını ustalıkla değiştirebilir.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://program.sonsuz.us/img/bir-dakika-mi-15.png" /><media:content medium="image" url="https://program.sonsuz.us/img/bir-dakika-mi-15.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Director AI: Oyun Zorluğunu Oyuncuya Göre Yöneten Görünmez Yönetmen</title><link href="https://program.sonsuz.us/posts/director-ai-oyun-zorlugunu-oyuncuya-gore-yoneten-gorunmez-yonetmen/" rel="alternate" type="text/html" title="Director AI: Oyun Zorluğunu Oyuncuya Göre Yöneten Görünmez Yönetmen" /><published>2026-10-27T00:00:00+00:00</published><updated>2026-10-27T00:00:00+00:00</updated><id>https://program.sonsuz.us/posts/director-ai-oyun-zorlugunu-oyuncuya-gore-yoneten-gorunmez-yonetmen</id><content type="html" xml:base="https://program.sonsuz.us/posts/director-ai-oyun-zorlugunu-oyuncuya-gore-yoneten-gorunmez-yonetmen/"><![CDATA[<p>Bir oyunda tam rahatladığınız anda zombilerin koridordan taşması tesadüf olmayabilir. <em>Left 4 Dead</em> gibi yapımlarda kullanılan Director AI, önceden hazırlanmış olayları sırayla oynatmak yerine oyuncuların durumunu izler, gerilim seviyesini tahmin eder ve karşılaşmaları dinamik biçimde düzenler. Kısacası bu sistem, oyun dünyasının görünmez film yönetmenidir.</p>

<p><img src="/img/director-ai-oyun-26.svg" alt="director-ai-oyun-26" /></p>

<p>``</p>

<h2 id="director-ai-tam-olarak-nedir">Director AI tam olarak nedir?</h2>

<p>Director AI, tek bir düşmanın nasıl hareket edeceğini belirleyen klasik yapay zekâdan farklıdır. Bireysel düşman AI’ı hedef seçme, siper alma veya yol bulma gibi yerel kararlarla ilgilenirken yönetmen sistemi bütün oyun deneyimini denetler.</p>

<table>
  <thead>
    <tr>
      <th>Sistem</th>
      <th>İzlediği ölçek</th>
      <th>Tipik karar</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Düşman AI</td>
      <td>Tek karakter</td>
      <td>Kime saldırmalıyım?</td>
    </tr>
    <tr>
      <td>Director AI</td>
      <td>Takım ve bölüm</td>
      <td>Ne zaman saldırı başlamalı?</td>
    </tr>
    <tr>
      <td>Sabit zorluk</td>
      <td>Önceden tanımlı kurallar</td>
      <td>Düşman ne kadar güçlü?</td>
    </tr>
    <tr>
      <td>Dinamik zorluk</td>
      <td>Anlık oyuncu performansı</td>
      <td>Baskı artırılmalı mı?</td>
    </tr>
  </tbody>
</table>

<p>Amaç oyuncuyu sürekli cezalandırmak değildir. İyi bir yönetmen; stres, rahatlama ve yeniden yükselişten oluşan dramatik bir ritim üretir. Kesintisiz baskı yorucu, sürekli kolaylık ise sıkıcıdır.</p>

<h2 id="oyuncunun-stresi-nasıl-ölçülür">Oyuncunun stresi nasıl ölçülür?</h2>

<p>Sistem doğrudan oyuncunun heyecanını okuyamaz; bunun yerine ölçülebilir sinyaller kullanır. Can miktarı, takım üyeleri arasındaki mesafe, isabet oranı, alınan hasar, cephane ve son saldırıdan beri geçen süre bunlardan bazılarıdır.</p>

<p>Basitleştirilmiş bir stres puanı şöyle hesaplanabilir:</p>

\[S = 0.35D + 0.25(1-H) + 0.20I + 0.20A\]

<p>Burada $D$ normalize edilmiş hasarı, $H$ kalan sağlık oranını, $I$ takımın dağılma seviyesini ve $A$ aktif düşman yoğunluğunu temsil eder. Katsayıların toplamının $1$ olması yorumlamayı kolaylaştırır. Örneğin $S$ değeri $1$’e yaklaştıkça oyuncuların baskı altında olduğu varsayılır.</p>

<p>Tek karelik ölçümler yanıltıcı olabileceğinden üstel hareketli ortalama kullanılabilir:</p>

\[S_t = \alpha x_t + (1-\alpha)S_{t-1}\]

<p>Küçük bir $\alpha$, sistemin ani değişimlere aşırı tepki vermesini engeller. Böylece tek bir kötü nişan, hemen devasa bir zombi sürüsüyle sonuçlanmaz.</p>

<h2 id="gerilim-döngüsü">Gerilim döngüsü</h2>

<p>Director AI genellikle deneyimi aşamalara böler:</p>

<ol>
  <li><strong>Hazırlık:</strong> Oyuncular kaynak toplar ve çevreyi inceler.</li>
  <li><strong>Yükseliş:</strong> Düşman sayısı veya özel tehdit olasılığı artar.</li>
  <li><strong>Zirve:</strong> Yoğun bir saldırı ya da kritik karşılaşma yaşanır.</li>
  <li><strong>Rahatlama:</strong> Baskı azaltılır, oyuncuya toparlanma fırsatı verilir.</li>
</ol>

<p>Bu döngü yalnızca düşman sayısını değiştirmez. Sağlık paketlerinin konumu, müzik, özel düşman türleri ve alternatif yollar da yönetilebilir. Ancak sistem oyuncuya açıkça yardım ederse yapaylık hissi doğar. Bu nedenle ayarlamalar çoğunlukla perde arkasında yapılır.</p>

<h2 id="basit-bir-yönetmen-prototipi">Basit bir yönetmen prototipi</h2>

<p>Aşağıdaki Python örneği, stres puanına göre yönetmenin hangi aşamaya geçeceğini gösterir:</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">class</span> <span class="nc">Director</span><span class="p">:</span>
    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="n">self</span><span class="p">):</span>
        <span class="n">self</span><span class="p">.</span><span class="n">stress</span> <span class="o">=</span> <span class="mf">0.0</span>
        <span class="n">self</span><span class="p">.</span><span class="n">phase</span> <span class="o">=</span> <span class="sh">"</span><span class="s">hazirlik</span><span class="sh">"</span>

    <span class="k">def</span> <span class="nf">update</span><span class="p">(</span><span class="n">self</span><span class="p">,</span> <span class="n">damage</span><span class="p">,</span> <span class="n">low_health</span><span class="p">,</span> <span class="n">isolation</span><span class="p">,</span> <span class="n">enemies</span><span class="p">):</span>
        <span class="n">sample</span> <span class="o">=</span> <span class="p">(</span>
            <span class="mf">0.35</span> <span class="o">*</span> <span class="n">damage</span>
            <span class="o">+</span> <span class="mf">0.25</span> <span class="o">*</span> <span class="n">low_health</span>
            <span class="o">+</span> <span class="mf">0.20</span> <span class="o">*</span> <span class="n">isolation</span>
            <span class="o">+</span> <span class="mf">0.20</span> <span class="o">*</span> <span class="n">enemies</span>
        <span class="p">)</span>

        <span class="c1"># Ölçümü yumuşatarak ani ve dengesiz kararları önler.
</span>        <span class="n">self</span><span class="p">.</span><span class="n">stress</span> <span class="o">=</span> <span class="mf">0.2</span> <span class="o">*</span> <span class="n">sample</span> <span class="o">+</span> <span class="mf">0.8</span> <span class="o">*</span> <span class="n">self</span><span class="p">.</span><span class="n">stress</span>

        <span class="k">if</span> <span class="n">self</span><span class="p">.</span><span class="n">stress</span> <span class="o">&lt;</span> <span class="mf">0.25</span><span class="p">:</span>
            <span class="n">self</span><span class="p">.</span><span class="n">phase</span> <span class="o">=</span> <span class="sh">"</span><span class="s">yukselis</span><span class="sh">"</span>
        <span class="k">elif</span> <span class="n">self</span><span class="p">.</span><span class="n">stress</span> <span class="o">&gt;</span> <span class="mf">0.75</span><span class="p">:</span>
            <span class="n">self</span><span class="p">.</span><span class="n">phase</span> <span class="o">=</span> <span class="sh">"</span><span class="s">rahatlama</span><span class="sh">"</span>
        <span class="k">else</span><span class="p">:</span>
            <span class="n">self</span><span class="p">.</span><span class="n">phase</span> <span class="o">=</span> <span class="sh">"</span><span class="s">denge</span><span class="sh">"</span>

        <span class="k">return</span> <span class="n">self</span><span class="p">.</span><span class="n">phase</span>
</code></pre></div></div>

<p>Buradaki önemli ayrıntı ters dengedir: stres düşükken tehdit artırılır, yüksekken oyuncuya nefes aldırılır. Gerçek projelerde eşiklerin sürekli aşılmasını önlemek için histerezis, aşamalar için minimum süre ve rastlantısal seçim ağırlıkları da eklenir.</p>

<h2 id="adil-görünmek-adil-olmaktan-farklıdır">Adil görünmek, adil olmaktan farklıdır</h2>

<p>Dinamik zorluk sisteminin en büyük riski oyuncunun başarılarını değersizleştirmesidir. İyi oynayan kişiye durmadan daha güçlü düşman göndermek, ilerleme hissini yok edebilir. Çözüm; zorluğu yalnızca sayısal güçle değil, karşılaşma çeşitliliği ve tempo üzerinden düzenlemektir.</p>

<p>Başarılı bir Director AI, oyuncunun ne kazanacağını belirlemez; unutulmaz bir mücadele yaşayabileceği koşulları hazırlar. En iyi yönetmen de zaten varlığını hissettirmeden sahneyi yöneten yönetmendir.</p>]]></content><author><name>Sonsuz Us</name></author><category term="Bilgi" /><category term="yapay zeka" /><category term="oyun geliştirme" /><category term="director ai" /><category term="dinamik zorluk" /><category term="left 4 dead" /><category term="oyuncu deneyimi" /><summary type="html"><![CDATA[Bir oyunda tam rahatladığınız anda zombilerin koridordan taşması tesadüf olmayabilir. Left 4 Dead gibi yapımlarda kullanılan Director AI, önceden hazırlanmış olayları sırayla oynatmak yerine oyuncuların durumunu izler, gerilim seviyesini tahmin eder ve karşılaşmaları dinamik biçimde düzenler. Kısacası bu sistem, oyun dünyasının görünmez film yönetmenidir.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://program.sonsuz.us/img/director-ai-oyun-26.png" /><media:content medium="image" url="https://program.sonsuz.us/img/director-ai-oyun-26.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Elektronik Sağlık Kayıtlarının Veri Mimarisi: Milyonlarca Hasta, Tek Bir Güvenli Sistem</title><link href="https://program.sonsuz.us/posts/elektronik-saglik-kayitlarinin-veri-mimarisi-milyonlarca-hasta-tek-bir-guvenli-sistem/" rel="alternate" type="text/html" title="Elektronik Sağlık Kayıtlarının Veri Mimarisi: Milyonlarca Hasta, Tek Bir Güvenli Sistem" /><published>2026-10-27T00:00:00+00:00</published><updated>2026-10-27T00:00:00+00:00</updated><id>https://program.sonsuz.us/posts/elektronik-saglik-kayitlarinin-veri-mimarisi-milyonlarca-hasta-tek-bir-guvenli-sistem</id><content type="html" xml:base="https://program.sonsuz.us/posts/elektronik-saglik-kayitlarinin-veri-mimarisi-milyonlarca-hasta-tek-bir-guvenli-sistem/"><![CDATA[<p><img src="/img/elektronik-saglik-kayitlarinin-22.svg" alt="elektronik-saglik-kayitlarinin-22" /></p>

<p>Bir hastanenin dijital altyapısını, hiç uyumayan dev bir organizma gibi düşünebiliriz. Muayene notları, laboratuvar sonuçları, reçeteler, röntgen görüntüleri ve alerji bilgileri sürekli bu organizmanın içinde dolaşır. Elektronik sağlık kaydı sistemlerinin görevi, milyonlarca hastaya ait bu verileri yalnızca saklamak değil; doğru kişiye, doğru zamanda ve güvenli biçimde ulaştırmaktır.
``</p>

<h2 id="sağlık-verisi-neden-sıradan-değildir">Sağlık verisi neden sıradan değildir?</h2>

<p>Bir e-ticaret sisteminde yanlış ürün önerilmesi can sıkıcıdır; sağlık sisteminde yanlış ilaç bilgisinin gösterilmesi ise hayati sonuçlar doğurabilir. Bu nedenle veri mimarisi üç temel hedef etrafında kurulur:</p>

<ul>
  <li><strong>Tutarlılık:</strong> Aynı hastanın kan grubu farklı ekranlarda farklı görünmemelidir.</li>
  <li><strong>Erişilebilirlik:</strong> Acil servisteki doktor kayda saniyeler içinde ulaşabilmelidir.</li>
  <li><strong>Gizlilik:</strong> Veriyi yalnızca yetkili kişiler, izin verilen amaçlarla görebilmelidir.</li>
</ul>

<p>Bir sistemin kullanılabilirliği kabaca şöyle ifade edilir:</p>

\[A = \frac{MTBF}{MTBF + MTTR}\]

<p>Burada $MTBF$, arızalar arasındaki ortalama süreyi; $MTTR$ ise sistemi onarmak için gereken ortalama süreyi gösterir. Sağlık platformlarında hedef genellikle %99,9 veya daha yüksek kullanılabilirliktir.</p>

<h2 id="katmanlı-mimari-nasıl-çalışır">Katmanlı mimari nasıl çalışır?</h2>

<p>Modern sağlık sistemleri tek bir dev veritabanından ziyade görevleri ayrılmış katmanlar kullanır.</p>

<table>
  <thead>
    <tr>
      <th>Katman</th>
      <th>Sorumluluk</th>
      <th>Örnek teknoloji</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>İstemci</td>
      <td>Doktor ve hasta ekranları</td>
      <td>Web, mobil uygulama</td>
    </tr>
    <tr>
      <td>API</td>
      <td>İstekleri doğrulama ve yönlendirme</td>
      <td>REST, GraphQL, FHIR</td>
    </tr>
    <tr>
      <td>Servis</td>
      <td>Reçete, randevu, laboratuvar işlemleri</td>
      <td>Mikroservisler</td>
    </tr>
    <tr>
      <td>Veri</td>
      <td>Yapısal kayıtları saklama</td>
      <td>PostgreSQL, Oracle</td>
    </tr>
    <tr>
      <td>Dosya</td>
      <td>Görüntü ve büyük belgeler</td>
      <td>Nesne depolama, PACS</td>
    </tr>
    <tr>
      <td>Analitik</td>
      <td>Raporlama ve araştırma</td>
      <td>Veri ambarı, veri gölü</td>
    </tr>
  </tbody>
</table>

<p>Hasta kimliği gibi ilişkisel ve tutarlı olması gereken bilgiler SQL veritabanlarında tutulabilir. MR görüntüleri ise çok büyük oldukları için PACS veya nesne depolama sistemlerine yerleştirilir; veritabanında yalnızca dosyanın adresi ve açıklayıcı metadatası bulunur.</p>

<h2 id="hasta-kayıtları-nasıl-modellenir">Hasta kayıtları nasıl modellenir?</h2>

<p>Temel yaklaşım, hastayı benzersiz bir kimlikle diğer klinik olaylara bağlamaktır. Basitleştirilmiş bir tablo şöyle oluşturulabilir:</p>

<div class="language-sql highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">observations</span> <span class="p">(</span>
    <span class="n">observation_id</span> <span class="nb">BIGINT</span> <span class="k">PRIMARY</span> <span class="k">KEY</span><span class="p">,</span>
    <span class="n">patient_id</span> <span class="nb">BIGINT</span> <span class="k">NOT</span> <span class="k">NULL</span><span class="p">,</span>
    <span class="n">code</span> <span class="nb">VARCHAR</span><span class="p">(</span><span class="mi">50</span><span class="p">)</span> <span class="k">NOT</span> <span class="k">NULL</span><span class="p">,</span>
    <span class="n">numeric_value</span> <span class="nb">DECIMAL</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="mi">2</span><span class="p">),</span>
    <span class="n">measured_at</span> <span class="nb">TIMESTAMP</span> <span class="k">NOT</span> <span class="k">NULL</span><span class="p">,</span>
    <span class="n">version_no</span> <span class="nb">INTEGER</span> <span class="k">NOT</span> <span class="k">NULL</span>
<span class="p">);</span>

<span class="k">CREATE</span> <span class="k">INDEX</span> <span class="n">idx_observation_patient_time</span>
<span class="k">ON</span> <span class="n">observations</span> <span class="p">(</span><span class="n">patient_id</span><span class="p">,</span> <span class="n">measured_at</span> <span class="k">DESC</span><span class="p">);</span>
</code></pre></div></div>

<p>Bu indeks, belirli bir hastanın en güncel ölçümlerine hızla ulaşılmasını sağlar. <code class="language-plaintext highlighter-rouge">version_no</code> alanı ise aynı kayıt eş zamanlı güncellenirken değişikliklerin yanlışlıkla birbirini ezmesini önleyen iyimser kilitlemede kullanılabilir.</p>

<h2 id="standartlar-neden-kritik">Standartlar neden kritik?</h2>

<p>Hastaneler farklı yazılımlar kullandığından sistemlerin ortak bir dil konuşması gerekir. <strong>HL7</strong>, klinik mesajlaşmada uzun süredir kullanılırken <strong>FHIR</strong>, sağlık kaynaklarını modern web API’leri üzerinden paylaşmayı kolaylaştırır. Görüntüleme tarafında ise <strong>DICOM</strong> standardı öne çıkar.</p>

<table>
  <thead>
    <tr>
      <th>Standart</th>
      <th>Kullanım alanı</th>
      <th>Güçlü yanı</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>HL7 v2</td>
      <td>Hastane içi mesajlaşma</td>
      <td>Yaygın ve olgun</td>
    </tr>
    <tr>
      <td>FHIR</td>
      <td>API tabanlı veri paylaşımı</td>
      <td>Web teknolojileriyle uyumlu</td>
    </tr>
    <tr>
      <td>DICOM</td>
      <td>Tıbbi görüntüler</td>
      <td>Görüntü ve metadatayı birleştirir</td>
    </tr>
  </tbody>
</table>

<h2 id="milyonlarca-kayıt-nasıl-ölçeklenir">Milyonlarca kayıt nasıl ölçeklenir?</h2>

<p>Veriler hasta kimliğine veya coğrafi bölgeye göre bölümlenebilir. Bu işleme <strong>sharding</strong> denir. Okuma yükünü azaltmak için replikalar ve önbellekler kullanılır. Yaklaşık depolama ihtiyacı şu şekilde hesaplanabilir:</p>

\[S = N \times R \times B\]

<p>Burada $N$ hasta sayısı, $R$ hasta başına kayıt sayısı, $B$ ise ortalama kayıt boyutudur. Görüntüler hesaba katıldığında ihtiyaç petabayt seviyesine çıkabilir.</p>

<h2 id="güvenlik-görünmez-bir-katman-değildir">Güvenlik görünmez bir katman değildir</h2>

<p>Veriler aktarım sırasında TLS, depolamada ise güçlü şifreleme algoritmalarıyla korunur. Rol tabanlı erişim kontrolü sayesinde doktor, teknisyen ve muhasebe çalışanı aynı bilgileri göremez. Her görüntüleme ve değişiklik denetim günlüğüne yazılır. Yedekler farklı bölgelerde saklanır ve düzenli olarak geri yükleme testleri yapılır.</p>

<p>Sonuç olarak elektronik sağlık kaydı mimarisi; veritabanı, standart, güvenlik ve dağıtık sistem mühendisliğinin birleşimidir. Başarılı bir sistem yalnızca büyük veriyi taşımaz; klinik kararların güvenilir, hızlı ve izlenebilir olmasını sağlar.</p>]]></content><author><name>Sonsuz Us</name></author><category term="Bilgi" /><category term="elektronik sağlık kaydı" /><category term="veri mimarisi" /><category term="sağlık bilişimi" /><category term="veritabanı" /><category term="fhir" /><category term="hl7" /><category term="siber güvenlik" /><summary type="html"><![CDATA[Bir hastanenin dijital altyapısını, hiç uyumayan dev bir organizma gibi düşünebiliriz. Muayene notları, laboratuvar sonuçları, reçeteler, röntgen görüntüleri ve alerji bilgileri sürekli bu organizmanın içinde dolaşır. Elektronik sağlık kaydı sistemlerinin görevi, milyonlarca hastaya ait bu verileri yalnızca saklamak değil; doğru kişiye, doğru zamanda ve güvenli biçimde ulaştırmaktır.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://program.sonsuz.us/img/elektronik-saglik-kayitlarinin-22.png" /><media:content medium="image" url="https://program.sonsuz.us/img/elektronik-saglik-kayitlarinin-22.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Genom Dizileme Verilerinin Biyoinformatik Analizi: Bazlardan Biyolojik Anlama</title><link href="https://program.sonsuz.us/posts/genom-dizileme-verilerinin-biyoinformatik-analizi-bazlardan-biyolojik-anlama/" rel="alternate" type="text/html" title="Genom Dizileme Verilerinin Biyoinformatik Analizi: Bazlardan Biyolojik Anlama" /><published>2026-10-27T00:00:00+00:00</published><updated>2026-10-27T00:00:00+00:00</updated><id>https://program.sonsuz.us/posts/genom-dizileme-verilerinin-biyoinformatik-analizi-bazlardan-biyolojik-anlama</id><content type="html" xml:base="https://program.sonsuz.us/posts/genom-dizileme-verilerinin-biyoinformatik-analizi-bazlardan-biyolojik-anlama/"><![CDATA[<p><img src="/img/genom-dizileme-verilerinin-43.svg" alt="genom-dizileme-verilerinin-43" /></p>

<p>Modern dizileme cihazları tek bir deneyde milyarlarca DNA bazı üretebilir. Ancak cihazdan çıkan A, T, G ve C harfleri tek başına pek anlamlı değildir. Bu devasa yapbozu çözmek; kısa DNA parçalarını referans genoma yerleştirmeyi, farklılıkları bulmayı ve sonuçların güvenilirliğini ölçmeyi gerektirir. İşte biyoinformatik, moleküler biyoloji ile algoritmaların el sıkıştığı noktada devreye girer.
``</p>

<h2 id="ham-veriden-genoma-uzanan-yol">Ham veriden genoma uzanan yol</h2>

<p>Dizileme sonucu çoğunlukla <strong>FASTQ</strong> dosyaları elde edilir. Her okuma, yani <em>read</em>, bir DNA dizisiyle birlikte baz kalitesini belirten sayısal değerlere sahiptir. Phred kalite skoru şu ilişkiyle tanımlanır:</p>

\[Q = -10 \log_{10}(P)\]

<p>Buradaki $P$, bazın yanlış okunma olasılığıdır. Örneğin $Q=30$, yaklaşık $P=0.001$ hata olasılığına, yani %99,9 doğruluğa karşılık gelir. Analizin ilk aşamasında FastQC gibi araçlarla kalite dağılımı, GC oranı ve adaptör kalıntıları incelenir. Düşük kaliteli uçlar ve adaptörler temizlenmezse sonraki algoritmalar biyolojik olmayan eşleşmeler üretebilir.</p>

<h2 id="hizalama-neden-zordur">Hizalama neden zordur?</h2>

<p>İnsan genomu yaklaşık 3,2 milyar baz çifti içerir. Buna karşılık tipik bir kısa okuma yalnızca 100–150 baz uzunluğundadır. Üstelik genomda tekrar eden bölgeler, dizileme hataları, eklemeler ve silinmeler bulunur. Dolayısıyla amaç yalnızca aynı metni aramak değil, küçük farklılıklara izin veren en olası konumu bulmaktır.</p>

<p>İki diziyi karşılaştıran klasik dinamik programlama yaklaşımında genel süre karmaşıklığı $O(nm)$ seviyesindedir. Milyonlarca okumada bu maliyet kabul edilemez. Modern hizalayıcılar bu yüzden genomu indeksler ve yalnızca umut vadeden bölgeleri ayrıntılı olarak değerlendirir.</p>

<table>
  <thead>
    <tr>
      <th>Yaklaşım</th>
      <th>Temel fikir</th>
      <th>Güçlü yanı</th>
      <th>Sınırlaması</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Needleman–Wunsch</td>
      <td>Dizileri uçtan uca hizalar</td>
      <td>Küresel hizalamada kesin sonuç</td>
      <td>Büyük veride yavaş</td>
    </tr>
    <tr>
      <td>Smith–Waterman</td>
      <td>En iyi yerel bölgeyi arar</td>
      <td>Hassas eşleşme</td>
      <td>Yüksek hesaplama maliyeti</td>
    </tr>
    <tr>
      <td>Hash indeksleri</td>
      <td>Kısa kelimeleri konumlarla eşler</td>
      <td>Hızlı aday bulma</td>
      <td>Bellek tüketebilir</td>
    </tr>
    <tr>
      <td>BWT/FM-index</td>
      <td>Sıkıştırılmış genom indeksi kullanır</td>
      <td>Hız ve bellek dengesi</td>
      <td>Tekrar bölgelerinde belirsizlik</td>
    </tr>
    <tr>
      <td>De Bruijn grafı</td>
      <td>Okumaları $k$-mer bağlantılarıyla birleştirir</td>
      <td>Referanssız genom montajı</td>
      <td>Hatalara ve $k$ seçimine duyarlı</td>
    </tr>
  </tbody>
</table>

<p>BWA ve Bowtie2 gibi araçlar <strong>Burrows–Wheeler Dönüşümü</strong> ile oluşturulan FM-index yapısından yararlanır. Böylece referans genomun tamamını her okuma için baştan taramak yerine eşleşme aralığı hızlı biçimde daraltılır. Uzun okumalar için Minimap2, dizilerden seçilmiş temsilci parçaları kullanarak aday konumları bulur.</p>

<h2 id="küçük-bir-dizi-karşılaştırma-örneği">Küçük bir dizi karşılaştırma örneği</h2>

<p>Aşağıdaki Python kodu, iki eşit uzunluklu dizinin farklı olduğu konumları belirler. Gerçek hizalayıcıların yaptığı iş çok daha karmaşıktır; ancak varyant bulmanın temel fikrini gösterir:</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">reference</span> <span class="o">=</span> <span class="sh">"</span><span class="s">ACGTTGCAACGT</span><span class="sh">"</span>
<span class="n">sample</span> <span class="o">=</span> <span class="sh">"</span><span class="s">ACGTCGCAATGT</span><span class="sh">"</span>

<span class="n">variants</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">position</span><span class="p">,</span> <span class="p">(</span><span class="n">ref_base</span><span class="p">,</span> <span class="n">sample_base</span><span class="p">)</span> <span class="ow">in</span> <span class="nf">enumerate</span><span class="p">(</span>
    <span class="nf">zip</span><span class="p">(</span><span class="n">reference</span><span class="p">,</span> <span class="n">sample</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="k">if</span> <span class="n">ref_base</span> <span class="o">!=</span> <span class="n">sample_base</span><span class="p">:</span>
        <span class="n">variants</span><span class="p">.</span><span class="nf">append</span><span class="p">({</span>
            <span class="sh">"</span><span class="s">position</span><span class="sh">"</span><span class="p">:</span> <span class="n">position</span><span class="p">,</span>
            <span class="sh">"</span><span class="s">reference</span><span class="sh">"</span><span class="p">:</span> <span class="n">ref_base</span><span class="p">,</span>
            <span class="sh">"</span><span class="s">sample</span><span class="sh">"</span><span class="p">:</span> <span class="n">sample_base</span>
        <span class="p">})</span>

<span class="k">for</span> <span class="n">variant</span> <span class="ow">in</span> <span class="n">variants</span><span class="p">:</span>
    <span class="nf">print</span><span class="p">(</span><span class="n">variant</span><span class="p">)</span>
</code></pre></div></div>

<p>Kod, referans ile örneği baz baz karşılaştırır ve değişen konumları kaydeder. Gerçek analizlerde GATK, FreeBayes veya DeepVariant gibi araçlar yalnızca harf farkına bakmaz; okuma derinliği, baz kalitesi ve hizalama güvenini de hesaba katar.</p>

<p>Bir varyantın destek oranı kabaca $f = a/d$ ile ifade edilebilir. Burada $a$ alternatif bazı destekleyen okuma sayısı, $d$ ise toplam kapsama derinliğidir. Örneğin 40 okumanın 20’si farklı bazı taşıyorsa $f=0.5$ olur; bu durum diploid bir genomda heterozigot varyanta işaret edebilir.</p>

<h2 id="sonuçların-biyolojik-yorumu">Sonuçların biyolojik yorumu</h2>

<p>Hizalama sonrasında SAM/BAM dosyaları düzenlenir, yinelenen okumalar işaretlenir ve varyantlar VCF biçiminde raporlanır. Ardından bulunan değişikliklerin genleri, proteinleri veya hastalık riskini etkileyip etkilemediği araştırılır. En hızlı algoritma bile kötü kaliteli veriyle güvenilir biyoloji üretemez. Bu nedenle genom analizi; doğru indeksleme, istatistiksel değerlendirme, kalite kontrolü ve biyolojik yorumun birlikte yürütüldüğü dikkatli bir süreçtir.</p>]]></content><author><name>Sonsuz Us</name></author><category term="Bilgi" /><category term="biyoinformatik" /><category term="genomik" /><category term="dna" /><category term="dizileme" /><category term="algoritma" /><category term="python" /><summary type="html"><![CDATA[Modern dizileme cihazları tek bir deneyde milyarlarca DNA bazı üretebilir. Ancak cihazdan çıkan A, T, G ve C harfleri tek başına pek anlamlı değildir. Bu devasa yapbozu çözmek; kısa DNA parçalarını referans genoma yerleştirmeyi, farklılıkları bulmayı ve sonuçların güvenilirliğini ölçmeyi gerektirir. İşte biyoinformatik, moleküler biyoloji ile algoritmaların el sıkıştığı noktada devreye girer.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://program.sonsuz.us/img/genom-dizileme-verilerinin-43.png" /><media:content medium="image" url="https://program.sonsuz.us/img/genom-dizileme-verilerinin-43.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Görünmez Öğretmen: Oyun Tasarımında Zımni Öğretim</title><link href="https://program.sonsuz.us/posts/gorunmez-ogretmen-oyun-tasariminda-zimni-ogretim/" rel="alternate" type="text/html" title="Görünmez Öğretmen: Oyun Tasarımında Zımni Öğretim" /><published>2026-10-27T00:00:00+00:00</published><updated>2026-10-27T00:00:00+00:00</updated><id>https://program.sonsuz.us/posts/gorunmez-ogretmen-oyun-tasariminda-zimni-ogretim</id><content type="html" xml:base="https://program.sonsuz.us/posts/gorunmez-ogretmen-oyun-tasariminda-zimni-ogretim/"><![CDATA[<p>Bir oyun size ekrana kocaman bir pencere açıp “Zıplamak için Space tuşuna bas!” demeden zıplamayı öğretebilir mi? Elbette. Hatta iyi tasarlanmış bir oyun, kurallarını açıktan anlatmak yerine merakınızı, çevreyi okuma yeteneğinizi ve deneme isteğinizi kullanır. İşte oyuncunun farkında olmadan öğrendiği bu yaklaşım, <strong>zımni öğretim</strong> veya İngilizce adıyla <em>implicit tutorial</em> olarak bilinir.</p>

<p><img src="/img/gorunmez-ogretmen-oyun-29.svg" alt="gorunmez-ogretmen-oyun-29" /></p>

<p>``</p>
<h2 id="zımni-öğretim-nedir">Zımni öğretim nedir?</h2>

<p>Zımni öğretim, oyunun mekaniklerini metin kutuları veya uzun açıklamalar yerine <strong>seviye düzeni, görsel ipuçları, güvenli deneyler ve sonuçlar</strong> aracılığıyla öğretmesidir. Tasarımcı oyuncuya doğrudan ne yapacağını söylemez; doğru davranışı keşfedebileceği kontrollü bir durum hazırlar.</p>

<p>Bu yaklaşımın temel döngüsü şöyle modellenebilir:</p>

\[Gözlem \rightarrow Deneme \rightarrow Geri\ Bildirim \rightarrow Öğrenme\]

<p>Örneğin oyuncunun önüne küçük bir çukur yerleştirilir. İlerlemek için zıplaması gerekir; fakat çukur ölümcül değildir. Oyuncu düşse bile kolayca geri çıkabilir. Böylece oyun hem zıplama gereksinimini gösterir hem de hata yapmayı cezalandırmadan denemeye izin verir.</p>

<h2 id="açık-ve-zımni-öğretimin-farkı">Açık ve zımni öğretimin farkı</h2>

<table>
  <thead>
    <tr>
      <th>Özellik</th>
      <th>Açık öğretim</th>
      <th>Zımni öğretim</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Bilgi aktarımı</td>
      <td>Metin, ses veya tuş göstergesi</td>
      <td>Seviye ve çevre düzeni</td>
    </tr>
    <tr>
      <td>Oyuncunun rolü</td>
      <td>Talimatı uygulamak</td>
      <td>Kuralı keşfetmek</td>
    </tr>
    <tr>
      <td>Akışa etkisi</td>
      <td>Oyunu durdurabilir</td>
      <td>Oynanışla bütünleşir</td>
    </tr>
    <tr>
      <td>Hatırlanabilirlik</td>
      <td>Okunan bilgi unutulabilir</td>
      <td>Deneyimlenen bilgi daha kalıcıdır</td>
    </tr>
    <tr>
      <td>Risk</td>
      <td>Bilgi bombardımanı</td>
      <td>İpucunun anlaşılmaması</td>
    </tr>
  </tbody>
</table>

<p>Zımni öğretim her durumda üstün değildir. Karmaşık envanter sistemleri veya erişilebilirlik seçenekleri açık açıklamalar gerektirebilir. İyi tasarım, iki yaklaşımı rakip değil tamamlayıcı araçlar olarak görür.</p>

<h2 id="seviye-tasarımı-nasıl-öğretmene-dönüşür">Seviye tasarımı nasıl öğretmene dönüşür?</h2>

<p>İlk yöntem <strong>odak yönetimidir</strong>. Işık, renk, hareket ve mimari çizgiler oyuncunun bakışını önemli noktaya taşır. Karanlık bir koridordaki tek parlak kapı, üzerinde “Buraya git” yazmasa da oldukça konuşkandır.</p>

<p>İkinci yöntem, yeni mekaniği güvenli bir ortamda tanıtmaktır. Oyuncu patlayan bir varili ilk kez düşmansız bir odada görürse ona ateş ederek sonucunu inceleyebilir. Daha sonra aynı varil düşmanların yanında kullanıldığında oyuncu bağlantıyı kendisi kurar.</p>

<p>Öğrenme başarısını basitçe şu şekilde düşünebiliriz:</p>

\[Öğrenme = İpucuNetliği \times DenemeFırsatı \times GeriBildirimGücü\]

<p>Çarpanlardan biri sıfıra yaklaşırsa öğretim de zayıflar. Parlayan bir nesne dikkat çekebilir; ancak oyuncu onunla etkileşime giremiyorsa anlamlı öğrenme oluşmaz.</p>

<h2 id="küçük-bir-tasarım-örneği">Küçük bir tasarım örneği</h2>

<p>Bir platform oyununda duvardan zıplama mekaniğini tanıttığımızı varsayalım. Seviyenin davranışı aşağıdaki sözde kodla ifade edilebilir:</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>oyuncu öğretim_odasına_girince:
    çıkışı yüksek bir noktaya yerleştir
    iki zıplanabilir duvarı karşılıklı konumlandır
    düşülen zemini güvenli yap

oyuncu duvara temas edince:
    karakteri kısa süre duvara tutundur
    görsel parçacık ve ses geri bildirimi üret

oyuncu çıkışa ulaşınca:
    aynı mekaniği düşük riskli bir engelde tekrar kullan
</code></pre></div></div>

<p>Bu kod gerçek bir oyun motoruna bağlı değildir; tasarımın mantığını gösterir. Yüksek çıkış hedefi belirler, karşılıklı duvarlar çözüm alanını sınırlar, güvenli zemin ise korkmadan denemeyi sağlar. Parçacık ve ses, duvarın özel bir davranış sunduğunu bildirir.</p>

<h2 id="tasarımcının-görünmez-eli">Tasarımcının görünmez eli</h2>

<p>Başarılı bir zımni öğretimde oyuncu “Tasarımcı bana bunu öğretti” demez; “Ben bunu çözdüm!” der. Bu sahiplenme duygusu motivasyonu artırır. Ancak ipuçları fazla belirgin olursa keşif hissi kaybolur, fazla belirsiz olursa oyuncu sıkışır.</p>

<p>Bu nedenle iyi bir seviye önce mekaniği <strong>gösterir</strong>, sonra güvenle <strong>denetir</strong>, ardından farklı bir bağlamda <strong>sınar</strong>. Oyuncu kuralları okumak yerine yaşar. Görünmez öğretmenin en büyük başarısı da ders verdiğini hiç belli etmemesidir.</p>]]></content><author><name>Sonsuz Us</name></author><category term="Bilgi" /><category term="oyun tasarımı" /><category term="seviye tasarımı" /><category term="zımni öğretim" /><category term="oyuncu deneyimi" /><category term="game design" /><category term="çevresel anlatım" /><summary type="html"><![CDATA[Bir oyun size ekrana kocaman bir pencere açıp “Zıplamak için Space tuşuna bas!” demeden zıplamayı öğretebilir mi? Elbette. Hatta iyi tasarlanmış bir oyun, kurallarını açıktan anlatmak yerine merakınızı, çevreyi okuma yeteneğinizi ve deneme isteğinizi kullanır. İşte oyuncunun farkında olmadan öğrendiği bu yaklaşım, zımni öğretim veya İngilizce adıyla implicit tutorial olarak bilinir.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://program.sonsuz.us/img/gorunmez-ogretmen-oyun-29.png" /><media:content medium="image" url="https://program.sonsuz.us/img/gorunmez-ogretmen-oyun-29.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry></feed>