28 Ağustos 2012 Salı

Eclipse IDE Performans Arttırma Önerileri

Eclipse IDE kullanırken yaşadığım performans problemleri, Eclipse IDE nin aşırı derecede yavaş çalışması ve sık sık donması beni bu konuda araştırma yapmaya itti. Yaptığım araştırmalar sonucu bir sürü faydalı yöntem öğrendim. Türkçe bu konuda internette herhangi kaynağa rastlamadığımdan bu yazıyı yazmaya karar verdim.   Uygulamanızı tavsiye ettiğim yöntemleri maddeler halinde açıklayacağım.
  • Herşeyden önce dikkat etmeniz gereken en önemli şey Eclipse ve JDK'nın son sürümlerini kullanmak.
  • Bilgisayarınızda Eclipse dosyalarının içerisinde bulunan eclipse.ini isimli dosyayı açarak burada Eclipse için ayrılmış olan bellek boyutlarıyla ilgili ayarları değiştirebilirsiniz. Benim bilgisayarımdaki dosya aşağıdaki şekildedir. Burada -Xmx değeri önemlidir. Makinenizin RAM değeri ne kadar yüksekse bu değeri o kadar arttırabilirsiniz. Benim makinemin Ram değeri 2GB ben 512m olarak ayarladım bu değeri sizin makinenizin RAM değeri 4GB ise ve Eclipse'in çok rahat çalışmasını istiyorsanız bu değeri 1024 olarak ayarlayabilirsiniz. Sizin makinenizin RAM değerini tam olarak bilemediğimden kesin rakamlar vermem mümkün değil o yüzden bunları internetten araştırmanızı tavsiye ediyorum. Bu link bu konuda size yardımcı olabilir: http://stackoverflow.com/questions/477871/eclipse-ini-configuration Ayrıca eclipse.ini dosyasına -Xverify:none satırını ekleyerek bu VM ye yüklediği tüm dosyaların .class olanlarının doğrulama işlemini yapmamasını söyler. Bu Eclipse'in açılmasını hızlandırır. Bunun dışında XXMaxPermSize bellek miktarını arttırmayı da ihmal etmeyin. eclipse.ini
  • Eclipse de Window-Preferences-Validation izleyerek doğrulamayla ilgili ayarları değiştirebilirsiniz. Aşağıdaki resimde karşınıza çıkacak ekran görünmektedir. Buradan Manuel kısmında işinize yaramayan validation türlerinin karşısındaki tikleri kaldırabilirsiniz. Eclipse Performance
  • Kullanmadığınız projeleri kapatmak performansda artış sağlayacaktır. Ayrıca server'a deploy edilmiş kullanılmayan projeleri de serverden silmeniz gerekir. Eclipse performans
  • Windows -> Preferences; General -> Appearance -> Label Decorations yolunu izleyerek gereksiz decoration'ları kaldırmanız Eclipse performansını aktarmanıza katkıda bulunabilir. Windows -> Preferences; General -> Appearance -> Label Decorations
  • Eclipse IDE'nizin açılış performansını arttıracak en önemli ayarlardan birisi de Windows -> Preferences; General -> Startup and Shutdown yolunu izleyerek açılış ve kapanış ayarlarını değiştirmeniz olacaktır. Burada açılış zamanı aktif olmasını istemediğiniz pluginlerin önündeki tiki kaldırın. Özellikle Subeclipse çok fazla yavaşlatıyor Eclipse'i onu kesinlikle deaktif etmenizi tavsiye ediyorum. Windows -> Preferences; General -> Startup and Shutdown
  • Windows-->Preference-->General-->Editors-->Text Editors-->Spelling yolunu izleyerek spelling ayarını deaktif etmeniz gerekmektedir. Bu performans açısından çok faydalı olacaktır. Sonuçta Eclipse bir text editörü değil ve kelimelerin doğruluğunun kontrol edilmesi çok da önemli değil.  Eclipse Performans ipuçlar
Kaynaklar : http://stackoverflow.com/questions/316265/tricks-to-speed-up-eclipse http://www.pakkatechies.com/2011/07/making-eclipse-ide-faster.html http://developersland.net/index.php/java/111-eclipse-ide-hizlandirmak-icin-performans-onerileri.html
Devamı için : Eclipse IDE Performans Arttırma Önerileri

Eclipse IDE Performans arttırma önerileri

