30 Eylül 2013 Pazartesi

Head First JAVA

Yurt dışında hemen her konuda head first kitaplar bir tarz haline geldi ve sıkça basılıyor . Sanırım daha ülkemizde bu tip eğlenceli ve  ciddi görsellerle bir konu anlatan kitap görmedim . Olsa da çok az olduğu kanısındayım . Bu ekteki kitapta JAVA üzerine yazılmış bir head firs kitap . İngilizce bilenler için gayet eğlenceli olacağı fikrindeyim .

Bunun yanısıra İngilizce hakkında bir kaç şey söylemek istiyorum . Yazılım geliştirme ve bilişim alanında herkesin sıkça dile getirdiği şey "Türkçe kaynak yok" . Camia içerisindeki bir çok kişide , İngilizce bu alanın anadilidir , bilmiyorsan senin kabahatin oturup öğrenmek zorundasın şeklinde yaklaşıyor olaya . Aslında iki yaklaşımda doğru .

Bilgisayar mühendislerinin , ve bilişim uzmanlarının meslekleri gereği gerçekten iyi derecede ingilizce bilmeleri gerekmekte lakin , Türkçe kaynak sıkıntısı yaşayan ve bu işi hobi yahut küçük işlerini halletmek için kullanan kişilere de saygı duymak gerekir . Bunun yanı sıra , bir alan üzerine bu bilişim harici alanlar içinde geçerli bence ; ne kadar çok kendi dilinizde yayınınız veya çeviriniz varsa bu o alanda nekadar ilgili olduğunuzu ve çalıştığınızı gösteren bir parametredir .

Şimdi teleskop imalatı ve kurulumu hakkında , gökbilimi hakkında ilgilisi Türkçe kaynak sıkıntısı çekebilir ama bugün hemen her evde internet bağlantısı ve bir bilgisayar olan , binlerce yazılım mühendisi ve bilişim uzmanı olan bir ülkede bu kadar Türkçe kaynak sıkıntısı olması da garip .

Neyse aşağıda ki dökümanın ilgili herkese yararlı olması dileği ile .



12 Eylül 2013 Perşembe

JAVA Kalıtım (İnheritance)

Kalıtım nesne yönelimli programlamada , daha önceden belirlenmiş sınıfların ,fonksiyonların ve değişkenlerin yeniden tanımlanmadan başka bir sınıfa taşınması olayıdır . Hatta nesne yönelimli programlamanın en temel ve önemli özelliklerinden birisidir . İlk başlarda anlaşılması biraz zor gibi dursa , denemeler yaparak zamanla mantığı anlaşılabilen bir konudur .


19 Ağustos 2013 Pazartesi

UBUNTU (Linux) JAVA JDK ve NETBENAS KURULUMU

     Çoğumuzun bildiği üzere en çok kullanılan JAVA geliştirme araçları Netbeans ve Eclipse dir . GUI üzerine çalışan geliştiriciler ise genelde NetBeans tercih etmektedir . JAVA Jdk ve Netbeans  kurulumu Windows ortamında diğer tüm programlar gibidir . Bilgisayar kullanan herkes Windows üzerine program kurmayı bilirler ve gayet kolaydır . Linux için ise iş bazen daha karmaşık olabilmekte . Genelde uzun yıllar Linux kullananlar bile bazı aşamalarda kafaları karışabilmekte . O nedenle bir kaynak olması için JAVA geliştirme paketlerinin UBUNTU (Bir Linux klonudur) üzerinde kurulumunu yazmak istedim .
     Öncelikle buradan JDK + NetBenas paketini oracle sitesinden indirmekle başlıyoruz .
     İndirdikten sonra uçbirim (terminal) indirerek yükleme yapacağız . Dikkat ederseniz indirdiğimiz paket .sh uzantılı ve buna yönelik bir yükleme yapacağız . Tabi indirilecek paketi seçerkende işletim sisteminizin x86 veya x64 oludğuna dikkat etmelisiniz . Öncelikle terminali açarak cd komutu ile indirdiğimiz dizine giriyoruz . ( Örn : cd /home/user/indirilen klasör) . Daha sonra indridiğimiz paketi 
