Our social:

Latest Post

31 Ocak 2014 Cuma

Java'da txt dosyasına veri yazma ve okuma



Java anlatımlarına devam ediyorum ve bu yazıda txt uzantılı text dosyalarına nasıl veri yazılacağını anlatacağım. Öncelikle bu işlemde kullanacağım sınıflar hakkında kısa bilgiler vermek istiyorum.

Verileri yazdırmak için FileWriter ve PrintWriter sınıflarını kullanacağım.

FileWriter sınıfını üzerinde işlem yapacağım txt dosyası için kullanacağım.

PrintWriter sınıfını ise dosyaya yazdırmak istediğim veriler için kullanacağım.

Proje dosyaları

Yeni bir Java sınıfı oluşturuyorum.


Şimdi projeye text dosyası ekleyeceğim. Aşağıdaki gibi New -> File seçeneğine giriyorum.



Karşıma gelen ekranda dosya adına blog.txt yazıyorum ve Finish diyorum.


Text dosyam eklendi. Şimdi aşağıdaki kodları yazıyorum.


Çalıştırdığım zaman Berkay, Ahmet ve Mehmet isimleri satır satır ekleniyor.

txt dosyasından veri okuma

Şimdi yeni bir sınıf oluşturuyorum. Bu sınıfla da verileri çekeceğim. Aşağıdaki kodları yazıyorum.


Sayfayı çalıştırıyorum.


Görüldüğü gibi yukarıda eklediğim satırlar gözüküyor.

İyi çalışmalar ...



Halka Topolojisi (Ring Topology)

Yıldız Topolojisi'nden sonra şimdi Halka Topolojisi hakkında bilgi vereceğim.



Halka topolojisinde cihazlar ağa halka şeklinde bağlanırlar. Her cihaz yanındaki iki cihaza bağlıdır. Sinyaller tek bir hat üzerinden iletilir.

Halka topolojisinin avantajları

  • Merkez bir cihaz olmaması, yoğun ağ yükü altında Yıldız topolojisinden daha iyi performans elde edilmesini sağlar.
  • Token Ring kullanılarak daha büyük ağlar oluşturulabilir.
Halka topolojisinin dezavantajları
  • Herhangi bir cihazda sorun olması tüm ağı etkileyebilir.
  • Ağa yeni cihaz eklenmesi ya da ağdan cihaz çıkarılması zordur.
  • Maliyet yüksektir.
  • Ethernet ağlarından daha yavaştır.

29 Ocak 2014 Çarşamba

Java'da dinamik butonların tetiklenmesi

Merhaba arkadaşlar. Daha önce Java dinamik JButton oluşturma (sinema salonu) yazısında nasıl dinamik JButton'lar oluşturulduğunu anlatmıştım. Bu yazıda da dinamik olarak oluşturduğum butonların tetiklenmesi olayını anlatacağım.

Bildiğiniz gibi o yazıda aşağıdaki gibi sinema salonundaki koltukları oluşturmuştum.


Bu yazıda tıklanan butonun rengini kırmızı yapacağım. Böylece koltuğun seçili olduğu gözükecek.

Java'da WindowBuilder yardımıyla statik bir JButton oluşturup üzerine çift tıkladığınızda aşağıdaki gibi bir kod üretiyor.

butonAdi.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {

}
});

Dinamik oluşturduğumuz butonlarda da bu kodu kullanacağız. Bildiğiniz gibi o yazıda butonları btn_ij şeklinde oluşturmuştuk.

O yazıdaki kodda butonu panele eklediğimiz satırı buluyorum (contentPane.add(btn_ij);) ve altına aşağıdaki kodu yapıştırıyorum.

btn_ij.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
btn_ij.setBackground(Color.red);
}
});

Şimdi programı çalıştırıyorum ve bir butona tıklıyorum.


Görüldüğü gibi tıkladığım butonun arkaplan rengi kırmızı oldu.

İyi çalışmalar ...

PHP ile MySQL veritabanına image upload etme ve okuma

PHP'de resimleri saklamak gerekebilir. Bu durumda genellikle resmin yolu veritabanında tutulur ve bu şekilde resim yolu saklanır. Ancak bu sorunlar çıkarabilir. Örneğin programı başka bir kullanıcı yüklediğinde resim dosyalarını da kopyalaması, hatta aynı dosya yoluna kopyalaması gerekir. Bu da oldukça sağlıksız bir yöntemdir.