Eclipse IDE kullanırken yaşadığım performans problemleri, Eclipse IDE nin aşırı derecede yavaş çalışması ve sık sık donması beni bu konuda araştırma yapmaya itti. Yaptığım araştırmalar sonucu bir sürü faydalı yöntem öğrendim. Türkçe bu konuda internette herhangi kaynağa rastlamadığımdan bu yazıyı yazmaya karar verdim.   Uygulamanızı tavsiye ettiğim yöntemleri maddeler halinde açıklayacağım.
  • Herşeyden önce dikkat etmeniz gereken en önemli şey Eclipse ve JDK'nın son sürümlerini kullanmak.
  • Bilgisayarınızda Eclipse dosyalarının içerisinde bulunan eclipse.ini isimli dosyayı açarak burada Eclipse için ayrılmış olan bellek boyutlarıyla ilgili ayarları değiştirebilirsiniz. Benim bilgisayarımdaki dosya aşağıdaki şekildedir. Burada -Xmx değeri önemlidir. Makinenizin RAM değeri ne kadar yüksekse bu değeri o kadar arttırabilirsiniz. Benim makinemin Ram değeri 2GB ben 512m olarak ayarladım bu değeri sizin makinenizin RAM değeri 4GB ise ve Eclipse'in çok rahat çalışmasını istiyorsanız bu değeri 1024 olarak ayarlayabilirsiniz. Sizin makinenizin RAM değerini tam olarak bilemediğimden kesin rakamlar vermem mümkün değil o yüzden bunları internetten araştırmanızı tavsiye ediyorum. Bu link bu konuda size yardımcı olabilir: http://stackoverflow.com/questions/477871/eclipse-ini-configuration Ayrıca eclipse.ini dosyasına -Xverify:none satırını ekleyerek bu VM ye yüklediği tüm dosyaların .class olanlarının doğrulama işlemini yapmamasını söyler. Bu Eclipse'in açılmasını hızlandırır. Bunun dışında XXMaxPermSize bellek miktarını arttırmayı da ihmal etmeyin. eclipse.ini
  • Eclipse de Window-Preferences-Validation izleyerek doğrulamayla ilgili ayarları değiştirebilirsiniz. Aşağıdaki resimde karşınıza çıkacak ekran görünmektedir. Buradan Manuel kısmında işinize yaramayan validation türlerinin karşısındaki tikleri kaldırabilirsiniz. Eclipse Performance
  • Kullanmadığınız projeleri kapatmak performansda artış sağlayacaktır. Ayrıca server'a deploy edilmiş kullanılmayan projeleri de serverden silmeniz gerekir. Eclipse performans
  • Windows -> Preferences; General -> Appearance -> Label Decorations yolunu izleyerek gereksiz decoration'ları kaldırmanız Eclipse performansını aktarmanıza katkıda bulunabilir. Windows -> Preferences; General -> Appearance -> Label Decorations
  • Eclipse IDE'nizin açılış performansını arttıracak en önemli ayarlardan birisi de Windows -> Preferences; General -> Startup and Shutdown yolunu izleyerek açılış ve kapanış ayarlarını değiştirmeniz olacaktır. Burada açılış zamanı aktif olmasını istemediğiniz pluginlerin önündeki tiki kaldırın. Özellikle Subeclipse çok fazla yavaşlatıyor Eclipse'i onu kesinlikle deaktif etmenizi tavsiye ediyorum. Windows -> Preferences; General -> Startup and Shutdown
  • Windows-->Preference-->General-->Editors-->Text Editors-->Spelling yolunu izleyerek spelling ayarını deaktif etmeniz gerekmektedir. Bu performans açısından çok faydalı olacaktır. Sonuçta Eclipse bir text editörü değil ve kelimelerin doğruluğunun kontrol edilmesi çok da önemli değil.  Eclipse Performans ipuçlar
Kaynaklar : http://stackoverflow.com/questions/316265/tricks-to-speed-up-eclipse http://www.pakkatechies.com/2011/07/making-eclipse-ide-faster.html http://developersland.net/index.php/java/111-eclipse-ide-hizlandirmak-icin-performans-onerileri.html
Devamı için : Eclipse IDE Performans arttırma önerileri

27 Ağustos 2012 Pazartesi

PHP Web Service

Merhaba, Size PHP ile web service (SOAP) hizmetinden bahsedeceğim. Web service bir haberleşme standardıdır. Standart bir yapı olması nedeniyle projelerinizde kullanmış olduğunuz yazılım dillerinden bağımsız olarak düşünmeniz gerekecektir. Projeler aynı dille yazılmış olmaksızın veri alışverişi sağlayabilirsiniz. Kapsamlı projelerde ihtiyaç olarak doğan veri alışverişini sağlayabileceğiniz güzel bir altyapıyı PHP ile örnekleyerek anlatmaya çalışacağım. Sözü fazla uzatmadan örneklemelerime başlamak istiyorum. Aşağıdaki iki sayfayı çalışma ortamınızda oluşturmanızı isteyeceğim.
  1. server.php
  2. client.php
