Konuşma Bitti


Rüyamda öldüğümü görüyordum;
Daha doğrusu öldüğüm söyleniyordu.
Öldüğümü farkettiğimden sonra bir ses;
Artık konuşman bitti, şimdi nefsin konuşmaya başlayacak.
Artık ben konuşacağım dedi.

Ölmüş olma dehşetine kapılmıyordum ancak nefsimin sesini duyuyor olmak tuhaftı.

Reklamlar

JavaDB: Halk için Database


Dürüst konuşmak gerekirse veritabanı programcılığı ile uğraşmış hemen hemen herkes veritabanların taşınabilirliği sorununu yaşamıştır:

Programınız hazırdır ancak programı kullanacak olan kişiye MySQL kurdurmaya çalışmak deveye hendek atlatmaktan zor hale gelir.
Yurdum insanı bilgisayarını çökertir, veritabanı göçer gider.
Yüksek güvenlikli profesyonel bir sistem kurayım dersiniz, “abi ne gerek var yaaa” derler.

Neyse kısa bir süre önce Derby ile başlayan JavaDB serüveni ki JDK 1.6.0 sürümü ile tam kıvamına geldi neredeyse.
JDK 1.6.0’la birlikte gelen JavaDB desteğini JDK 1.6.0 kurduktan sonra Java kurulu klasörün altındaki db dizininden anlayabilirsiniz.

Bir ne Netbeans’ınıza ilgili modülü yüklediyseniz, artık ızdırapsız database uygulamaları geliştirebilirsiniz.

Netbeans’ın 5.5.1 Beta sürümlerinde her halde 6.0 için düşünülen hazır database uygulamaları şablonları veritabanı kullanımını daha da kolaylaştıracak.

Hayırlı olsun

JavaDB: Halk için Database


Dürüst konuşmak gerekirse veritabanı programcılığı ile uğraşmış hemen hemen herkes veritabanların taşınabilirliği sorununu yaşamıştır:

Programınız hazırdır ancak programı kullanacak olan kişiye MySQL kurdurmaya çalışmak deveye hendek atlatmaktan zor hale gelir.
Yurdum insanı bilgisayarını çökertir, veritabanı göçer gider.
Yüksek güvenlikli profesyonel bir sistem kurayım dersiniz, “abi ne gerek var yaaa” derler.

Neyse kısa bir süre önce Derby ile başlayan JavaDB serüveni ki JDK 1.6.0 sürümü ile tam kıvamına geldi neredeyse.
JDK 1.6.0’la birlikte gelen JavaDB desteğini JDK 1.6.0 kurduktan sonra Java kurulu klasörün altındaki db dizininden anlayabilirsiniz.

Bir ne Netbeans’ınıza ilgili modülü yüklediyseniz, artık ızdırapsız database uygulamaları geliştirebilirsiniz.

Netbeans’ın 5.5.1 Beta sürümlerinde her halde 6.0 için düşünülen hazır database uygulamaları şablonları veritabanı kullanımını daha da kolaylaştıracak.

Hayırlı olsun

Daha pratik kod yazımı için; Netbeans’da Interface Kullanımı


Yazdığınız program içinde tüm değişkenleri bir class içine yazıp bunları program içinden çağırmak pratik bir iş olacaktır ancak bunun için her seferinde:

CagrilacakClassAdi VekilHarf=new CagrilacakClassAdi();
VekilHarf.degisken1;

şeklinde yazmak zor bir işlemdir.
Aşağıda anlatacağım metot ise başka class’da bulunan değişkeni direkt olarak kullanmamızı sağlar

Netbeans’ta project menüsü içinden ilgili projeti seçip sağ tıklayarak “New>New Interface” diyerek bir Interface dosyası içine diyoruz.

package mypack;

/**
*
* @author Suat ATAN
*/
public interface YeniInterface{

//ZAMAN BELIRTIR
int ZAMAN=0;

}

Koyu kısım dışındaki kodlar otomatik olarak oluşuyor. Bundan sonra değişkenlerimizi yazıp standart değerlerini yazıyoruz.(mesela zaman gibi)

Daha sonra bu interface’yi yine project menüsünden sağ tıklayarak compile ettikten sonra ana programımızın bulunduğu class’a gelip:

package ana;
import mypack.YeniInterface;//once degiskenlerin bulundugu class import ediliyor
/**
*
* @author Suat ATAN
*/
public class NewJFrame extends javax.swing.JFrame implements YeniInterface{
….

kodlarına yeşil kısımlarda gözüktüğü gibi önce import ile class’ı çağırıyor daha sonra implements ibaresi ile ana programa dahil ediyoruz.

Bundan böyle ana program içinden ZAMAN değişkeni direkt lokal değişkenmiş gibi tanınır.

Bu sistemin faydası çok değişkenkli programlarda değişkenleri tek yerde toplayıp organize etmektir.

Henüz denemedim ama interface içinde metotlar da kullanılabiliyor kanaatindeyim.

Daha pratik kod yazımı için; Netbeans’da Interface Kullanımı


Yazdığınız program içinde tüm değişkenleri bir class içine yazıp bunları program içinden çağırmak pratik bir iş olacaktır ancak bunun için her seferinde:

CagrilacakClassAdi VekilHarf=new CagrilacakClassAdi();
VekilHarf.degisken1;

şeklinde yazmak zor bir işlemdir.
Aşağıda anlatacağım metot ise başka class’da bulunan değişkeni direkt olarak kullanmamızı sağlar

Netbeans’ta project menüsü içinden ilgili projeti seçip sağ tıklayarak “New>New Interface” diyerek bir Interface dosyası içine diyoruz.

package mypack;

/**
*
* @author Suat ATAN
*/
public interface YeniInterface{

//ZAMAN BELIRTIR
int ZAMAN=0;

}

Koyu kısım dışındaki kodlar otomatik olarak oluşuyor. Bundan sonra değişkenlerimizi yazıp standart değerlerini yazıyoruz.(mesela zaman gibi)

Daha sonra bu interface’yi yine project menüsünden sağ tıklayarak compile ettikten sonra ana programımızın bulunduğu class’a gelip:

package ana;
import mypack.YeniInterface;//once degiskenlerin bulundugu class import ediliyor
/**
*
* @author Suat ATAN
*/
public class NewJFrame extends javax.swing.JFrame implements YeniInterface{
….

kodlarına yeşil kısımlarda gözüktüğü gibi önce import ile class’ı çağırıyor daha sonra implements ibaresi ile ana programa dahil ediyoruz.

Bundan böyle ana program içinden ZAMAN değişkeni direkt lokal değişkenmiş gibi tanınır.

Bu sistemin faydası çok değişkenkli programlarda değişkenleri tek yerde toplayıp organize etmektir.

Henüz denemedim ama interface içinde metotlar da kullanılabiliyor kanaatindeyim.

Java Uygulaması Üzerinden HTTP POST işlemi yapmak


Diyelim ki web sayfanızı php veya başka bir dil ile hazıladırnız. yazdığınız bir Java programından tıpkı html formlarından post yapar gibi veri yollamak istiyorsunuz. Bunun için aşağıdaki kodlar tam size göre. Aşağıdaki postdata metodu DATA_1 DATA_2 VE DATA_3 şeklindeki 3 datayı ALICI_URL’ye gönderiyor.
bu metodu şöyle kullanabilirsiniz.
postdata(“http://adresim.com/konukdefteri.php”,“Suat”,“ATAN”,“VAN”);

bu metot ile
http://adresim.com/konukdefteri.php
adresine Suat,ATAN ve Van stringleri yollanır.ancak gönderilen URL’de değişkenlerin adlarının DATA_1,DATA_2 VE DATA_3 olması gerekir. bu adları kendinize göre değişebilirsiniz.
metodu boolean fırtlatacak şekilde yaptım data post edilirse true
fırlatacak.
Bu metotun çalışan bir örneğini:
http://www.myjavaserver.com/~suatatan/gundimsn/index.jnlp
adresini tıklayarak çalıştırabilirsiniz.
Bu Java ile yazılmış bir ziyaretçi defteri swing uygulaması ve bu uygulamadan yollanan mesaj
http://www.van-gurpinar.bel.tr/eklenenmesajlar.php
sayfasında yayına geçiyor.
_______
public boolean postdata(String ALICI_URL,String DATA_1,String DATA_2,String DATA_3) {

//BIR APPLIKASYON UZERINDEN DATA POST ETMEYI SAGLAR

try
{
String data = (new StringBuilder()).append(URLEncoder.encode(“DATA_1”, “iso-8859-9”)).append(“=”).append(URLEncoder.encode(DATA_1, “iso-8859-9”)).toString();
data = (new StringBuilder()).append(data).append(“&”).append(URLEncoder.encode(“DATA_2”, “iso-8859-9”)).append(“=”).append(URLEncoder.encode(DATA_2, “iso-8859-9”)).toString();
data = (new StringBuilder()).append(data).append(“&”).append(URLEncoder.encode(“DATA_3”, “iso-8859-9”)).append(“=”).append(URLEncoder.encode(DATA_3, “iso-8859-9”)).toString();

URL url = new URL(ALICI_URL);
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(data);
wr.flush();
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;

while((line = rd.readLine()) != null)
{

System.out.println(“data post edildi”);
sonuc=true;
System.out.println(“———–ok————–”);

}

wr.close();
rd.close();

} catch(Exception e) {

sonuc=false;

}

return sonuc;
}

_________
Metot String cinsinden DATA_1 parametresini alıp uzak sunucuda bulunan dosyaya yine DATA_1 parametresi ile yollluyor, metot dikkatle incelendiğinde tırnak içindeki ilk DATA_1 parametresi verinin post edileceği dosyadaki DATA_1 parametresine yollanıyor.Bu adları değiştirebilirsiniz.

Java Uygulaması Üzerinden HTTP POST işlemi yapmak


Diyelim ki web sayfanızı php veya başka bir dil ile hazıladırnız. yazdığınız bir Java programından tıpkı html formlarından post yapar gibi veri yollamak istiyorsunuz. Bunun için aşağıdaki kodlar tam size göre. Aşağıdaki postdata metodu DATA_1 DATA_2 VE DATA_3 şeklindeki 3 datayı ALICI_URL’ye gönderiyor.
bu metodu şöyle kullanabilirsiniz.
postdata(“http://adresim.com/konukdefteri.php”,”Suat”,”ATAN”,”VAN”);

bu metot ile
http://adresim.com/konukdefteri.php
adresine Suat,ATAN ve Van stringleri yollanır.ancak gönderilen URL’de değişkenlerin adlarının DATA_1,DATA_2 VE DATA_3 olması gerekir. bu adları kendinize göre değişebilirsiniz.
metodu boolean fırtlatacak şekilde yaptım data post edilirse true
fırlatacak.
Bu metotun çalışan bir örneğini:
http://www.myjavaserver.com/~suatatan/gundimsn/index.jnlp
adresini tıklayarak çalıştırabilirsiniz.
Bu Java ile yazılmış bir ziyaretçi defteri swing uygulaması ve bu uygulamadan yollanan mesaj
http://www.van-gurpinar.bel.tr/eklenenmesajlar.php
sayfasında yayına geçiyor.
_______
public boolean postdata(String ALICI_URL,String DATA_1,String DATA_2,String DATA_3) {

//BIR APPLIKASYON UZERINDEN DATA POST ETMEYI SAGLAR

try
{
String data = (new StringBuilder()).append(URLEncoder.encode(“DATA_1”, “iso-8859-9”)).append(“=”).append(URLEncoder.encode(DATA_1, “iso-8859-9”)).toString();
data = (new StringBuilder()).append(data).append(“&”).append(URLEncoder.encode(“DATA_2”, “iso-8859-9”)).append(“=”).append(URLEncoder.encode(DATA_2, “iso-8859-9”)).toString();
data = (new StringBuilder()).append(data).append(“&”).append(URLEncoder.encode(“DATA_3”, “iso-8859-9”)).append(“=”).append(URLEncoder.encode(DATA_3, “iso-8859-9”)).toString();

URL url = new URL(ALICI_URL);
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(data);
wr.flush();
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;

while((line = rd.readLine()) != null)
{

System.out.println(“data post edildi”);
sonuc=true;
System.out.println(“———–ok————–“);

}

wr.close();
rd.close();

} catch(Exception e) {

sonuc=false;

}

return sonuc;
}

_________
Metot String cinsinden DATA_1 parametresini alıp uzak sunucuda bulunan dosyaya yine DATA_1 parametresi ile yollluyor, metot dikkatle incelendiğinde tırnak içindeki ilk DATA_1 parametresi verinin post edileceği dosyadaki DATA_1 parametresine yollanıyor.Bu adları değiştirebilirsiniz.

paint() metodu ile ilgili spotlar


  1. Paint metodu bilindiği üzere Java’nın her türlü geometerik şekil, yazı ve resim gibi görselleri göstermek için kullanılan bir metot olup her nesne koordinat düzleminde yerleştirilir.
  2. Paint metodunun birebir başka bir event metodu altından çağrılması güç olduğundan çoğunlukla şartlı ifadelerle (if, switch…) olay yakalaması sağlanır.
  3. Paint metodunda koordinat düzlemi normal kordinat düzlemine göre Y ekseninde baş aşağıdır. Bu durumun yaratacğı sıkıntıları şöyle aşabilirsiniz. Çizim alanını kare varsayarak ebat adında bir değişken tanımlayın. Mesala int ebat=500 ; olsun Programın her açılışında setSize(ebat,ebat); programı her açılışta 500×500 piksel alanında açmış olursunuz. Koordinatlarınınzın 0,0 noktasının tam ortada olacağını varsayarak orijin diye bir değişken belirleyin: int orijin=(int)(ebat/2);
  4. Bundan sonra yapacağınız drawLine metotlarında drawLine(p1x,p1y,p2x,p2y) yerine drawLine(p1x,orijin-p1y,p2x,orijin-p2y) derseniz çizeceğin grafik sizin kendi yarattığınız 0,0 düzlemine göre değişecektir.
  5. Appletler içinde paint metodu kullanılca her repaint() çağrısı ekranın bir önceki halini silip yenisini yazar ancak JFrame’ler içinden repaint() işleminde önceki ekran değişmez yazı ve görseller üstüste biner. Bu durumu engellemek için ise repaint() yerine:

g.clearRect(silinecek alan x noktası,silinecek alan y noktası,silinecek alan en,silinecek alan boy);

metodunu kullanabilirsiniz böylece görsel nesneler üstüste binmez.

paint() metodu ile ilgili spotlar


  1. Paint metodu bilindiği üzere Java’nın her türlü geometerik şekil, yazı ve resim gibi görselleri göstermek için kullanılan bir metot olup her nesne koordinat düzleminde yerleştirilir.
  2. Paint metodunun birebir başka bir event metodu altından çağrılması güç olduğundan çoğunlukla şartlı ifadelerle (if, switch…) olay yakalaması sağlanır.
  3. Paint metodunda koordinat düzlemi normal kordinat düzlemine göre Y ekseninde baş aşağıdır. Bu durumun yaratacğı sıkıntıları şöyle aşabilirsiniz. Çizim alanını kare varsayarak ebat adında bir değişken tanımlayın. Mesala int ebat=500 ; olsun Programın her açılışında setSize(ebat,ebat); programı her açılışta 500×500 piksel alanında açmış olursunuz. Koordinatlarınınzın 0,0 noktasının tam ortada olacağını varsayarak orijin diye bir değişken belirleyin: int orijin=(int)(ebat/2);
  4. Bundan sonra yapacağınız drawLine metotlarında drawLine(p1x,p1y,p2x,p2y) yerine drawLine(p1x,orijin-p1y,p2x,orijin-p2y) derseniz çizeceğin grafik sizin kendi yarattığınız 0,0 düzlemine göre değişecektir.
  5. Appletler içinde paint metodu kullanılca her repaint() çağrısı ekranın bir önceki halini silip yenisini yazar ancak JFrame’ler içinden repaint() işleminde önceki ekran değişmez yazı ve görseller üstüste biner. Bu durumu engellemek için ise repaint() yerine:

g.clearRect(silinecek alan x noktası,silinecek alan y noktası,silinecek alan en,silinecek alan boy);

metodunu kullanabilirsiniz böylece görsel nesneler üstüste binmez.

WordPress.com'da ücretsiz bir web sitesi ya da blog oluşturun.

Yukarı ↑