Bu yazıda image dosyalarının veritabanında nasıl saklanacağını anlatacağım.

Veritabanında resim tutabilmek için tabloda ilgili alan blob veya long blob olarak seçilmeli. Adından da anlaşılacağı üzere long blob daha büyük dosyaları tutabiliyor.

NOT : resimupload.php - resimgoster.php ve siteler.sql dosyalarını yazının sonunda indirebilirsiniz.

Artık uygulamaya geçiyorum. Öncelikle bir tablo oluşturuyorum.


Şimdi yeni bir php dosyası oluşturarak içine kodlarımı yazmaya başlıyorum. Veritabanına resim upload edeceğimiz için form içinde File inputu ve submit inputu eklemem gerekiyor. Aşağıdaki kodları ekliyorum.

<form action="resimupload.php" method="POST" enctype="multipart/form-data">
<input type="file" name="image" /><br />
<input type="submit" name="submit" value="Yükle" />
</form>


Şimdi php kodlarını yazıyorum.

<?php

if(isset($_POST['submit']))
{
mysql_connect("localhost","root","");
mysql_select_db("blog");

$resim_adi = mysql_real_escape_string($_FILES["image"]["name"]);
$resim_veri = mysql_real_escape_string(file_get_contents($_FILES["image"]["tmp_name"]));

echo $resim_veri;
}

?>

Sayfayı çalıştırıyorum ve bir resim seçip Yükle butonuna tıklıyorum. Karşıma aşağıdaki gibi resmin kodları geliyor. Yapmam gereken bu kodu yani $resim_veri değişkenini blob türündeki tabloya kaydetmek.


Yukarıdaki kod yerine aşağıdakini yazıyorum. Böylece veritabanına resim ekleniyor.

<?php

if(isset($_POST['submit']))
{
mysql_connect("localhost","root","");
mysql_select_db("blog");

$resim_adi = mysql_real_escape_string($_FILES["image"]["name"]);
$resim_veri = mysql_real_escape_string(file_get_contents($_FILES["image"]["tmp_name"]));
$resim_turu = mysql_real_escape_string($_FILES["image"]["type"]);

if(substr($resim_turu,0,5) == "image")
{
mysql_query("insert into siteler(site_adi,resim) values('Google','$resim_veri')");

}

else
{
echo "Sadece resim yüklenebilir.";
}
}

?>

Eklenen resim tabloda aşağıdaki gibi gözüküyor.


Şimdi veritabanına eklediğimiz veriyi sayfada gösterelim. Yeni bir php sayfası oluşturuyorum. (resimgoster.php) Aşağıdaki kodları yazıyorum.

<?php

mysql_connect("localhost","root","");
mysql_select_db("blog");

if(isset($_GET['id']))
{
$id = mysql_real_escape_string($_GET['id']);
$sorgu = mysql_query("select * from siteler where id='$id'");
while($cek = mysql_fetch_assoc($sorgu))
{
$resim_veri = $cek["resim"];
}
header("content-type: image/png");
echo $resim_veri;
}

else
{
echo "Hata !!!";
}

?>

Son olarak ilk upload işleminin gerçekleştiği sayfaya giderek

<img src="resimgoster.php?id=5" />

satırını ekliyorum. Sayfayı çalıştırdığımda veritabanındaki resim gözükecektir.



İyi çalışmalar ...

Dosyalar (resimupload.php, resimgoster.php, siteler.sql)

28 Ocak 2014 Salı

C# ile CSV dosyasına veri yazma

Bu yazıda CSV dosyalarına nasıl veri yazılacağını göstereceğim. Öncelikle CSV dosyalarının ne işe yaradığını açıklamak istiyorum.

CSV'nin açılımı Comma-Separated Values'dur. Yani CSV virgülle ayrılmış değerler anlamına gelir. Bazı projelerde veritabanı kullanmak gereksiz bir zahmete yol açar. CSV dosyalarını kullanarak verileri pratik bir şekilde saklayabildiğimiz dosyalar oluşturabiliriz.