Server.php web service bağlantısı açarken, client.php bu hizmetten yararlanarak veri transferini gerçekleştirecektir. Ben local çalışma ortamıma www.project.mil hayali domain ile bağlandığım için örnekte de bu adresi verdim. Siz kendi çalışma ortamınıza göre düzenlemeler yapabilirsiniz.
<?php  class MyWebService{    const STATIC_EXAMPLE_MESSAGE = "hello web service";    public function getMessage(){  return self::STATIC_EXAMPLE_MESSAGE;  }  }    $server = new SoapServer(null,array("uri" => "http://www.project.mil/server.php"));  $server->setClass("MyWebService");  $server->handle();  ?>
Yukarıda ki örnekte MyWebService isimli class'ı web service de kullanılacak olan class olarak atadım. Yani client olarak bağlanan kullanıcılar "public" özelliğe sahip tüm methodları çağırabilirler. Bu arada web service altyapısı için illaki class kullanmak zorunda değilsiniz. Ancak ben class kullanmayı tercih ettim. Hizmete erişilecek olan adresi uri parametresi ile belirliyoruz ve class ismini atıyoruz. Bkz : http://php.net/soapserver Yukarıda ki aşamaları tamamladıysak artık dışarıdan gelen misafirleri karşılayabilir ve veri alışverişi sağlayabiliriz.
<?php  $options = array(  "uri" => "http://www.project.mil",  "location" => "http://www.project.mil/server.php"  );  $client = new SoapClient(null, $options);  $result = $client->getMessage();  echo $result;  ?>
Yukarıda ki örnekte az evvel oluşturduğumuz web service hizmetine bağlandık ve getMessage methoduna bağlanarak oradan dönen sonucu ekrana yazdırdık. Kodu çalıştırdığınızda ekrana "hello web service" yazdığını göreceksiniz. Görüldüğü üzere basit bir web service bağlantısı oluşturmuş olduk. Çeşitli hata ayıklama işlemleri, güvenlik işlemleri v.s. gibi çalışmalarla güçlendirerek projelerimizde ki veri alışverişi ihtiyacını gidermiş olabiliriz. Umarım faydalı olmuştur. Devamı için : PHP Web Service

25 Ağustos 2012 Cumartesi

PHP interface

Merhaba, Bugün PHP interface yapısından bahsetmek istiyorum. Bilindiği üzere interface Türkçe "arayüz" anlamına gelmektedir. Ancak burada görsel birşeyler düşünmeyelim. Yapı yani modelleme arayüzü olarak düşünebiliriz. Birden fazla adaptorü olacak bir yapımızın olduğunu düşünelim. Örnek vermek gerekirse bir veritabanı altyapısı hazırlıyorsunuz ve mysql,oracle gibi birden fazla adaptorünüz var. Bu adaptorlerde ki yapıların birbiri ile aynı olmasını istiyorsak burada interface devreye girecek. Bir proje de birden fazla geliştiricinin olması gibi durumlarda standart bir yapının korunmasını sağlamış olacağız. Yapı dışında birşey yapılmak istenirse hata alınacaktır. Yapıda ki genel kuram bu şekilde. Şimdi kodlarla açıklamaya çalışacağım.
< ?php  interface database{
   public function setData($data);
   public function getData($key);
}  ?>
Yukarıda ki örnekte "database" isimli bir interface oluşturduk ve bu interface  kullanan tüm class larda "setData" ve "getData" methodlarının olmasının şart olduğunu söylemiş olduk. Burada methodlar süslü parantez açılarak tanımlanmaz. Sadece method ismi yazılır ve kapatılır. Yine en önemli özelliklerinden biri de methodlara gönderilecek parametreleri dahi burada belirleyebiliyor olmamız. Eğer class içinde eksik parametre tanımlarsak hata vererek bizi bu yapıya uygun kod yazdırmaya zorlayacaktır.
< ?php
class mysql implements database{
    public function setData($data){
       // ilgili işlemler burada yapılır.
    }
    public function getData($key){
       // ilgili işlemler burada yapılır.
    }
    public function example1(){
       // başka methodlara ihtiyaç duyuyorsak ekleyebiliriz.
    }
}
class oracle implements database{
    public function setData($data){
       // ilgili işlemler burada yapılır.
    }
    public function getData($key){
       // ilgili işlemler burada yapılır.
    }
    public function example2(){
       // başka methodlara ihtiyaç duyuyorsak ekleyebiliriz.
    }
}
?>
Yukarıda ki örnekte oluşturduğum mysql ve oracle classlarının interface olarak "database" arayüzünü kullanmasını sağladım. Hata almamak için interface içinde belirtilen methodları tanımladım ve tüm classlarım standart bir yapıya kavuşmuş oldu. Yine örnekte görüldüğü üzere interface kullanmak için "implements" yazdıktan sonra interface adını yazmamız gerekiyor. Umarım faydalı olmuştur. Geliştirerek kendi projelerinizde de kullanabilirsiniz. Devamı için : PHP interface