sudo sh jdk-7u25-nb-7_3_1-linux-x64.sh komutu ile kuruyoruz. Daha sonra açılan ekrandan next ve finish diyerek kurulumu tamamlıyoruz . 
    Eğer aynı paketi kaldırmak istediğimiz de ise /user/local klasörü içerisindeki netbenas dizinine terminalden cd komutu ile girip sudo sh uninstall.sh komutu ile uninstall.sh dosyasını çalıştırarak kaldırma işlemini yapabilirsiniz . Böylelikle .sh uzantılı paketlerinde Linux'a nasıl kurulacağı hakkında bilgi vermiş olduk . :)
   
     

Hibernate

    Bisoft Bilgi Teknolojileri ' nden Kemal DURAN tarafından yazılan giriş aşaması için güzel bir Hibernate notu . Hibernate Java platformunda yazılmış bir ORM (Object/Relational Maping) aracıdır.
     Bir veritabanına veri kaydetmek , veri silmek ve güncellemek gibi işlemlerin kolaylıkla yapılabilmesini ve ilişkisel tablolarda kolay maping yapılmasını sağlamaktadır .
     Hİbernate kurumsal JAVA uygulamalarında sıkça kullanılmaktadır. Bunlardan biriside Java Server Faces yani JSF'dir .
      Bu belgede Hİbernate'in JSF uygulamalarında nasıl kullanılacağını , bağlantı ayarlarının nasıl yapıldığını vb . temel konular incelenmiştir . Bir çok JAVA geliştiricisi tarafından Hibernate Framework ' ü olmazsa olmaz ve JAVA biliyorum diyen kişilerden kesinlikle bilmesi beklenilen bir konudur .



20 Temmuz 2013 Cumartesi

JAVA BufferedInputStream Sınıfı

JAVA da java.io paketinde bulunan BufferedInputStream sınıfı ve kullanımı hakkında geniç bir döküman .



JAVA BufferedReader Sınıfı


JAVA I/O işlemlerinin önemli bir sınıfı olan BufferedReader sınıfının tüm yönleri ve kullanımına yönelik örnekler içeren güzel bir döküman . 

JAVA java.io Paketi


 java.io paketi ve içeriğine dair detaylı bir çalışma .


JAVA Writer Sınıfı

JAVA da giriş , çıkış işlemleri ile ilgili döküman serisine devam ediyoruz . Bu dökümanımızda Writer sınıfı ve detaylarına yönelik gayet detaylı bir çalışma .


JAVA Veri Akımları (Giriş-Çıkış İşlemleri)

JAVA Giriş - çıkış işlemlerine ve java.io kütüphanesi sınıflarına detaylı bir bakış ve önemli örnekler içeren bir döküman . Konu hakkında gayet açıklayıcı olduğunu düşünüyorum .


JAVA Giriş - Çıkış İşlemleri

    JAVA da tüm dillerde olduğu gibi  Input- Output  işlemleri önemlidir . Sonuçta bir program aldığı verileri işleyerek bir sonuca ulaşarak bir çıktı veren sistemdir . Bir programa veri girişi işlemleri çok geniş sistemdir . Ne şekillerde  veri girişi yapılabilir ? Bir dosyadan , direkt olarak elimizle , veritabanlarından , çeşitli optik okuyucu vb. sistemlerden , sensörlerden vs. Bu liste uzar gider . 

     Bu örnekte kendimin hazırladığı , dosyadan veri alışı ve dosyaya veri girişi örnekleri bulunmaktadır .
“BufferedReader” sınıfı ile dosyanın değerlerini okumamız mümkündür, dosyaya yazmak için ise “BufferedWriter” sınıfını kullanıyoruz . Bu sınıflar java.io kütüphanesi içerisinde tanımlanmış sınıflardır . 



19 Temmuz 2013 Cuma

