Ahmet Orsorlu
ABOUT THE AUTHOR

Ahmet Orsorlu

Matematik Mühendisliği lisans, Bilgisayar Mühendisliği yüksek lisans mezunu. Halen Logo Business Solutions'ta Yazılım Uzmanı olarak görev yapmakta. Basit ve temiz olan herşeyi seviyor. Galatasaraylı. Stephen King ve Metallica aşığı.

SQL Max Fonksiyonu Kullanımı

Bir değişiklik yapıp konuya hızlıca girmek istiyorum. Zaten başlık konuyu yeterince anlatıyor 🙂

Max fonksiyonu, adı üstünde, bir kolonun en büyük (maximum) değerini veriyor. Öncelikle basitçe tek tablo üzerinde max fonksiyonu kullanımına bakalım. Öncelikle isim ve yaş kolonlarına sahip bir antika tablosu tanımlayalım.

id isim yas
1 Saat 20
2 Mobilya 29
3 Porselen 50
4 Dolap 13

Şimdide elimizde bulunan en eski antikayı bulalım.

SELECT MAX(yas) FROM antika

Sorgu sonucu karşımıza şu sonuç geliyor.

MAX(yas)
50

Görüldüğü gibi sorgu sonucunda en eski antikanın yaşını vermiş oldu. Şimdi işin içine bir de teklif tablosunu ekleyelim.

id ant_id teklif_miktarı teklifveren
1 1 500 Hasan
2 1 550 Münevver
3 1 525 Mert
4 2 1400 Mert
5 2 1250 Münevver
6 3 900 Hasan
7 3 1050 Mert
8 4 2000 Mert
9 4 1800 Hasan

Tabloda teklif hangi antikaya yapıldığını gösteren antika_id alanı, teklif miktarı ve teklif eden kişi tutuluyor. Şimdi de her bir antikaya verilen en yüksek teklifi bulalım.

 SELECT antika.name, MAX(teklif.price) FROM antika LEFT OUTER JOIN teklif ON antika.id=teklif.ant_id GROUP BY antika.name ORDER BY antika.id

Bu sorguda ne yapmış olduk? antika ve teklif tablosunu birleştirerek bir antikaya verilmiş en yüksek teklif miktarını belirlemiş olduk. Sorgura GROUP BY terimi MAX fonksiyonunu (veya SUM gibi diğer fonksiyonların) antika isimleri özelinde çalıştırmamızı sağlıyor. Yani her bir antikanın sahip olduğu max teklifi bulmamızı sağlıyor. GROUP BY terimini kaldırırsak sadece en yüksek teklifi ve hangi antikaya ait olduğunu gösteren sonuç dönüyor.

Sorgu sonucu da şöyle;

İsim Teklif_miktarı
Saat 550
Mobilya 1400
Porselen 1050
Dolap 2000

Herkese iyi çalışmalar.

Eclipse Kod Şablonları (Code Templates)

Eclipse’te Java kodu yazarken sürekli for ya da do while döngüsü veya public void metot kalıbı yazmaktan bıktınız mı? Bir çözüm mü arıyorsunuz? Tam aranan yerdesiniz. 🙂

Eclipse içerisinde bu şablonları sizin için otomatik oluşturan bir sistem mevcut. Üstelik halihazırda birçok kalıpla birlikte.

Hemen bunlara nasıl ulaşacağımıza bakalım.

  1. Window -> Preferences ekranını açıyoruz.
  2. Açılan ekrandaki ağaçtan Java (veya hangi dili istiyorsanız) -> Editor -> Templates kısmını açıyoruz.

Göreceğiniz gibi burada birçok öntamınlı şablon sizin için halihazırda mevcut. Örneğin; listede if satırına giderseniz preview kısmında if için oluşturulacak şablonu görebilirsiniz.

Şimdi de kendimiz nasıl şablon oluşturacağımıza bakalım. Örneğin; public static final için bir şablon oluşturalım.

  1. Önce listenin sağındaki New butonuna tıklıyoruz.
  2. Açılan ekranda Name kısmına psf (veya kullanacağınız ismi) yazıyoruz. Description kısmına istediğiniz açıklamayı yazabilirsiniz (örneğin public static final).
  3. Şimdi asıl önemli konu olan şablon kısmı için Pattern yazan bölüme aşağıdaki satırı yazıyoruz.
public static final ${cursor};

Burada ${cursor} terimi, imlecin bu kısma konumlanmasını sağlıyor. Insert Variable butonuyla istediğiniz değişkenleri ekleyebilirsiniz.

