Eclipse code template

Cumartesi, 15 Eki 2011 Yorum yapılmamış

Eclipse’in bir güzel özelliği de sık kullanılan kimi kod blokları, şablonları için kısayol oluşturabiliyor olmak. Tıpkı “syso” yazıp Ctrl+Space yapınca “System.out.println();” satırını veya “main” yazıp sınıfa bir main metodu eklemek gibi.

Bunun için yapılması gereken Window->Preferences->Java->Editor->Templates kısmından yeni bir şablon eklemek. Mesela ben debug yaparken işlemi yarıda kesmek istediğim zaman kullandığım kod bloğu olan throw new RuntimeException(“Hata !”); ifadesini “throws” kısayolu ile eşledim. Çok da güzel oldu, iyi de oldu : )

Eclipse Code Template

Eclipse’in yine kod şablonları oluşturabilmek için “Snippets” görünümü de bulunuyor. Ctrl+3 ile açılan görünüm seçiçiden “Snippets” yazılarak benzer şekilde kod şablonları oluşturulabilir.

Java’da listeleri generic olarak gruplamak

Cuma, 07 Eki 2011 Yorum yapılmamış

Kod yazarken bir listenin elemanlarını belirli bir alana göre gruplamak sıkça yapılan işlerden biridir. Personelleri işe giriş tarihine göre veya arabaları modelinin tipine göre gruplamak gibi. Gruplanan bu veriler de genel olarak Map türü bir veri yapısında tutulur. Bu işi genel(generic) olarak yapabilen ve gruplamaya kriter olan alanın seçiminde aşağı doğru dallanabilen bir metot kod tekrarını oldukça azaltması açısından faydalı olabilir. Sırf ben biliyorum çalıştığım projede bu işi kaç kere yaptığımı : )

Bu kodu kullanabilmek için classpath’e commons-beanutils.jar ve commons-logging.jar’ı eklemek gerekiyor.

Ayrıca eclipse projesi şuradan indirilip incelenebilir, import edilebilir.

public static <E, T> Map<E, List<T>> group(List<T> listToGroup, String groupingCriteria) {

Map<E, List<T>> grupMap = new HashMap<E, List<T>>();
for (T item : listToGroup) {
try {
E e = (E) BeanUtils.getProperty(item, groupingCriteria);
if (grupMap.containsKey(e)) {
grupMap.get(e).add(item);
} else {
List<T> list = new ArrayList<T>();
list.add(item);
grupMap.put(e, list);
}
} catch (IllegalAccessException exception) {
throw new RuntimeException(“Error in grouping !” + exception.getMessage());
} catch (InvocationTargetException exception) {
throw new RuntimeException(“Error in grouping !” + exception.getMessage());
} catch (NoSuchMethodException exception) {
throw new RuntimeException(“Error in grouping !” + exception.getMessage());
}

}
return grupMap;

}

The Lord Of The Rings Üçlemesi

Cumartesi, 01 Eki 2011 1 yorum

İlk izlediğimden beri tekrar izlemekti aklımdaki. Şöyle serinin üç filmini arka arkaya. Nihayet yapabildim. Aklımda tam olarak “ihtişam” kelimesi ile eşlemiştim Yüzüklerin Efendisi serisini. Biraz Indiana Jones serisini “macera” ile, “Geleceğe Dönüş” serisini “hayal” kelimesi eşlemiş olmam gibi. Tolkien’in hayal gücüne, nasıl olup da bu kadar farklı varlığı, nesneyi, miti kafasında oluşturabilip, bütünleyebildiğine ve tabi aynı zamanda bunu sinemaya yansıtan Peter Jackson abimize hayran olmamak elde değil. Bir film olarak niteleyince sanki birşeyler eksik kalıyor gibi. Bir destan, bir hayal gibi. Tam olarak “bir bambaşka dünya”. Bir gün gelir ötesi yapılabilir mi bilmiyorum, ama daha iyisi yapılana kadar en iyisi kesinlikle bu.