RaspBerry Pi Mini Bilgisayar

    Raspberry Pi, kredi kartı büyüklüğünde, televizyona da bağlanabilen, bir masaüstü bilgisayarın yapabileceği hemen her şeyi yapabilen, usb ve ethernet girişine de sahip bir mini bilgisayardır. Birleşik Krallık'ta Raspberry Pi Vakfı tarafından okullarda bilgisayar bilimini öğretmek amacılığıyla geliştirilmiştir.
    ARM tabanlı bu mini bilgisayar, temel ofis uygulamaları ve oyunlar gibi normal bir bilgisayarda yapabileceğiniz çoğu işlemi yapmanıza imkan sağlamaktadır. Bununla birlikte yüksek çözünürlüklü(HD) video oynatabilme yeteneğine sahiptir. 


    Raspberry Pi ölçüleri 85.60mm x 53.98mm x 17mm, şeklindedir (SD kart girişine tam boyutlu SD kart takınca bir kısmı dışarı çıkmakta, bu da boyutu az olsa da yükseltebilmekte). Fansız olan bu cihazın ağırlığı ise 45 gramdır.

    Kart üzerinde 3.5mm ses ve RCA video jackı, HDMI çıkışı, SD kart yuvası, güç girişi, RJ45 ethernet soketi, CSI kamera konnektörü ve iki adet USB portu bulunmaktadır.


    RaspBerry Pi ' nin en önemli özelliklerinden birisi de , üzerinde her hangi bir hdd vb. hafıza sisteminin bulunmaması. Cihaz üzerinde ki hafıza kartı (SD kartı) yuvasına takacağımız uygun genişlikteki bir kart üzerine kurulacak olan bir Linuz işletim sistemi ile çalışabilmektedir . Piyasada ki Linux dağıtımlarından uygun herhangi birisi kullanılabilmekte . RaspBerry Pi vakıfının web sitesinden Debian ve Arch Linux ARM işletim sistemleri indirilebilir.Python programlama dili ile programlanabildiği gibi BBC Basic, C ve Perl programlama dilleri de kullanılabilmektedir.17 Aralık 2012 tarihinde Raspberry Pi Vakfı, IndieCity ve Velocix firmalarıyla işbirliği yaparak kullanıcıların uygulama programları indirebilmeleri için Pi Store'u açmışlardır. Kullanıcıların Raspbian işletim sisteminde bulunan bir uygulamayı kullanarak çeşitli kategorilerdeki uygulamaları bularak indirmeleri mümkündür. Ayrıca kullanıcıların geliştirdikleri uygulamalar da yüklenebilir ve onaylandıktan sonra diğer kullanıcıların kullanımına sunulabilir.





    Yukarıdaki videoda , bilgisayarın kutudan çıkarılıp çalışır hale getirilinceye kadar ki yapılması gerekenler detaylıca anlatılmaka . Gördüğünüz gibi gayet kolay görünüyor . Peki bu mini bilgisayarı ne kadar paraya ve ne şekilde edinebiliriz . İnternette satışını yapan bir çok site var  . Dünyada ki ortalama fiyatı 35 dolar . Yani gayet ucuz . Türkiye'de ise http://www.robotistan.com sitesi üzerinden , 92 TL ' ye edinebilirsiniz . 

