<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[BotBB - Web Otomasyonu, Bot Mimarileri ve Scraping Topluluğu - Hazir Script & Kod Bankasi]]></title>
		<link>https://botbb.tr/</link>
		<description><![CDATA[BotBB - Web Otomasyonu, Bot Mimarileri ve Scraping Topluluğu - https://botbb.tr]]></description>
		<pubDate>Mon, 19 Oct 2026 19:48:36 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[Optimizasyon: Fiyat Değişmediğinde JSON Logunu Şişirmeme (Delta Loglama Yöntemi)]]></title>
			<link>https://botbb.tr/Thread-optimizasyon-fiyat-de%C4%9Fi%C5%9Fmedi%C4%9Finde-json-logunu-%C5%9Fi%C5%9Firmeme-delta-loglama-y%C3%B6ntemi</link>
			<pubDate>Sat, 17 Oct 2026 19:43:33 +0800</pubDate>
			<dc:creator><![CDATA[<a href="https://botbb.tr/member.php?action=profile&uid=1">admin</a>]]></dc:creator>
			<guid isPermaLink="false">https://botbb.tr/Thread-optimizasyon-fiyat-de%C4%9Fi%C5%9Fmedi%C4%9Finde-json-logunu-%C5%9Fi%C5%9Firmeme-delta-loglama-y%C3%B6ntemi</guid>
			<description><![CDATA[<span style="font-size: x-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Optimizasyon: Fiyat Değişmediğinde JSON Logunu Şişirmeme (Delta Loglama Yöntemi)</span></span><br />
<br />
Fiyat takip botları 7/24 çalışırken (örneğin 30 dakikada bir kontrol yaparken), fiyat haftalarca aynı kalabilir. Her kontrolde JSON dosyasına aynı fiyatı yazmak iki büyük soruna yol açar:<br />
<ol type="1" class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Gereksiz Dosya Boyutu:</span> 10 ürün için günde yüzlerce tekrarlanan satır oluşur ve JSON dosyası megabaytlarca şişer.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Grafik ve Analiz Kirliliği:</span> İleride fiyat grafiği çizdirmek istediğinizde aynı fiyatın binlerce kopyası grafiği anlamsız şekilde uzatır.<br />
</li>
</ol>
<br />
Bunun çözümü <span style="font-weight: bold;" class="mycode_b">Delta Loglama (Sadece Değişimleri Kaydetme)</span> mantığıdır: Bot yeni fiyatı aldığında dosyadaki <span style="font-weight: bold;" class="mycode_b">en son kayıtlı fiyata</span> bakar; fiyat kuruşu kuruşuna aynıysa dosyaya dokunmaz, yalnızca fiyat değişmişse (artmış veya azalmışsa) arşive yeni bir satır ekler.<br />
<br />
<hr class="mycode_hr" />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">1. Optimize Edilmiş `fiyatKaydet()` Fonksiyonu</span></span><br />
<br />
Mevcut scriptinizdeki `fiyatKaydet` fonksiyonunu aşağıdaki mantıkla güncelleyin:<br />
<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>/**
 * Yalnızca fiyat değiştiğinde JSON dosyasına log atan optimize fonksiyon
 */
function fiyatKaydet(urunAdi, guncelFiyat) {
  let gecmisVeri = {};

  // 1. Mevcut JSON dosyasını oku
  if (fs.existsSync(LOG_DOSYASI)) {
    try {
      const hamIcerik = fs.readFileSync(LOG_DOSYASI, 'utf8');
      gecmisVeri = hamIcerik ? JSON.parse(hamIcerik) : {};
    } catch (e) {
      gecmisVeri = {};
    }
  }

  // 2. Bu ürünün geçmiş kayıt listesini al (yoksa boş dizi aç)
  if (!gecmisVeri[urunAdi]) {
    gecmisVeri[urunAdi] = [];
  }

  const urunKayitlari = gecmisVeri[urunAdi];

  // 3. KONTROL: Ürünün son kayıtlı fiyatına bak
  if (urunKayitlari.length &gt; 0) {
    const sonKayit = urunKayitlari[urunKayitlari.length - 1];
    
    // Fiyat değişmemişse diske yazma işlemini pas geç
    if (sonKayit.fiyat === guncelFiyat) {
      console.log(`ℹ️ [Fiyat Sabit] &#36;{urunAdi} hala &#36;{guncelFiyat} TL (Log atlanıyor).`);
      return false; // Değişim olmadığını bildirmek için false döner
    }

    // Fiyat değiştiyse konsola ne kadar değiştiğini yazdır
    const fark = (guncelFiyat - sonKayit.fiyat).toFixed(2);
    const durum = fark &gt; 0 ? `+&#36;{fark} TL (Zam)` : `&#36;{fark} TL (İndirim)`;
    console.log(`? [Fiyat Değişti] &#36;{urunAdi}: &#36;{sonKayit.fiyat} TL ➔ &#36;{guncelFiyat} TL (&#36;{durum})`);
  } else {
    // Ürün dosyaya ilk defa ekleniyorsa
    console.log(`? [İlk Kayıt] &#36;{urunAdi} sisteme eklendi: &#36;{guncelFiyat} TL`);
  }

  // 4. Yeni kaydı oluştur ve arşive ekle
  const simdi = new Date();
  const yeniKayit = {
    tarih: simdi.toLocaleDateString('tr-TR'),
    saat: simdi.toLocaleTimeString('tr-TR'),
    fiyat: guncelFiyat
  };

  urunKayitlari.push(yeniKayit);

  // 5. Dosyaya yaz
  fs.writeFileSync(LOG_DOSYASI, JSON.stringify(gecmisVeri, null, 2), 'utf8');
  return true; // Değişim olduğunu bildirmek için true döner
}</code></div></div><br />
<hr class="mycode_hr" />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">2. Elde Ettiğimiz Avantajlar</span></span><br />
<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">%95 Disk Tasarrufu:</span> Fiyatı 1 ay boyunca değişmeyen bir ürün için 1440 satır yerine sadece 1 satır veri saklarsınız.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">SSD/Disk Ömrü:</span> Her 30 dakikada bir diske sürekli I/O (yazma) işlemi yapılmaz, sadece piyasa oynadığında diske yazılır.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Net Fiyat Eğrisi:</span> Grafiğe veya Excel'e aktardığınızda her satır gerçek bir piyasa hareketini (zam veya indirim anını) temsil eder.<br />
</li>
</ul>
<br />
<blockquote class="mycode_quote"><cite>Alıntı:</cite><span style="font-weight: bold;" class="mycode_b">İpucu:</span> Bu fonksiyondan dönen `true` veya `false` değerini kullanarak; sadece fiyat gerçekten değiştiğinde Telegram'a <span style="font-style: italic;" class="mycode_i">"X ürününün fiyatı güncellendi!"</span> şeklinde bilgilendirme mesajı da attırabilirsiniz.</blockquote>
]]></description>
			<content:encoded><![CDATA[<span style="font-size: x-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Optimizasyon: Fiyat Değişmediğinde JSON Logunu Şişirmeme (Delta Loglama Yöntemi)</span></span><br />
<br />
Fiyat takip botları 7/24 çalışırken (örneğin 30 dakikada bir kontrol yaparken), fiyat haftalarca aynı kalabilir. Her kontrolde JSON dosyasına aynı fiyatı yazmak iki büyük soruna yol açar:<br />
<ol type="1" class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Gereksiz Dosya Boyutu:</span> 10 ürün için günde yüzlerce tekrarlanan satır oluşur ve JSON dosyası megabaytlarca şişer.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Grafik ve Analiz Kirliliği:</span> İleride fiyat grafiği çizdirmek istediğinizde aynı fiyatın binlerce kopyası grafiği anlamsız şekilde uzatır.<br />
</li>
</ol>
<br />
Bunun çözümü <span style="font-weight: bold;" class="mycode_b">Delta Loglama (Sadece Değişimleri Kaydetme)</span> mantığıdır: Bot yeni fiyatı aldığında dosyadaki <span style="font-weight: bold;" class="mycode_b">en son kayıtlı fiyata</span> bakar; fiyat kuruşu kuruşuna aynıysa dosyaya dokunmaz, yalnızca fiyat değişmişse (artmış veya azalmışsa) arşive yeni bir satır ekler.<br />
<br />
<hr class="mycode_hr" />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">1. Optimize Edilmiş `fiyatKaydet()` Fonksiyonu</span></span><br />
<br />
Mevcut scriptinizdeki `fiyatKaydet` fonksiyonunu aşağıdaki mantıkla güncelleyin:<br />
<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>/**
 * Yalnızca fiyat değiştiğinde JSON dosyasına log atan optimize fonksiyon
 */
function fiyatKaydet(urunAdi, guncelFiyat) {
  let gecmisVeri = {};

  // 1. Mevcut JSON dosyasını oku
  if (fs.existsSync(LOG_DOSYASI)) {
    try {
      const hamIcerik = fs.readFileSync(LOG_DOSYASI, 'utf8');
      gecmisVeri = hamIcerik ? JSON.parse(hamIcerik) : {};
    } catch (e) {
      gecmisVeri = {};
    }
  }

  // 2. Bu ürünün geçmiş kayıt listesini al (yoksa boş dizi aç)
  if (!gecmisVeri[urunAdi]) {
    gecmisVeri[urunAdi] = [];
  }

  const urunKayitlari = gecmisVeri[urunAdi];

  // 3. KONTROL: Ürünün son kayıtlı fiyatına bak
  if (urunKayitlari.length &gt; 0) {
    const sonKayit = urunKayitlari[urunKayitlari.length - 1];
    
    // Fiyat değişmemişse diske yazma işlemini pas geç
    if (sonKayit.fiyat === guncelFiyat) {
      console.log(`ℹ️ [Fiyat Sabit] &#36;{urunAdi} hala &#36;{guncelFiyat} TL (Log atlanıyor).`);
      return false; // Değişim olmadığını bildirmek için false döner
    }

    // Fiyat değiştiyse konsola ne kadar değiştiğini yazdır
    const fark = (guncelFiyat - sonKayit.fiyat).toFixed(2);
    const durum = fark &gt; 0 ? `+&#36;{fark} TL (Zam)` : `&#36;{fark} TL (İndirim)`;
    console.log(`? [Fiyat Değişti] &#36;{urunAdi}: &#36;{sonKayit.fiyat} TL ➔ &#36;{guncelFiyat} TL (&#36;{durum})`);
  } else {
    // Ürün dosyaya ilk defa ekleniyorsa
    console.log(`? [İlk Kayıt] &#36;{urunAdi} sisteme eklendi: &#36;{guncelFiyat} TL`);
  }

  // 4. Yeni kaydı oluştur ve arşive ekle
  const simdi = new Date();
  const yeniKayit = {
    tarih: simdi.toLocaleDateString('tr-TR'),
    saat: simdi.toLocaleTimeString('tr-TR'),
    fiyat: guncelFiyat
  };

  urunKayitlari.push(yeniKayit);

  // 5. Dosyaya yaz
  fs.writeFileSync(LOG_DOSYASI, JSON.stringify(gecmisVeri, null, 2), 'utf8');
  return true; // Değişim olduğunu bildirmek için true döner
}</code></div></div><br />
<hr class="mycode_hr" />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">2. Elde Ettiğimiz Avantajlar</span></span><br />
<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">%95 Disk Tasarrufu:</span> Fiyatı 1 ay boyunca değişmeyen bir ürün için 1440 satır yerine sadece 1 satır veri saklarsınız.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">SSD/Disk Ömrü:</span> Her 30 dakikada bir diske sürekli I/O (yazma) işlemi yapılmaz, sadece piyasa oynadığında diske yazılır.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Net Fiyat Eğrisi:</span> Grafiğe veya Excel'e aktardığınızda her satır gerçek bir piyasa hareketini (zam veya indirim anını) temsil eder.<br />
</li>
</ul>
<br />
<blockquote class="mycode_quote"><cite>Alıntı:</cite><span style="font-weight: bold;" class="mycode_b">İpucu:</span> Bu fonksiyondan dönen `true` veya `false` değerini kullanarak; sadece fiyat gerçekten değiştiğinde Telegram'a <span style="font-style: italic;" class="mycode_i">"X ürününün fiyatı güncellendi!"</span> şeklinde bilgilendirme mesajı da attırabilirsiniz.</blockquote>
]]></content:encoded>
		</item>
	</channel>
</rss>