CSV dosyalarına verileri ; veya , gibi ifadelerle ayırarak ekleriz. Az sonra örnekte de göreceğiniz gibi Ad;Soyad;Yaş; şeklinde ekleriz. Çekerken de ; yardımıyla verilere teker teker ulaşırız.

Artık uygulamaya geçmek istiyorum. Yerel Disk C içinde dosya.csv adında bir dosya oluşturuyorum. Oluşturmuş olduğum dosyayı Excel'de açıyorum ve boş olduğunu görüyorum. Şimdi C# yardımıyla dosyaya veri ekleyeceğim.


Aşağıdaki gibi bir form oluşturuyorum ve butonun click eventına gidiyorum.


Aşağıdaki kodları yazıyorum.



Şimdi programı çalıştırıp verileri giriyorum ve butona tıklıyorum.


CSV dosyasını tekrar Excel'de açıyorum.


Görüldüğü gibi veriler eklendi.

CSV dosyasından veri okumayı da yakında anlatacağım. İyi çalışmalar ...


Java dinamik JButton oluşturma (sinema salonu)

Merhaba arkadaşlar. Bu yazıda Java'da nasıl dinamik olarak JButton'lar oluşturabileceğimizi anlatacağım. Örnek olarak aşağıdaki resimde olduğu gibi sinema salonu oluşturacağım.

NOT : Dinamik oluşturulan butonlara tıklandığında yapılacak işlemleri belirlemeyi yani actionPerformed oluşturmayı bir sonraki yazıda anlatacağım.


İlk olarak yeni bir JFrame oluşturuyorum. Eclipse'te nasıl JFrame oluşturulduğunu öğrenmek için http://bilgisayar-muhendisleri.blogspot.com.tr/2013/07/eclipse-form-jframe-olusturma.html yazısını okuyabilirsiniz.

JFrame oluşturduktan sonra kodlarımı yazmaya başlıyorum.

İç içe 2 for döngüsü kullanıyorum. İlk döngü sütun sayısını (1'den 12'ye kadar), ikinci döngü de satır sayısını belirleyecek (1'den 8'e kadar).

                for(int i=1;i<=12;i++)
{
for(int j=1;j<=8;j++)
{
                        }
                 }

Resimde görüldüğü gibi üstten 3.sırada koltuk numarası 3'ten başlıyor. Bunun için bir if şartı koyuyorum.

                                if(((i==1)&&(j==3))||((i==2)&&(j==3)))
{
continue;
}
Bu if şartıyla 3.satırda 1. ve 2. sütunda koltuk oluşturmuyorum. Diğer koltukları oluşturmak için aşağıdaki kodu kullanıyorum.

                                else
{

final JButton btn_ij = new JButton(Integer.toString(i));
btn_ij.setFont(new Font("Tahoma", Font.PLAIN, 12));
btn_ij.setBounds(i*60, j*45, 48, 33);
btn_ij.setBackground(Color.green);
btn_ij.setForeground(Color.black);
btn_ij.setName(Integer.toString(i) + Integer.toString(j));
contentPane.add(btn_ij);
}

Bu kodda önce butonu oluşturuyorum. btn_ij adında buton oluşturup içine sıra numarasını yani i'yi yazdırıyorum.

Ardından yazı tipi özelliklerini belirliyorum.

Daha sonra butonun konumunu belirliyorum.

Arkaplan rengini yeşil, font rengini de siyah yapıyorum.

setName komutu ile butona adını veriyorum.

Son olarak da panele butonu ekliyorum.

Kodun tamamı

package blog;

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.*;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.*;

public class dinamikjbutton extends JFrame {

private JPanel contentPane;

/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
dinamikjbutton frame = new dinamikjbutton();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}

/**
* Create the frame.
*/
public dinamikjbutton() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 835, 470);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
for(int i=1;i<=12;i++)
{
for(int j=1;j<=8;j++)
{
final int sutun = i;
final int satir = j;
if(((i==1)&&(j==3))||((i==2)&&(j==3)))
{
continue;
}

else
{
final JButton btn_ij = new JButton(Integer.toString(i));

btn_ij.setFont(new Font("Tahoma", Font.PLAIN, 12));
btn_ij.setBounds(i*60, j*45, 48, 33);
btn_ij.setBackground(Color.green);
btn_ij.setForeground(Color.black);
btn_ij.setName(Integer.toString(i) + Integer.toString(j));
contentPane.add(btn_ij);
}
}
}
}

}

