1. 0
    bir fonksiyon çalıştıracağım. this değerinde plugin nesnesi var ve bunu fonksiyonun içinde kullanmak istiyorum. bu sebepten orjinal this kaybolmasın diye proxy() ile kuruyorum fakat bu sefer de tıklanan öğeye erişemiyorum? ikisine birden nasıl erişebiliri...

    bir fonksiyon çalıştıracağım. this değerinde plugin nesnesi var ve bunu fonksiyonun içinde kullanmak istiyorum. bu sebepten orjinal this kaybolmasın diye proxy() ile kuruyorum fakat bu sefer de tıklanan öğeye erişemiyorum? ikisine birden nasıl erişebilirim

    $(document).on('click', '.liste-oge', $.proxy(function(e)
    { 
       // burada tıklanan .liste-oge öğesine ulaşmam lazım
       // burada plugin this.refresh() komutu gelecek
    }, this));
    1. 0
      Merhabalar, bigorsel.com adresinde bulunan paylaşımların alt kısmına açıklama görseli indir vb şeyler yazıyor, buraya belirli bir karakter sınırı koymam gerek, zaten var ancak nerede olduğunu bulamadım kodlar arasında. Bu karakter sınırını isteğime göre d...

      Merhabalar, bigorsel.com adresinde bulunan paylaşımların alt kısmına açıklama görseli indir vb şeyler yazıyor, buraya belirli bir karakter sınırı koymam gerek, zaten var ancak nerede olduğunu bulamadım kodlar arasında. Bu karakter sınırını isteğime göre değiştirmek istiyorum temada sorun çıkarıyor çünkü. Yardımcı olabilecek arkadaşlar yazarlarsa çok memnun olurum.

      1. 0
        Soru soruldu Programlama PHP 1 ay önce
        d4mncoder
        Ünvan yok
        Anlık olarak yeni mesaj var mı diye veritabanını long pollingle kontrol ediyorum. Çalışıyor fakat ilk ajax gittikten sonra tüm site donuyor. Yeni sekmede açsam bile site açılmıyor. Neden kaynaklanıyor olabilir?js bu şekilde(function mesajlariAl(url){ $...

        Anlık olarak yeni mesaj var mı diye veritabanını long pollingle kontrol ediyorum. Çalışıyor fakat ilk ajax gittikten sonra tüm site donuyor. Yeni sekmede açsam bile site açılmıyor. Neden kaynaklanıyor olabilir?

        js bu şekilde

        (function mesajlariAl(url){
          $.ajax({ url: url, success: function(data){
            //Yazdır
            $('#mesaj_liste').append(data.mesajlar);
          }, dataType: "json", complete: mesajlariAl, timeout: 30000 });
        })();

        Codeigniter'da controller bu şekilde

        set_time_limit(0);
        
        while(true){
        $mesajVarMi = $this->mesaj_model->yeniVarMi($kullanici_id);
            if($mesajVarMi){
                $data['durum'] = 1;
                $data['mesajlar'] = $this->mesaj_model->yeniMesajlariGetir($kullanici_id);
                
                echo json_encode($data);
                
                break;
            }else{
                sleep( 1 );
                continue;
            }    
        }
        
        1. 2
          Veritabanından rastgele sonuçlar getirmek için genelde şöyle bir sorgu kullanırızSELECT * FROM deneme ORDER BY RAND() LIMIT 5Bu sorgu deneme tablosundan 5 adet rastgele sonuç getirir. Fakat bu rastgele sonuçlar getirmek için çok kötü bir yol. Tablonuzda 1...

          Veritabanından rastgele sonuçlar getirmek için genelde şöyle bir sorgu kullanırız

          SELECT * FROM deneme ORDER BY RAND() LIMIT 5

          Bu sorgu deneme tablosundan 5 adet rastgele sonuç getirir. Fakat bu rastgele sonuçlar getirmek için çok kötü bir yol.

          Tablonuzda 100-200 kayıt varsa problem yok da ya yüzbinlerce kayıt varsa?

          Diyelim ki 50 bin satırlık bir tablomuz var ve RAND() fonksiyonu yardımıyla böyle bir sorgu çalıştırdık, arka planda neler olur? 50 bin satırın her biri için random bir sayı oluşturulur, tüm tablo buna göre sıralanır ve istediğiniz kesit bundan sonra getirilir! Tablonuz ne kadar büyükse veritabanına yükleyeceğiniz yük o kadar artacaktır. Tablo büyüdükçe sorgu hızı bakın nasıl düşüyor.

          drmpbsca4pvjqcwcdsig

          Dolayısıyla rastgele sonuçlar getirmek için RAND() kullanmak büyük tablolar için tam bir performans katliamı olacaktır.

          Peki ne yapacağız? Rastgeleliği veritabanı seviyesinde değil yazılım seviyesinde elde edeceğiz. Bunun için kullandığınız yazılım dilinde rastgele sayı üretebilirsiniz. Fakat rastgele üretilen sayının veritabanındaki kayıtlardan çok olmaması gerekiyor, bu yüzden önce tabloda kaç kayıt olduğunu küçük bir sorguyla getirin.

          $toplam_sayi = SELECT COUNT(id) FROM deneme;
          $rastgele_sayi = rand(1, $toplam_sayi);
          SELECT * FROM deneme LIMIT 5 OFFSET $rastgele_sayi;

          Bu şekilde OFFSET'i rastgele bir kayıttan başlatarak rastgele 5 kayıt getiriyoruz. Bir yerine iki sorgu olması kafa karıştırmasın çünkü toplam sayıyı sorgulamak için çalıştırılan sorgu performans açısından sıkıntı yaratmayacak kadar küçük bir işlem ve diğer seçenekden çok daha hızlı.

          Bu yöntemin handikapı rastgele bir başlangıç noktası belirleyip sırasıyla 5 sonuç getirmesidir. Diyelim ki $rastgele_sayi 100 olduğu sürece hep 100'den 105'e kadar olan kayıtlar gelecektir. Eğer bu istenmeyen bir durumsa farklı yollar denenebilir. Böyle bir durumda getirilecek kayıt sayısı kadar rastgele id üretilerek bir sorgu oluşturulabilir.

          // Tablodaki kayıtlardan en büyük id'yi getirelim
          $max_id = SELECT MAX(id) FROM deneme;
          
          /* Yazılım seviyesinde 1 ile $max_id arasında rastgele sayılar üretelim. 
           * Tablonuzda bazı kayıtların silinmiş olma ihtimali yüksektir. 
           * Bu yüzden 5 kayıt getirmek istesek de 3-5 katı kadar rastgele id seçelim.
           */
          for($i = 1; $i < 30; $i++){
              $rastgele_idler[] = rand(1, $max_id);
          }
          
          // Bu id'leri IN() sorgusu içinde çalışabilecek şekilde virgülle ayrılmış satır haline getirelim
          $rastgele_idler = join($rastgele_idler, ',');
          
          // Sorguyu yazalım ve istediğimiz limiti belirleyelim
          SELECT * FROM deneme WHERE id IN ($rastgele_idler) LIMIT 5;

          Bu iki yöntemin RAND() kullanmaktan nasıl daha hızlı olduğunu ilk tablo ile aşağıdakini karşılaştırarak görebiliriz.

          mrlqoviof03f3dhzm1b0

          Bu arada sorguları gerçek bir benchmarka tabi tutmak lazım, ben gelişigüzel konsoldan denedim kabaca gösterebilmek için.

          Random sonuçlar getirmek veritabanları için gördüğünüz gibi biraz problemli. Hatta bildiğim bazı ORM'ler RAND() fonksiyonunu bu sebeple desteklemiyor.

          Hem kendi çözüm yöntemimi aktarmak, hem de başka fikirleri tecrübesi olanlardan almak istedim.

          1. 2
            Bağlantı paylaşıldı Gündem ve Haberler Programlama Siyaset Web 1 ay önce
            www.sozcu.com.tr
            Bar Halkinov
            Ünvan yok
            Google Drive, OneDrive ve Dropbox'tan sonra Github'ı da engellemişler. Pire için yorgan yakmak bu olsagerek. Sadece ilgili sayfaya erişim engellenemiyor mu neden komple siteler yasaklanıyor?Konuyu bilmeyenler için not: RedHack Berat Albayrak'ın maillerini...

            Google Drive, OneDrive ve Dropbox'tan sonra Github'ı da engellemişler. Pire için yorgan yakmak bu olsagerek.

            Sadece ilgili sayfaya erişim engellenemiyor mu neden komple siteler yasaklanıyor?

            Konuyu bilmeyenler için not: RedHack Berat Albayrak'ın maillerini hackleyip bu sitelere yükledi, mevzu bu.

            36
            başlıklar
            20
            takipçiler
            Bu Pano Hakkında
            Bu pano programlamayla ilgili genel panodur.

            Burada yazılımla ilgili soru sorarak başkalarından yardım alabilir, sektörle ilgili gelişmeleri paylaşabilir veya konuyla ilgili herhangi bir şeyi tartışabilirsiniz.