PHP interface

Merhaba, Bugün PHP interface yapısından bahsetmek istiyorum. Bilindiği üzere interface Türkçe "arayüz" anlamına gelmektedir. Ancak burada görsel birşeyler düşünmeyelim. Yapı yani modelleme arayüzü olarak düşünebiliriz. Birden fazla adaptorü olacak bir yapımızın olduğunu düşünelim. Örnek vermek gerekirse bir veritabanı altyapısı hazırlıyorsunuz ve mysql,oracle gibi birden fazla adaptorünüz var. Bu adaptorlerde ki yapıların birbiri ile aynı olmasını istiyorsak burada interface devreye girecek. Bir proje de birden fazla geliştiricinin olması gibi durumlarda standart bir yapının korunmasını sağlamış olacağız. Yapı dışında birşey yapılmak istenirse hata alınacaktır. Yapıda ki genel kuram bu şekilde. Şimdi kodlarla açıklamaya çalışacağım.
< ?php  interface database{
   public function setData($data);
   public function getData($key);
}  ?>
Yukarıda ki örnekte "database" isimli bir interface oluşturduk ve bu interface  kullanan tüm class larda "setData" ve "getData" methodlarının olmasının şart olduğunu söylemiş olduk. Burada methodlar süslü parantez açılarak tanımlanmaz. Sadece method ismi yazılır ve kapatılır. Yine en önemli özelliklerinden biri de methodlara gönderilecek parametreleri dahi burada belirleyebiliyor olmamız. Eğer class içinde eksik parametre tanımlarsak hata vererek bizi bu yapıya uygun kod yazdırmaya zorlayacaktır.
< ?php
class mysql implements database{
    public function setData($data){
       // ilgili işlemler burada yapılır.
    }
    public function getData($key){
       // ilgili işlemler burada yapılır.
    }
    public function example1(){
       // standart methodlar dışında başka methodlara ihtiyaç duyuyorsak buraya ekleyebiliriz.
    }
}
class oracle implements database{
    public function setData($data){
       // ilgili işlemler burada yapılır.
    }
    public function getData($key){
       // ilgili işlemler burada yapılır.
    }
    public function example2(){
       // standart methodlar dışında başka methodlara ihtiyaç duyuyorsak buraya ekleyebiliriz.
    }
}
?>
Yukarıda ki örnekte oluşturduğum mysql ve oracle classlarının interface olarak "database" arayüzünü kullanmasını sağladım. Hata almamak için interface içinde belirtilen methodları tanımladım ve tüm classlarım standart bir yapıya kavuşmuş oldu. Yine örnekte görüldüğü üzere interface kullanmak için "implements" yazdıktan sonra interface adını yazmamız gerekiyor. Umarım faydalı olmuştur. Geliştirerek kendi projelerinizde de kullanabilirsiniz. Devamı için : PHP interface

PHP interface