Filmin her bir sahnesi, her bir karesi üzerinde yoğun çalışıldığını kesin bir şekilde belli ediyor. Dekorlar, kıyafetler, müzikler, kullanılan savaş aletleri, makyaj, vesair. Tasarlanan şehirler hakikaten müthiş bir hayal gücünün ve tabi en nihayetine sağlam bir prodüksüyonun ürünü. Hobbit diyarı Shire, bir güzel Elf diyarı Rivendell ya da insan ırkının yaşadığı şehirlerden Minas Tirith hakikaten insanda cennet algısını uyandıran şehirler. “Böyle mi lan acaba” diyerek ahirete göçme arzusu uyandırıyor neredeyse. Kareleri durdurup, durdurup iç çeke çeke izlenecek kadar.

Savaş sahnelerinin bu kadar daha iyi çekildiği başka herhanbi bir film de hatırlamıyorum. Belki bir tek Cennetin Krallığı yaklaşabilmiştir böylesi bir gerçekliğe. Hani o kadar gerçekliğe, ya da daha doğrusu gerçeklik hissine yaklaştırıyor ki sizi o an elinizde bir Elf yayı olsun istiyorsunuz, ya da Ork lara saplanan her oktan keyif alıyorsunuz. Filmdeki favori savaşım korkuyu, kaygıyı ve cesareti sonuna kadar hissettiren Miğferdibi savaşı. Hele ki Gandalf Rohan’a destek için topladığı süvariler ile beraber tepenin sırtlarından aşağı doğru inerken bir tek “Allah Allah” nidaları eksikti o süper sahneyi tamamlamak için : ))

Bu arada Viggo Mortensen ancak bu kadar yakışıklı, Liv Tyler da ancak bu kadar güzel olabilirdi sanırım. Hani filmin uyandırdığı o ihtişam havası içerisinde Cate Blanchett bile gözüme ayrı bir güzel gözüktü : ) Sonra bir de altyazı izlediğimizde kaybettiğimiz birşey olduğunu farkettim; Türkçe düblajdaki müthiş Gollum seslendirmesi. Kim seslendirdi çok merak etttim, ama süper. Kaypak Frodo’ya iki laf çakmazsam içimde kalır. Arkadaş bu kadar orası burası oynar mı bir insanın, bir kahraman bu kadar mı etki altına almaya müsait olur, az delikanlı ol, az Sam’den adamlık gör daa : )) “I can’t carry the ring, but i can carry you” dediği an efsane içinde efsane olmuş çıkmıştır Sam. Forza Sam !

Birinci film The Lord of the Rings: The Fellowship of the Ring’in bütçesi 93 milyon dolar hasılatı 870 milyon dolar , ikinci film The Lord of the Rings: The Two Towers’in bütçesi 94 milyon dolar hasılatı 920 milyon dolar, üçüncü The Lord of the Rings: The Return of the King’in -ki son film aynı zamanda tüm zamanların en çok gişe hasılatı yapan 4.filmi- bütçesi 94 milyon dolar hasılatı 1 milyar 118 milyon dolar. Lafı uzatmaya gerek yok para parayı çekiyor arkadaş : )

Filmin senaryosundan bulduğumu düşündüğüm saçmalık veya eksikliklere bakarken imdb’de filmle ilgili sık sorulan sorular bölümünü buldum. Şurada epeyce bir sorunun cevabı verilmiş. Mesela “Ulen Frodo efendi madem yapılabiliyordu da neden bir kartalın sırtına atlayıp gitmedi ki Mordor’a” şeklinde sorduğum soruyu daha evvel Why didn’t Frodo just fly on an eagle to Mordor? başlığı altında birileri sormuş. Tabi cevaplar hala yüzeysel gelebilir, yeterince tatmin etmeyebilir. Yapılacak iş filmin bende uyandırdığı heves üzerine üçlemenin kitaplarını okumak. Nedir ne değildiri öğrenip, Tolkien’in Orta Dünya’sını tanıyıp ondan sonra oturup daha bir yakın gözle seriyi baştan izlemek.

Son olarak üçlemenin öncesini oluşturan Hobbit kitabını da sinemaya aktarıyormuş Peter Jakcson. İki bölümden oluşan filmin ilki The Hobbit: An Unexpected Journey 2012′nin sonuna doğru gösterime girecekmiş. Merakla bekliyoruz artık, ne diyelim.

Taksi, Özel Halk Otobüsü ve İett Otobüsü Şikayetleri

Perşembe, 08 Eyl 2011 5 yorum

