27 Mart 2007
Eclipse İstanbul'da...
17 Mart 2007
Dosyalarınızı Nasıl Sıkıştırırsınız?
Java'da dosyalarınızı ve klasörlerinizi hiç sıkıştırmayı denediniz mi? Denemediyseniz buyrun böyle alalım:) . Java'yı kullanarak dosya ve klasörlerinizi arşivleyen bir program yazabilirsiniz. Bunun için "java.util.zip" paketini kullanabilirsiniz. Bu iş için bu paketteki ZipFile, ZipEntry ve ZipOutputStream sınıflarını kullanabilirsiniz.
ZipEntry sınıfı zip dosyasında saklanacak her bir elemanı temsil eder. Bu elemanlar dosyalar ve klasörlerdir. ZipFile sınıfı bir zip dosyasını temsil eder. ZipOutputStream ise bir zip dosyasına için gerekli olan I/O sınıfıdır.
İsterseniz örneklere bakarak inceleyelim:
1. Bir dosyayı sıkıştırmak için:
byte[] readBuffer = new byte[2156];
int bytesIn = 0;
FileInputStream fis = null;
ZipOutputStream zos = null;
try {
zos = new ZipOutputStream(new FileOutputStream("
fis = new FileInputStream(<"Sıkıştırılacak dosyanın yolu">);
// dosya bir zip elemanı haline dönüştürülüyor
ZipEntry anEntry = new ZipEntry(fileToZip.getPath());
// Zip elemanı yazılmak üzere ZipOutputStream nesnesine veriliyor.
zos.putNextEntry(anEntry);
// Son olarak dosyanın içeriği stream'e yazılıyor.
while((bytesIn = fis.read(readBuffer)) != -1)
{
zos.write(readBuffer, 0, bytesIn);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
// yazma işlemi bittikten sonra streamler kapatılıyor.
try {
fis.close();
zos.close();
} catch (IOException ex) {}
}
2. Bir klasörü sıkıştırmak için:
Klasör ve klasörün her bir elemanı ayrı bir entry olduğu için ayrı ayrı sıkıştırılır.
File dirTozip = new File(<"Sıkıştırılacak klasörün yolu">);
ZipOutputStream zos = null;
try
{
zos = new ZipOutputStream(new FileOutputStream("
// gerçekten klasör mü?
if ( !dirTozip.isDirectory() ) {
throw new IllegalArgumentException(dirTozip+" bir klasör olmalı!");
}
// klasörün içeriği alınıyor
String[] dirList = dirTozip.list();
// klasörün içindeki her bir eleman ayrı ayrı sıkıştırılıyor.
for(int i=0; i
{
File f = new File(dirTozip, dirList[i]);
if(f.isDirectory())
{
// eğer bu File nesnesi bir klasörse içindekileri sıkıştırmak için
// bu fonksiyon yeniden çağrılır (recursive)
// yeni bir klasörü elemanı oluşturuluyor.
ZipEntry anEntry = new ZipEntry(f.getPath()+"/");
zos.putNextEntry(anEntry);
zipDir(f, zos);
continue;
}
// Buraya ulaştıysak bir dosya sıkıştırabiliriz demektir.
zipFile(f, zos);
}
} catch(Exception e) {
e.printStackTrace();
} finally {
// yazma işlemi bittikten sonra streamler kapatılıyor.
try {
fis.close();
zos.close();
} catch (IOException ex) {}
}
3. Bir zip dosyasını açmak için:
Enumeration entries;
ZipFile zipFile;
try {
zipFile = new ZipFile(<"Açılacak zip'in yolu">);
entries = zipFile.entries();
byte[] buffer = new byte[1024];
int len;
while(entries.hasMoreElements()) {
ZipEntry entry = (ZipEntry)entries.nextElement();
// eğer entry bir klasör ise klasör oluşturulmalı
if(entry.isDirectory()) {
(new File(entry.getName())).mkdir();
continue;
}
// Entry açılıyor....
InputStream in = zipFile.getInputStream(entry);
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(entry.getName()));
while((len = in.read(buffer)) >= 0)
out.write(buffer, 0, len);
in.close();
out.close();
}
zipFile.close();
} catch (IOException ioe) {
ioe.printStackTrace();
return;
}
Bu 3 işlemle basit bir arşivleme programı yazabilirsiniz. Kolay gelsin...
28 Şubat 2007
JCataloger v1.0 beta
Merhaba,
Açık kaynak olarak geliştirdiğim JCataloger programının v1.0 betasını google project hosting yardımı ile siz değerli insanların kullanımına sunmaya başladım. Kısaca bu programın ne işe yaradığından bahsedeyim: JCataloger size elinizin altında bulunan arşivlerinizi indekslemeyi sağlar. Bunu arşivinizdeki CD, DVD, sabit sürücü... gibi veri saklama ortamlarındaki klasör yapısını kopyalayıp bu klasör yapısını indeksleyerek yapar. Böylece aklınızda olan bir dosyayı kolayca ve hızlı bir şekilde arşivinizde aramaya yardımcı olur. Bu kolaylık şundan dolayıdır; arşivinizde 1000 tane CD varsa bir dosyayı bu kadar CD'ye teker teker bakarak aramak uzun sürebilir. İşte JCataloger sizi bu zahmetten kurtarabilecek bir program.
Yalnız programın beta sürümünü yayımladığımdan dolayı bazı hatalar olabilir. Zaten amacım benim göremediğim hataları ve yenilikleri siz değerli insanların gözleri ile görebilmektir ve bu programı geliştirmektir. JCataloger indeksleme işi için arka tarafta Apache Lucene projesini kullanmaktadır.
Programın kaynak ve çalıştırabilir kodlarını http://code.google.com/p/jcataloger/downloads/list adresinden indirebilirsiniz.
JCataloger hakkında hata ve yeni istekleriniz için http://code.google.com/p/jcataloger/issues/list adresini kullanabilirsiniz.
JCataloger'ın kodu Subversion kullanılarak host edilmektedir. Aşağıdaki adresteki bilgiler ile kodu yerel makinenize çekebilirsiniz.
http://code.google.com/p/jcataloger/source
JCataloger'dan haberdar olmak için ana sayfasını ziyaret edebilirsiniz.
İyi günler dilerim...
14 Şubat 2007
Özgür Yazılım ve Açık Kaynak Günleri
3-4 mart tarihlerinde İstanbul Bilgi Üniversitersi'nde özgür yazılım ve açık kaynak günleri düzenlenecek. Bu organizasyon bayadır yapılıyor. Açık kaynak yazılımın gelişmesi için daha fazla organizsayonun yapılması gerekir. Ülkemizin yazılım ithal etmemesi için bu konunun üstüne gidilmelidir. Ticari yazılımlarla yapılacak işleri alternatif olan açık kaynak yazılımlarla da yapabilirsiniz. Buna Java en büyük örnektir bence. Size kurumsal, mobil, masaüstü çözümlerini sunuyor, seç beğen al yani:). Umarım bu organizasyon kaçmaz...
01 Şubat 2007
NetBeans'de Bir Hata
PARDUS'ta yada başka bir işletim sisteminde NetBeans kullanırken özellikle yeni bir proje oluştururken şöyle bir hata ile karşılaşabilirsiniz: javax.xml.transform.TransformerConfigurationException : Could not compile stylesheet. Bu hatayı ben yeni bir görsel JSF projesi oluştururken aldım. Bildiğiniz gibi NetBeans proje oluşturulduğunda ant scriptlerinin bulunuduğu XML dosyalarını da üretiyor. Muhtemelen bir sorundan dolayı bunları üretemiyor ve bu hatayı veriyor. Çözümü ise çok basitmiş. Sadece NetBeans'in konfigürasyonlarının bulunduğu netbeans-5.5/etc/netbeans.conf dosyasındaki netbeans_default_options parametresine locale tr_TR seçeneğini eklemektir. Parametrenin son hali aşağıdaki gibi olacaktır:
netbeans_default_options="-J-Xms32m -J-Xmx128m -J-XX:PermSize=32m -J-XX:MaxPermSize=96m
-J-Xverify:none --locale tr_TR"
Bundan sonra projelerinizi düzgün bir şekilde oluşturabilirsiniz.
28 Ocak 2007
Eclipse C/C++ Debugger'ındaki Bir Hatanın Çözümü
Kullandığım işletim sistemi PARDUS. gcc ve gdb paketleri yüklü. Eclipse yazdığım c kodlarını çalıştırmak ve debug etmek için bu paketleri kullanıyor. Yazdığım bir C kodunu çalıştırabildim, fakat debug yapmak istediğimde "Failed to set program arguments, environment or working directory" gibi bir hata verdi. Bunun nedeni de şu imiş. Benim Eclipse çalışma alanım Eclipse Projelerim isminde bir klasördür. Debugger, oluşturduğunuz bir C projesinin yolunda boşluk karakteri görürse deminki hatayı veriyor. Yani Eclipse Projelerim klasörünün ismini Eclipse_Projelerim şeklinde değiştirdim ve sorun çözüldü. Aynı şekilde C kaynak dosyası da boşluk karakteri içermemeli.
25 Ocak 2007
iPhone Java'yı destekleyecek mi?
05 Ocak 2007
Ölü Pixellere Son!
Bu düşüncelerle dizüstünüzün kapağını açtınız ve açma düğmesine bastınız. İşletim sistemi çalıştı, herşey yolunda. Fakat o da ne? Ekranda bir tane benek duruyor, elinizle siliyosunuz gitmiyor, tükürüp siliyosunuz gene gitmiyor. Maalesef o benek silmekle gitmez! Bu benek aynen aşağıdaki gibidir:
04 Ocak 2007
Solr Index Server!!!
Bir düşünsenize, büyük bir şirket ve yüklü bir döküman yığınının tutulduğu bir veya bir kaç sunucu var ve bu dökümanlardan tüm çalışanlar faydalanıyor. Solr sayesinde bu dökümanları indeksleyebilir ve hızlı arama sonuçlarına ulaşabilirsiniz, aynı google gibi:). Solr kullanarak sunucu üzerinde arama yapıp sonuçlarını kullanıcıya güzel bir arayüzle gösteren kullanıcı tabanlı (thin client) uygulamalar yazabilirsiniz. Örnekler çoğaltılabilir.
Bu uygulamanın özellikleri ve bir de eğitimi mevcut! Kolay gelsin...
02 Ocak 2007
Aptana Web IDE
Eclipse RCP kullanılarak Aptana isminde bir web ide geliştirilmiş. Bu IDE sayesinde html, javascript ve css dosyalarınızı gayet kolaylıkla yönetebilirsiniz. Örneğin javascript kullanarak bir kütüphane (mesela AJAX kütüphanesi) yazmak istiyorsanız bu Aptana gayet iyi bir seçim olabilir. Çünkü ilk önce eclipse ortamından kopmamış oluyorsunuz, ikincisi Aptana içinde bir tane javascript debugger'ı getiriyor. Böylelikle yazdığınız javascript kodlarının nasıl çalıştığını gözlemleyebilirsiniz. Bir diğer özellik html, css, javascript için kod yardımı (code assist) özelliği de var.
Ayrıca bu Aptana'yı kullananlar bir de eğitim amaçlı olarak videolarını koydukları bir site yapmışlar. Bu sitede çeşitli kısa eğitimler bulabilirsiniz.
31 Aralık 2006
Bayram Tebriği
08 Aralık 2006
Özgürlük için...
06 Aralık 2006
Virtual Ant
05 Aralık 2006
Pardus'a geçtim
Artık ben de bir Linux kullanıcısı oldum.Daha doğrusu PARDUS kullanıcısı.Bu iletinin java ile fazla bir ilgisi yok fakat bundan sonra PARDUS'ta java ile ilgili karşılaştığım sorunlar olup çözümlerini bulduğum zaman buraya yazacağım.Şu an windows'a hiç ihtiyaç duymuyorum.PARDUS'u Tubitak'taki ve emek veren herkes çok güzel bir şekilde inşa etmişler.PARDUS'u kurduğunuz zaman ihtiyacınız olan her şey beraberinde geliyor.Yeni bir şey yüklemek istediğinizde PISI adı verilen kendilerinin geliştirdiği paket yükleme ve güncelleme aracını kullanıyorsunuz.RPM ve DEB uzantılı dosyaların kurulumunu desteklemiyor.PARDUS'u kurduktan sonra yeni bir işletim sistemine geçmemden dolayı bir kaç zorlukla karşılaşmadım değil.Bunların en önemlisi internet oldu.Bende ZOOM 5510B USB ADSL modem vardı ve bunu bir türlü tanıtamadım.Kendi içinde gelen eciadsl paketi benim modemin bir eski versiyonunu destekliyormuş.Ben ne yaptım, abimin zoom ethernet modemi ile takas ettim benim modemi.Böylece sorun çözüldü:)
Java uygulamalarını kurmam da hiç zor olmadı.Ne kurdum:Eclipse 3.2.1,NetBeans 5.5, NetBeans Visual Web Pack, Glassfish Application Server.Bunlardan NetBeans'in kurulumunda sorunlar oldu.Bu sorunların çözümünü daha sonra dile getireceğim.Şu an çok güzel bir şekilde Java geliştirebiliyorum.
Bence PARDUS'u tüm Türkiye kullanmalı.En önemlisi milli bir işletim sistemi.Böylece açık kaynak koda desteğimiz de artmış olur ve piyasadaki microsoft tekelide azalmış olur.Windows'un kullanım açısından en son kullanıcıya hitap etmesini inkar etmemek lazım;fakat PARDUS'un da bu özellik olarak fazla eksik bir tarafı yok bence.Tamamen alışkanlık meselesi, kullandıkça alışıyorsunuz...İyi günler dilerim...
27 Kasım 2006
JBuilder 2007 ve Eclipse
JBuilder 2007 sürümü Eclipse RCP kullanılarak geliştirilmiş.Yani çekirdek eclipse'in üzerine kendi eklentilerini geliştirmişler.Böylece Eclipse kullanıcıları JBuilder'a farklı Eclipse eklentileri ekleyebilecekler.
Bu sürüm çeşitli güzel özellikleri içinde barındırıyor.Görsel olarak EJB 3.0 ve JPA sınıflarını tasarlayabiliyorsunuz.Masaüstü programlar için görsel olarak GUI tasarlayabiliyorsunuz ki JBuilder bu konuda bir hayli iddialıdır.
Denemekte fayda var:) İyi çalışmalar...
05 Kasım 2006
Java 6 (Mustang)'deki Değişikliklerin Listesi
Aşağıdaki linkte Java 6'daki iyileştirmeler ve yeni özellikler listelenmiş.Faydalı olacağını düşündüm.
http://java.sun.com/javase/6/webnotes/features.html
04 Kasım 2006
Dikey yazı nasıl yazarsınız?
public static void drawVerticalText( Graphics g, double drawType, String label, int xPos, int yPos ) {
Graphics2D g2D = (Graphics2D)g;
// Yazıyı döndürmek için transformasyon gerekiyor.
AffineTransform fontAT = new AffineTransform();
// Varolan fontun bozulmaması için
Font theFont = g2D.getFont();
// 90 derece sola dondurulmus eni font oluşturuluyor
fontAT.rotate(3*Math.PI/2);
Font theDerivedFont = theFont.deriveFont(fontAT);
// yeni fontu belirleniyor
g2D.setFont(theDerivedFont);
// yazınızı dondurulmus fontla yazabilirsiniz
g2D.drawString(label, xPos, yPos);
// varolan fontu tekrar kullanmaya devam edin
g2D.setFont(theFont);
}
Metoda parametre olarak kullandığınız Graphics objesi ve diğer gerekli parametreleri verdikten sonra istediğiniz koordinata istediğiniz yazıyı yazabilirsiniz.
03 Kasım 2006
NetBeans mi Eclipse mi?
Merhabalar,
Başlıkdan da anlaşıldığı üzere yeni çıkan NetBeans 5.5 ile Eclipse 3.2 arasındaki artıları eksileri haddim üzere olmayarak fikirlerimi belirtmek istedim.Öncelikle yazacaklarım Charles Ditzel ile yapılan bir röportaja dayanmaktadır.Kendisi sitesinde aldığım gibi koyuyorum a partner area architect at Sun Microsystems.
Öncelikle NetBeans'de şöyle bir özellik var."All in one".Türkçe söylemek isterdim fakat bu daha güzel sanki.Yani geliştirme adına bulabileceğiniz her şey nerdeyse NetBeans'i kurduğunuzda geliyor.Mesela GUI designer olarak Matisse projesi adında yürütülen çalışma ile geliyor ve gayet başarılı.Masaüstü için görsel uygulamalar geliştirmeyi çok kolay hale getiriyor. Sonra Java EE 5'i destekliyor ki şu an IDE'ler arasında IntelliJ IDEA dışında hiçbir IDE Java EE 5'i desteklemiyor.Ayrica kullandığınız veritabanlarına IDE ortamından bağlanmanıza olanak sağlıyor.NetBeans içerisinde Struts ve JSF desteği veriyor.Fakat bu yukarda saydıklarımın hiç biri eklenti yüklemeden Eclipse ile kullanılamıyor.Masaüstü için görsel programlar yazmak istiyorsanız Visual Editor eklentisini indirmeniz gerek.JAVA EE desteklemek için WTP (Web Tools Project) indirmeniz gerek ki boyutu 180 MB civarında.Ayrıca Struts ve JSF desteği de maalesef yok.Bunların yanı sıra NetBeans ortamına kendi sitesinde yayınlanan çeşitli paketler yardımı ile yeni geliştirme ortamları eklemek mümkün.Örneğin; Mobility Pack ile J2ME geliştirme ortamı olması ki telefonlara sürükle bırak özelliği ile görsel uygulamalar yazabiliyorsunuz.Visual Web Pack ile sürükle bırak JSF web uygulamaları yapabileceğiniz ortamı oluşturabiliyorsunuz.Ayrıca Eclipsede de olduğu geniş bir plugin listesi var.
Eclipse'i indirdiğinizde ise bir editor,debugger,compiler geliyor.Sakın yanlış anlamayın, Eclipse'i kötülüyor değilim.Ben de genel olarak Eclipse'i kullanıyorum.Çünkü Eclipse'in look & feel'i beni rahatlatıyor.NetBeans genel olarak ne kadar hızlandı deseler de Eclipse'i geçemez.Bir kere kod yazarken real-time compiler'ı NetBeans ile kıyaslaştırılamaz.NetBeans kodu değiştirdikten 2-3 sn. sonra uyarı veriyor neredeyse:).Ayrıca Eclipse'in perspective ve view mantığı diğer IDE'lere taş çıkartacak nitelikte.
Ama dediğim gibi iş web uygulaması, EJB uygulaması gibi kurumsal uygulamalar geliştirmeye geldiğinde ve son teknolojiyi kullanmaya geldiğinde Eclipse NetBeans'e göre zayıf kalıyor.
Benim şu ana kadar genel olarak izlenimlerim böyle.Sizin düşüncülerinizi de almak isterim.İyi çalışmalar dilerim...
27 Ekim 2006
JavaScript 1.7
İyi çalışmalar...
27 Eylül 2006
JAR içinden resim dosyası nasıl okunur?
çağıramazsınız.Bunu yapmak için aşağıdaki gibi kodlamanız gerekecek:
// İlk önce ClassLoader objesini alırsınız.
// Create icons
Icon saveIcon = new ImageIcon(cl.getResource("images/save.gif"));
İlk önce Bir tane ClassLoader objesi alıyorsunuz.Daha sonra bu obje ile resim dosyasını bir resource olarak programınıza yüklüyorsunuz.Yalnız getResource metodunun içine resim dosyasının tüm yolunu vermeyi unutmayın.