folder Tahribat.com Forumları
linefolder Programlamaya Giriş
linefolder Programlama Tekniği (-Var Mı) ?



Programlama Tekniği (-Var Mı) ?

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Ayro
    Ayro's avatar
    Kayıt Tarihi: 08/Ağustos/2005
    Erkek
    trampfd bunu yazdı

    Tam olarak aklındaki senaryoyu anlat ben sana bir code reviewer olarak en doğru nasıl yazman gerektiğini açıklayayım.

    Yazdığın kodlar korkunç derecede yanlış ve thread safety açısından sakıncalı, her seferinde dosya sistemine bakıp bir dosyanın olup olmadığını check edip ardından bir koşula göre include yapan bir kod bloğuna profesyonel bir web uygulamasında rastladın mı? 

    İşte bu yüzden algoritma mantığın da yanlış büyük ihtimalle.

    hocam try-catch olur ; başka birşey olur mantığı anlatıyorum.

    Yani bir sürü sorgudan kurtuluyor. Mantığı anlatmak için söyledim. tek if , tek try-catch daha direkt sonuç sağlıyor.

    ---

    Burada önemli kısım ; tek veri için 3 milyon'a birden if-else yaptırtmamak.

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    trampfd
    trampfd's avatar
    Kayıt Tarihi: 10/Mayıs/2006
    Erkek
    zumsuk bunu yazdı
    trampfd bunu yazdı

    Tam olarak aklındaki senaryoyu anlat ben sana bir code reviewer olarak en doğru nasıl yazman gerektiğini açıklayayım.

    Yazdığın kodlar korkunç derecede yanlış ve thread safety açısından sakıncalı, her seferinde dosya sistemine bakıp bir dosyanın olup olmadığını check edip ardından bir koşula göre include yapan bir kod bloğuna profesyonel bir web uygulamasında rastladın mı? 

    İşte bu yüzden algoritma mantığın da yanlış büyük ihtimalle.

    hocam try-catch olur ; başka birşey olur mantığı anlatıyorum.

    Yani bir sürü sorgudan kurtuluyor. Mantığı anlatmak için söyledim. tek if , tek try-catch daha direkt sonuç sağlıyor.

    ---

    Burada önemli kısım ; tek veri için 3 milyon'a birden if-else yaptırtmamak.

    Bir sürü sorgu ve milyon kere dönen if-else / while / for / try-catch yani kısaca alayı zaten yanlış, 3 milyon kayıdı bir anda dbden alman zaten yanlışlığın başlangıcı oluyor, sonrasında ne yaparsan yap zaten hatalı mantıkla ilerliyorsun.

    Db den gereken veriyi gereken koşulla alırsın işlemini yaparsın. 1 byte bile fazladan veri alman hatalı yaklaşıma girer.

     


    Ehl-i Byte
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Ayro
    Ayro's avatar
    Kayıt Tarihi: 08/Ağustos/2005
    Erkek
    trampfd bunu yazdı
    zumsuk bunu yazdı
    trampfd bunu yazdı

    Tam olarak aklındaki senaryoyu anlat ben sana bir code reviewer olarak en doğru nasıl yazman gerektiğini açıklayayım.

    Yazdığın kodlar korkunç derecede yanlış ve thread safety açısından sakıncalı, her seferinde dosya sistemine bakıp bir dosyanın olup olmadığını check edip ardından bir koşula göre include yapan bir kod bloğuna profesyonel bir web uygulamasında rastladın mı? 

    İşte bu yüzden algoritma mantığın da yanlış büyük ihtimalle.

    hocam try-catch olur ; başka birşey olur mantığı anlatıyorum.

    Yani bir sürü sorgudan kurtuluyor. Mantığı anlatmak için söyledim. tek if , tek try-catch daha direkt sonuç sağlıyor.

    ---

    Burada önemli kısım ; tek veri için 3 milyon'a birden if-else yaptırtmamak.

    Bir sürü sorgu ve milyon kere dönen if-else / while / for / try-catch yani kısaca alayı zaten yanlış, 3 milyon kayıdı bir anda dbden alman zaten yanlışlığın başlangıcı oluyor, sonrasında ne yaparsan yap zaten hatalı mantıkla ilerliyorsun.

    Db den gereken veriyi gereken koşulla alırsın işlemini yaparsın. 1 byte bile fazladan veri alman hatalı yaklaşıma girer.

     

    Hocam sorun şu zaten ; ortada algoritma, olay, sorun yok.

    Dediğim gibi fantazi. 

    Olayın temeli bir kaç sene önce facebook'ta Mark Zückerberg'in profilinin like olmasıyla aklıma takıldı. Dedim milyonlarca kullanıcı var. Sürekli aktif. Her seferinde

    if markzückerberg 

    diye sorgutlatmıyordur. Sonra fantaziye kaçtı işte. Elimde bir örnek, bir sorun birşey olsa ; zaten keyword ile aratıcam. Bir nevi beyin fırtınası , benzer birşey var mı , bu tarz birşey var mı  diye bakmak.

    Yukarıdaki modül örneğine benziyor. 3 milyon modül olsa ; bunu switch-case ile yada if-else ile denemek yerine ; bu şekilde yapmak zaman kazandıracak. Performans kazandıracak.

    Buunla ilgili bir sorunum, takıldığım konu yok. Hatta tam olarak örnek bile yok elimde. Olayın özü şu ; 3 milyon kayıt için (ki 5 milyon yada 8 bin fark etmez , 3 milyon sadece sayı) ;

    3 milyon kayıt için farklı 3 milyon şey yaptıracak olsam bunu if/else harici nasıl yaparım (ki bu veriler database'den gelecek).

    Dediğim gibi tamamen fantazi.

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    kvasir
    kvasir's avatar
    Kayıt Tarihi: 24/Ağustos/2005
    Erkek
    trampfd bunu yazdı
    zumsuk bunu yazdı
    trampfd bunu yazdı

    Tam olarak aklındaki senaryoyu anlat ben sana bir code reviewer olarak en doğru nasıl yazman gerektiğini açıklayayım.

    Yazdığın kodlar korkunç derecede yanlış ve thread safety açısından sakıncalı, her seferinde dosya sistemine bakıp bir dosyanın olup olmadığını check edip ardından bir koşula göre include yapan bir kod bloğuna profesyonel bir web uygulamasında rastladın mı? 

    İşte bu yüzden algoritma mantığın da yanlış büyük ihtimalle.

    hocam try-catch olur ; başka birşey olur mantığı anlatıyorum.

    Yani bir sürü sorgudan kurtuluyor. Mantığı anlatmak için söyledim. tek if , tek try-catch daha direkt sonuç sağlıyor.

    ---

    Burada önemli kısım ; tek veri için 3 milyon'a birden if-else yaptırtmamak.

    Bir sürü sorgu ve milyon kere dönen if-else / while / for / try-catch yani kısaca alayı zaten yanlış, 3 milyon kayıdı bir anda dbden alman zaten yanlışlığın başlangıcı oluyor, sonrasında ne yaparsan yap zaten hatalı mantıkla ilerliyorsun.

    Db den gereken veriyi gereken koşulla alırsın işlemini yaparsın. 1 byte bile fazladan veri alman hatalı yaklaşıma girer.

     

    server-side diller konusunda uzman olmayan biri olarak zumsuk şöyle dedi diye anladım : "Bir koşul çalıştırdığımız zaman sistem bu koşula uyuyor mu diye tüm verilere bakacak, bu da yorucu bir işlem". Mantıken böyle, eşleşen kayıt bulmak için aramak gerek, arama buradaki sıkıntı. Onun yerine kolayca ulaşmak istiyor.

    trampfd senin yazını okurken aklıma gelen ise "Veritabanı motorları zaten kaybı önleyen bir algoritmaya sahip sen bunu aşıyorsan yanlış birşey yapıyorsun" mu?

  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    trampfd
    trampfd's avatar
    Kayıt Tarihi: 10/Mayıs/2006
    Erkek
    VBDream bunu yazdı
    trampfd bunu yazdı
    zumsuk bunu yazdı
    trampfd bunu yazdı

    Tam olarak aklındaki senaryoyu anlat ben sana bir code reviewer olarak en doğru nasıl yazman gerektiğini açıklayayım.

    Yazdığın kodlar korkunç derecede yanlış ve thread safety açısından sakıncalı, her seferinde dosya sistemine bakıp bir dosyanın olup olmadığını check edip ardından bir koşula göre include yapan bir kod bloğuna profesyonel bir web uygulamasında rastladın mı? 

    İşte bu yüzden algoritma mantığın da yanlış büyük ihtimalle.

    hocam try-catch olur ; başka birşey olur mantığı anlatıyorum.

    Yani bir sürü sorgudan kurtuluyor. Mantığı anlatmak için söyledim. tek if , tek try-catch daha direkt sonuç sağlıyor.

    ---

    Burada önemli kısım ; tek veri için 3 milyon'a birden if-else yaptırtmamak.

    Bir sürü sorgu ve milyon kere dönen if-else / while / for / try-catch yani kısaca alayı zaten yanlış, 3 milyon kayıdı bir anda dbden alman zaten yanlışlığın başlangıcı oluyor, sonrasında ne yaparsan yap zaten hatalı mantıkla ilerliyorsun.

    Db den gereken veriyi gereken koşulla alırsın işlemini yaparsın. 1 byte bile fazladan veri alman hatalı yaklaşıma girer.

     

    server-side diller konusunda uzman olmayan biri olarak zumsuk şöyle dedi diye anladım : "Bir koşul çalıştırdığımız zaman sistem bu koşula uyuyor mu diye tüm verilere bakacak, bu da yorucu bir işlem". Mantıken böyle, eşleşen kayıt bulmak için aramak gerek, arama buradaki sıkıntı. Onun yerine kolayca ulaşmak istiyor.

    trampfd senin yazını okurken aklıma gelen ise "Veritabanı motorları zaten kaybı önleyen bir algoritmaya sahip sen bunu aşıyorsan yanlış birşey yapıyorsun" mu?

    Yeah man.

    Database serverların amacı zaten o işlerle ilgilenmek, verini saklayıp sana istediğin zaman istediğin kadarını istediğin şekilde vermek.

    Tüm datayı çekip içinde ifle forla dönecek olsak dataları filesystem da bir file içinde saklıyor olurduk ve database serverlar olmazdı.


    Ehl-i Byte
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Ayro
    Ayro's avatar
    Kayıt Tarihi: 08/Ağustos/2005
    Erkek

    hocam kayıtın hepsini indirmiyorum ; 300 farklı işlemim olsun, 5 bin kayıtım olsun.

    kullanıcı bir sayfaya tıklayacak ve 5 bin kayıt arasından 1 kayıdı çekecek. Fakat bu 1 kayıt için 300 if/else yada duruma göre switch/case ile kontrol edecek.

    Bunun yerine o kayıt geldiğinde birşeyler olmalı. Bunun en net açıklanabilir şekli : kayıdın içinde kod çalıştırabildiğimizi düşünelim. Kayıtın içinde özel kod bloğu olsun yani.

    Bu şekilde düşün.

  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Cosmic
    Cosmic's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    300 farklı işlemin hepsi fonksiyon olsa tabloda fonksiyon isimleri ve parametreleri tutulsa öyle çağırılsa if elseden daha pratik olmuş olur başka bi yol gelemedi aklıma


    Bittik biz bittik
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    NoktaliVirgul
    NoktaliVirgul's avatar
    Kayıt Tarihi: 02/Temmuz/2007
    Erkek

    Yanlış anlamadıysam senin düşüncen: "300 tane if komutu çalıştırmak server'ı yorar. Bu yüzden farklı bir sistem olabilir mi?"

    Çok fazla yormayacağını düşündüğüm halde yinede farklı bir öneri getireyim: Database'de 2-3 kolon daha açarak gereken bilgileri oraya al.

    Örnek:

    İnsanlar tablosundan sadece cinsiyet="kadın" olarak çekip göz, saç, ten renklerini if ile karşılaştırmak yerine db'ye göz, saç, ten olarak kolon ekle.

    cinsiyet="kadin" AND göz="mavi" AND saç="sarı" diye sorgu yap.

    Eğer 300tane if ile server yorulcaksa bile böyle bir sorgu ile daha az yorulur. Seninde kullanman gerekn if'ler 3 kat azalır, server (eğer ki yorulacaksa) 3 kat daha az yorulur.


    If my calculations are correct, when this baby hits eighty-eight miles per hour... you"re gonna see some serious shit.
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    trampfd
    trampfd's avatar
    Kayıt Tarihi: 10/Mayıs/2006
    Erkek
    zumsuk bunu yazdı

    hocam kayıtın hepsini indirmiyorum ; 300 farklı işlemim olsun, 5 bin kayıtım olsun.

    kullanıcı bir sayfaya tıklayacak ve 5 bin kayıt arasından 1 kayıdı çekecek. Fakat bu 1 kayıt için 300 if/else yada duruma göre switch/case ile kontrol edecek.

    Bunun yerine o kayıt geldiğinde birşeyler olmalı. Bunun en net açıklanabilir şekli : kayıdın içinde kod çalıştırabildiğimizi düşünelim. Kayıtın içinde özel kod bloğu olsun yani.

    Bu şekilde düşün.

    Db de kod saklayıp çağırmak çok ilginç bir düşünce, böyle bir ihtiyaç sana yanlış düşünmenden kaynaklanıyor işte. 

    Normalde böyle bir duruma hiç bir ihtiyacın olmaz.

    Object-oriented programming ve Object-relational mapping olaylarını incelemelisin.

    --

    Yazılım içinde 300 farklı işlem yapacaksan o 300 farklı işlemi de yazacaksın zaten bir şekilde, bunun validationu var error loggingi var exception handlingi var, var da var yani eğer profesyonel bir iş yapıyorsan o kodlar yazılacak. 

    Koddan o şekilde kaçman senin için yararlı değil zararlı olur, oldu hiç kod yazmayalım, sayfadan javascriptle sql servera bağlanıp istek yapalım o da içinden kod çalıştırıp bize sonuç versin :D

    Bu kadar olmasa da buna yakın mevzulara olanak tanıyan patternlar var yine de, ama onun için de full oop bir yapıya girişmen gerekli tabii ki.

    (bkz: mvvm)

    (bkz: mvc)


    Ehl-i Byte
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    RDxMaster
    RDxMaster's avatar
    Kayıt Tarihi: 15/Eylül/2007
    Erkek

    hacılar konuyla alakasız olacak ama nosql olayını paylaşmış bir arkadaş. Benim sunucuya müdahalem söz konusu değil.Çok fazla kullanılan verileri xml de (sunucu üzerinde) tutsam acaba o başka kişiler tarafından değiştirilebilirmi bunu merak ediyorum ?

Toplam Hit: 3635 Toplam Mesaj: 27