Merhaba, Bugün PHP interface yapısından bahsetmek istiyorum. Bilindiği üzere interface Türkçe "arayüz" anlamına gelmektedir. Ancak burada görsel birşeyler düşünmeyelim. Yapı yani modelleme arayüzü olarak düşünebiliriz. Birden fazla adaptorü olacak bir yapımızın olduğunu düşünelim. Örnek vermek gerekirse bir veritabanı altyapısı hazırlıyorsunuz ve mysql,oracle gibi birden fazla adaptorünüz var. Bu adaptorlerde ki yapıların birbiri ile aynı olmasını istiyorsak burada interface devreye girecek. Bir proje de birden fazla geliştiricinin olması gibi durumlarda standart bir yapının korunmasını sağlamış olacağız. Yapı dışında birşey yapılmak istenirse hata alınacaktır. Yapıda ki genel kuram bu şekilde. Şimdi kodlarla açıklamaya çalışacağım.
< ?php  interface database{
   public function setData($data);
   public function getData($key);
}  ?>
Yukarıda ki örnekte "database" isimli bir interface oluşturduk ve bu interface  kullanan tüm class larda "setData" ve "getData" methodlarının olmasının şart olduğunu söylemiş olduk. Burada methodlar süslü parantez açılarak tanımlanmaz. Sadece method ismi yazılır ve kapatılır. Yine en önemli özelliklerinden biri de methodlara gönderilecek parametreleri dahi burada belirleyebiliyor olmamız. Eğer class içinde eksik parametre tanımlarsak hata vererek bizi bu yapıya uygun kod yazdırmaya zorlayacaktır.
< ?php
class mysql implements database{
    public function setData($data){
       // ilgili işlemler burada yapılır.
    }
    public function getData($key){
       // ilgili işlemler burada yapılır.
    }
    public function example1(){
       // standart methodlar dışında başka methodlara ihtiyaç duyuyorsak buraya ekleyebiliriz.
    }
}
class oracle implements database{
    public function setData($data){
       // ilgili işlemler burada yapılır.
    }
    public function getData($key){
       // ilgili işlemler burada yapılır.
    }
    public function example2(){
       // standart methodlar dışında başka methodlara ihtiyaç duyuyorsak buraya ekleyebiliriz.
    }
}
?>
Yukarıda ki örnekte oluşturduğum mysql ve oracle classlarının interface olarak "database" arayüzünü kullanmasını sağladım. Hata almamak için interface içinde belirtilen methodları tanımladım ve tüm classlarım standart bir yapıya kavuşmuş oldu. Yine örnekte görüldüğü üzere interface kullanmak için "implements" yazdıktan sonra interface adını yazmamız gerekiyor. Umarım faydalı olmuştur. Geliştirerek kendi projelerinizde de kullanabilirsiniz. Devamı için : PHP interface

PHP interface

Merhaba, Bugün PHP interface yapısından bahsetmek istiyorum. Bilindiği üzere interface Türkçe "arayüz" anlamına gelmektedir. Ancak burada görsel birşeyler düşünmeyelim. Yapı yani modelleme arayüzü olarak düşünebiliriz. Birden fazla adaptorü olacak bir yapımızın olduğunu düşünelim. Örnek vermek gerekirse bir veritabanı altyapısı hazırlıyorsunuz ve mysql,oracle gibi birden fazla adaptorünüz var. Bu adaptorlerde ki yapıların birbiri ile aynı olmasını istiyorsak burada interface devreye girecek. Bir proje de birden fazla geliştiricinin olması gibi durumlarda standart bir yapının korunmasını sağlamış olacağız. Yapı dışında birşey yapılmak istenirse hata alınacaktır. Yapıda ki genel kuram bu şekilde. Şimdi kodlarla açıklamaya çalışacağım.
< ?php  interface database{
   public function setData($data);
   public function getData($key);
}  ?>
Yukarıda ki örnekte "database" isimli bir interface oluşturduk ve bu interface  kullanan tüm class larda "setData" ve "getData" methodlarının olmasının şart olduğunu söylemiş olduk. Burada methodlar süslü parantez açılarak tanımlanmaz. Sadece method ismi yazılır ve kapatılır. Yine en önemli özelliklerinden biri de methodlara gönderilecek parametreleri dahi burada belirleyebiliyor olmamız. Eğer class içinde eksik parametre tanımlarsak hata vererek bizi bu yapıya uygun kod yazdırmaya zorlayacaktır.
< ?php
class mysql implements database{
    public function setData($data){
       // ilgili işlemler burada yapılır.
    }
    public function getData($key){
       // ilgili işlemler burada yapılır.
    }
    public function example1(){
       // standart methodlar dışında başka methodlara ihtiyaç duyuyorsak buraya ekleyebiliriz.
    }
}
class oracle implements database{
    public function setData($data){
       // ilgili işlemler burada yapılır.
    }
    public function getData($key){
       // ilgili işlemler burada yapılır.
    }
    public function example2(){
       // standart methodlar dışında başka methodlara ihtiyaç duyuyorsak buraya ekleyebiliriz.
    }
}
?>
Yukarıda ki örnekte oluşturduğum mysql ve oracle classlarının interface olarak "database" arayüzünü kullanmasını sağladım. Hata almamak için interface içinde belirtilen methodları tanımladım ve tüm classlarım standart bir yapıya kavuşmuş oldu. Yine örnekte görüldüğü üzere interface kullanmak için "implements" yazdıktan sonra interface adını yazmamız gerekiyor. Umarım faydalı olmuştur. Geliştirerek kendi projelerinizde de kullanabilirsiniz. Devamı için : PHP interface