LinkedList için Generic Kayıt ve Okuma Metotları

Bil 211 dersinin ödevlerinde sıkça dosya kaydetme ve dosya okuma işlemlerinin kullanılması gerekiyordu. 3 class için 3 farklı LinkedList olduğundan (koddaki LinkedListler ArrayList ile değiştirilirse de çalışır) 3 kere de ayrı ayrı kaydetme ve okuma metotları yazmıştım. İkinci ödevi yaparken aklımdan ortak bir kod yazmayı geçirdim ancak nasıl üstesinden geleceğim konusunda bir çözüm bulamamıştım. Enes ile proje için kod yazarken ortak bir dosya kayıt ve dosya okuma metodu fikrimi söyleyince generic olarak bir metot yazılabileceğini önerdi. O gün birlikte de buna benzer bir class yazdık, tabii o kodun üstüne farklı geliştirmeler yapıldı. O yüzden ben ayrı olarak hem ödevlerde hem de projede kullanılabilecek bir class örneği hazırladım. Sabahın köründe hazırladığım için kodumdan pek memnun değilim ancak yine de gerekli işlevi görecektir.

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.LinkedList;

/**
 * @author Onur Baykal
 */
public class DosyaIslemleri {
    /**
     *
     * @param <E> LinkedList türü
     * @param liste Kaydedilmek istenen LinkedList list, türü önemli değil
     * @param dosyaAdi Kaydedilecek olan dosyanın adı
     */
    public <E> void listeKaydet(LinkedList<E> liste, String dosyaAdi){
        try{
            FileOutputStream fos = new FileOutputStream(dosyaAdi);
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            oos.writeObject(liste);
            oos.close();
            fos.close();
        }catch(Exception e){

        }
    }
     /**
     * Bu method daha önce yaratılmış bir LinkedList'in içinin doldurulmasına
     * yarar. Yüklenecek olan listenin türünü belirlemek için parametre olarak
     * liste alır.
     * @param <E> LinkedList türü
     * @param liste Üzerine yükleme yapılacak olan liste,
     * @param dosyaAdi İçerisinden liste yüklecek olan dosyanın adı
     * @return Üzerine kayıtlı olan liste yüklenmiş olan liste geri döndürülür
     */
    public <E> LinkedList<E> listeYukle(LinkedList<E> liste,String dosyaAdi){
        try{
            FileInputStream fis = new FileInputStream(dosyaAdi);
            ObjectInputStream ois = new ObjectInputStream(fis);
            liste = (LinkedList<E>)ois.readObject();
            ois.close();
            fis.close();
        }catch(Exception e){

        }
        return liste;
    }
}

jList'e DefaultListModel ile Yeni Öge Ekleme

events 468 jList'e DefaultListModel ile Yeni Öge EklemeTobb Etü’de yeni bir dönem başladı. Hatta başlayalı baya oldu. 5. haftaya girdik. 6. hafta (gelecek hafta) vizeler başlıyor ve kimi üniversiteler daha eğitime başlamadı. Çalışıyoruz gördüğünüz gibi. Bu dönem Bil211 kodlu dersi alıyorum. Nesnesel Tasarım ve Programlama (yabancı dilde eğitim alanlar için Object Oriented Design & Programming) yani. Geçen sene 2. dönem (bizim okul 3 dönem, 2. sınıftan itibaren bir dönem staja gönderiyor) Java’ya temel bir giriş yapmıştık. Fakat GUI namına bir şey görmemiştik. Bu derste ise nesnesel programlanın inceliklerini öğreniyoruz. Hocamız da ödev olarak GUI’li bir program verdi. Açıkçası kimileri tartışabilir öğretmediği şeyi istiyor diye, açık konuşmak gerekirse başta bende böyle düşünüyordum ama bu lafı söyleyenin ödevi yapmaya başlamayan birinin olduğunu anladım. İnternet gerçekten bir deniz, aradığınız her şeyi buluyorsunuz. İş gerçekten sizin ne kadar bilgiye aç olduğunuza bakıyor. Uzun lafın kısası ödev bu (adres sonradan değişebilir belki). Basit bir program aslında. Fakat yeni şeyler öğrenmek gerektiriyor. Bu yüzden hafif bir zorluğu var.

Netbeans ile hem GUI hem de programlamayı yaptım. Hafifçe hem yaptığım işlemin mantığını anlatayım hem de kod örneği vereyim. Öncelikle jList’i Properties’den Custom Code haline getirip DefaultListModel olarak tanımladığım nesneyi veriyorum.

//DefaultListModel kullanabilmek için aşağıdaki paketi import etmek gerekiyor
import javax.swing.DefaultListModel;

//model nesnesini kodun başlarında tanımladım
DefaultListModel model = new DefaultListModel();

//i Index'li bir nesneyi jList'ten kaldırmak için böyle bir kod yazıyoruz:
model.remove(i);

//Listeyi baştan sıralamak için veya tüm elemanları silmek için:
model.removeAllElements();

//Aşağıdaki kod ile listenize yeni bir nesne ekleyebilirsiniz
model.addElement(Object o);
//Bu listeye sondan ekler ama dikkat edin listeyi yeniden sıralıyorsanız, en üste de getirebilirsiniz.

Onur Baykal'ın Bürokrasiyle İmtihanı (Bürokrasinin Çarkları Altında Ezilmek)