TEKNİK ÖZELLİKLERİ 

  • Broadcom BCM2835 SoC full HD İşlemci
  • ARM1176JZ-F düşük güç tüketimine sahip 700 MHz İşlemci
  • 512MB SDRAM
  • 10/100 Ethernet RJ45 jack
  • İki adet USB konnektörü
  • HDMI ve RCA Video Çıkışları
  • HDMI ve 3.5mm Ses Çıkışları
  • SD, MMC, SDIO kart yuvası (Diğer hafıza kartları için adaptörle kullanım gerçekleştirilebilir.)
  • Linux işletim sistemini destekler.
  • Kart boyutları 8.6cm x 5.4cm x 1.7cm
  • Sert plastik koruma kutusunda, fabrikada denenmiş olarak ve ilk sizin açacağınız şekilde gönderilmektedir.
    Peki bu cihazla neler yapalirsiniz ? Tamamen hayal gücünüze kalmış . İsterseniz bir Linux dağıtımı ekleyebilirsiniz, isterseniz Firefox OS kurabilirsiniz, isterseniz XBMC dağıtımlarını kurup bir media centera dönüştürüp film/dizi/müzik izleyebilirsiniz, isterseniz de genişletme kartları ile ledli ufak projelerinizi hazırlayabilirsiniz. HDM çıkışı ile evdeki TV nize bağlayıp , Ethernet ilede küçük ev içi ağınızı bir media center a dönüştürebilirsiniz . Eğer yeterli programlama ve Linux bilginiz vasra , kartı bağlayacağınız bir sistemle kendi mini bilgisayarınızı ve işletim sisteminizi geliştirebilirsiniz . 


     Unutmadan belirtelim , acaba bu cihaz ne şekilde ve nekadar güce ihtiyaç duyuyor . Standart bir kullanım için en az 5 volt 1 amper ya da daha yüksek akım sağlayan bir güç kaynağı lazım. Özellikle USB’den güç alan hard diskler çok güç emeceğinden bu konuda size elektrik beslemeli ve Raspberry Pi’yi destekleyen bir usb hub ile bağlayabilirsiniz. Yani gerekli gücü sağlayacak bir microUSB şarj aleti edinerek bu sorunu kolayca hallediyorsunuz . 


      Peki , bir RaspBerry Pi edinerek , LINUX üzerinde çalışan bir RaspBerry Pi uygulaması , JAVA ile geliştirilebilir mi  ? Tabiki geliştirilebilir . Belki JAVA GUI ile kendi küçük işletim sisteminizi ve mini bilgisayarınızı dahi yaratabilirsiniz . Ayrıca cihaz hakkında güncel ve çok daha geniş bilgiyi RaspBerry Pi Türkiye topluluğu ' nun sitesinden alabilirsiniz . 

15 Temmuz 2013 Pazartesi

JAVA CheatSheet

           JAVA hakkında ipuçları ve küçük bilgiler içeren üç sayfalık bir cheatsheet . Her ne kadar , bir konuyu bilirsek bilelim küçük ve basit şeyleri unutabiliyoruz değil mi ? İşte bunun gibi küçük ve eğlenceli notlar insanın elinin altında çok iş görebiliyor .


5 Temmuz 2013 Cuma

JAVA for Döngüsü için Bir Örnek

Malum bir satranç ustası şah ile köylü bir ustanın satranç oyununu herkes bilir . Şahı yenen köylü , şahtan satranç tahtasının ilk karesine bir buğday , ikincisine iki buğday , üçüncüsüne dört buğday ve her bir kareye bir öncesinin iki katı olacak şekilde , tahtanın üzerindki toplam buğdayı istemiştir .

İnce hesap; Hesaplamaya ilk kareler kolay gitmiş. 1. Kareye bir buğday, 2. Kareye iki buğday, 3. Kareye dört buğday... Ancak 10. Kareye gelindiğinde 1023 buğday

Vermeleri gerekiyor. Bu yaklaşık bir avuç buğdaya karşılık gelir; hesabın hep böyle gideceğini, hep köylüye böyle üç beş buğday vereceklerini zannediyorlardı. Zaten 15. Kare yalnızca 1.5 kilo buğday vereceklerdi. 25. Kareye gelince 1.5 ton olduğunu Görmüşler ama fazla heyecanlanma-mışlar. Oysa;

31. Kareye gelince, bu işin şakası olmadığını anlamaya başlamışlar. Çünkü vermeleri gereken buğday

31. Karede 92 tonmuş. 49. Kareye geldikleri zaman 24 milyon ton buğday vermeleri gerekiyor. Bu ise Türkiye’nin bir yıllık buğday üretiminden fazla. 54. Kareye geldiklerinde ise 771 milyon ton buğday vermeleri gerekiyor. Bu da dünyamızın bu günkü ölçülere göre bir buçuk yıllık buğday üretimi. “madem başladık hesaplara devam edelim” deyip bitirmişler.

