- 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 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.
- Kullanmadığınız projeleri kapatmak performansda artış sağlayacaktır. Ayrıca server'a deploy edilmiş kullanılmayan projeleri de serverden silmeniz gerekir.
- Windows -> Preferences; General -> Appearance -> Label Decorations yolunu izleyerek gereksiz decoration'ları kaldırmanız Eclipse performansını aktarmanıza katkıda bulunabilir.
- 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-->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.
28 Ağustos 2012 Salı
Eclipse IDE Performans Arttırma Önerileri
Eclipse IDE Performans arttırma önerileri
- 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 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.
- Kullanmadığınız projeleri kapatmak performansda artış sağlayacaktır. Ayrıca server'a deploy edilmiş kullanılmayan projeleri de serverden silmeniz gerekir.
- Windows -> Preferences; General -> Appearance -> Label Decorations yolunu izleyerek gereksiz decoration'ları kaldırmanız Eclipse performansını aktarmanıza katkıda bulunabilir.
- 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-->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.
27 Ağustos 2012 Pazartesi
PHP Web Service
- server.php
- client.php
<?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
< ?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
< ?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
< ?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
< ?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
24 Ağustos 2012 Cuma
child pid ... exit signal Segmentation fault (11) - cpanel - centos
class X{ function load(){ //...bişeyler bişeyler... $this->load(); } }Nitekim, koddan bu tarz bir döngü oluşturabilecek durumun önüne geçtim, ve hata düzeldi. Devamı için : child pid ... exit signal Segmentation fault (11) - cpanel - centos
23 Ağustos 2012 Perşembe
mysql insert delayed
Delayed_insert_threads | : | gelen INSERT DELAYED sayısı |
Delayed_writes | : | INSERT DELAYED ile yazılmış satır sayısı |
Not_flushed_delayed_rows | : | Yazılmak için bekletilen satır sayısı |
TEB - sikayet - 444 0 666
19 Ağustos 2012 Pazar
aptana studio php otomatik tamamlama (aptana studio php autocomplete)
ubuntu 12.04 aptana studio kurulumu
sudo apt-get install openjdk-7-jdk libjpeg62 libwebkitgtk-1.0-0 git-coreAptana, resmi olarak OpenJDK desteklemiyor, o yüzden alternatif olarak SunJDK kullanabilirsiniz. O da şu şekilde;
sudo apt-get install libjpeg62 libwebkitgtk-1.0-0 git-core sudo add-apt-repository ppa:webupd8team/java sudo apt-get update sudo apt-get install oracle-java7-installerAraştırdığımda okuduklarım arasında en çok dikkat edilmesi gereken şeyin libjpeg62 olduğu söyleniyor, buraya kadar olan kurulumda libjpeg62 ile ilgili bir hata almamış olmanız gerekmekte. Şimdi sıra geldi Aptana Studio'yu download etmeye. Onu da buradaki adresten yapıyoruz. Download tamamlandıktan sonra bu kod ile extract ediyoruz.
sudo unzip [indirdiğiniz AptanaStudio dosyası].zip -d /optHerşey tamamlandı, şimdi de ana menüye bir kısayol ekliyoruz, onu da şu şekilde yapıyoruz;
wget http://www.samclarke.com/wp-content/uploads/2012/04/AptanaStudio3.desktop sudo mv AptanaStudio3.desktop /usr/share/applications/AptanaStudio3.desktopDevamı için : ubuntu 12.04 aptana studio kurulumu
18 Ağustos 2012 Cumartesi
php debug_backtrace fonksiyonu
dubug_backtrace
PHP'de debug_backtrace() fonksiyonu, çalıştırıldığı yere kadar çalışan tüm metodları, bunların argümanlarını kullanılan nesneleri classları, çalışan dosyanın tam yolunu vs bilgileri bize array olarak veren bir metoddur. Adı üzerinde, backtrace'leri debug ediyor :) Örnek olarak hazırladığım 2 adet php sayfası var. Bunlardan biri default.php diğeri start.php. Biraz karmaşık gibi görünebilir, debug_backtrace fonksiyonunun ne işe yaradığını gösterebilmek için tünel kazarak fonkisyondan nesne yaratıp metodlara gittim start.php içeriği şöyle;< ?php require_once 'default.php'; start("dubluve", "dubluve.net"); function start($param1, $param2){ $default = new DefaultClass($param1); $default->deneme(); } ?>Burada default.php sayfasını require_once ile aldık, daha sanra start(); fonksiyonunu çalıştırdık. start(); fonksiyonu içerisinde ise DefualtClass için bir nesne yarattık, ardından da deneme(); metodunu çalıştırdık. default.php içeriği şöyle;
< ?php class DefaultClass{ protected $_var = "a"; private $_var2 = "b"; public $value = "c"; public function __construct($param){ } public function deneme(){ $this->_defaultDebug($this->_var); } protected function _defaultDebug(){ $result = debug_backtrace(); print_r($result); } } ?>Burada da DefaultClass clasımız var. Bu class için nesne yarattığımızda çalışan __construct metodu 1 adet parametre alıyor. Ardından çalıştırdığımız deneme(); metodu ise protected olan _defaultDebug(); metodunu çağırıyor. Burada da dubug_backtrace yapıyoruz. Ayrıca DefaultClass classında 3 adet property var. Şimdi bakalım bunun sonucuna;
Array ( [0] => Array ( [file] => A:\deneme\default.php [line] => 13 [function] => _defaultDebug [class] => DefaultClass [object] => DefaultClass Object ( [_var:protected] => a [_var2:DefaultClass:private] => b [value] => c ) [type] => -> [args] => Array ( [0] => a ) ) [1] => Array ( [file] => A:\deneme\start.php [line] => 8 [function] => deneme [class] => DefaultClass [object] => DefaultClass Object ( [_var:protected] => a [_var2:DefaultClass:private] => b [value] => c ) [type] => -> [args] => Array ( ) ) [2] => Array ( [file] => A:\deneme\start.php [line] => 4 [function] => start [args] => Array ( [0] => dubluve [1] => dubluve.net ) ) )Sonuç olarak dönen array içinde 3 adet array var, gelin bunları tek tek inceleyelim.
- İlk arrayimiz, dubug_backtrace(); metodun içinde olduğu _defaultDebug metodunun çağırıldığı yer. yani deneme(); metodunun içerisi. [file] parametresinde bu metodu çağıran yerin tam yolu, [line] parametresinde ise o dosyada kaçıncı satırda çağırıldığı bilgisi var. [function] parametresinde de çağırılan metod var. Bu metodun içerisinde bulunduğu class [class] parametresinin içerisinde. [object] parametresi içerisinde de, nesnemiz ve bunun içerisindeki propertyler yer almakta. [arg] içerisinde de argümanlar mevcut.
- İkinci arrayimizde ise, ilk arrayde çalışan metodun çağırıldığı yer var. yani deneme(); metodunun çağırıldığı yer. Biz deneme metodunu, start.php içerisinde bir nesne yaratarak çağırmıştık, diğer argümanlara baktığımızda bunu da görebiliyoruz.
- Son arrayimizde ise start.php içerisinde çağırdığımız start(); fonksiyonu yer almakta, çünkü biz ilk oalrak bunu çağırdık. Burada argümanlarını da açıkca görebiliyoruz.
debug_print_backtrace
debug_print_backtrace(); fonksyionu da debug_backtrace ile hemen hemen aynı işi yapmakta. Farkları, debug_backtrace kadar fazla detay vermemesi, ve geriye hiç birşey döndürmemesi. Geriye hiç birşey return etmiyor, sonucu direk ekrana basıyor. Şöyle ki, yukarıda verdiğim örnekteki _defaultDebug(); metodu böyleyken;protected function _defaultDebug(){ $result = debug_backtrace(); print_r($result); }şu hale getirirseniz;
protected function _defaultDebug(){ debug_print_backtrace(); }debug_print_backtrace metodunun verdiği sonucu da görmüş olursunuz. Verdiğim örnekte aşağıdaki sonucu aldım;
#0 DefaultClass->_defaultDebug() called at [A:\deneme\default.php:13] #1 DefaultClass->deneme() called at [A:\deneme\start.php:8] #2 start(dubluve, dubluve.net) called at [A:\deneme\start.php:4]Görüldüğü üzere çalışan metodları ve nereden çağırıldıklarını listelemekte. Devamı için : php debug_backtrace fonksiyonu
windows tracert komutu (tracert command)
1 96 ms 101 ms 101 ms 192.168.1.1 2 * 196 ms 101 ms 85.102.64.1.dynamic.ttnet.com.tr [85.102.64.1] 3 235 ms 91 ms 101 ms 81.212.77.253.static.turktelekom.com.tr [81.212.77.253] 4 225 ms 101 ms 102 ms prtkl-4-1-bhclvlr-3-1.turktelekom.com.tr [212.156.118.22] 5 226 ms 27 ms 25 ms byrmpsa-3-1-fth-2-1.turktelekom.com.tr [212.156.107.82] 6 46 ms 50 ms 51 ms 212.156.131.166.static.turktelekom.com.tr [212.156.131.166]tracert komutunun bir kaç parametresi de vardır, en çok kullanılanlar şu şekilde; -d : IP adreslerinin bilgisayar çözümlemelerini yapmadan sonuç verir. Yani 81.212.77.253.static.turktelekom.com.tr [81.212.77.253] yerine sadece 81.212.77.253 verir. Kullanımı => tracert -d www.dubluve.net -h maximum_hoops : Girilen adrese gitmek için kullanılacak geçit sayısını gireriz. Kullanımı => tracert -h 10 www.dubluve.net -w timeout : Her paket için geridönüş süresi belirtmemize yarar. Kullanımı => tracert -w 5 www.dubluve.net Bu komutun linuxcası için sizi şu adrese alalım : http://dubluve.net/2012/08/18/linux-mtr-komutu-linux-mtr-command Devamı için : windows tracert komutu (tracert command)
linux mtr komutu (linux mtr command)
HOST: ubuntu Loss% Snt Last Avg Best Wrst StDev 1.|-- 192.168.1.1 0.0% 10 1.0 6.4 0.9 53.4 16.5 2.|-- 85.102.128.1.dynamic.ttne 10.0% 10 27.7 30.6 20.7 60.5 13.6 3.|-- 81.212.77.253.static.turk 0.0% 10 21.0 52.6 21.0 122.5 44.6 | `|-- 212.156.118.22 4.|-- fth-2-1-fth-3-1.turktelek 30.0% 10 21.2 37.4 21.2 90.3 25.1 5.|-- byrmpsa-3-1-fth-2-1.turkt 0.0% 10 35.4 48.8 22.0 140.4 33.4 6.|-- 212.156.131.166.static.tu 0.0% 10 87.8 52.0 20.6 105.1 30.0--report (veya -r) parametresini yazmazsak karşımıza anlık olarak değişen bir tablo çıkar. Bu tabloda, gitmek istediğimiz adrese gidene kadar geçtiğimiz ağ geçitleri ve anlık olarak gönderilen veri paketlerinin istatistikleri yer alır. mtr komutunun parametrelerinden en çok kullanılanları ise şöyledir; -n (--no-dns) : Sonuçlar kısmında ağ geçitlerinin bilgisayar isimlerinin görünmemesi için kullanılan parametre. Yalnızca geçilen IP adresleri listelenir. -i SECONDS (--interval SECONDS) : Gönderilen veri paketleri için süre sınırlaması yapabilmemize yarayan parametredir kendileri. -c COUNT (--report-cycles COUNT) : Gönderilen veri paketlerinin kaç kere gönderileceğine karar vermemize yarayan parametre. Yani biz 1 veri paketini bir ağ geçidinden 3 kere geçirip bunun sonucunu analiz edebiliriz. -4 parametresi, sadece IPv4 kullanarak ağ geçitlerine veri gönderilmesini sağlar, -6 parametresi ise aynı işlemi sadece IPv6 kullanarak yapar. Diğer parametrelere man mtr komutunu kullanarak ulaşabilirsiniz. Bu komutun windowscası işe şudur ; http://dubluve.net/2012/08/17/windows-tracert-komutu-tracert-command Devamı için : linux mtr komutu (linux mtr command)
17 Ağustos 2012 Cuma
Roundcube Sunucu hatasi: UID COPY: Quota exceeded (mailbox for user is full)
Zend Studio php otomatik tamamlama (autocomplete) hatasi ve cozumu
Zend Studio 9 autocomplete hatasının çözümü
Projenizin klasörü içindeki .buildpath dosyasını bir metin editörü ile açın ve içine aşağıdaki kodu koyun. (Zaten aynısı varsa dokunmayın :) )<?xml version="1.0" encoding="UTF-8"?> <buildpath> <buildpathentry kind="src" path=""/> <buildpathentry kind="con" path="com.zend.php.phpunit.CONTAINER"/> <buildpathentry kind="con" path="org.eclipse.php.core.LANGUAGE"/> <buildpathentry kind="con" path="org.zend.php.framework.CONTAINER"/> </buildpath>İşlem Sırası şu şekilde olmalı :
- Zend studio'da ilgili projeyi kapatın. (Soldaki explorer'daki projeye sağ tıklayıp close'a basın)
- .buildpath dosyasını yukarıda bahsettiğim şekilde editleyin. (bu dosya yoksa oluşturun. Windowsta ".buildpath" adında bir dosyayı ancak cmd ekranından yapabilirsiniz.)
- Zend Studio'da projeyi açın
- Üst menü'den Project kısmının altında Clean
16 Ağustos 2012 Perşembe
adam akilli kisiler #1 – Dennis M. Ritchie
14 Ağustos 2012 Salı
Yandex istanbul trafiginin stres haritasini cikardi
13 Ağustos 2012 Pazartesi
htpasswd sifre olusturmak ve ayarlamak
1. HTACCESS dosyası yardımıyla htpasswd ayarlamak
.htaccess dosyasının içinden yapabiliriz. Bunu anlatan bir sürü site var. (biri budur).2. HTTPD.Conf içerisinden htpasswd ayarlamak
ilgili klasörü11 Ağustos 2012 Cumartesi
Domain ... has exceeded the max defers and failures per hour (6/5 (50%)) allowed. Message discarded.
"Domain ... has exceeded the max defers and failures per hour (6/5 (50%)) allowed. Message discarded." hatasının çözümü :
İlgili ayarı değiştirmek için de Cpanel WHM ye root olarak login olduktan sonra, Soldaki hızlı arama kısmına "Mail" veya "Tweak Settings" yazın. Gelen linke tıklayıp ilgili sayfayı açın. Sayfa ortalarındaki "Maximum percentage of failed or deferred messages a domain may send per hour" yazan kısım, bahsi geçen ayarın yapıldığı yerdir. Umarım faydası olur. Devamı için : Domain ... has exceeded the max defers and failures per hour (6/5 (50%)) allowed. Message discarded.Chrome Dil Ayarlarını Değiştirme
- Öncelikle sağ üst köşedeki ingiliz anahtarı simgesine tıklıyoruz ve açılan menüden Ayarlar'ı seçiyoruz.
- Açılan sayfanın en altında Gelişmiş ayarları göster...'e tıklıyoruz.
- Burada Diller bölümünde Diller ve yazım denetleyicisi ayarları... butonuna tıklıyoruz.
- Açılan ekranda İngilizce'yi (veya istediğiniz bir dili) seçerek Google Chrome için bu dili kullan butonuna tıklıyoruz. İstediğiniz dil listede yoksa Ekle butonuyla dil ekleyebilirsiniz.
- Değişikliklerin geçerli olması için Chrome'u yeniden başlatıyoruz.
adam akilli kisiler #1 - Linus Torvalds
Linus Torvalds
Linux çekirdeğinin bulucusu. Dünyada bir çığır açacak bu işletim sisteminin çekirdeğini yazmaya tamamen spontane ve zevk amaçlı başlayan Linus Torvalds, çıkan ürünün sonunda şu anki haline varacağını bilmiyordu. Kendisi aynı zamanda bin yılın teknoloji ödülünün de sahibi oldu. http://www.bbc.co.uk/news/technology-18423502 linuxfoundation.org adlı sitede anasayfada gösterilen, Linuxun nasıl üretildiğini anlatan aşağıdaki kısa videoyu seyretmenizi öneririm. http://youtu.be/yVpbFMhOAwE Ayırca Wikipedia'daki Linus Torvalds içeriğine de bakmanızı önerebilirim. Devamı için : adam akilli kisiler #1 - Linus Torvalds10 Ağustos 2012 Cuma
Java 7 - Birden Fazla Exception Aynı Alanda
public void throwTestMethod() throws IllegalArgumentException, FileNotFoundException, NullPointerException { // ... } public void throwTest() { try { throwTestMethod(); } catch (IllegalArgumentException e) { // Do special process for IllegalArgumentException } catch (FileNotFoundException e) { // Do special process for FileNotFoundException } catch (NullPointerException e) { // Do special process for NullPointerException } }Aynı catch bloğunu kullanmanın yolu vardı;
public void throwTest() { try { throwTestMethod(); } catch (Exception e) { // Do special process for all Exceptions } }Ancak, burada gördüğünüz üzere tüm exceptionları aynı blokta kullanmamız gerekiyordu. Örneğin, 3 exception atılan bir metod için sadece 2 exceptiona özel bir blok oluşturamıyorduk (aynı interface'i kullanmak gibi dolambaçlı yöntemler var tabii ki). Java 7 ile birlikte exceptionları catch bloklarında gruplayabilme özelliği gelmiş oldu. Artık,
public void throwTest() { try { throwTestMethod(); } catch (IllegalArgumentException e) { // Do special process for IllegalArgumentException } catch (FileNotFoundException | NullPointerException e) { // Do special process for FileNotFoundException and NullPointerException } }şeklinde bir kullanım gerçekleştirebiliyoruz. Kod yeniden kullanılabilirliği için gayet faydalı bir geliştirme olmuş. Devamı için : Java 7 - Birden Fazla Exception Aynı Alanda
centos + cpanel sunucu tmp alanini artirma
tmp alanı ne işe yarar
Bu tmp alanı windowstaki swap mantığında çalışmakta. Yani Ram'e yazılamayan işler tmp de diske yazılarak halledilebiliyor. Linus Torvald (linux çekirdeğinin bulucusu) da linuxta, memory yetmediği durumlarda hard diskin memory gibi çalışabilmesini başarabilmesi ile büyük bir yol katetmişti. İşte o memory gibi kullanılabilen alan genelde /tmp klasörü oluyor.Cpanel yüklü Centos sunucuda tmp alanını arttırma
/scripts/securetmp dosyasını nano yada başka bir editör ile açınnano /scripts/securetmpiçindeki my $tmpdsksize değerini 512000 den 1024000 a değiştir ve ardından kaydedip dosyayı kapatın. Daha sonra sırayla
/bin/umount -l /tmp /bin/umount -l /var/tmp /bin/rm -fv /usr/tmpDSK /scripts/securetmp /scripts/restartsrv_mysql /scripts/restartsrv_httpdKomutlarını çalıştırın. Bunları yaparken size soracak, securetmp bilgisayar açılrırken başlatılsın mı, bir sonraki başlangıç için başlatılsın mı? Bunlara da size uygun bir cevabı veriniz. benim denememde farketmedi.
/tmp boyutunu artırmanın diğer yolları
Ayrıca bu işlemi şuradaki kodlar ile de yapabileceğiniz söylenmiş, : http://www.hostco.com/manage/knowledgebase/21/Increase-cPanel-Securetmp-Partition-Size.html Farklı kaynak bulduğumda da buraya ekleyeceğim. Devamı için : centos + cpanel sunucu tmp alanini artirma9 Ağustos 2012 Perşembe
Linuxta kalici alias vermek (.bashrc)
alias deneme='cd /home/emre/deneme'Örneğin bu komutu yazdıktan sonra, komut satırına deneme yazdığımda, o /home/emre/deneme klasörüne gitme işlemini yapıyor. Ancak sistemden logout yaptığında bu alias gidiyor. Peki nasıl kalıcı alias vereceğiz? 1- /root/.bashrc dosyasını nano ile (veya herhangi bir text editörü ile) açınız.
nano /root/.bashrc
2- Daha sonra düzenli olması için en alta inip az önce komut satırına yazdığınız şeyi (alias deneme='cd /home/emre/deneme') buraya yazın. 3- Daha sonra da kaydedip çıkın. Sistemden bir kere logut yapıp tekrar giriş yaptığınzda yazdığınız komutu deneyin, çalıştığını göreceksiniz.Devamı için : Linuxta kalici alias vermek (.bashrc)
8 Ağustos 2012 Çarşamba
apt - Ubuntu paket yonetimi komutlari
7 Ağustos 2012 Salı
ping.eu - online network gerecleri
- Ping
- Traceroute
- DNS lookup
- WHOIS
- Port check
- Proxy checker
- Bandwidth meter
- Network calculator
- Network mask calculator
- Country by IP
- Unit converter
Node.js nedir?
6 Ağustos 2012 Pazartesi
Java 7 - switch İfadelerinde String Nesnesi Kullanımı
public static final int MONTH_JAN = 1; public static final int MONTH_FEB = 2; // ... public void monthProcess (int month) { switch (month) { case MONTH_JAN: // ... break; case MONTH_FEB: // ... break; // ... } }Şimdi de aynı örneğin Java 7'de String nesneleriyle kullanımına bakalım;
public void monthProcess(String month) { switch (month) { case "Jan": // ... break; case "Feb": // ... break; // ... } }Java 7'den önce bu örneği if-else if yapısıyla kullanıyorduk.
public void monthProcessWithIf(String month) { if (month.equals("Jan")) { // ... } else if (month.equals("Feb")) { // ... } // ... }Artık doğrudan switch ifadelerinde kullanabiliyoruz. Ayrıca burada belirtildiğine göre Java derleyicisi switch ifadelerinde String kullanınca if-else if yapısına göre daha efektif byte-code üretiyor. Son olarak, switch ifadelerinde kullandığımız String ifadeleri büyük küçük harf duyarlı. Gözden kaçmasın. Ayrıca, Netbeans ve Eclipse (kullanıyorsanız) IDE'lerinin son versiyonlarını yüklemeyi unutmayın. Eski versiyonlar Java 7 desteği vermiyor. Doğrudan java derleyicisi kullananlar için bu açıdan sorun yok. Devamı için : Java 7 - switch İfadelerinde String Nesnesi Kullanımı
5 Ağustos 2012 Pazar
web hata ayıklama (debug) metodolojileri ve teknikleri
Hata ayıklama için çalışma Şekilleri
- Canlıda Çalışma : İnsan mecburda kalınca bazen canlıda çalışması gerekebiliyor diyebilirsiniz. Ancak benim bu konudaki tavrım net, canlıda bir şey çalışacak hale getirmeyin kendinizi. Yine de çalışmanız gerekiyorsa bu noktada, Sitenin hizmetini $_SERVER["REMOTE_ADDR"] yardımıyla sizin IP niz dışındakilere kapatınız. Sizin IP'niz dışındakilere güncelleme çalışması yapıldığını belirtiniz.
- Test ortamında çalışma : Gerçek Projenin aynısını kendi bilgisayarınıza veya test ortamınıza aktararak hatayı orada elde edip, düzeltmeye başlayın.
- Yayını Durdurun : Eğer hatanın nüksetmesi kritik önem arz ediyorsa, yayını ivedilikle durdurun. Ziyaretçilere bakım çalışması bilgisi verin. Bu müşterilerinize veya ziyaretçilerinize sizin hatadan haberdar olduğunuzu ve üzerinde çalıştığınızı göstererek, size çalışmak için zaman sağlayacaktır.
- Mevcut durumu Garanti altına alın : Hem dosyaları hem de veritabanını daha kötü bir senaryo için yedek alın. Yedek aldığınız veriler, önceki yedeklerin üzerine yazmamasına özen gösterin. Sıkışırsanız, veya daha kötü bir senaryo oluşursa en son state'e (hatanın oluştuğu ilk noktaya) geri döneceksiniz.
- Hata mesajlarını artırın , kapalıysa açın : Php hata mesajlarını ve Loglama hizmetlerini yazılım katmanından artırabiliyorsanız artırın. Kapalıysa açın.
- Sistemi kurtarmayı aşamalandırın : Hatayı tespit ettikten sonra ne yapacağınızı düşünmeniz gerekir. Madde madde bunları çıkarın. Mümkünse her maddeden sonra yedek alıp, durumu garanti altına alın.
- Yazılım hizmetlerini durdurun : Örneğin, yazılımınızda bir mail atma servii var. Siz hatayı tespit ederken sistem herkese mail atıyor olabilir. Bunun önüne geçmek için bu tarz hizmetleri durdurun veya sadece kendinizi ilgilendirecek şekilde düzenleyin.
- Log ekleyin : Hatayı tespit etmek için loglama yapın, varsa eğer, loglanan veri miktarını artırıp, logu detaylandırın.
- Çözümü Uygulayın : Bazı hatalar barizdir. Bazı hatalar ise bazen oluşur ki en beter hatalar bu şekilde ara-sıra oluşan hatalardır. Çözümü uygulayıp durum değerlendirmesi yapın.
- Sorunun çözüldüğünü Teyid edip, siteyi ayağa kaldırın : Artık işlemler bittiğinde, hatanın tekrar oluşmaması için tedbirinizi de alın. Ve siteyi tekrar yayına alın.
- Fazladan almış olduğunuz yedekler ile ilgilenin. (Dilerseniz silin, dilerseniz bir kaç gün sonra silmek üzere bir cronjob oluşturun)
dubluve.net guncel isletim sistemi oranlari
Birinci Windows!
Google analytics'ten edindiğim verilere göre, dubluve.net'i ziyaret eden kullanıcıların neredeyse %90 ı Windows işletim sistemi kullanıyor. Bunda %95 türkiye ağırlık ziyaretçimizin olmasının etkisinin büyük olduğunu düşünüyorum. İlk 3 veriyi de aşağıda paylaşmak istiyorum. Güncelleme : 05.08.2012Browser | 4 Ağustos 2012 % Ziyaret | |
---|---|---|
1. | Windows | 87.95% |
2. | Linux | 8.96% |
3. | Macintosh | 2.45% |
2 Ağustos 2012 Perşembe
MySQL Table is marked as crashed and last (automatic?) repair failed hatasi
repair table tablo_adi;komutuyla tablonuzu tamir etmeye çalışabilirsiniz. Ancak gelin görün ki bu işe yaramıyor diyorsanız, en azından MyIsam tablolarda çalışabilecek bir yöntem daha var. /var/lib/mysql/database_adi yoluna gidin. (veya veritabanınızın dosyaları her neredeyse..)
myisamchk -r -v -f --sort_buffer_size=128M --key_buffer_size=128M /var/lib/mysql/database_adi /tablo_adi.MYIşeklinde crash edilmiş bir myIsam motorlu tablonuzu kurtarabilirsiniz.
Tavsiye
Tabi ki bu hale gelip de bu yazıyı gördüyseniz, yedek alma sisteminiz henüz mevcut olmayabilir. Eğer kendinize ait bir sunucunuz var ise, Veritabanı yedekleme cronjobu eklemenizi tavsiye ederim. Buradan mysqldump ile yedek almayı öğrenin. Kendinize ait bir sunucunuz yok ise de hosting hizmeti aldığınız firmadan ISRARLA talep ediniz. Devamı için : MySQL Table is marked as crashed and last (automatic?) repair failed hatasiyazılımcı adayına tavsiyeler #2
Bu yazıda, yazılımcı olmak isteyen genç arkadaşlarımıza bazı tavsiyelerim olacak. Önceki tavsiyelerime şuradan ulaşabilirsiniz. Tabi belirtmek gerekir ki yine nacizane görüşlerimi paylaşıyorum. Bana katılan veya katılmayan olabilir.
Diğer yazının başında da belirttiğim gibi olmazsa olmaz bir madde söylemek istiyorum : İngilizce MUTLAKA Öğrenin!
1 - Şimdi ne yapsam deme, listeye bak!
Elinde her zaman bir @todo listen olsun ki, mevcut işin bittiğinde veya elinde bir iş olmadığında neler yapacağın konusunda kararsız kalma. Bunu ister bilgisayar ortamında tut, ister çok sevdiğin defterinde. Fakat tut!
2 - Community ve stackoverflow.com
Dünyada yazılımla ilgilienen çooook fazla kişi var. Türkiyede kulaktan dolma bilgiler biraz daha ön planda olsa da, yurtdışında hem kalite olarak hem de sayıca çok fazla kişi bulabilirsiniz sizin yaptığınız şey ile ilgilenen. Yardım isteyin. Fikir isteyin. Community dediğimiz şey, açık kaynak veya ücretsiz yazılımlarda özellikle ayrıca faydalanılması gereken bir konu. Bu kişileri (doğru kişileri) ve bu siteleri (doğru siteleri) takip etmeniz çok iyi olacaktır. stackoverflow.com da bunlardan birisi. Arkadaşlarınızla yarışma yapın. Örneğin stackoverflow.com da 1 ay içinde kim en yüksek puana ulaşırsa, ona kendi içinizde bir ödül alın. Bu 2 açıdan önemli. * 1. si başkalarının kodlarında veya sorunlarında, onların deneyimlerini görüp, tecrübelerini edinebiliyorsunuz. * 2.si başkaları da sizin kodlarınıza veya sorunlarınıza yönelik çözüm önerileri sunuyorlar. Siz probleminizi çözmeye uğraşırken bilin ki başkaları da bunla ilgileniyor.3 - Dünya Web'de buluşuyor.
Arkadaşlarınız ile bir yerde buluşackasanız bu cafe veya bir lokanta olabiliyor. Veya bir çay bahçesinde görüşebiliyorsunuz. Ancak ölçeği büyütürsek, tüm dünyanın bir araya gelebileceği tek yer Web (www).
Masaüstü yazılım devri azalıyor. İşletim sistemlerinin bile internetten açılması tasarlanan günümüzde, buna göre ya entgere sistemler üzerine ya da web üzerine çalışmanızı tavsiye ederim.
4 - Doğru çalışma ortamınızı (workbench) kurun
Bir işle ilgilenirken , o iş ile ilgili gereksinimler her ne ise, onu çalışma ortamınızda aynen simule etmeniz gerekiyor. Aksi takdirde canlı sistemde çalışmak ve hata üstüne hata yapmak zorunda kalabilrsiniz.
Örneğin facebook eklentisi geliştiriyorsunuz. Kendinize facebook ortamını simule edecek bir yapı kurun. Facebook api'sinden bir array bekliyorsanız, o array'i ilgili metodlarınıza siz gönderin. Facebook'a gerçekten bağlanma ihtiyacını local ortamınızda simule etmiş olursunuz.
5 - Hata loglama
Her ne geliştiriyorsanız geliştirin, kodunuzun bir yerinde hata olma olasılığını bilin. Ancak bu hatayı bize sadece geliştirici araçları raporlamaz. Bir şekilde canlıda çalışan kodlarınızda da hata meydana gelecektir.
Doğru bir hata loglama sistemi kurmanız gerekir demeden önce, sizi bunu önemini idrak etmeye davet ediyorum. ÇOK ÖNEMLİDİR.
Hataları doğru veya yanlış , bir şekilde loglamayı prensip haline getiriniz. Bir hata olduğunda ilk bakacağınız yerler buralar olması lazım. Daha sonra doğru loglamayı kendi ihtiyacınıza göre yaparsınız zaten.
Devamı için : yazılımcı adayına tavsiyeler #2