Şimdi bu şablonları nasıl kullanacağımıza gelelim. Şablonu kullanmak istediğimiz kodda if şablonu için if yazarak kod tamamlama kısayoluna basıyoruz (Ctrl+Space veya siz hangi kısayolu kullanıyorsanız). Karşımıza if için birden fazla seçenek çıkıyor (çünkü if için birden fazla şablon var). İstediğiniz şablonu seçtikten sonra karşımıza if‘in şablonu geliyor. Doldurmanız gereken alanlar arasında Tab ve Shift+Tab kısayollarıyla gezinebilirsiniz.

Kendi yarattığımız şablonu kullanmak için psf yazarak kod tamamlama işlemini gerçekleştiriyoruz ve şablonumuz imleç şablonda ${cursor} yazdığımız yere konumlanmış şekilde şablonumuz karşımıza geliyor.

Siz de kendi şablonlarınızı oluşturarak sık kullandığınız kod parçalarını hızlıca otomatik olarak yazabilirsiniz.

Herkese iyi çalışmalar.

Mozilla Firefox Arama Motorunu Değiştirme

Firefox’ta arama yapmak için aslında özel bir alan mevcut: Arama Alanı. Ancak, adres çubuğundan da arama yapılabilmekte. Chrome kullanmaya alışmış birisi olarak arama alanını kullanmak epey zor geliyor bana 🙂

Arama alanında arama motorlarını yönetmek ve geçiş yapmak gayet kolay. Zaten Firefox kullanıcılarının orayı kullanmasını istiyor sanırım. Öncelikle kısaca arama alanının arama motorunu değiştirmekten bahsedeyim.

Resimde gördüğümüz arama motoru alanın solundaki küçük oka tıkladığımızda solda bir menü açılıyor.

Bu menüden istediğimiz arama motorunu seçebiliyoruz. Arama motorlarını yönet’e tıklayarak listede görünmesini istemediğiniz kayıtları kaldırabilir ya da yeni arama motorları ekleyebilirsiniz.

Şimdi gelelim benim de alışkanlığım olan adres alanından arama yapmaya. Adres alanına yazdığınız ve bir internet sitesine yönlenmeyen tüm girdiler varsayılan arama motorunda arama sorgusu olarak kullanılıyor. Şimdi de burada kullanılan arama motorunun nasıl değiştirileceğinden bahsedelim (Mozilla neden arama alanındaki motorun kullanılmasını sağlamıyor anlayamadım).

Arama alanına:

about:config

yazıyoruz. Dikkatli olmamız konusunda yapılan uyarıyı dikkate alıyoruz ve söz veriyoruz 🙂 Karşımıza Firefox’un hemen tüm ince ayarları çıkıyor. Siz benim belirttiğim ayar dışında pek birşeyi kurcalamayın derim.

Listeden keyword.URL girdisini buluyoruz ya da pencerede çıkan arama alanına yazıyoruz. Daha sonra girdiye çift tıklayarak (ya da sağ tık menüsünde çıkan Değerini Değiştir ile) açılan pencereye istediğimiz arama motoru girdisini yazıyoruz. Önemli arama motorlarının değerleri şu şekilde:

  • Google: http://www.google.com/search?&q=
  • Yahoo: http://search.yahoo.com/search?p=
  • Bing: http://www.bing.com/search?ie=UTF-8&oe=UTF-8&sourceid=navclient&gfns=1&q=

Artık adres alanına yazdığımız (aaa.com veya ccc.net gibi web adresi kalıpları hariç) herşey belirlediğimiz arama motorunda aranmaya başlayacaktır. Hayırlı uğurlu olsun 🙂

Google Alerts – Güncel Arama Sonuçları Bildirimi

Bilmiyorum daha önce haberiniz var mıydı ama benim çok yakın zamanda tesadüfen haberim oldu. Google Alerts sayesinde, belirttiğiniz bir sorguyla ilgili arama sonuçlarını belirttiğiniz periyotlarda email adresinize gelmesini sağlayabiliyorsunuz. Google’ın Alerts hakkındaki açıklamasını verelim hemen;

Google Alerts’ün kullanışlı yönlerinden bazıları şunlardır:

  • gelişen bir haberi izleme
  • bir rakip veya sektör hakkında güncel bilgilere sahip olma
  • bir ünlü veya etkinlikle ilgili en son bilgileri alma
  • sevdiğiniz takımlarla ilgili gelişmeleri takip etme

google alerts örnek kullanımı

Örnekte gördüğümüz üzere, dubluve.net’i arama sorgusu kısmına yazarak, dubluve.net ile ilgili google aramalarında yeni çıkan herşeyin, çıkar çıkmaz, istediğimiz email adresine gönderilmesini sağlayabiliyoruz. Daha sonra iş Google’a kalıyor zaten 🙂

Java’da Sınıfları String Olarak Gösterme (toString Metodu)

Daha önceki yazılarımdan birisinde Java’da her sınıfın aslında bir String karşılığı olduğunu belirtmiştim. Bu yazıda bu konuyu genişçe ele almaya çalışalım.

Öncelikle, mevcut durumda neler oluyor görmek için Java’nın mevcut sınıflarının print metodunda nasıl gözüktüğüne bir göz atalım.

// Öncelikle bilinen birkaç sınıftan nesne yaratalım
Integer int1 = new Integer(10);
Double double1 = new Double(25.36);
int arr[] = {1, 2, 4};
ArrayList list = new ArrayList();
list.add(3);

// Bu nesneleri konsola yazdıralım
System.out.print("int1: ");
System.out.println(int1);
System.out.print("double1: ");
System.out.println(double1);
System.out.print("arr: ");
System.out.println(arr);
System.out.print("list: ");
System.out.println(list);

Yukarıdaki kod parçasın bilinen birkaç Java sınıfının nesnelerini konsola yazdırıyor. Konsol çıktısı;

int1: 10
double1: 25.36
arr: [I@42e816
list: [3]

Ben konsola yazdırmak istemiyorum programımın içerisinde String olarak kullanmak istiyorum diyenler için bir örnek;

String listStr = list.toString();

Bu örnek aslında konunun özünü vermiş oldu. Evet, Java’da ister mevcut sınıflar, ister kendi tanımladığımız sınıflar olsun, kullandığımız her sınıf bir toString metoduna sahip. Metodun kaynağı ise her sınıfın en tepesindeki ata sınıfı olan Object sınıfı. toString metodu kalıtımsal olarak tüm sınıflara taşınıyor.

Bazı sınıflar toString metodunu kendince yeniden düzenlerken, bazı sınıflar hiç değiştirmeden Object sınıfının toString metodunun içeriğini kullanabiliyor.

Object sınıfının toString metodunun içeriği ise şöyle;

public String toString() {
	return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

Görüldüğü üzere String nesnesi, sınıf ismi, ‘@’ karakteri ve sınıfın hash kodunun birleşiminden oluşuyor.

Şimdi kendimiz bir sınıf oluşturalım ve sınıfın String gösterimine bakalım;

public class Person {
	public String name;
	public int age;
}

Görüldüğü üzere 2 elemana sahip basit bir Person sınıfı. Hemen nesnesini yaratıp şu haliyle String gösterimine bakalım.

Person mert = new Person();
mert.name = "Mert";
mert.age = 15;
String mertStr = mert.toString();

System.out.print("Mert'in String Gösterimi: ");
System.out.println(mertStr);

// Doğrudan
// System.out.println(mert);
// şeklinde de kullanılabilir.

Kod parçasının konsol çıktısı;

Mert'in String Gösterimi: Person@190d11

Görüldüğü gibi Object sınıfının toString metodu çalıştı. Şimdi toString metodunu kendimize göre yeniden yazalım (Object sınıfının toString metodunu Person sınıfında Override etmiş oluyoruz).

public class Person {

	// ... Sınıfın diğer kısımları

	public String toString() {
		return name + "in yaşı " + age + "'tir.";
	}
}

Önceki kod parçasının yeni konsol çıktısı artık şöyle oluyor;

Mert'in String Gösterimi: Mertin yaşı 15'tir.

Tüm anlattıklarımın geçerli olmadığı kavramlar da var tabii ki. Tüm primitif tipler (int, double vs.) bu konunun dışında kalmakta. Sebebi çok basit; primitif tipler Object sınıfından türemezler. Birer sınıf değillerdir, dolayısıyla nesneleri de oluşmaz. Object sınıfından türemedikleri için toString metoduna da sahip değillerdir (aslında sınıf olmadıkları için herhangi bir metodları da yoktur :)). Sonuç olarak, primitif tiplerin String gösterimleri yukarıda bahsettiğim yollarla olmaz.

Peki primitif tipler nasıl String haline dönüşür? Hemen bir örnekle sonlandıralım;

int int2 = 3;
String int2Str = "" + int2;
double double2 = 2.5;
String double2Str = "" + double2;

System.out.print("int2: ");
System.out.println(int2);
System.out.print("double2: ");
System.out.println(double2);

ve konsol çıktısı;

int2: 3
double2: 2.5

Ve sanırım bu kadar 🙂

Bu yazıda Java’da sınıfların String gösterimlerini elimden geldiğince anlatmaya çalıştım. Umarım herkes için faydalı bir yazı olmuştur.