27 Ocak 2014 Pazartesi

Bilgisayar Buyrukları

Bilgisayar buyrukları ikili kodlardır ve bir dizi mikroişlemi tanımlarlar. Verilerle birlikte bellekte bulunurlar.

Buyruklar 16 bit uzunluğundadır ve 3 kısımdan oluşur.


İlk 12 bit buyruğun adresini veya işlemi, sonraki 3 bit işlem kodunu, son bit ise dolaylı veya doğrudan adrese sahip olduğunu belirtir. (I=0 ise doğrudan, I=1 ise dolaylı adres)

Temel bilgisayarda 3 buyruk biçimi vardır. Bunlar;

1) Bellek adreslemeli buyruklar
2) Yazaç adreslemeli buyruklar
3) Giriş-Çıkış adreslemeli buyruklar

Yazaç Adreslemeli Buyruklar

Yazaç adreslemeli buyruklarda işlem kodu 111 ve I=0'dır.


Giriş - Çıkış Adreslemeli Buyruklar

Giriş - Çıkış adreslemeli  buyruklarda işlem kodu 111 ve I=1'dir.


Bellek Adreslemeli Buyruklar

Bellek adreslemeli buyruklarda işlem kodu 000'dan 110'a kadar olabilir. I ise değişkendir.


C# uygulamalarında Caps Lock tuşu kontrolü

C# ile geliştirilen uygulamalarda Caps Lock tuşunun açık veya kapalı olduğunu nasıl göstereceğimizi anlatacağım.

Yeni bir Windows Form uygulaması oluşturuyorum ve görseldeki gibi 1 button ve 1 label ekliyorum. Butona tıklandığında Caps Lock durumunu label'a yazdıracağım.


Şimdi butona çift tıklayarak kod sayfama gidiyorum.


System.Runtime.InteropServices sınıfını projeme ekliyorum.

Resimdeki kısma aşağıdaki kodu yazıyorum.

[DllImport("user32.dll")]
        static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, UIntPtr dwExtraInfo);
        const int KEYEVENTF_EXTENDEDKEY = 0x1;
        const int KEYEVENTF_KEYUP = 0x2;



Daha sonra buttonumun click eventının içine aşağıdaki kodu yazıyorum.


Uygulamamı çalıştırıyorum ve butona tıklıyorum. Sonuç olarak Caps Lock açık veya kapalı mesajını gösteriyor.


Caps Lock tuşunu program üzerinden kapatma


Eğer Caps Lock açık ise ve bunu program üzerinden kapatmak istiyorsak aşağıdaki satırları eklememiz yeterli olacaktır.

keybd_event(0x14, 0x45, KEYEVENTF_EXTENDEDKEY, (UIntPtr) 0);
            keybd_event(0x14, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,
                (UIntPtr) 0);



26 Ocak 2014 Pazar

