16 Aralık 2009 Çarşamba

hibernateSession.refresh();

09:23:51,530 ERROR [STDERR] java.lang.IllegalArgumentException: Attempt to generate refresh event with null object
09:23:51,531 ERROR [STDERR] at org.hibernate.event.RefreshEvent.(RefreshEvent.java:19)
09:23:51,531 ERROR [STDERR] at org.hibernate.impl.SessionImpl.refresh(SessionImpl.java:886)
09:23:51,531 ERROR [STDERR] at org.jboss.seam.persistence.HibernateSessionProxy.refresh(HibernateSessionProxy.java:351)

ilgili class'taki hibernateSession.refresh(unit);

// hibernateSession.refresh(unit); kaldırılmalı.

11 Aralık 2009 Cuma

while loop, iterator ve for each

While loop, iterator veya for each hepsi de aslında aynı işlevi görüyor.
Ekran çıktısına bakıldığında üç kez haftanın günlerini yazdı.


import java.util.ArrayList;
import java.util.Iterator;

public class Main {
public static void main(String[] args) {

//Yeni bir arraylist oluşturduk
ArrayList list = new ArrayList();

//listeye haftanın günlerini ekledik
list.add("Pazartesi");
list.add("Salı");
list.add("Çarşamba");
list.add("Perşembe");
list.add("Cuma");
list.add("Cumartesi");
list.add("Pazar");

Iterator iterator = null;

iterator = list.iterator();
while (iterator.hasNext()) {
String element = iterator.next();
System.out.println(element);
}

for (iterator = list.iterator(); iterator.hasNext();) {
String element = iterator.next();
System.out.println(element);
}

//Benim tercihim for each döngüsü :)
for (String element : list) {
System.out.println(element);
}
}
}

ekran çıktısı :

/*
Pazartesi
Salı
Çarşamba
Perşembe
Cuma
Cumartesi
Pazar
Pazartesi
Salı
Çarşamba
Perşembe
Cuma
Cumartesi
Pazar

Pazartesi
Salı
Çarşamba
Perşembe
Cuma
Cumartesi
Pazar

*/

Kaynak: www.java2s.com

ArrayList sort();

Elinizde karşık bir liste var ve siz bu listenin içeriğinin sıralı bir şekilde gelmesini istiyorsunuz.

public class Sirala(){

public static void(){

//yeni bir liste oluşturuyoruz.
ArrayList arrayList = new ArrayList();
arrayList.add("1");
arrayList.add("3");
arrayList.add("2");
arrayList.add("5");
arrayList.add("4");

// elimizdeki arrayList'ti collection'ın sort methodu ile sıralıyoruz.
Collections.sort(arrayList);

//sıralanmış arraylistimizi for each ile sırayla ele alıp yazırıyoruz.
for(String str : arrayList){

//ekrana yazdırma
System.out.printLn(str);
}
}
}


çıktısı :
1
2
3
4
5

16 Ekim 2009 Cuma

Hibernate createCriteria

Kriter yaratmak;

Criterai kriter = sess.createCriteria(Cat.class); // ilgili classı alıyoruz.
kriter.setMaxResult(50); //maximum kaç sonuç döndüreceğini ayarlıyoruz

List cats = kriter.list(); // .list() il sonucu listeliyoruz.

Sonucu daraltma yani filtreleme de diyebiliriz.

List cats = sess.createCriteria(Cat.class)
.add(Restrictions.like("name", "Fritz%")) /
/adı Fritz ile başlayanları listeler
.list();

Restrictions kelime anlamı olarak "sınırlama" demektir.

Restrictions'ın metodları;
.like
.isNull
.isNotNull
.gt
.eq
.or
.between
.eqProperty

ve daha fazlası. Bunlar bir kaçı.

nasıl kullanıldığına örnek ise;

