31 Ocak 2014 Cuma

Java'da txt dosyasına veri yazma ve okuma

1 comment


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 ...



Read More

Halka Topolojisi (Ring Topology)

Leave a Comment
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.
Read More

29 Ocak 2014 Çarşamba

Java'da dinamik butonların tetiklenmesi

Leave a Comment
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 ...

Read More

PHP ile MySQL veritabanına image upload etme ve okuma

3 comments
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)
Read More

28 Ocak 2014 Salı

C# ile CSV dosyasına veri yazma

Leave a Comment
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 ...


Read More

Java dinamik JButton oluşturma (sinema salonu)

1 comment
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);
}
}
}
}

}

Read More

27 Ocak 2014 Pazartesi

Bilgisayar Buyrukları

Leave a Comment
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.


Read More

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

Leave a Comment
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);



Read More

26 Ocak 2014 Pazar

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

1 comment
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.



Read More

Standart C'de Time fonksiyonu

Leave a Comment
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ı



Read More