Asp.NET (C#) ping atma işlemi nasıl yapılır ?

Bu yazıda Asp.NET'te ping atma işleminin nasıl gerçekleştirileceğini anlatacağım.

Ping; ağ üzerinde bulunan aygıtların erişilebilirliğini test etmek için Internet Control Message Protocol (ICMP) kullanan bir uygulamadır.

Bu işlemi Asp.NET'te gerçekleştirebilmek için aşağıdaki adımları izliyorum.

Öncelikle yeni bir Web Form oluşturuyorum.

Oluşturmuş olduğum formuma aşağıdaki gibi 1 textbox, 1 button ve 3 label ekliyorum.

Daha sonra butona çift tıklayarak C# kodlarımı yazacağım sayfaya gidiyorum ve System.Net.NetworkInformation sınıfını ekliyorum. Buttonumun click eventına aşağıdaki kodları yazıyorum.

        Ping _ping = new Ping();
        PingReply _cevap = _ping.Send(TextBox1.Text);

        if (_cevap.Status == IPStatus.Success)
        {
            Label1.Text = Label1.Text + " " + _cevap.Address.ToString();
            Label2.Text = Label2.Text + " " + _cevap.RoundtripTime.ToString();
            Label3.Text = Label3.Text + " " + _cevap.Options.Ttl.ToString();
        }

        else if (_cevap.Status == IPStatus.TimedOut)
        {
            Label1.Text = ("Sorgu zaman aşımına uğradı.");
        }

İlk satırda Ping sınıfından bir nesne türetiyorum. İkinci satırda textbox'a girilen değeri oluşturmuş olduğum nesne yardımıyla PingReply sınıfından ping cevabı olarak türetiyorum.

İf şartıyla cevabı kontrol ediyorum. Eğer IP adresine erişildiyse label'lara uygun değerleri ekliyorum. Eğer zaman dolarsa 1.label'a sorgu zaman aşımına uğradı yazdırıyorum.

Sayfayı çalıştırıp blogger.com yazdığımda aşağıdaki gibi bilgilere ulaşıyorum.



Standart C'de Time fonksiyonu

Bu yazıda Standart C dilinde kullanılan Time fonksiyonu ile ilgili bilgi vereceğim.

Time fonksiyonu 01/01/1970 tarihinden itibaren geçen süreyi saniye cinsinden göstermek için kullanılır.

long time(time_t *x)

Fonksiyondan hesaplanan değer x pointer değişkeni yardımıyla point edilen alana yerleştirilir. Argüman olarak verilen pointer değişkenin point edeceği alan time_t tipine sahiptir.

Genel olarak long int türüne karşılık gelen time_t tipi, time.h kütüphanesinde tanımlanır. Null yani boş argüman kullanılırsa hesaplama yapılamaz.

#include <stdio.h>
#include <time.h>

main()
{
      long sure;
      time(&sure);
      printf("01/01/1970'den itibaren gecen sure : %lu saniye", sure);
      getch();
}

Ekran çıktısı



Kent Beck TDD adımları



Kent Beck, yazmış olduğu Test-Driven Development Example adlı kitapta TDD için atılması gereken adımların şunlar olduğunu belirtmiştir :

1) Hemen bir test oluştur.

2) Testleri çalıştır ve eklenen son testin çalışmadığını gör.

3) Testin çalışması için küçük bir değişiklik (refactoring) yap.

4) Testleri çalıştır ve tüm testlerin hatasız bir şekilde çalıştığını gör.

5) Tekrarları yok et.

25 Ocak 2014 Cumartesi

Extreme Programming (XP) nedir? XP değerleri nelerdir?

Extreme Programming (XP); çevik süreçlerin en çok tercih edilenlerinden bir tanesidir. 1996 yılında Chrysler firması bünyesinde, Kent Back ve arkadaşları tarafından temeli atılmıştır.

XP projelerinde müşteri ve müşteri gereksinimleri merkezi rol oynar. Yazılım geliştirilirken değişen müşteri isteklerine ayak uydurulabilir. Bu konvensiyonel yazılım geliştirme yöntemlerinde mümkün değildir. Çünkü konvensiyonel yöntemlerde proje başlangıcında gereksinimler tüm detaylarıyla kağıda dökülür ve ileride değişiklik yapılmasına izin vermez.

XP projelerinde bürokrasi ve formalite asgari seviyeye çekilmeye çalışılır. Çünkü çevik olabilmek için olabildiğince az yükle yola çıkmak gerekir. Bu yüzden proje öncesi çok büyük çapta dökümantasyon veya tasarım yapılmaz. Ancak bu hiç yapılmadığı anlamına da gelmez.

XP Değerleri


XP, dört değer üzerine kuruludur. Bunlar; Basitlik (Simplicity), İletişim (Communication), Geridönüm (Feedback), Cesaret (Courage).


24 Ocak 2014 Cuma

JavaScript klavyeden girilen sayının faktöriyelini hesaplama



JavaScript ile klavyeden bir sayı girilmesini isteyeceğiz ve girilen sayının faktöriyelini hesaplayıp ekranda göstereceğiz.

İlk olarak prompt komutu ile klavyeden girilen sayıyı alıyorum ve bunu bir değişkene atıyorum.

var sayi = prompt("Sayıyı girin : ");

Ardından carpim adında bir değişken oluşturuyorum ve başlangıç değerine 1 veriyorum.

var carpim=1;

Şimdi 1'den başlayarak sayi değişkenine kadar birer birer artan bir for döngüsü oluşturuyorum.

for(var i=1;i<=sayi;i++)
{


}

Döngünün içinde carpim değişkenini i değişkeni ile çarpıyorum ve sonucu carpim değişkenine yeni değer olarak atıyorum.

