8 Kasım 2012 Perşembe


http://www.yazilimsozluk.com/Konular-2101-javascipt_yard%C4%B1m.aspx da bir soruya cevap olarak benim tarafımdan yazılmıştır.


Dostum ben ayrı bir form kullanarak yapmışım upload işini sayfanın refleshlenmesinden kurtulabileyim diye. Ayrı bir form tanımlayıp içine bi file elementi bir de submit butonu eklemişim. Resim de diğer form da div de gösteriliyor. Div in background ını set ederek resmi göstertmişim. Adam file elementten resim seçtikçe oradaki resmi de değiştirmişiz. Sonra submit e bastığında o ayrıyetten oluşturduğum formun formdata sına resmi atımışım ve o şekilde servlet e yollamışım. Örnek kod vericem umarım işine yarar.

//Alttaki kısım html de yer alıyor.Action da upload edilecek servis adresi,
//onsubmit te de çalışacak javascript metodları var.
//File nesnesinin onclick inde de çalışacak javascriptler var.Birşey
//seçildiğinde anaformun içindeki div in background ının değiştirilmesi
//falan.
<form action="/Fide/formdesigner/resimekle" name="ggrd23_form" id="ggrd23_form" method="post" enctype="multipart/form-data" target="ggrd23_frame" onsubmit="var fide_formIslemi=new Fide_AnaFormIslemleri(document.forms,'panellistgrid',
document.forms['ggrd23']);return fide_formIslemi.fide_formSubmiteResimEkle('ggrd23_image19_file');">
<input name="ggrd23_image19_file" id="ggrd23_image19_file" class="ggrd23_image19_file" type="file" value="Dosya Seç"
onchange="var fide_formIslemi=new Fide_AnaFormIslemleri(document.forms,'panellistgrid',
document.forms['ggrd23']); fide_formIslemi.fide_secilenResmiGösterici(this,'ggrd23_image19');">
</input>
<input name="ggrd23_image19_submit" id="ggrd23_image19_submit" class="ggrd23_image19_submit" type="submit"
value="Resmi Gönder"></input>
</form>
//Aşağıdaki metod file nesnesinin onchange inde çalışan metod. Resim
//seçildiğinde gidiyor div in background ını değiştirererek kullanıcıya
//resim gösteriyor. Senin için gereksiz ve benim için gizliliği önemli olan
//birkaç yeri sildim. Umarım fazla silmemişimdir :-)

/**
     *
     * Resim nesnelerinde choosefile butonu ile seçtiğimiz resmin gösterilmesini
     * sağlayan metoddur.
     *
     * @param input
     *            File nesnesinin kendisi
     * @param fide_resimNesnesiAdi
     *            Hangi resim nesnesinde gösterilmesini istiyorsak o ad
     *            girilecek.
     */
    this.fide_secilenResmiGösterici = function (input, fide_resimNesnesiAdi) {
        /**
         * Dosya seçilmeden tamam a basılmışsa bir işlem yapmıyoruz.
         *
         */
        if (input.files && input.files[0]) {
            /**
             * Bizim istediğimiz tip image Başka tip upload etmiycez ve resim
             * nesnesinde de gösteremeyiz zaten.
             *
             */
            /**
             *
             * Daha sonra da reader ile okuyoruz. Onload ını override edip
             * istediğimiz nesnenin istediğimiz özelliğini dolduruyoruz.
             *
             */
            if (input.files[0].type.indexOf('image') >= 0) {
                var reader = new FileReader();
                reader.onload = function (e) {
//                    document.getElementById(fide_resimNesnesiAdi + 'resim').style.backgroundImage = "url("
//                        + this.result + ")";
                    document.getElementById(fide_resimNesnesiAdi + 'resim').style.backgroundImage =
document.getElementById(fide_resimNesnesiAdi + 'resim').title;
                };
                reader.readAsDataURL(input.files[0]);
                return;
            } else {
                window.top.popupOlusturucuHata(fide_jsDil.gecerliResimBulunamadi(),
                    3000);
                document.getElementById(fide_resimNesnesiAdi + 'resim').value = "";
                return;
            }
        }
        document.getElementById(fide_resimNesnesiAdi + 'resim').value = "";
    };