İstanbul’da yaşıyorsa insan muhtemelen taksilerden, özel halk otobüslerinden ve iett otobüslerinden gına gelmiştir. Her biriyle uğraşacak ne güç kalıyor insanda ne de heves. Ki hoş kimileri hiç birisine tek söz etmek derdinde dahi değil ya, mevzu o değil. Ahan da şikayet edilebilecek merciler.

Halk otobüsleri ve İett otobüsleri ile ilgili şikayetler için;

İETT Şikayet Formu
veya
İBB Beyaz Masa Şikayet Formu
İBB Beyaz Masa Telefon : 153

Taksiler ile ilgili şikayetler için;

Taksiciler Odası tarafından kurulan ve 24 saat hizmet veren hat imiş kendisi.
Taksi Şikayet Telefon: 444 15 23

Yaşama sevincini hiç yere tüketmek

Salı, 09 Ağu 2011 2 yorum

Mevzuya nereden girsem kestiremedim aslında. Şöyle gireyim madem.

Hayatın hemen heryerinde hepimizin yaşadığı, şahit olduğu bir dolu sinir bozucu, isyana teşvik ettirici hadiselerden bahsedesim geldi. Hani ortalama bir asabiyete sahip insan günde 100 birim sinirlenip, öfkeleniyorsa 50 sini bunlara harcıyorum. Herbiri hakkında bir dolu şey yazılabilir aslında. Lakin ki herbirine ayrı enerji harcamak istemiyorum. Varlıkları ile, oluşları ile bir sevincin kırılmasına, bir umudun yitmesine başlı başına sebepler zaten. İnsanlığa, iyiliğe, dünyanın daha yaşanabilir olabileceğine dair inancını zedeliyor insanın. Küçük gibi gözüküyor, belki bir dolu insan “amaan canım sende” diyebiliyor. Ya da belki ben havadan nem kapıyorum, kimileri yağmurun altında dahi ıslanmazken.

Daha siz araca binmeden “nereye abi” diyen taksi şoförleri, İstanbul gibi bir şehirde trafiğe takılmadan şöyle 15 dakikada 40 lira hasılat yapmak iştahını gizlemeye dahi tenezzül etmeyen taksi şoförleri, yine bu durumlarda birkaç kelime söylediğinizde “ekmek parası” klişesinin arkasına saklanmayı bir halt sanan, kutsal bilen taksi şoförleri, halk otobüsünü ralli aracı gibi kullanan halk otobüsü şoförleri ve bu duruma zerre tepki vermeyen yolcu topluluğu, evinin çöpünü balkondan sokağa hiç aymadan, utanmadan fırlatabilen ev hanımları, gecenin bir vakti mahalle halkına bangır bangır 3.parti arabesk veya tekno müzik konseri veren bitirimden bozma gençlik, kaldırımları babasının çiftliği, evinin kileri gibi kullanıp işgaller işgali yapan, vurdumduymazlıkta sınır tanımayan esnaf, dekolte işini teşhirden de öteye taşıyan özgürlüğün ne olduğundan bihaber olduğu halde “özgürlük” kelimesi arkasına sığınan hatun kişiler, otobüsten inen yolculara alenen yolunacak kaz muamelesi yapan şehirlerarası dinlenme tesisleri, yolda gördüğünde halini hatrını sormak nezaketini dahi göstermeden “şu bizim oğlanın bilgisayara bi baksana” diyen yer ve zamana göre komşulaşanlar, bütün türk halk müziği enstrümanlarını kullanarak ilahi dile getirdiğini sanıp insanların dini hassasiyetlerini ve duygularını acıklı bir ezginin peşinde sürüklemeye çalışanlar, dinle kitapla alakası olmadığı halde islam alimiymişcesine, yüzyıllar boyu yaşamış, aşmış bir din, iman ve tasavvuf bilgisine, hikmetine sahip İslam alimlerini hiçe sayıp her Ramazan ayında kendince makul veya mantıklı bulmadığı dini bir meseleye çözüm ürettiği sanan akla tapıcı, mantığa seccade sericiler…Ve daha neler neler…

Askere gitmeden evvel çokça duyulur etraftan. Ya da nizamiyeden içeri girdiğinizden gerçeği kavrayana kadar bir tabur asker şunu söyler size; “Burda şalterleri kapatacaksın”. O kadar yerindedir bir tabirdir ki, askeri disiplin içindeyken bir dolu saçmasalak işleri, vurdumduymazlıkları, olmazları, olamazları ve olmamalıları üzerinizden teğet geçtirmenin tek yoludur belki de. Şalterleri kapatmalıyım galiba devreyi yakmadan.

