Fihrist

1 Kasım 2014 Cumartesi

IDEA SVN Checkout

IDEA'da SVN'den checkout yaparken, mesela svn server'da iki farkli klasor var diyelim, src ve web, bir JAVA web projesi icin. Once src'yi almak istiyorsunuz. src'yi secip checkout derseniz, serc klasorunun kendisini degil altindakileri alacaktir. Yani ne yapmak lazim? Bu dosyalarin gelecegi klasoru secerken de buna gore hareket etmek lazim. Projenizin adi MyProject olsun. MyProject altina gelsin derseniz MyProject/com/uslu... seklinde olacaktir. O yuzden MyProject/src'ye gelsin bu svn'deki dosyalar demek daha mantikli. Bu sekilde MyProject/src/com/uslu... seklinde iner. Ama web'i src'nin altina koymak sitemiyorsak onun inecegi yeri secerken MyProject/web demeliyiz. web adli klasoru kendimiz olusturabiliriz. Muhtemelen bu iki klasoru ayni anda alma sekli de vardir belki, veya svn'e koyarken daha structured bir sekilde konabilir, bu biraz kullaniciya kalmis. Gerci zaten src'yi secip ekle dediginizde size src ile beraber ekleme secenegi de sunuyor bir adim sonrasinda yani hic kendiniz klasor olusturmaniz gerekmeyebilir. Yani src'yi sectiginizde altindakileri aliyor demistik ya, o biraz secmeli olmus oluyor.

13 Nisan 2014 Pazar

JSTL ile JAVA bean'in property'lerine ulasmak

Daha once burda JSP icinde JSTL kullanarak nasil JAVA objelerine ulasabilecegimizi gostermistik. Bu objenin (bean) property'lerine ulasmak icin 'get' metoduna ihtiyac duyariz. Yani eger
private String username;
seklinde bir property varsa
public String getUsername() {
 return username;
}
seklinde get metodu da olmasi lazim. Aksi takdirde 'property not found' tarzinda bir hata alirsiniz.

21 Ekim 2013 Pazartesi

Guid

C#'ta JAVA'daki UID gibi Guid (globally unique identifier) kullanmak isterseniz
new Guid()
şeklinde değil de
Guid.NewGuid()
şeklinde kullanın. Aksi halde hepsi 0 (yazıyla sıfır) olarak gelecektir.

27 Eylül 2013 Cuma

SharpZipLib ile atılan ZIP'in java.util.zip ile doğrulanması

Corrupt ZIP file hatası alıyorsanız, ZIP'i kontrol edin. 7zip ile açıp içideki bir dosyanın bilgilerini incelediğinizde Version:45 varsa zip64'tür, ki bunu JAVA desteklemiyor. O yüzden
myZipOuputStream.UseZip64 = UseZip64.Off;
yapıp atın. Artık Version:20 olduğunu göreceksiniz. Şu halde o hatayı almıyor olmanız lazım.

11 Eylül 2013 Çarşamba

HP 2311x HDMI problemi çözümü (Mac mini)

Mac OS 10.8.3 Mac mini'de HDMI üzerinden HP 2311x monitörüne bağlandığında görüntü net gelmiyorsa ve ekrana sığmıyor biraz taşıyorsa Image Control -> Custom Scaling -> Overscan -> Off yapın.

29 Mayıs 2013 Çarşamba

