Redgate SQL Search Plugin

SQL Server Management Studio 2008 kullanarak veritabanınızdaki bütün tablolar veya saklı yordamlar (stored procedure) içerisinde bir metin aramanız gerektiği zaman yapamadığınızı anlamak uzun sürmüyor. Benim de bugün bütün stored procedureları taramam gerektiğinde üçüncü parti yazılımlara yöneldim Redgate firmasının geliştirdiği SQL Search Pluginini buldum. Plugin SQL Server Management Studio içerisine entegre oluyor ve veritabanınızdaki bütün objeleri arayıp metin bulmayı çok kolaylaştırıyor. Oldukça başarılı olan bu eklenti aynı zamanda bedava. Mutlaka deneyin..

http://www.red-gate.com/products/sql-development/sql-search/

Share

C# – Using Anahtar Kelimesi ve Kullanımı

C# dilinde “using” anahtar kelimesi iki farklı şekilde kullanılmaktadır. Bunlardan birincisi isim uzaylarını (namespace) koda dahil etmek veya isim uzayları ve türlere başka isimler vermek için kullandığımız using bildirimi, ikincisi ise IDisposable arayüzünü gerçekleştiren nesnelerin doğru bir biçimde ele alınmasını sağlayan using ifadesi. Bu kullanımların her ikisini de örneklerle açıklamaya çalışacağım.
Read more “C# – Using Anahtar Kelimesi ve Kullanımı”

Share

Java Servisinin Kendi Kendine Durması Sorunsalı

Çalıştığım şirkette eski de olsa Glassfish 2.1.1 sunucusu üzerinde barındırdığımız bir uygulamamız var. Bütün sistemi daha yeni ve hızlı bir ortama taşımamız gerektiğinde Glassfish uygulama sunucusu yeni donanımlar üzerine yüklendi ve gerekli ayarlamaları yapıldı. Ancak test aşamasında farkettik ki Glassfish sunucusunun yüklü olduğu makinede kullanıcı oturumunu kapattığı anda uygulama yanıt vermeyi kesiyor. Biraz araştırma yapınca farkettik ki kullanıcı makinede oturum kapattığı anda java.exe servisi çalışmayı durduruyor.

Google sağolsun çözümü bulmak çok uzun sürmedi. Meğerse kullanıcı oturum kapattığı anda JVM işletim sisteminden gelen bir sinyalle kendini durduruyormus. Bu davranışı devre dışı bırakmak için JVM parametrelerini biraz kurcalamak gerekti. JVM’yi -Xrs parametresiyle çalıştırdıgımız zaman kullanıcı oturum kapatsa bile JVM arka planda çalışmaya devam edecektir. Bizim sorunumuz Glassfish sunucusu ile olduğu için domain.xml dosyasına -Xrs parametresini de ekleyerek sorunu çözdük.

Ancak dikkat edilmesi gereken bir nokta var. -X ile başlayan JVM parametreleri standart değil yani her JVM gerçekleştiriminde yer almayabilir veya olsa bile aynı şekilde davranmayabilir. Komut satırında java -X komutunu girerseniz sizin JVM’nizin hangi parametreleri desteklediğini görebilirsiniz.

Share

Strateji Tasarım Deseni

Uzun zamandır yazmak istediğim konulardan birisi de tasarım desenleri. Strateji deseni çok sık kullanılan ve çok yararlı olduğunu düşündüğüm bir tasarım deseni olduğu için bununla başlamak istedim. Bu desenin kitaplardaki tanımını verip kafa karıştırmaktansa bir örnekle başlamak istiyorum. Bir şirketimiz olduğunu ve bu şirkette çalışan teknisyen, mühendis ve yönetici türünde elemanlarımız olduğunu varsayalım. Her bir eleman türü için de ayrı ayrı maaş hesaplama algoritmalarımız olsun. Bu durumu koda döktüğümüzde aşağıdaki gibi bir sonuç karşımıza çıkabilir.
Read more “Strateji Tasarım Deseni”

Share

C# Pratikleri Bölüm 1 – ? ve ?? Operatörleri

Her ne kadar Java dünyasından gelmiş birisi olsam da şartlar beni .NET ile uygulama geliştirmeye itti diyebilirim. Bu konularda derinlemesine bilgi sahibi değilim, ancak C# ile uygulama geliştirirken karşılaştığım ve öğrenip kullandığım, küçük ama faydalı olabilecek kodlama pratiklerini paylaşmak iyi olur diye düşündüm. Bu ilk yazıda ? ve ?? operatörleri üzerinde durmak istiyorum.
Read more “C# Pratikleri Bölüm 1 – ? ve ?? Operatörleri”

Share

Git – WinMerge ile diff Kullanımı

Versiyon kontrol sistemi olarak Git aracını kullananlar sanıyorum ki diff komutunu kullanarak dosyaları sıklıkla karşılaştırıyorlardır. Git Bash kullanarak çalıştırılan bu komutun çıktısı da konsol ekranında gösterildiği için, çok sağlıklı bir karşılaştırma yapmak mümkün olmayabiliyor. Özellikle dosyalar arasındaki farklılıklar arttıkça bunları takip etmek çok zorlaşıyor. Bir dosya karşılaştırma aracı olan WinMerge programını Git ile entegre ederek diff komutunun çıktısını görsel olarak çok daha gelişmiş bir biçimde görebiliriz.

Bunu yapmak için öncelikle http://winmerge.org/ adresine giderek WinMerge programını indirip kuralım. Yalnız programı kurarken “Program Files” klasörüne değil de direk “C” dizininin altına kurmakta fayda var çünkü “Program Files” klasörünün ismi boşluk içerdiği için Git ile entegrasyonda bazen problemler olabiliyor. İkinci adım olarak boş bir metin dosyası yaratıp içerisine aşağıdaki satırları girelim (WinMerge programını “C” dizininin altına kurduğumuzu varsayıyorum):

#!/bin/sh
# diff is called by git with 7 parameters:
#  path old-file old-hex old-mode new-file new-hex new-mode
"C:/WinMerge/WinMergeU.exe" "$2" "$5" | cat

Bu dosyayı git-diff-wrapper.sh adıyla kaydedelim. Ancak dosyanın uzantısının .txt olarak kalmadığına dikkat etmemiz lazım. Bu dosyayı da C dizininin altında GitScripts isimli bir klasör oluşturup onun içine atalım. Daha sonra Git Bash içerisinde aşağıdaki komutu çalıştıralım:

git config --global diff.external C:/GitScripts/git-diff-wrapper.sh

Buna alternatif olarak aşağıdaki satırları “C:/Users/(KullanıcıAdınız)” dizini altındaki .gitconfig dosyasına ekleyebilirsiniz. Yukarıdaki komut da zaten .gitconfig dosyasına aşağıdaki satırları eklemektedir.


external = C:/GitScripts/git-diff-wrapper.sh

Bu işlemden sonra Git Bash içerisinde bir diff komutu çalıştırdığımız zaman WinMerge otomatik olarak açılacak ve çok kolay bir biçimde karşılaştırma yapmanızı sağlayacaktır.

Share

Java’da Gizli (Implicit) ve Açık (Explicit) Parametreler

Programlama dillerinde bir işlev, fonksiyon veya yöntem (metod) çağırırken veri geçişi için parametreler kullanılır. Java dilinde de aynı şey geçerlidir. Aşağıdaki gibi bir yöntemimiz olduğunu düşünürsek;

public void maasArtir(double oran) {
	maas += maas * oran/100;
}

yukarıdaki yöntem parametre olarak double türünde bir değer almakta ve nesne değişkeni olan “maaşı” artırmaktadır. Parametre olan “oran” değişkeni yöntemin imzasında açıkça tanımlandığı için açık (explicit) parametredir. Buraya kadar ilginç birşey yok, bildiğimiz şeyler. Şimdi bu yöntemin Personel isimli bir sınıf içerisinde tanımlı olduğunu düşünelim ve Personel sınıfından yarattığımız personel1 adında bir nesnemiz olsun.

Personel personel1 = new Personel();

Daha sonra personel1 nesnesi üzerinden maasArtir yöntemini çağıralım.

personel1.maasArtir(20);

Bu koda göre personel1 nesnesine ait olan “maas” değişkeni %20 oranında artacaktır. “oran” parametre değişkeni açık parametre ise yazının başlığında belirttiğimiz gizli parametre nerededir? Java dilinde yöntem çağırırken kullandığımız nesne referansı da yönteme parametre olarak gönderilmektedir. Yani nesne referansımız olan personel1, maasArtir yöntemi için gizli (implicit) parametredir. Diğer bir deyişle yöntemi çağırmak için kullandığımız referans, aynı zamanda gizli parametredir. Gizli parametre yöntemin imzasında tanımlanmaz, gizli olması da zaten bu yüzdendir.

Peki, açık parametre olan “oran” değişkenine yöntem içerisinde direk adıyla erişebiliyorsak, gizli parametreye nasıl erişeceğiz? Bunun için de this anahtar kelimesi kullanılmaktadır. Yöntem içerisinde nesne değişkenlerine erişmek istediğimizde this kelimesini kullanabiliriz. Yani en yukarıda yazdığımız yöntemi aşağıdaki gibi de yazabiliriz.

public void maasArtir(double oran) {
	this.maas += this.maas * oran/100;
}

Yukarıdaki gibi bir kullanımda this anahtar kelimesi ile gizli parametreye erişmiş oluyoruz ve böylece personel1 nesnesinin maaş bilgisine erişiyoruz. Biz maas değişkeninin önüne this yazmasak bile bu kelime otomatik olarak eklenmektedir. Bu şekilde açıkça “this” yazmak, programın okunabilirliğini artırmak ve nesne değişkenleri ile yerel değişkenleri bir bakışta ayırt etmek için faydalı olabilir.

Share

Java’da this Anahtar Kelimesi ve Kullanımı

Java dilinde kullanılan anahtar kelimelerden birisi de “this” kelimesidir. Kullanım alanı çok fazla olmasa da this anahtar kelimesinin ne işe yaradığını ve ne amaçlarla kullanıldığını öğrenmekte fayda var.  Basit olarak söylemek gerekirse this anahtar kelimesi o anda hangi nesne üzerinde işlem yapılıyorsa o nesnenin referansını döndürür. Şimdi bu anahtar kelime ile neler yapılabileceğine bakalım.

Read more “Java’da this Anahtar Kelimesi ve Kullanımı”

Share

Doodle Arşivi

Bildiğiniz üzere Google, çeşitli ülkeler için önem arz eden günlerde, günün anlam ve önemini anlatan logolar tasarlayıp karşımıza çıkıyor. Bu özel anlamlı logolara “doodle” adı verilmiştir ve 1998 yılından beri doodle geleneği devam etmektedir. Google geçtiğimiz senelerde 23 Mayıs, 29 Ekim gibi ülkemiz için önemli olan günlerde de doodle tasarımları yapmıştı. Charlie Chaplin’in 122. doğum gününde akılda kalıcı bir doodle tasarlayan Google, son olarak da Les Paul için gitar çalabildiğimiz bir doodle ile karşımıza çıktı. Doodle’lar günlük olduğu için kısa bir süreliğine görebiliyoruz hatta bazen hiç göremiyoruz. Google’ın geçtiğimiz yıllarda tasarladığı doodle’ları merak eden veya tekrar görmek isteyenler için bir adres var. 1998 yılından beri yayınlanmış bütün doodle arşivine aşağıdaki adresten ulaşabilirsiniz.

http://www.google.com/logos/index.html

 

Les Paul'un 96. Doğum Günü

 

Evliya Çelebi'nin 400. Doğum Günü

 

Avrupa Kültür Başkenti İstanbul

 

29 Ekim Cumhuriyet Bayramı

 

23 Nisan Ulusal Egemenlik ve Çocuk Bayramı

 

Share