.add(Restriction.eq("name", "Ayşe").list(); //adı "Ayşe" olanları listeler gibi...

Yararlanılan kaynak : http://docs.jboss.org/hibernate/core/3.3/reference/en/html/index.html

2 Ekim 2009 Cuma

jrxml splitType Hatası

net.sf.jasperreports.engine.JRException: org.xml.sax.SAXParseException: cvc-complex-type.3.2.2: Attribute 'splitType' is not allowed to appear in element 'band'.
at net.sf.jasperreports.engine.xml.JRXmlLoader.loadXML(JRXmlLoader.java:243)
at net.sf.jasperreports.engine.xml.JRXmlLoader.loadXML(JRXmlLoader.java:226)

oluşturulan jrxml içeriğinde bulunur. splitType özelliğinin kaldırılması gerekmektedir.

29 Eylül 2009 Salı

for döngüsü (For Statment)

class ForDemo {
public static void main(String[] args){
for(int i=1; i<11;>
The output of this program is:
Count is: 1
Count is: 2
Count is: 3
Count is: 4
Count is: 5
Count is: 6
Count is: 7
Count is: 8
Count is: 9
Count is: 10


veya...
class EnhancedForDemo {
public static void main(String[] args){
int[] numbers = {1,2,3,4,5,6,7,8,9,10};
for (int item : numbers) {
System.out.println("Count is: " + item);
}
}
}
In this example, the variable item holds the current value from the numbers array. The output from this program is the same as before:
Count is: 1
Count is: 2
Count is: 3
Count is: 4
Count is: 5
Count is: 6
Count is: 7
Count is: 8
Count is: 9

Count is: 10

Kaynak: http://java.sun.com/docs/books/tutorial/java/nutsandbolts/for.html

Contol Statments; if-then-else

if
if - else
if - then- else

void applyBrakes(){
if (isMoving){ // if (eger) hareket ediyorsa
currentSpeed--; //hızı düşür, durdur
}
}


veya

void applyBrakes(){
if (isMoving) currentSpeed--; // aynı anlama geliyor ama parantezleri yok, //but without braces
}


The if-then-else Statement


void applyBrakes(){
if (isMoving) {
currentSpeed--;
} else {
System.err.println("The bicycle has already stopped!"); // bisiklet zaten duruyor
}
}


if else else if

class IfElseDemo {
public static void main(String[] args) {

int testscore = 76;
char grade;

if (testscore >= 90) {
grade = 'A';
} else if (testscore >= 80) {
grade = 'B';
} else if (testscore >= 70) {
grade = 'C';
} else if (testscore >= 60) {
grade = 'D';
} else {
grade = 'F';
}
System.out.println("Grade = " + grade);
}
}
The output from the program is://programın sonucu
    Grade = C // büyük: C

Kaynak: http://java.sun.com/docs/books/tutorial/java/nutsandbolts/if.html


14 Ağustos 2009 Cuma

SVN : SubVersioN

ufak bir tanım:

SVN : SubVersioN : Bir proje grubunun ortak çalışma alanı gibi düşünebiliriz. herkes kendi local'inde çalışır düzgünse svn'e yükler(commit) ve diger kişiler "update" alarak oradaki güncellenmiş bilgiyi kendi local'lerine yani kendi bilgisayarlarına çekerler. Bu sayede aynı anda birden fazla iş yapılmış olur.

Dikkat edilmesi gereken noktalar "confilict" olmasıdır. Yani çakışma. aynı döküman üzerinde iki tarafta değişiklik yapmışsa çakışma yaşanır. Bu durumda ya tek tek kontrol edilir düzeltilir ya da "override and update" (üzerine yaz ve güncelle) yapılır

Collection Interfaces

Collection'ları içerinde birden fazla obje, nesne barındrabilen bir torba gibi düşünebiliriz. gerektiğinde bu torba içine yeni nesneler ekleyebilir, hazır nesneyi silebiliriz. Sıralama (sorting) ve herhangi nesneyi arayabiliriz(searching). Bu tür işlemlere olanak verir.

ornek olarak:

String[] isimler = new String[5];

ifadesi sadece 5 ismi(nesneyi) barındırabilir. Bunun üzerinde herhangi bir ekleme ve kaldırma işlemleri de yapılamaz. Static'tirler, dynamic değillerdir.

bir diger ornek:

ArrayList list =new ArrayList(); //nesne sayısını bilmek zorunda değiliz
list.add("1");
list.add("2");
list.add("3");
list.add(1,"1.5"); //Araya ekliyor 1 ile 2 arasına

String element = (String) list.get(2);

dediğimizde yeni sıralamaya göre ikinci indexi getirir.

Collection Interfaces:

List, set, map

List: Belirli bir sıraya göre düzenlenir ve index erişimi destekler. Liste şeklindedir.

Set: Belirli bir sıra takip etmeyen ve aynı elemanın tekrar dönmez. Küme şeklindedir.

Map: içerisinde br değer ve bir anahtar barındıran bir interface'dir. çok büyük boyutlardaki nesneyi içinde barındırabilir. List ve set'ten farklıdır.

içerik bilgilenme/esinlenme : godoro.com

7 Ağustos 2009 Cuma

Java'da Yorum

Java kodları arasına uzun kısa yorum yapmak istiyorsanız;

/* yorum yorum yorum
yorum yorum*/

slash-yıldızdan , yıldız-slasha arasında istediğiniz kadar uzun bir yorum yapabilirsniz.

// tek satırlık yorum.

Ctrl+Shift+C ile sectiğiniz alanı yorum yapar.

Birkaç Terim I

Loglama: Yapılan durumdan haberdar etmek için yazılan kod. Yani projenizi çalıştırdığında size haber verir "şuan şunu yapıyorum" der gibi.

Refactoring : bir kodun uygulama aşmasında kullanıcıları etkilemeden değiştirilmesi, düzeltilmesi olayı. eski bir kodun yenilenmesi gibi...

Load Balancing : iş yükünün paylaştırılması

Portatable: bir kez yazılıp heryerde çalışabilir olması demek. Java bir tür portatable programdır.

Collection : Objeleri saklayan ve istek olduğunda oradan veren bir torba gibi düşünebiliriz.

Constructor : Yapılandırıcı. Java tarafından otomatik olarak çağrılır ve Çakışmaları önlemek için class ismiyle aynı olmalıdır.

Garbage Collection : Kullanılmayan nesnelerin toplanıp hazfızadan boşaltılması.

Rotation : Yazdılan loglar bir yere kaydedilir ve zamanla çok yer kaplar. Yeni logların eski loglar üzerine yazılması işlemi

initialization : Başlangıç durumuna getirme.

dublicate : eş, eşitleme

invoke : metodu invoke etmek mesala... çağırmak anlamında kullanıyor.

Abstract : soyut demektir. Abstract claslar yaratılamazlar yalnızca extend edilirler.
ve Abstract classların içinde en az bir tane abstract method bulunmak zorundadır.

mesela :

abstract class Araba {

public abstract void sur(); // abstract method fonksiyonelitesiz method

public void dur(){
System.out.println("Araba dur!..");
}
}

iReport II

iReport'un bir tür raporlama aracı olduğunu söylemiştik. ilk versiyonlarında textField ve label'ların etrafını belirgin kılmak oldukça zordu. Fakat sonraki çıkan versiyonlara eklenen yeni seçeneklerle bu iş daha kolay bir hal aldı.

Etrafını belirginleştirmek istediğiniz textfield yada label'ı secip sağ tıklayıp padding verebiliyorsunuz. isteğinize göre istediğiniz tarafını pasifleştirebiliyorsunuz.

27 Mart 2009 Cuma

iReport I

bu bilgileri iReport öğrenme aşamasında bir yerlere not almak yerine her zaman ulaşabileceğim yer olan blog sitesine koyuyorum :)

iReport, rapor tasarımcıları ve geliştiricileri için grafiksel bir rapor aracıdır. Yani bir tür raporlama programı.

şuan bendeki son sürümü iReort 3.5.0 indirmek için tıklayınız. işletim sisteminize göre seçip indirebilirsiniz.

veritabanı olarak; postgres kullanıyoruz.

5 Mart 2009 Perşembe

Pie Chart (Pasta Grafik)

Her ne kadar programcılık eğitimi almış olsanızda uygulamaya geldiğinde olaylar biraz zorlaşıyor gibi.
Programlamaya balıklama daldım sayılır.
Şirketimizin ücretsiz olarak sunmuş olduğu tazminat hesaplama modulüne ilaveten bir pasta grafik koyaklım dedik. Dedik ama nasıl olacak o iş diye de düşünmeden edemedim tabi.

neyse sonuç olarak şuan da uygulamamızda bir adet pasta grafik var.

adres : Hesap Modülü

bunu yaparken önce bir html sayfasında deneme yaptım. Html'de bu grafik nasıl ortaya çıkar diye.

Tabi bunu oluşturmak için de yabancı bir sitede oluşturulmuş bir kaynaktan yardım aldım.

site: http://www.lutanho.net/diagram/ sol taraftaki pie Chart ı seciyoruz.


bu örnekten yararlanarak benim oluşturduğum html dosyası ise şöyle :



devamı gelecek...

3 Mart 2009 Salı

Object nedir (What is an object)?

http://java.sun.com/docs/books/tutorial/java/concepts/index.html

java.sun'ın sitesinden öğrendiklerim, bir nevi çeviri gibi oldu, anlayabildiğim kadarıyla...

What Is An Object (Nesne NEdir?) (State and Behavior olmalı)

Object (Nesne'ler), object-oriented technolojinin anahtarı gibidir. Bildiğimiz gibi java ile ilgili ne kadar araştırma yaparsanız yapın her yer de hava nesne tabanlıdır object oriented teknolojidir gibi laflar okumuşsunuzdur.

Diyor ki, Etrafınıza bir göz atın, gerçek dünyadaki çevrenizdeki nesneleri düşünün, sıran, masan, köpeğin, televizyonun, bisikletin... gerçek dünyadaki nesneler iki karekter taşır.: State ve Behaviour. Hepsininde bir state'i ve behaviour'ı olmak zorundadır ve vardır.

Mesala Köpek:
State'leri
  • isim (name)
  • renk (color)
  • doğurganlık (breed)
  • aç (hungry)
Behaviour'ları
  • havlama (barking)
  • tipi (fetching)
  • kuyruk sallaması (wagging tail)
Mesala Bisiklet;

State'leri
  • current gear, (geçerli vites)
  • current pedal cadence, (geçerli pedal)
  • current speed (geçerli hız)
Behaviour'ları
  • changing gear, (vites değiştirme)
  • changing pedal cadence, (pedal ayarını değiştirme)
  • applying brakes (fren değiştirme)
object-oriented (nesneye Yönelik)programlamayı düşünmek için gerçek dünyadaki nesnelerle bağlantı kurmak en iyi yoldur.

gerçek dünyadaki nesnelere odaklanın, düşünün ve kendinize şu iki soruyu sorun:
Bu nesnenin ne gibi durumları (state) var? ve
Bu nesne ne gibi davranışlar (behaviour) sergileyibilir?

Bunları bir kağıda yazmayı deneyin.

Mesala masa lambası örneğini verimiş:

Masalambası iki duruma (state) sahiptir : açık, kapalı (on,off)
iki davranışa (behaviour'a): açmak, kapatmak (turn on, turn off)

ama masaüstü radyonuz varsa bunlara ilaveten ekstra state'leri vardır. ( on ,off, current volume, current station,

ayrıca ekstra behaviour'ı (turn on, turn off, increase volume (ses açma), decrease volume(ses kısma), seek (arama), scan (tarama), and tune (ayar)

ayrıca bazen, bazı nesnlerin özelliklerini başka nesnelerinde içerdiğini görürsünüz.

Bir yazılım nesnesi

.....

Bir bisiklet düşünün :

Bisiklet yazılım nesnesi olarak modellenmiştir.

State'lerini alalım : (geçerli vites - current gear, pedal ritmi- current pedal cadence, geçerli hız - current speed)

Bisikleti kullanacak diğer kullanıcıları kontrol için State (durum) değiştirmek için bir metod(method) geliştirmeliyiz. Mesala bisiklet 6 vitesli olsun. (Kullanıcıların bunun altına indiğinde veya üstüne çıktığında uyarılmasını istiyoruz gibi.)

kullanıcı vitesi değiştirdiğinde , 1'den az ve 6'dan fazla girildiğinde reddedecek bir method yazabiliriz.

Nesneye yönelik kod yazılmasının birkaç faydası vardır.

  1. Birimsellik: bir nesne için kaynak kodu yazılır ve bağımsız başka nesneler için kaynak kod korunur.

  2. Bilgi gizleme: Bir nesnenin yöntemleri ile etkileşimlie olarak, kendi iç uygulama detayları dış dünyadan gizli kalır.

  3. Kodu yeniden kullanım: Eğer bir nesne zaten yazılı varsa, kendi programınızda bu nesneyi kullanabilirsiniz.

  4. Hata ayıklama kolaylığı: Eğer bir nesne sorunlu olunca sadece nesneyi kaldırabilirsini. tüm maikne yerine sadece bir civatayı çıkarmış olursunuz.
alıntı. kaynak: java.sun

BigDecimal, 2, ROUND_HALF_UP

Birkaç tane BigDecimalli değeri önce 100 ile çarpıp herhangi bir BigDecimal'e bölmek istedim fakat, debug modda hatanın nerede olduğunu anlamaya çalışırken, o satırları direk atlıyordu...

Bunun nedeni ise devirli sayılar yüzünden işlemin kesin bir sonucu olmamasıydı.

Devirli sayırları düzeltmek için ise ; BigDecimal, 2, ROUND_HALF_UP kalıbını kullanıyoruz. Bu devirli sayılarda yuvarlama yapıyor. Mesala : 72.9944 lu bir sayıyı 73 olarak ayarlıyor.

yapmak istediğim kod işlemi

netX= net.multiply(100).divide(ykNetToplam);

gibi bir satırdı. Tüm değişkenlerin değerleri gelmesine rağmen sonuc netX'e aktarılmıyordu.

Bunun devamına ise:

netX= net.multiply(100).divide(ykNetToplam,2, BigDecimal.ROUND_HALF_UP);

değerlerini atadık. ve sorunsuz bir sekilde hata kontrolü (debug) yapıldı.

24 Şubat 2009 Salı

Extends etmek, Değişken Tanımlamak

Bu akşam java ile ilgili dökümanları karıştırırken, internetten araştırırken "extends" kelimesine denk geldim. Gerçi daha önce de var olan kodlarda görmüştüm ama o kadr dikkatimi çekip de acaba bu ne işe yarıyordur diye merak edip araştırmamıştım. NEyse gelelim öze...

Extends kelimesi sözlük anlamı itibariyle genişletme yayma gibi anlamlar içeriyor fakat gördüğüm ve anladığım kadarıyla bunun javadaki karşılığı ilişkilendirmek gibi birşey olsa gerek.

Neden derseniz.
Önce bir class (sınıf) oluşturuyorsunuz. Oluşturduğumuz class adı Tasit olsun

yani

public class Tasit {

}

Taşıt isimli bir sinif olusturduk. Bu sınıfın içine bundan türeyen birçok sınıf oluşturabiliiriz. Çünkü taşıt niteliğini taşıyana birçok araç vardır. şimdi başka bir sınıfı nasıl extend edebiliriz?

public class Tasit {.... }

public class Minibus extends Tasit {.....}

taşıt özelliklerini taşıyan daha birçok sınıfı extends edebiliriz.

Bunları araştırırken bir de Java'da değişken tanımlarken önce değişken tipini daha sonta değişten adını tanımlıyoruz.

Nasıl mı?

DegiskenTipi DegiskenAdi;

Integer a;

gibi



Java Öğreniyorum... :)


9 Şubat 2009 Pazartesi

Java Öğrenmeye Çalışıyorum: Ders 1

Java öğrenmeye çalışırken not aldığım defterimdeki notları aktaracağım.

Bilgisayarınıza java kurmak için google'den yardım alabilir, ya da www.jspturk.com sitesinden yararlanabilirsiniz.

Java Technology: Programlama dili ve platform olarak ikiye ayrılır.

Platform: Herhangi bir programın üzerinde çalıştığı yazılımsal/donanımsal ortam. (Windows OS, Linux P, Mac OS vb.)

Programlama Dili:
Source Code: Kaynak Kodu.
  • .java uzantılı dosyaların hepsi Source Code'dur.
helloWorld isimli bir kaynak kodumuz var diyelim, fakat öncelikle elde etmek için
proje üzerinde iken sağ tıklayalalım > yeni > java class demeliyiz.

public class helloWorld {

public static void main(String[] args) {

System.out.println("Hello World");
}
}
kodu yazdık ve kaydettik. Şimdi sıra derleyip sonucu görmeye geldi, bu sırada program neler yapıyor;
helloWorld.java ---> Compiler/Derleyici ---> helloWorld.class ---> JVM ---> Hello World yazar.

helloWorld.java yukarıdaki kodumuzda bulunan helloWorld'dan gelmektedir.

Compiler(Derleme): Kaynak kodlarımızı byte code'lara çevirmek için derleriz.
Kaynak kodlar derlendiğinde byte kcode'lara, bytecode'lara çevrildiğinde ise uzantısı .java olan kod, .class olarak değişir.

JVM(Java Virtual Machine): Java sanal maiknesi olrak adlandırılır. Kodu sanki gerçek alana atmış gibi çalıştırır. Aslında sanal bir ortamda çalışır ve bize programın sonucunu/çıktısını gösterir. (benim anladığım bu:) )

Bir program aşamasındaki adımlar;

  • Programmin Time: Programlama aşaması,
  • Compile Time: Derleme(Compile Etme) aşaması
  • Run Time: Çalışma Aşaması
Öğrendiğim Birkaç Java Terimi:

  • API (Application Programming Interface): Javanın kendi içinde bulundurduğu hazır kodların bulunduğu küme/kütüphane [Library]
  • IDE ( Integral Development Environment) Bütünleşik Geliştirme ortamı ( Mesala: NetBeans, Eclipse, JBuilders, Sun Java System Studio)

6 Şubat 2009 Cuma

Merhaba Dünya



Günlerden Cuma, Aylardan şubat felan filan...
Java öğrenmeye çalışan bir acemiyim. Konu ile ilgili kursa gittim ama aradan uzun bir zaman geçti üzerinde durmadım. şimdi ise kendimi javaya verimş durumdayım.

öğrendiklerimi bir yerde tutmak amacıyla bu blogu açtım. kendime bir yararım olsun diye :)

Java ile ilgili kaynak araştırırken çok fazla Türkçe kaynak olmadığının farkına vardım.

neyseee... javada çok iyi olduğumu iddia etmiyorum ama şuanki bilgilerimden daha iyisine ulaşabilirim diye düşünüyorum.

ilk adım olarak bloğumu oluşturdum bu bile bir adım sayılır :)

aslını sorarsanız javanın içine pat diye düştüğüm için neyi nereden başlatacağım hakkında bir fikrim yok.

herkes ufak bir uygulamayla başlıyor. ne kada haklı ve doğru bir yöntem tam olarak bilemiyorum. Düşünsenizya daha "class"ın ne olduğunu metodun ne olduuğunu bilmeden bir uygulama yazıp dünyaya merhaba diyorsunuz, "Hello World"...
belki de haklılardır.

ben ezberc ibir yapıya sahip olmadığım için bu tür öğretme yöntemleri ben de pek kabul görmüyor:) kendi kafama göre uyarlıyorum ve daha rahat anlıyorum. inşAllah iyi de bir anlatıcı olurum hem kendime hem de burayı (ziyaret eden olursa) ziyaret edenlere, javva öğrenmeye çalışanlara.

Şuan için herhangi bir kitap almadım, uzun zamandır da almayı düşünüyorum oysa. çok tembelim galiba.

neyse interte güveniyorum galiba, o kadar çok yabancı kaynak var ki... ama :S o kadar iyi bir ingilizcem yok :) zaten terimsel konularda çok da iyi ingilizceye gerek yoktur diye düşünüyorum

başarılar diliyorum kendime...