64. Kare de tamamlandığında bugünkü ölçülerde dünyanın 1500 yıllık buğday üretimini köylüye vermeleri gerektiği ortaya çıkmış.

For döngüsünün anlatımı için gayet güzel bir örnek ve problem olacağı kesin bunun . Mantık olarak ilk kareye 2nin 0. kuvveti , ikinci areye 2 nin 1. kuvveti , üçüncü kareye 2 nin 2. kuvveti ve son kareye 2 nin 63. kuvveti kadar buğday gelecek . Tahtanın üzerinde ise 2^0+2^1+2^2+2^3+...2^63 kadar buğday olacaktır .

Bunu ise JAVA da şu şekilde hesapladım .

public class Satranc {
public static void main(String[] args) {
double Toplam = 0;
for(double i=0; i
Toplam=(double)(Math.pow(2,i)+Toplam+1.0);
}
System.out.println(Toplam);
}
}

Sonuç 1.8446744073709552E19 şeklinde ekrana basıldı ve daha önceki hesapları doğruluyordu .

Toplam=(double)(Math.pow(2,i)+Toplam+1.0); ifadesindeki 1.0 ise , döngüdeki i değişkeini 0 değil 1 den başlattığımız için ilk karede kalan bir buğdaydır.

Bir buğdayı 1gr olarak düşünüp , her bir kareye gelindiğinde tahta üzerindeki toplam buğdayın ağırlığını ve o karedeki buğdayn ağırlığını da hesaplayacak şekilde kodu yazmakta bir antreman olabilir JAVA severler için .

29 Haziran 2013 Cumartesi

JAVA Fonksiyonlar ve Hata Ayıklama

Java da fonksiyonlar be hata ayıklama üzerine hazırlanmış bir sunumun çıktısıdır .



3 Mart 2013 Pazar

JAVA ' da Bağlı Listeler - Linkedlist Sınıfı

Her bir elemanın sahip olduğu veriye artı olarak bir de kendi tipinde bir yapıyı gösteren işaretçiye sahip olduğu veri yapısıdır. Bağlı listeler en çok kullanılan veri yapısıdır.
Listedeki her elemana düğüm daha çok kullanılan tabiriyle node adı verilir. Listenin ilk elemanına dışarıdan bir işaretçi yardımıyla ulaşılır. Java'da bu liste, ayrı bir sınıfta tutulur.

Bağlı listelerin dizilere göre avantajı, bir grup eleman arasına eleman eklemede ve bir grup eleman arasından eleman çıkarmada ortaya çıkar. Listede bu iş daha uzun ve zaman alıcıdır. Bir eleman çıkarılacağı veya ekleneceği zaman tüm dizide bir oynama yapılması gerekir. Bağlı listede ise tüm elemanlarda bir değişim söz konusu değildir. Ayrıca  her yeni eleman için hafızada yeni yer ayrılır. Dizilerdeki gibi daha önceden yer ayırmaya gerek yoktur.


21 Şubat 2013 Perşembe

JAVA super() Metodu Kullanımı


"super" keywordu Java'da iki amaçla kullanılır. İki durumda da bir kalıtım durumu, ve dolayısıyla da baba-oğul(torun da olabilir) ilişkisi söz konusudur.
1- Oğul/Torun sınıftan(extend eden) babanın(extend edilen) bir instance'ına erişmek ve duruma göre default(aynı pakette değilse) ya da private olmayan metodlarına veya class içinde tanımlı instance'lara erişebilmek için.
2-Oğul/Torun sınftan(extend eden) babanın(extend edilen) duruma göre default (aynı pakette değilse) ya da private olmayan aynı tip parametrelere sahip yapılandırıcısına(constructor) erişmek için. Bu özellik kalıtımdaki yapılandırıcı overriding işleminde sık kullanılır.

