27 Mart 2014 Perşembe

Git Repositoryden proje çekerken ssl hatası

Remote git repositoryden proje clone ederken ssl ile ilgili hata karşınıza çıkarsa git configuration da http.sslVerify property sini false olarak set ettiğinizde sorun düzelecektir. Eclipse plugin içinde de aşağıdaki şekilde configürasyonu yapabiliriz :


25 Mart 2014 Salı

Eclipse de Satır Sayısını Göstermek

Eclipse içinde satır sayısını görmek çok işinize yarayabilir. Default olarak gösterilmeyen satır sayısıın göstermek için : Window -> Preferences -> General -> Editors -> Text Editors yolu izlenerek Show line numbers checkboxını işaretlediğinizde istediğimiz olacaktır.



6 Mart 2014 Perşembe

Hibernate "dynamic-update" Niteliği

Hibernate kullanıyorsanız  "dynamic-update" default olarak false set edilmiş durumdadır. Peki "dynamic- update" nedir?
Hibernate, pojolar üzerinde yapılan değişikler sırasında, otomatik olarak update sql cümleleri üretir. Eğer dynamic-update = "false" ise gereksiz yere değişiklik yapmadığınız kolonlar için de set etme işlemi gerçekleştirir. Örneğin : dynamic-update  = false olarak set edildiğinde ve pojo üzerinde sadece aktif alanını değiştirmek istesek bile bütün alanlar için set işlemi uygulanmaktadır.

UPDATE PERSONEL set AKTIF=?, UNVANKOD=?, IBAN=?, ILDUR=?, RAPOR=?, TAHDUR=?, TIP=?, MANAGERID=? where TCKN=? and BIRIMID=?

"dynamic-update" default olarak false set edilmiştir.

dynamic-update = true olarak set edildiğinde ise aşağıdaki sql üretilmektedir :

UPDATE PERSONEL set AKTIF=? where TCKN=? and BIRIMID=?


Fazla kolon sayısına sahip tablolar üzerinde yapılan değişiklikleri düşündüğümüzde ,"dynamic-update = true" olarak set edilmesi sistem için ciddi performans kazancı sağlamaktadır.

* Annotation kullanarak aşağıdaki gibi set etme işlemi gerçekleştirilebilir:

@Entity

@Table(name = "personel", catalog = "kurum")

@org.hibernate.annotations.Entity(dynamicUpdate = true)

public class Personel implements Serializable{
.
.
}

* xml kullanarak aşağıdaki gibi set etme işlemi gerçekleştirilir:
 dynamic-update="true" name="...Personel" table="PERSONEL" catalog = "kurum"

1 Mart 2014 Cumartesi

NullPointer Exception Hatasını Olabildiğince Azaltmak İçin...

 * Equals() ve EqualsIgnoreCase() metodlarını, değerlerini kesin olarak bildiğimiz değişkenler üzerinde kullanırsak hata almaktan kaçınmış oluruz. Aşağıdaki kod parçasında customer nesnesinin database tarafından doldurulduğunu düşündüğümüzde, nesnesnenin içeriği oluşturulamamış olabilir ve runtime da hataya düşmemiz kaçınılmaz olur.
Customer customer = new Customer();
  
String  str = "Ali";
if(customer.getAdi().equals(str))
//Yapılacak işler...
Buna benzer kodlarımızı aşağıdaki şekilde değiştirmemiz gerekmektedir.
if(str.equals(customer.getAdi()))
//Yapılacak işler...
* toString() metodu yerine valueOf() metodunu tercih etmeliyiz.
Customer customer = new Customer();
  
System.out.println(customer.getOdul().toString());
//Olması gereken : System.out.println(String.valueOf(customer.getOdul()));
valueOf() metodu null olarak geri dönüş yapar.

