Sitede bulunan konular ile ilgili olmayan bütün sorularınız ve cevapları için bu yazıyı kullanabilirsiniz.

Lütfen burada sorunuzu veya yorumunuzu yazmadan önce sağ üst köşede bulunan arama kutularından, sorunuzun ilgili olduğunu düşündüğünüz kelimeleri mutlaka arayınız.

Buradaki sorular ve yorumlar, daha sonra ilgili bir yazı eklenmesi halinde bu yazının altına taşınacaktır.

İlginiz için teşekkürler ve hepinize başarılar.

Şadi Evren ŞEKER

Yorumlar

  1. Ozan

    Merhaba hocam biliyorum kızıyorsunuz ama bunu nerede sorcağımı bilemedim(konu dısı olduğu ıcın ozur dilerim sımdıden).
    hocam php bildiğinizi umduğumdan soruyorum hocam ben xampp programını yukledım ve apache tıklayınca running diyor ve adres bolumunden örneğin ozan.php dosyam var ve ozan.htm uzerinden bunu firefox daki goruntusune bakmak için localhost//ozan.htm dediğimde ve enter a tıklayınca talep ettığınız url sunucu uzerinde bulunmuyor diyor.Oyle olunce ben de 80 olan port numarısını 91 yaptım ama gene aynı sıkıntı internet ekranında hıc bise gozukmuyor. örneğin kodumda en basıtınden
    ozan.php icin

    ozan.htm ise

    bu bunları sayfada nasıl calıstırmam gerekiyor hata bende mi yoksa bir sunucu hatası mı var?

  2. Şadi Evren ŞEKER Article Author

    Öncelikle siteye gösterdiğiniz ilgi için teşekkür ederim. Sizin yorumlarınız sonucunda sitede böyle bir başlık eksiğini gördüm ve “konu dışı” başlığı ile bir yazı ekledim. Yazıda da belirtildiği gibi herhangi bir kategoriye girmeyen sorularınızı buradan sorabilirsiniz.

    Sorunuzun cevabına gelince, bağlantı için apache sunucusunun bir port ayarı bulunur genelde kurulum 8080 portundan yapılır ve bağlanmak için tam olarak

    http://localhost:8080

    yazmanız gerekir. Şayet port ayarını 80 yaptıysanız bu varsayılan port olduğu için sonuna portu yazmanıza gerek yoktur:

    http://localhost

    yazmanız yeterlidir, bunun dışındaki bütün ayarlamalarda port numarası sona iki nokta üst üste işareti ile eklenir.

    Öncelikle bu adrese bağlanarak apache sunucunuzun çalıştığından emin olun. Ardından kendi dosyalarınıza erişmek için

    http://localhost:91/ozan.html

    şeklinde adres verebilirsiniz. Bu ozan.html dosyasının apache sunucusunun yayınladığı dizinde olması gerekir. Genelde kurulumlarda www veya htdocs isminde bir dizin halinde gelir. Dosyanızı buraya kopyalamanız yeterli.

    Yaşayacağınız olası problemler şunlardır:
    Sorun 1. Virüs veya herhangi başka bir sebeple etc/hosts dosyanızın değişmiş olması ve buraya localhost için bir IP adresinin çakılmış olması.
    Çözüm : localhost yerine direk IP adresi yazın. Örneğin http://127.0.0.1 veya bilgisayarınızın IP adresi.

    Sorun 2. Ateşduvarı (firewall) yüzünden sunucunun portlarına erişilememesi.
    Çözüm: Kurulu olan firewall üzerinde gerekli ayarlamaları yapın (veya ne güzeli tamamen devre dışı bırakın). Sanıyorum xampp kurulumunda xampp-portcheck.exe gibi bir dosya ilave olarak geliyor, bu dosya ile port durumunu kontrol edebilirsiniz.

    Sorun 3. Sunucunun konfigürasyon ayarlarında hata olması
    Çözüm: Bu durumda sunucunun kayıt dosyalarında (log) hata mesajları görülür. Sunucu ayarlarına xampp için kurulum dizini altındaki apacheconfhttpd.conf dosyasından erişebilirsiniz. Hatalara da yine xampp kurulumu altında apachelogserror.log dosyasından erişebilirsiniz.

    Tavsiyem önce apache çalıştırıp kurulumda gelen dosyaları görüntülemeniz, şayet görülüyorsa bir html dosyası atıp görüntülemeniz ve en nihayetinde php dosyası atıp denemenizdir.
    1. adımda sorun varsa kurulum veya port gibi sorunlara bakın
    2. adımda sorun varsa dosyayı yanlış yere atıyorsunuz veya apache loglarına bakın
    3. adımda sorun varsa apache çalışıyor ama php kurulumu hatalı demektir bu durumda php.ini dosyasına ve php hatalarına bakmanız gerekir.

    Başarılar

  3. Ozan

    hocam iyi aksamlar.uzun bir süreden sonra size bir soru sormak istiyorum.uğraştım ama bir türlü yapamadım.
    Kullanıcı eksilen sayfaların toplamını giricek.
    buna göre ilk eksilen sayfa no belirlenecek ve geriye kac sayfa daha eksik olduğu soylenecek ve bu eksik olan sayfaların numaraları tek tek yazdırılacak.
    Örneğin:
    Eksilen sayfaların toplamını giriniz(çıkış için 0):9808
    Sayfa no 291 ve sonraki 31 sayfa eksiktir.
    Eksik olan sayfalar:291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321
    bu sadece bir örnekti hocam
    İşin ilginç olan tarafı biz sadece eksik olan sayfaların numaralarının toplamını giriyor olmamız ama hangi sayfadan itibaren eksik olacağı ve kaç sayfa daha eksik olacağı sürekli değişebilir yani 291 sayfadan itibaren eksik olmaz da 292.sayfa no dan itibaren 30 sayfa eksik olur gibi.Bu nasıl yapılabilir.Yardımcı olabilirseniz sevinirim…

  4. Şadi Evren ŞEKER Article Author

    Güzel soruymuş. Öncelikle bu tip soruların tek çözümü olmak zorunda değil. Ayrıca bu soru bir arama (search) sorusudur. Çok farklı algoritmalar kullanılabilir örneğin heuristic veya genetic veya exhaustive search algoritmaları hatta divide and conquere yaklaşımı veya greedy yaklaşımı gibi yaklaşımlar için müsait bir soru.

    Hangi ders kapsamında geçtiğine göre kullanılacak yaklaşım değiştirilebilir. Öncelikle olayı basitçe nasıl çözeceğimizi anlatmaya çalışayım sonra nasıl daha hızlı çözeriz ona bakalım:

    şimdi çözüm ardışık sayılardan oluşuyor dolayısıyla aşağıdaki gibi bir durum var :

    1+a , 2+a, 3+a, 4+a, … n+a

    yani sizin örneğinizdeki durum için 1+290, 2+290, … 31+290 denilebilir.

    bu denklemi aşağıdaki şekilde yazmamız mümkün:

    a( 1 + 2 + … + n)

    demek ki aslında aranan [a,n] ikilisidir. O halde girilen sayının kaçın katları olduğunu bulmak ile başlayabiliriz. Girilen sayıya k dersek t herhangi bir tam sayı olmak şartıyla aşağıdakiler çözüm olur:

    k = ta
    k = ( 1 + 2 ) ta = 3ta
    k = 6ta
    k = 10 ta

    k = (1 + 2 + … n) ta

    yani amacımız tam böleni olan değeri bulmak. Ayrıca yukarıdaki şekildeki denklemlerin hepsi çözüm olmaktadır. Yine sizin sayısal örneğinizde dönersek aslında girilen 9808 sayısı için

    Sayfa no 9808 ve sonraki 0 sayfa eksiktir çözümü de bir çözümdür. Ancak bunun dışında başka çözümler de var (sanırım birini siz zaten yazmışsınız).

    Şimdi kaba kuvvet yaklaşımına göre yapılacak iş basit bir döngü içerisinde n değeri arttırılacak ve tam bölen bulunana kadar devam edecek:

    #include 
    int main(){
    //www.bilgisayarkavramlari.com
    int k;
    scanf("%d",&k);
    int sonuclar=0;
      int toplam = 0;
      int say = 0;
      for(int i = 1;i< =k;i++){
       toplam +=i;
       say ++;
       if(((k-toplam)/say)<0)
            continue;
       if(((k-toplam)%say)==0){
         printf("sayfa no %d ve sonraki %d sayfa eksiktirn", 1+(k-toplam)/say,say-1);
            sonuclar++;
            }
      }
    printf("%d",sonuclar);
    }
    

    Örneğin sizin 9808 sayısı için benim denememde 2 farklı çözüm bulunmakta ve siz zaten vermişsiniz. Örnek olarak daha basit bir sayı örneğin 18 sayısı için deneme yaptığımda ekran çıktısı aşağıdaki şekilde:

    18
    sayfa no 18 ve sonraki 0 sayfa eksiktir
    sayfa no 5 ve sonraki 2 sayfa eksiktir
    sayfa no 3 ve sonraki 3 sayfa eksiktir
    3

    bunlardan birsiini ele alalım ve kontrol edelim mesela 5 ve sonraki 2 sayfa = 5 + 6 + 7 = 18 veya 3 ve sonraki 3 sayfa = 3 + 4 + 5 + 6 = 18 olarak bulunur.

    Bahsettiğim gibi bu problemde çok sayıda farklı optimizasyon yöntemi kullanılabilir bu açıdan güzel bir soru. Daha fazla bilgi verirseniz daha detaylı çözümlerini yapabilirim.

    Başarılar

  5. Ozan

    hocam ilginiz icin tesekkur ediyorum yalnız istediim su aslında ben eksilen sayfa toplamını girinci bana bu kadar deger deilde bunların icinden rastgele bir tanesinin sayfa nosunu ve geri kalan eksik sayfa miktarını soylesin ve bu eksik sayfaların sayfa numaralarını da yazdırsın.

  6. Ozan

    hocam merhabalar.Gecen bir quize girdik ve soyle bir soru soruldu
    Soru:Ana foknsiyonda tanımlanan x=2,4,..,10 ve her x icin n=5 başlayıp ve her adımda bir artarak değiştiğine göre;her x ve n için aşağıdaki Tx serisinden n terim alarak toplamı üste yuvarlanmış 2 ondalıklı olarak hesaplayınız.Öyleki;her T(x) bir alt-fonksiyonla hesaplansın ve ana fonk’siyonda yazılsın.
    hocam yazarken kare isaretini bulamadıgımdan yazıyla yazdım.) denklem bir – bir + alarak gidiyor.
    T(x)=-(x’in karesi bölü iki)+(x’in 6. kuvveti bölü 6)-(x’in 10.kuvveti bölü 10)+(x’in 14.kuvveti bölü 14)….+(x’in n. kuvveti/n)
    cıktılar.
    x=2 icin tx=-2.00
    x=4 icin tx=674.00
    x=6 icin tx=7758.00
    x=8 icin tx=43658.00
    x=10 icin tx=166616.00
    cıktı olarak bunları vermesi gerekiyor hocam .bir yardımcı olursanız cok sevinirim.

  7. Şadi Evren ŞEKER Article Author

    Sorunun amacı nedir? Yani kodlama mı çözüm mü? Sanırım önceki soru kodlama olduğuna göre kodunu soruyorsunuz. Çözüm aşağıdaki şekilde yapılabilir. Öncelikle formülü yazıyorum:
    T(x) = – x2/2 + x6/6 – x10/10 … + xn/n

    Bu formülü C dilinde aşağıdaki şekilde kodlayabilirsiniz. Biriktirici tip fonksiyon yazacağım (accumulator style)

    #include 
    int sup(int x,int n){
       if(n==1)
          return x;
       return x*sup(x,n-1);
    }
    double Tt(int x, int n, double acc) {
       if(n==0)
          return acc;
       if(n%2 == 1)
          return Tt(x,n-1,acc-sup(x,2+(n-1)*4)/(2+(n-1)*4));
       else
          return Tt(x,n-1,acc+sup(x,2+(n-1)*4)/(2+(n-1)*4));
    }
    double T(int x,int n){ //kılıf fonksiyon (wrapping function)
       return Tt(x,n,0);
    }
    int main(){
       int x,n;
       scanf("%d %d",&x,&n);
       printf("%f", T(x,n));
    }
    

    Kodun örnek çıktısı aşağıda verilmiştir:

    sadievrenseker$ ./a.out
    2
    5
    2,5,0.000000
    2,4,-14563.000000
    2,3,-13393.000000
    2,2,-13495.000000
    2,1,-13485.000000
    2,0,-13487.000000
    -13487.000000
    

    Yukarıda adım adım hesaplama sonuçlarını da bastıdım. Yukarıdaki çalışma ayrıca 2 ve 5 parametreleri için yani x = 2 ve n = 5 parametreleri için. Şimdi diyeceksiniz ki neden sorudaki sonuçları çıkarmadı? Çünkü sorudaki sonuçlar hatalı. Bakın beraber hesaplayalım. n=5 ve x = 2 için aşağıdaki denklemi çözeceğiz.

    T(2) = – 22/2 + 26/6 – 210/10 + 214/14 – 218/18

    Bu denklemi sırasıyla çözecek olursak, ilk terim için – 22/2 = -2 bulunur
    ikinci terim için 26/6 = 64 / 6 = 10,66 bulunur
    üçüncü terim için 210/10 = 1024 / 10 = 10,24 bulunur
    dördüncü terim için 214/14 = 16384 / 14 = 1170,28 bulunur
    Son terim olan beşinci terim için 218/18 = 262144 / 18 = 14563,55 bulunur.
    Bu terimleri denkleme yazacak olursak :
    -2 + 10,66 – 10,24 + 1170,28 – 14563,55 = -13394,85
    olarak sonuç bulunur. Kısacası bu sonucun 2 çıkması imkansızdır. Bu sonuç ve kodun çıkardığı sonuç arasındaki fark ise ondalık kısmındaki yuvarlamadan kaynaklanıyor ancak dediğim gibi soruda hata var ve gerekirse koddaki ufak değişikliklerle daha doğru sonuç elde edilebilir.

    Başarılar

  8. Ali

    Hocam merhaba .Siteniz gerçekten çok kullanışlı ve çok değerli bilgiler var. Şuan yabancı dilim yeterli düzeyde olmadığı için yabancı kaynaklardan araştıramıyorum fakat software test engineering le ilgili yazılarınız pek yok sanırım(yada ben görmediysem k.bakmayın site içi arama motoruyla arattım.)
    Acaba boundary analysis, border case, stress test, volume test gibi konuları anlatıcı ve örnekleyici makaleler yazabilirmisiniz ?

    Teşekkür ederim.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir