Yazar: Orhan Balci 19 Ocak 2012 tarihinde

Loading ...
Programlamaya ilk başladığınızda küçük projeler yaparsınız, dolayısıyla yaptığınız işlem sayısı, kullandığınız tip sayısı pek fazla değildir. Buna bağlı olarak yazdığınız if-else blokları ve switch-case blokları nispeten küçük olacağından okunmasında, takip edilmesinde çok sıkıntı yaşamazsınız. Reflection ve annotation’lar bu durumların tersinin ortaya çıktığı genellikle büyük ölçekli projelerde kullanışlı olduğu için çoğu geliştirici tarafından bilinmeyen mekanizmalardır. reflection ve annotation yapıları programlama alışkanlıklarımızı tersine çevirebilecek kadar güçlü ve bir o kadar da esnektirler. Günümüzde bu iki mekanizma kullanılarak çok güçlü framework’ler geliştirilmektedir. Bunu da yazılımdaki soyutlamayı bir üst katmana çekerek yapmaktadırlar. Öncelikle reflection konularına değinmemiz gerekecek çünkü annotation’lar reflection olmadan pek bir şey ifade etmez. Reflection tanımladığımız sınıfların, soyut veri yapılarının elemanlarına çalışma zamanında ulaşmamızı sağlayan bir mekanizmadır. Java yorumlanan bir dil olduğundan çalışma anında herhangi bir sınıfın özelliklerine ait metdata bilgisi JVM tarafından tutulmaktadır. Reflection API’sinin yaptığı iş ise programcının bu metdataya erişiminin sağlanmasıdır. Reflection API java.lang.reflect paketi altında bulunan sınıflardan oluşmaktadır.Bu pakete ek olarak java.lang paketindeki Class sınıfı’da reflection API’nin giriş noktasını oluşturmaktadır.
(daha fazla…)
Yazar: admin 30 Ağustos 2011 tarihinde

Loading ...

Dün sabah her iş günü yaptığım gibi servise binmek için sabah 07:40′ta evden dışarıya çıktığımda her zamankinden farklı bir manzara vardı sokaklarda. İstanbul’un alışık olmadığı bir sakinlik ve sessizlik hakimdi caddelere. Irene kasırgası New York’tan çok İstanbul’u vurmuştu sanki. Hani şu western klasiklerinde kötü adam sahneye çıktığında sokakaları bir ıssızlık kaplardı ya, tam onun gibi bir hava vardı güzel şhirde. Değişik bir duygu kapladı içimi. İstanbul böyle daha mı iyiydi sanki. Kalabalıkları sevmeyen ruhum mu söyletiyordu bunları bana. Herkes bayram için memleketine döndü. Anlaşılan İstanbul kaderine terkediliyor böyle önemli günlerde. Bu bayramda hüzünle sevinci bir arada yaşıyorum. Hüzünlüyüm zira annemden babamdan ayrı bayram geçirmek hiç de kolay değil. Sevincim ise üzüntüme sebep olan şey. Biraz durumlar karışık anlayacağınız. Bu bayramın benim için diğer bir anlamı ise oğlumla yaşadığımız ilk bayram. Memlekete gidemeyişimizin sebebi olan oğlumla ilk bayramımız. Belki ben babamla geçirmeyeceğim bayramı fakat oğlum benimle, babasıyla olacak bu bayramda. 22 Ağustos 2011 Pazar gecesi dünyaya teşrif ettin oğlum. Hayatta farklı manaların, duyguların olduğunu gösterdin bana. Hayat seninle daha güzel, daha yaşanılır, daha vazgeçilmez… Ah bir de şu kokunu ömür boyu koklamak için saklayabilesem.
Yazar: Orhan Balci 11 Ağustos 2011 tarihinde

Loading ...
İşlemciye aynı zaman diliminde birden fazla iş yaptırmanın iki yolu vardır. Bunlar farklı processler oluşturmak ve aynı process içinde farklı threadler oluşturmaktır. İşletim sistemimizde kendi başına çalışan tüm servisler, programlar birer process’tir. Process’lerin kendine ait bir çalışma ortamı bulunur. Burada çalışma ortamından kasıt ram’de kedine has bir çalışma yığınının (execution stack) olmasdır. Çoğu zaman elimizde hazır bulunan bir konsol uygulamasını kendi uygulamamız içinden çağırmak istediğimizde yeni bir process oluşturmamız gerekecektir. Java kendi uygulamamız içerisinden yeni processler oluşturmamızı ve bu processlerden çıktı almamızı sağlayan sınırlı bir API sunmaktadır. Küçük bir örnekle Java’da nasıl process oluşturulduğuna göz atalım. Bu örneğimizde linux sistem çağrıları yaparak yeni bir klasör oluşturup, var olan bir dosyayı sileceğim :
(daha fazla…)
Yazar: admin 06 Ağustos 2011 tarihinde

Loading ...
Bu yazım tam bir ders niteliğinde olmayıp bazı ip uçlarını barındırmaktadır. Eğer Java’da 2D çizim işlemleri hakkında bilginiz yoksa yararlı olmayabilir.
- Dolgulu çizim yapmak için setPaint() ve fill…() metod çiftlerini kullanıyoruz. Örnek :
g2.setPaint(p);
g2.fillRect(0, 0, 50, 70);
- Çizimlerimizde text antialising modunu ayarlamak için :
//text antializing on
g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
- Çizeceğimiz yazının boyutlarını almak için FontMetrics sınıfını kullanıyoruz. Örnek :
//çizeceğimiz stringin boyutlarını alıyoruz
FontMetrics fm = g2.getFontMetrics();
Rectangle2D r2d = fm.getStringBounds(String.valueOf(number_), g2);
Yazar: Orhan Balci 04 Ağustos 2011 tarihinde

Loading ...
package net.orhanbalci.sort.shellsort;
import java.util.Random;
public class ShellSortExample {
public static void main(String[] args) {
int[] sortArray = new int[1000];
Random r = new Random();
for(int i = 0; i < 1000; i++)
{
sortArray[i] = r.nextInt(1000);
}
shellSort(sortArray);
for(int i = 0; i < 1000; i++)
{
System.out.print(sortArray[i]+"\t");
if((i+1)%10 == 0)
{
System.out.println("");
}
}
}
private static void shellSort(int[] sortArray) {
int temp;
for (int i = 8; i >= 1; i /= 2) {
for (int j = 0; j < sortArray.length; j += i) {
for (int g = j; g >= i; g -= i) {
if (sortArray[g] < sortArray[g - i]) {
temp = sortArray[g];
sortArray[g] = sortArray[g - i];
sortArray[g - i] = temp;
}
}
}
}
}
}
Yazıyı Faydalı Bulduysanız Reklamlara Tıklayarak Siteye Destek Olabilirsiniz
Yazar: Orhan Balci 21 Temmuz 2011 tarihinde

Loading ...
Yazar: Orhan Balci 20 Temmuz 2011 tarihinde

Loading ...
Yıllık iznimi değerlendirmek için memleketim Afyon’daydım geçen hafta. Daha önce gitme fırsatı bulamadığım yeni alışveriş merkezimiz Afium’a gitme şansım oldu. Gerçekten hoş bir ortam oluşturmuşlar. Yol yorgunluğunu atmak için ortasında bulunan havuzun kenarında soğuk birşeyler içebilir, ihtiyaçlarınız için alışveriş yapabilirsiniz. Ayrıca Afyon’un yerlisine hitab eden sinema, koçtaş, migros vb. mağazalar da bulunuyor. Konum olarak Özdilek’in karşısında. Yolunuz düşerse çekinmeden uğrayın derim. Ayrıca isim üzerinde biraz kafa yordum. Galiba “Afyon” + “Opium” = “Afium”

. Burada da web sitesi var :
http://www.afium.com.tr/
Yazıyı Faydalı Bulduysanız Reklamlara Tıklayarak Siteye Destek Olabilirsiniz