for(var i=1;i<=sayi;i++)
{
carpim = i * carpim;

}

Son olarak çıkan sonucu göstermek için document.write komutunu kullanıyorum.

document.write("<b>" + sayi + "</b> sayısının faktöriyeli : <b> " + carpim + " </b>");

Java - JFrame'ler arası geçiş

Bu yazıda Java'da frameler arası geçiş işleminin nasıl yapıldığını anlatacağım.

Frame1 ve Frame2 adında iki frame olduğunu düşünelim. Frame1 üzerinde bir butona tıklandığında Frame2'nin açılması işlemini gerçekleştireceğiz.

Frame1 adında yeni bir JFrame oluşturuyorum. İçerisine bir JButton koyuyorum.



Şimdi Frame2 adında bir JFrame oluşturuyorum. Bir JLabel ekliyorum.


Frame1 içindeki butona çift tıklayarak butonun actionPerformed metoduna aşağıdaki kodu yazıyorum.

Frame2 frame = new Frame2();
frame.setVisible(true);

Frame1'i çalıştırıyorum.



Butona tıklıyorum ve Frame2 açılıyor.






Shannon - Fano sıkıştırma algoritması

Veri sıkıştırma algoritmalarından Shannon-Fano algoritmasının nasıl kullanıldığını anlatacağım.

Daha önce Huffman Kodlama yazısında Huffman veri sıkıştırma algoritmasını anlatmıştım.

Shannon-Fano algoritması da Huffman algoritmasına benzer. Huffman da olduğu gibi olasılıklar büyükten küçüğe doğru sıralanır. Daha sonra olasılıklar toplanır ve ikiye bölünür. İkiye bölerken olasılık toplamlarının birbirine en yakın şekilde bölünmesi gerekmektedir.

Bu şekilde anlatıldığında tam olarak anlaşılamayabilir ancak örnek üzerinden anlattığımda ne kadar basit olduğunu göreceksiniz.

Örnek

A, B, C, D ve E olaylarımız olsun. Bu olayların frekansları da sırasıyla 6, 7, 15, 6 ve 5 olsun.

İlk olarak frekansları büyükten küçüğe doğru sıralıyoruz.


Şimdi frekansları birbirine en yakın olacak şekilde ikiye bölüyoruz. 

15 + 7 = 22 ve 6 + 6 + 5 = 17 yani 22 ve 17 birbirine en yakın olduklarından dolayı B'den sonra bir çizgi çiziyorum ve çizginin üstünde kalanlara 1 altında kalanlara 0 yazıyorum.


Aynı işlemi tekrarlamaya devam ediyorum. Çizginin yukarısında iki tane olay kaldığı için tek bir çizgi çiziyorum ve C'nin yanına 1 B'nin yanına 0 yazıyorum.

Aşağı kısımda ise tekrar ikiye bölmeye devam ediyorum. 6+6 / 5 veya 6 / 6+5 şeklinde bölünebilir. Ancak toplamların birbirine en yakın halini almak gerektiğinden 6 / 6+5 şeklinde bölüyorum. Yani A'nın altından bir çizgi çekiyorum. Çizginin üstüne 1 altına 0 değerini veriyorum.


C, B ve A ile işimiz bitti. Yalnızca D ve E'nin arasına bir çizgi çiziyorum ve D'nin yanına 1, E'nin yanına 0 ekliyorum.


İşlemlerin sonuna geldik. Şimdi olayları Shannon-Fano kodlarıyla ifade edelim.

C : 11
B : 10
A : 01
D : 001
E : 000

23 Ocak 2014 Perşembe

JavaScript fonksiyon kullanımı



Bu yazıda JavaScript'te fonksiyonların kullanımını anlatacağım.

Fonksiyon; matematikte değişken sayıları girdi olarak kabul edip bunlardan bir çıktı sayısı oluşmasını sağlayan kurallardır.

JavaScript'te fonksiyon oluşturmak için function komutu kullanılır.

Şimdi bir HTML sayfası oluşturuyorum. <script> ... </script> etiketlerimi ekledikten sonra arasına aşağıdaki kodları yazıyorum.

function goster()
{
document.write("Fonksiyon çalıştırıldı.");
}