//Bu da formun onsubmitinde çalışacak method. File elementinden
//seçili dosyayı alıyor ve bir formdata oluşturarak onun içine basıyor.
//Daha sonra da o formdata yı return ediyor. Return edilince de o
//formdata Action da yazılan adrese gidiyor içindeki resim ile beraber.
//Karşıda da o resmi okuyup istediğini yapıyorsun.


/**
     *
     * Resim upload edebilmek için kullanmamız gereken metoddur. Resim upload
     * edebilmek için harici bir form kullanıyoruz. Bu metod genelde onsubmit
     * metodnda çağırılır. Yeni bir formdata oluşturulur ve bunun içine image
     * eklenir. Formu post ettiğimizde karşıya burada oluşturulan formun
     * gönderilmesi sağlanır.
     *
     *
     * @param fide_resimNesnesiAdi
     */
    this.fide_formSubmiteResimEkle = function (fide_resimNesnesiAdi) {
        var fide_images = document.getElementById(fide_resimNesnesiAdi).files;
        if (fide_images.length == 0) {
            window.top.popupOlusturucuHata(fide_jsDil.seciliResimBulunamadi(), 3000);
            return null;
        }
        var fide_formData = new FormData();
        for (var i = 0; i < fide_images.length; i++) {
            if (fide_images[i].type.indexOf("image") >= 0) {
                fide_formData.append('image', fide_images[i]);
            } else {
                window.top.popupOlusturucuHata(fide_jsDil.gecerliResimBulunamadi(),
                    3000);
                return null;
            }
        }
        window.top.popupOlusturucuBasarili(fide_jsDil.resimGonderildi(),
            3000);
        return fide_formData;
    };
Umarım işine yarar. En azından fikir verir. Kafanı karıştırdıysam affola. Kolay gelsin.

1 Kasım 2012 Perşembe

Çarpımları toplamlarının 7 katı olan 3 adet pozitif çift tam sayıyı bulma.



Elimizde 3 adet pozitif çift tamsayı var. Bu sayıların
çarpımlarını, toplamlarına bölünce 7 sayısını elde
ediyoruz. Bu sayıları bulan kodu yazınız. ( Sayılar 1
ile 10.000 arasında olacak.) bu sorunun nasıl bir algoritması olacak. Sorusuna cevap olarak yazılmıştır.

package main;
import java.util.Calendar;
/**
*
*
*
* @author Murat GUZEL
*
* (Elimizde 3 adet pozitif çift tamsayı var. Bu sayıların
* çarpımlarını, toplamlarına bölünce 7 sayısını elde
* ediyoruz. Bu sayıları bulan kodu yazınız. ( Sayılar 1
* ile 10.000 arasında olacak.) bu sorunun nasıl bir algoritması olacak).
* Sorusuna cevap olarak benim tarafımdan yazılmıştır.
*
*/
public class Deneme {
     public static void main(String[] args) {
     long ilkZaman=Calendar.getInstance().getTimeInMillis();
     int sayilarinCarpimi = 14;
     int sayilarinToplami = 0;
     while(sayilarinCarpimi<10000){
          sayilarinToplami=sayilarinCarpimi/7;
          for(int i=2;i<sayilarinToplami-2;i+=2){
               for(int j=i;j<sayilarinToplami-2;j+=2){
                    for(int k=j;k<sayilarinToplami-2;k+=2){
                         if((i+j+k)*7==sayilarinCarpimi && (i*k*j)==sayilarinCarpimi){
                              System.out.println(i + " " + j + " " + k);
                              break;
                         }
                    }
               }
          }
          sayilarinCarpimi+=14;
     }

     long sonZaman=Calendar.getInstance().getTimeInMillis();
     long zamanFarki = sonZaman - ilkZaman;
     if(zamanFarki>1000){
          System.out.println((zamanFarki-zamanFarki%1000)/1000 + " saniye ve " + zamanFarki%1000 + "                                         milisaniye");
     }else{
          System.out.println(zamanFarki + " milisaniye");
     }
}
}