Vaktiyle Cem Karaca ne güzel söylemiş ; “Beni siz delirttiniz

Hibernate dynamic-insert, dynamic-update

Cumartesi, 06 Ağu 2011 Yorum yapılmamış

Hibernate’in bir kullanılabilir özelliği daha; dynamic-insert, dynamic-update : )

dynamic-update : Güncelleme sql ifadesini(update sql) çalışma zamanında sadece değişen kolonlara göre dinamik olarak oluşturur.
dynamic-insert : Kayıt ekleme sql ifadesini(insert sql) çalışma zamanında sadece veri girilmiş kolonlara göre dinamik olarak oluşturur.

Şöyle ki;

@Entity
@Table(name = “PERSONEL”)
@org.hibernate.annotations.Entity(dynamicInsert=true,dynamicUpdate=true)
public class PERSONEL{



}

Sadece AD, SOYAD ve TC_KIMLIK_NO alanlarının girildiği bir kayıt işlemi sonrası

INSERT INTO PERSONEL(AD, SOYAD, PERSONEL_NO, TC_KIMLIK_NO, YAS, CINSIYET, DOGUM_TARIHI) VALUES (?, ?, ?, ?, ?, ?, ?)

gibi bir sql ifadesi oluşması yerine

INSERT INTO PERSONEL(AD, SOYAD, TC_KIMLIK_NO) VALUES (?, ?, ?)

gibi sadece veri girilmiş alanların dahil edildiği bir sql ifadesi oluşuyor.

Performans açısından ise şöyle bir ters orantı var. Normal koşullarda Hibernate her varlık sınıfı için üretilen ekleme , güncelleme, sorgulama sql ifadelerini belleğine alır. Böylece her ekleme, güncelleme, sorgulama işlemi için bir sql ifadesi oluşturması gerekmez. Bu performans açısından bir artı getirir. Amma lakin ki bu özellik aktif hale getirildiğinde de her ekleme, güncelleme işlemi için bir sql ifadesi oluşturma işi çıkıyor ortaya. Dolayısıyla çok fazla kolon içeren tablolar için çalıştırılacak sql ifadesini minumuma indirerek performans açısından bir artı getirebilse de diğer durumlar için karar vermek gerekiyor, bu özelliği aktif yapıp yapmamaya.

Hibernate @SqlDelete

Cumartesi, 06 Ağu 2011 Yorum yapılmamış

Hibernate’in yeni keşfettiğim bir özelliği varlık sınıflarına uygulanabilen @SqlDelete, @SqlUpdate, @SqlInsert bildirimleri. Bu sayede ilgili varlık sınıflarını kaydetme, güncelleme ve silme işlemleri sırasında hangi sql ifadesinin çalışacağını belirleyebiliyoruz. Bir nevi EntityManager sınıfının persist, merge ve remove metotları sonucu oluşacak olan ekleme, güncelleme ve silme sql ifadelerini ezmiş oluyoruz. Özellikle silme işlemi için oldukça faydalı olabilir diye düşündüm.

Mesela; Hesap nesnelerini karşılayan Hesap sınıfları için ne zaman entityManager.remove(herhangiBirHesap) desek, bu nesneyi fiziksel olarak silmek yerine mantıksal olarak durumunu pasif yapmak isteyebiliriz. “Soft delete” olarak bilinen durum yani. Bu gibi durumlar için proje genelinde bir kod tasarrufu ve temizliği sağlanabilir gibi.

Ayrıca sınıf tanımında kullanılacak @Where bildirimi ile de veritabanından Hesap tablosuna sorgu atan sql ifadelerine bir koşul konulabiliyor. Böylece de durumunu pasif yaptığımız nesneler sorgu sonuçlarında gelmiyor. Bu yazılan sql ifadeleri için hql kullanılamıyor bu arada, sql yazmak gerekiyor.

Şöyle ki;

@Entity
@Table(name = “HESAP”)
@SQLDelete(sql=”update HESAP set DURUM=0 WHERE ID=?”)
@Where(clause=”DURUM <>0″)
public class Hesap {



}