Yukarıdaki kod ile goster adında bir fonksiyon ürettim. HTML sayfamı tarayıcıda çalıştırdığımda ekranın boş olduğunu görüyorum.

Şimdi sayfaya goster(); kodunu ekliyorum. Sayfayı tekrar çalıştırıyorum ve ekrana "Fonksiyon çalıştırıldı." yazıldığını görüyorum.

Burada goster() komutuyla fonksiyonu çalıştırdım. Fonksiyonlar bu şekilde çalıştırılmadıkları sürece içlerinde yazılan kodlar da çalışmıyor.

Parametre kullanma

Yukarıda normal bir fonksiyon oluşturmayı öğrendik. Şimdi fonksiyona dışarıdan parametre göndermeyi öğreneceğiz.

function daire_alani_hesaplama(yaricap)
{
var r = yaricap;
var alan = 3 * r * r;
document.write(alan);
}

Koduyla daire alanını hesaplayan bir fonksiyon oluşturuyorum. Fonksiyon dışarıdan yaricap değişkenini alacak.

daire_alani_hesaplama(4); koduyla da fonksiyona 4 değerini gönderiyorum. Sayfayı çalıştırdığımda ekrana 48 yazıldığını görebilirim.

daire_alani_hesaplama(5); şeklinde kaydedip çalıştırırsam ekrana 75 yazılır.

PHP ile XML dosyasından veri çekme



Şu ana kadar PHP ile ilgili birçok yazı yayınladım ancak XML dosyasından veri okuma ile ilgili hiçbir şey anlatmadım. Bu yazıda XML dosyasından PHP ile veri okumayı anlatacağım. Bu işlem gerçekten çok basit.

Öncelikle kullanicilar.xml adında bir dosya oluşturuyorum. Dosyamın içerisine aşağıdaki kodları yazıyorum.

<kullanicilar>

<kullanici>
<ad>Ahmet</ad>
<yas>21</yas>
</kullanici>

<kullanici>
<ad>Ali</ad>
<yas>24</yas>
</kullanici>

<kullanici>
<ad>Ayşe</ad>
<yas>42</yas>
</kullanici>

<kullanici>
<ad>Mehmet</ad>
<yas>13</yas>
</kullanici>

</kullanicilar>

Dosyamı kaydediyorum ve şimdi bir PHP dosyası oluşturuyorum.

Oluşturmuş olduğum PHP dosyasında ilk olarak XML dosyasına bağlanmam gerekiyor. Bunun için simplexml_load_file() fonksiyonunu kullanıyorum.

$xml = simplexml_load_file("kullanicilar.xml"); satırı ile XML dosyasına bağlandım.

Şimdi sıra kullanıcı bilgilerini görüntülemeye geldi.

echo $xml->kullanici[0]->ad; komutunu yazarak sayfayı çalıştırırsam ilk kullanıcının adının ekrana geldiğini görebilirim. Yani ekrana Ahmet yazılır.

Şimdi bir for döngüsü oluşturuyorum ve bu döngü içinde tüm kullanıcıların bilgilerini ekranda gösteriyorum.

$xml->kullanici[0]->ad;
for($i=0;$i<=3;$i++)
   {
echo $i . ". kullanıcı : <b>" . $xml->kullanici[$i]->ad . "</b> yaş : <b>" . $xml->kullanici[$i]->yas . "</b><br />";
   }

Ekran görüntüsü



Microsoft SQL Server error:26 hatasının çözümü

Microsoft SQL Server kullananların karşılaşabileceği hatalardan bir tanesi aşağıdaki resimde görmüş olduğunuz hata.


Bilgisayarınıza yüklediğiniz bir programdan sonra veya yapmış olduğunuz güncelleştirmelerden sonra bu hatayla karşılaşabilirsiniz. Hatanın oluşmasının sebebi Windows hizmetlerinde SQL Server'ın statüsünün değişmesi. Sorunu çözmek için de SQL Server'ı başlatmak yeterli.

Bunun için bilgisayarıma sağ tıklayıp Yönet seçeneğine tıklıyoruz.


Aşağıdaki resimde görüldüğü gibi Hizmetler sekmesini seçiyoruz.


SQL Server (SQLEXPRESS) adlı hizmeti bularak sağ tıklayıp Başlat dememiz yeterli oluyor.