folder Tahribat.com Forumları
linefolder Programlama Genel
linefolder Bir MYSQL Sorum Ve Bir De Node.Js+MYSQL Sorum [Uzman]



Bir MYSQL Sorum Ve Bir De Node.Js+MYSQL Sorum [Uzman]

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Retro
    by_Tet
    by_Tet's avatar
    Kayıt Tarihi: 22/Mayıs/2012
    Erkek

    Herkese çok teşekkür ederim. Başta @detCode ve @pSkpt olmak üzere. Node.js sorunum çözüldü. Şu şekilde açıklamalı olarak yazayım kodları:

    //Önce render'a atacağımız sıradan değişkenleri bi belirtelim
    var tum_render = [];
    tum_render.title = "Turan";
    tum_render.description = "Turan'ın websitesi";
    
    //Daha sonra kullanacağımız sql sorgularını sorgular ayrı isimler ayrı olmak üzere belirtelim
    var rastgeleQuery = "SELECT baslik,hit FROM icerik ORDER BY RAND() LIMIT 1";
    var son5Query = "SELECT baslik,hit FROM icerik LIMIT 5";
    
    var query_arr = [rastgeleQuery, son5Query];
    var query_name = ['rastgele', 'son5'];
    
    //bilgileri tanımladık şimdi fonksiyonları yazalım onlar da şöyle:
    
    //veritabanı sorgusu yapacak fonksiyon
    function runQuery(query_arr,sira){
        connection.query(query_arr[sira], function(err, rows, fields) {
            if (err) throw err;
            var obj = [];
            obj[query_name[sira]] = rows;
            sonuclar.push(obj);
            if (query_arr.length <= sira+1){
                sonuc();
            }else{
                runQuery(query_arr, sira+1);
            }
        });
     }
    
    //iki veya daha fazla objecti birleştiren fonksiyon kaynak: http://stackoverflow.com/questions/2454295/javascript-concatenate-properties-from-multiple-objects-associative-array
    function collect() {
          var ret = {};
          var len = arguments.length;
          for (var i=0; i<len; i++) {
            for (p in arguments[i]) {
              if (arguments[i].hasOwnProperty(p)) {
                ret[p] = arguments[i][p];
              }
            }
          }
          return ret;
    }
    
    //runQuery sonuçlandığında çalıştırılacak fonksiyon bi nevi callback
    function sonuc(){
            for(var x = 0; x<=sonuclar.length-1; x++){
                tum_render = collect(tum_render,sonuclar[x]);
            }
        console.log(tum_render);
        res.render('index', tum_render);
    }
    
    //Tüm bu kodlar [router.get('/' ....] içerisinde denendi. Node.js + Express Jade ve Mysql2 kütüphaneleri kullanıldı.

     


    iyibu! yeniden..
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Retro
    by_Tet
    by_Tet's avatar
    Kayıt Tarihi: 22/Mayıs/2012
    Erkek
    Daft bunu yazdı

    merak ettim neden nodejs

    Hocam muhtemelen tuzak soru  "Zaten node.js'in anlamı asenkron uygulama callbacklerle haşır neşir olman gerek yoksa ne için kullanıyorsun" gibi derin bir anlam çıkarttım ben :) 

    İşin açığı şöyle herkes gibi ben de "vaay demek non-time uygulama ha" diye node.js'e merak saldım ancak daha sonrası öyle gelişmedi. Konsola birkaç bişey yazıp eklenti yüklemek hazır yazılan biçok eklentinin devam edip etmediğine göre hareket etmek ve hemen her şey için (gerek c/c++ gibi native diller gerekse javascript ile olsun) eklentiler yazıldığını görünce hoşuma gitti. Ayrıca sadece web için değil çok güzel konsol uygulamaları veya mobile için native web uygulamaları yazılabiliyordu araştırdığım kadarıyla. Özellikle C/C++ ile eklenti yazmak en harika kısmı. Bir de hız olarak ben iddia ediyorum PHP ile yazdığın bir uygulamayı Node.js ile daha performanslı yazarsın. Benchmarkını felan bilemem işin açığı aynı kişi Node.js ile daha güzel web uygulamaları yazabilir benim görüşüm.

    Bir de tabi DigitalOcean gibi bir nimette 100$ promosyon kodum olunca tabi node kullanmak daha cazip geldi :D Tüm bunlar PHP'de de olabilir yoktur demiyorum ama host kavramıyla PHP'yi tanıdığım için Phalcon'u aldığım hostingciye yüklettirmeden kullanamadım belki kendi serverımda sürekli PHP kullansaydım iş daha başka boyutlara varabilirdi. 

    Yani kısaca asenkron olması veya çok büyük web sitelerinin sorunları için kullanılması benim kullanma sebebim değil hocam. Eğer meraktan soruyorsan işin ehli biçok kişi avantajlarını sunumlar halinde yazmış incelemeni tavsiye ederim; eğer tuzaksa da cevabım bu şekilde :)

     

    shock56 bunu yazdı

    Ben node.js veritabanı sorguları için knex.js kütüphanesini kullamıyorum. İstersen bu kütüphaneye bir göz at

    http://knexjs.org/

     

    Hocam MYSQL'e zaten alışkınız az çok knex'in tek avantajı bana sanırsam sql parametresini fonksiyonel olarak yazdırmak olur ona da gerek yok. Tam inceleme fırsatı bulamadım da ilk izlenimim bu oldu. Sağolasın

     

    pesimistzombie bunu yazdı

    random veri için 1 ve toplam kayıt arasında random sayı oluştur limit ile kullanarak veriyi nokta atışıyla çek.

    neden limit? id= şeklinde kullanırsan oluşturduğun sayı karşılığında id gelmezse karşına hata verecek o nedenle.

    Hocam öncelikle sağolasın: 6500 veri var hocam şuanlık çok da birşey değil ama ilerde daha da artacaktır. İngilizce kaynaklardan anladığım kadarıyla (ingilizce bilmiyorum) LIMIT 1243,1 gibi bir sorguda 1243 tanesini tek tek geçtikten sonra veriyi alıyormuş (heralde böyleydi sebep :D) yani onun da hantal olduğunu söylemişler. Şöyle bi algoritma arıyorum (bu ilk postta belirttiğim gibi sıkıntılı çalışıyor ama çok hızlı)

    SELECT name
      FROM random AS r1 JOIN
           (SELECT (RAND() *
                         (SELECT MAX(id)
                            FROM random)) AS id)
            AS r2
     WHERE r1.id >= r2.id
     ORDER BY r1.id ASC
     LIMIT 1;

     

    ozgunlu bunu yazdı

    Hocam öncelikle, Nodejs tek thread üzerinde çalışıyor. Callback fonksiyonlarını kullanman gerekiyor her seferinde. (Uzun cycle' lar alan işlemlerde (bkz. veritabanı işlemleri)

    Veritabanı işlemleri için https://www.npmjs.com/ hazır CRUD işlemleri yapan, package' lar bulabilirsin.

    En basitinden, while döngüsünü bile callback' siz yazarsan sıçtın demektir :)

     

    Aynen haklıymışsın hocam ben bodoslama "js ok jquery ok php ve asp ok html ve css de ok" tamam ya node.js'e başlayak diye başladığım için asenkronun kelime anlamını başıma gelene kadar öğrenmediğim için sıkıntı yaşadım. Sağolasın


    iyibu! yeniden..
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    YekteranBaymedir
    YekteranBaymedir's avatar
    Kayıt Tarihi: 10/Temmuz/2009
    Homo

    tuzak değildi sadece merak ettim

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Retro
    by_Tet
    by_Tet's avatar
    Kayıt Tarihi: 22/Mayıs/2012
    Erkek
    Daft bunu yazdı

    tuzak değildi sadece merak ettim

    Pardon ozaman hocam :) Söylediklerim geçerli o konuda pek çok sebebi var


    iyibu! yeniden..