* List, Map ve Set gibi interfacelerden türemiş sınıflar için kullanacağımız bazı fonksiyonlar için, bu nesneleri hiçbir zaman null olarak initialize etmemeliyiz. Bunun yerine Collections sınıfının EMPTY_LIST, EMPTY_MAP ve EMPTY_SET değerleri ile initialize etmeliyiz. Bunlarda boş birer static class dönerler. Böylelikle Collections sınıfı üzerinde kullanacağımız methodlar için NullPointer Exception hatası almayız.
List result = Collections.EMPTY_LIST;
return result;
Yukarıdaki listeyi databaseden doldurduğumuzu düşünürsek ve geri dönüş olmassa size() methodu için 0 değeri döner ve NullPointer Exception hatasını almayız.

28 Şubat 2014 Cuma

Result set exceeds the maximum size (100 MB)

PL/SQL Developer kullanarak sorgu çalıştırdığımda aşağıdaki hatayı aldım.



 Eğer bu hatayı siz de alıyorasnız, çözümü için : PL/SQL Developer da toolbar kısmında Edit->PL/SQL Beautifier Options... tıkladığınızda açılan ekranda, Window Types->SQLWindow u seçtiğinizde, açılan kısımda Maximum result set size kısmına 0 değerini verdiğinizde sorun düzelecektir.

21 Mayıs 2012 Pazartesi

Web Sayfamın İndexlenmesini İstemiyorum !!!

Uygulamanızı yazdınız ve genel sunuma açtınız. Fakat uygulamanızın arama motorları tarafından indexlenmesini şuanda istemiyorsunuz. Belli bir dizinin veya belli bir sayfanın da indexlenmesini engelleme gibi seçenekleriniz olabilmeli ise /robots.txt dosyası ve tagleri ile sorunu çözebilirsiniz.

/robots.txt dosyası nedir?
Örümcek yazılımlarının uygulamanıza geldiğinde ilk uğrayacağı yerdir. Ve buradaki sizin belirttiğiniz kurallara göre belirli dizinlerde indexleme yapmazlar.Örneğin:

User-agent: *
Disallow: /

içeriği herhangi bir robotun bizim tüm uygulamamızı indexlemesini engellemek için,


User-agent: *
Disallow: /admin/

içeriği ise herhangi bir robotun admin dizinini indexlemesini engellemek için kullanılabilir.

Bilmemiz gerekenler:


  • /robots.txt dosyası zararlı örümcekler tarafından gözardı edilebilir.
  • /robots.txt dosyasına herkes erişebilir. Ve nerelerin indexlenmesini engellediğinizi herkes görebilir. Örneğin: www.facebook.com/robots.txt


/robots.txt dosyası benim için genel, ben belirli sayfalar için engelleme yapmak istiyorum. Kullanıcımın özellik ayarlarında arama motorları tarafından indexleme engeli ayarı koymak istiyorum, ne yapmalıyım ?

İstediğiniz sayfanın içeriğine aşağıdaki meta tagi eklerseniz sorununuz çözülmüş olacaktır.




ASP.NET MVC Html.DropDownList ile Selected Value gözükmüyor!!!

Eğer Html.DropDownList kullanıyorsanız ve name değeri ile model kısmında DropDown için gönderdiğiniz özelliğin değeri aynı ise DropDown da Selected Value kısmı çalışmayacaktır. Bunun sebebi ise ASP.NET MVC önce dropdown ve modelin özelliğin aynı isimde olup olmadığını karşılaştırması ve aynı ise selected value kısmını ezmesidir.


var productCodes = new List();

productCodes  içeriğini doldurup aşağıdaki DropDown a gönderdiğimizde doldurduğumuz sırada SelectListItem'ın seçtiğimiz kısımdaki Selected özelliği çalışmayacaktır.


@Html.DropDownList("productCodes", Model.productCodes)

Bir problem olarak kabul edilir veya edilmez fakat,burada selected value kısmının düzgün çalışabilmesi için name değerlerinin farklı olması gerekmektedir.