Interface - Abstract - Class : JAVA - .NET (C#)

Interface I olsun. Abstract A olsun. A, I'dan türetilmiş. C1 ve C2 sınıfları da A'dan türetilmiş. C1 ve C2'de f fonksiyonunun farklı implementasyonları olsun. Bu fonksiyonlar da I'da declare edilmiş olsun. JAVA'da A içine bir şey yazmaya gerek olmadan C1 ve C2 sınıflarındaki f'lerin I'daki declaration'dan türediğini compiler anlıyor. .NET'te ise A, I'dan türetilmiş bir sınıf olduğu için compiler I'da declare edilen fonksiyonların A'da implemet edilmesini bekliyor. Biz de implement etmek yerine A'da abstract olarak declare ediyoruz C1 ve C2'de de override ederek implement ediyoruz. İstersek A'da da implement edebiliriz. Bunun avantajı C1 ve C2 sınıflarında implement edilen fonksiyonların ortak özellikleri varsa bunu A'da implement edip C1 ve C2'deki f'lerde A'daki fonksiyon çağırılabilir. Yalnız burda dikkat edilmesi gereken C1 ve C2'de yine override yazılırken A'da implement edilen f virtual yapılır. JAVA ilk örnek: abstract class'taki bir declaration mecburiyeti yok

public interface I {
 public void f();
}

public abstract class A implements I{
}

public class C1 extends A{
 public void f() {
  // do something
 }
}

public class C2 extends A{
 public void f() {
  // do something else
 }
}
JAVA ikinci örnek: istenirse abstract class'ta da implementation yapılabilir ve normal class'lardan çağırılabilir

public interface I {
 public void f();
}

public abstract class A implements I{
 public void f() {
  // do something
 }
}

public class C1 extends A{
 public void f() {
  super.f();
  // do something else
 }
}

public class C2 extends A{
 public void f() {
  super.f();
  // do something different
 }
}

C# ilk örnek: abstract class'ta implement'e gerek olmayan Dikkat edilmesi gereken, abstract class'taki fonksiyon abstract olmalı, implementation olmamalı. Normal class'lar da override etmeli.

public interface I {
 public void f();
}

public abstract class A : I {
 public abstract void f();
}

public class C1 : A {
 public override void f() {
  // do something
 }
}

public class C2 : A {
 public override void f() {
  // do something else
 }
}

C# ikinci örnek : abstract class'ta da implementation olan ve normal class'larda abstract'taki implementation çağırılan Dikkat edilmesi gereken, abstract class'taki fonksiyon virtual olmalı, normal class'taki fonksiyon yine override etmeli ve bu fonksyion abstract class'takini çağırabilir.

public interface I {
 public void f();
}

public abstract class A : I {
 public virtual void f() {
  // do someting
 }
}

public class C1 : A {
 public override void f() {
  base.f();
  // do something else
 }
}

public class C2 : A {
 public override void f() {
  base.f();
  // do something different
 }
}

26 Şubat 2013 Salı

JAR İmzalamak

Applet'ler tarayıcılarda çalıştırılacağı zaman tarayıcı applet'in imzasını kontrol ediyor. Eğer güvenilir bir sertifikaya sahip biri tarafından imzalanmamışsa kullanıcıyı uyarıyor. Elimizdeki applet JAR'ını imzalamak için öncelikle

keytool -v -importkeystore -srckeystore myPfxFile.pfx -srcstoretype PKCS12 -destkeystore myKeyStore.jks -deststoretype JKS

diyerek JKS tipinde bir keystore oluştururuz. Bu sırada PFX dosyasını açabilmek için şifresini soruyor ve sizden yeni keystore'unuz için parola belirlemenizi istiyor. JKS dosyanızı oluşturduktan sonra

keytool -list -v -keystore myKeyStore.jks

diyerek keystore'un içindeki anahtarları görebiliyorsunuz. Burdan hangi anahtarı istiyorsanız onun alias'ını not edin. İmza atarken onu kullanacağız.

jarsigner -keystore myKeyStore.jks -storepass myStorePass myJarFile.jar myAlias

diyerek imzalamayı gerçekleştiriyoruz. İmzalanınca JAR'ın içinde .SF ve .DSA veya .RSA (imzacınızın algoritmasına göre) iki dosya oluşuyor. Oradan kontrol edebilirsiniz. İmza mevcut JAR dosyasının üzerine yazıyor. Bu arada JAR'ları sıkıştırma programları vasıtası ile açıp içine bakabilirsiniz. Tavsiyem 7zip. Keytool v jarsigner JDK ile geliyor. Bunu da hatırlatmakta fayda var.