Kısa olarak bu şekilde tarif edebiliriz bu metodu . Aşağıdaki döküman , Başken Üniversitesinin ders notlarından alınmıştır ve super metodunu kalıtım içerisindeki kullanımına yönelik detaylı anlatım ve örnekler içermektedir . 

13 Şubat 2013 Çarşamba

PARDUS ANKA


Çoğumuzun bildiği gibi Pardus'un geliştirilmesi geçen yıl durdurulmuştu. Pardus'u seven ve bir türk işletim sistemine gönül veren kişilerin kurduğu bir topluluk pardusu geliştirmeye devem etmiş ve yeni bir sürüm yayınlamış.
Pardus yok oldu denildikten sonra ortaya çıkarılan sürüme de, küllerinden doğan ANKA kuşunun adını vermişler.
pardus 2013 anka

Pardus ANKA ile gelen yeni özellikler ve bilinen hatalar aşağıdaki gibi yayınlanmış.

Sadece 64 bit için olan Alfa sürümünün bir deneme sürümü olduğunu söylemekte fayda var.
Alfa’da neler var?
  • Kernel 3.7.5
  • Kde 4.9.98
  • Firefox 18
  • Gimp 2.8.2
  • Grub2
  • Geliştirilmiş Pisi
  • İngilizce ve Türkçe olmak üzere iki kurulum seçeneği
  • yeni görseller eklendi
  • ve daha bir çok güncellenmiş paket.
Pisi’deki Gelişmeler
  • Kernel ile PiSi paketleri arası düzeltildi. Kernel 3.4 serisi derlenmiyordu, uyumlu hale getirildi.
  • pre-hook özelliği eklendi.
  • PiSi’de WorkDir yazımı artık gerekmemekte. Çalışma dizinini pisi auto pilot tanıyor.
Bilinen Hatalar
  • Ekran kartı kapalı kaynak paketlerinde olan bir problemden dolayı kapalı kaynak paketleri kullanılamıyor.
  • Plymouth eksik.
  • Libreoffice hazır değil.
Pardus Anka 2013 ü indirmek istiyorsanız bu linki takip edebilirsiniz.

20 Ocak 2013 Pazar

JAVA Program Hatalarını Çözümleme (Exceptions handling)


Programlamanın altın bir kuralı vardır. Program, ya doğru sonuçlar vermeli ya da hiçbir sonuç vermemeli. Çünkü yanlış sonuçlar, ciddi sorunlar yaratabilir. Program hatalarını üç gruba ayırabiliriz.
Sözdizimi yanlışları (syntax errors)                     
Bunlar programcının canını sıkabilirler, ama başkalarına zarar veremezler, çünkü derlenemezler, koşturulamazlar. Dolayısıyla yanlış sonuç vermeleri olanaksızdır. Bu gruptakiler tehlikesiz yanlışlardır.
Mantıksal yanlışlar                (logical errors)      
Programın sözdizimi doğrudur,derlenebilir, koşturulabilir. Ama yapılmak istenen işler için kullanılan deyimler yanlıştır. Yanlış işlemler, yanlış hesaplar yapar. Programın denenme aşamasında bu tür yanlışlar ortaya çıkmazsa, programın kullanılması ciddi sorunlar yaratabilir. Örneğin, bir bankada hesaplar arasında para akışını kaydeden bir program modülünün eksik veya fazla toplama yaptığını düşününüz. Kısa zamanda, üstesinden gelinmesi zor sorunlar yaratır. Bu tür yanlışlar, programcılıkta en tehlikeli sayılan yanlışlardır.
Koşma-zamanı yanlışları (run-time errors)        
Program sözdizimi ya da mantıksal yanlış içermiyor, ama bazı nedenlerle koşamıyor olabilir. Örneğin, gerekli verileri bir giriş biriminden okuyamaması, yada verileri bir çıkış birimine gönderememesi, işlemlerde sıfıra bölme gibi olanaksız bir durumla karşılaşması, vb. 
Aşağıdaki döküman ise işte bu Koşma-zamanı yanlışlarını ele almakta .