Uzun bir süredir kişisel içerikli yazı yazmadığımın farkındayım. Daha önce yazacak bir şey olmaması etken iken şimdilerde ise boş zaman bulamamam en önemli etken. Neyse ben özetimsi yazıma geçeyim. Yazı içinde yazı olsun bu.

  • Öncelikle başlıktaki olaydan bahsetmek istiyorum. Bu Pazartesi hazır dersim yokken ehliyetimi almaya gideyim dedim. Bu senenin başlarında sınavlardan geçmiştim zaten. Sadece uygun bir zaman bekliyordum diyebilirim. Sürücü kursuna Sincan’da gittim. Normalde tüm arkadaşlarım ehliyetlerini Ankara Emniyet Genel Müdürlüğünden aldılar. Ben ise Sincan İlçe Emniyet Müdürlüğüne gittim. Sürücü kursu oraya gitmemi söyledi çünkü. Kurstan aldığım dosya ile yola çıktım. Öncelikle 1.5 liraya dosya aldım. Daha sonra 223 lira harç yatırdım. Daha sonra emniyete gittim. Dosyayı aldığımda verdikleri belgeyi doldurdum ve parmak izi verdim. Suç hayatım başlamadan bitti. Parmak izi vermek eğlenceli olsa da bir miktar fişlenmiş hissettim kendimi. Kursa kaydolurken aldığım sağlık raporunda sorun çıktı. “B tipi ehliyet alabilir” benzeri bir cümle bulunmadığı için sağlık raporunu kabul etmediler. Özel hastaneden aldığım bu raporu imzalayan doktora iyi küfürler ettim. Doktorlara saygımı daha da azalttı bu adam. Sincan 7 Numaralı Sağlık Ocağına gidip oradan tekrar bir rapor çıkarttırdım. Sağolsunlar orada biraz daha yardımcı oldular. Daha sonra emniyete döndüm. Dosyalarımı tamamlamamın gururuyla ehliyetimi beklerken beni ehliyet kağıdı almaya gönderdiler. 60 lirada o ufak kağıt parçasına bayıldım. Sonra ehliyeti de verdim. Ertesi gün gidip almamı istediler. Herhalde ben yakın bir zamanda gidip ehliyetimi alırım. Oldukça sancılı bir deneyim oldu. Ülkemizde bürokrasinin işleyişine birebir tanık oldum. Binaların çoğu yakındı ama tek bir yerden halletmek çok daha kolay olabilirdi. Bu işlemin daha kolaylaşacağını zannetmiyorum.
  • Okulum başladı. İki haftadır Ankara’dayım ders görüyorum. İlginç bir durum pek yok. Zorunlu ikinci yabancı dil olarak İspanyolca görüyorum. Üstten de “Girişimcilik ve Liderlik” dersi almaya başladım. Ders kayıt dönemi yine her zaman olduğu gibi sancılı geçti. Neyse ki kazasız belasız atlattım. Derslerime devam ediyorum ve yapmam gereken ödevler, çalışmam gereken dersler var. Bense yazı yazıyorum.
  • Bilgisayarcının Yeri’nden sonra The Next Web Türkiye’de de yazarlığa başladım. Kendim bir teknoloji blogu açmak yerine var olan bir blogda yazarlık yapmak daha kolay geldi. Her ne kadar yetki olarak daha düşük olsa da yazı yazmaya odaklanmak daha kolay oluyor. Tabii benim çok fazla zamanım olmadığı için çok fazla yazı yazamıyorum.
  • Otostopçunun Rock’n Roll Rehberi’ni bir süredir yazmıyorum. Yazmaya başlamıştım ama öncelikle Otostopçunun Galaksi Rehberi’ni bitirmeye kadar verdim. O yüzden bir süreliğine onu yazmıyorum. Arda ile oturup logoyu da ayarlayamadık hala. Ramazan’dan sonra demiştim ama biraz daha gecikebilir.
  • Trivial Pursiut güzel bir oyunmuş. Zaten oldum olası böyle bilgi yarışması tarzında olan şeyleri severim. Üç gün arka arkaya oynayınca daha da bir pekişti. Zaten bu hafta sonu sokaklardaydım hep. Maillerimi bile kontrol edemediğim zamanlar oldu. Sosyalleşmenin böyle etkileri olduğunu fark ettim. Olsun eğlenceli günlerdi. Zaman zaman böyle şeyler yapmak lazım.
  • Senelerin ev sinemacısı ben sinemaya gittim. Hem de bir haftada iki kere. Benden beklenmedik bir performans. Zaten dizi de izleyemiyorum. Supernatural’ın yeni sezonu başladı ben ancak 3-4 gün sonra izleyebildim. Gerçekten daha çok zamana ihtiyacım var.
  • Ankara’yı özlemişim ama. Ocak’ta da staja gideceğim için okul çok fazla sıkıcı gelmiyor. Şimdilik eğlenceli ama dersler giderek zorlaşacağını gösteriyor.
  • Likemind’ı da kaçırdım iyi mi! Java tekrarı yaptığımız bir derse girebilmek için Likemind’a gitmedim. Tabii Likemind’a gitmeyerek yeni insanlarla tanıştım. Kazandıklarım kaybettiklerimi geçiyor olabilir bu yüzden.
  • Hayatımdaki gelişmelerden haber vermeye devam edeceğim. Tabii zamanım oldukça.

Java Editörleri İncelemesi

java thumb Java Editörleri İncelemesi Her zaman herkese hitap eden yazılar yazacağım diye bir iddiam olmadı. Hatta daha popüler olana daha çok okunana yatırım yapmak daha mantıklı bile olabilir (tabii bir mühendis adayı olarak bu tür şeylerden şimdilik bu kadar anlayabiliyorum). Bu yazıda Java ile uğraşanlar için editörler inceleyeceğim. Her ne kadar ben de yeni yeni öğrensem de benim gibilere ve belki daha fazla kişiye hitap edebileceğini düşünüyorum. Eğer Javayla ilgileniyorsanız yazının devamında görüşelim.

Continue reading