21 Mart 2013 Perşembe

php strict standards - only variables should be passed by reference error

strict standards - only variables should be passed by reference error hatasını alıyorsanız, referans olarak değişken göndermeniz gereken yere, siz farklı bir şey göndermişsiniz demektir. Ben hatayı şöyle almıştım.
$var = end(explode( "/", $filename ));
end işlemini yaptığım şey explode işleminin sonucu. Ancak explode bir array döndürürken, bu arrayi bir değişkene atamadığım için, arrayin sadece adresini döndürmüş oluyor. Bu da end fonksiyonunun çalışmamasına sebep oluyor. Çalışması için aşağıdaki gibi basit bir düzenleme yapıyoruz :
$tmpArr= explode( "/", $filename);  $var = end($tmpArr);
Bu problem php 5.4.x sürümlerinde karşınıza çıkmıyor ancak php 5.3.x sürümlerinde mevcuttur. Devamı için : php strict standards - only variables should be passed by reference error

17 Mart 2013 Pazar

Linux terminalde temel network komutları

Dosya indirirken, kullandığımız network üzerindeki işlemleri incelerken, istatistiklerine bakarken, network problemlerine göz atarken kullandığımız arayüzü gelişmiş programlar veya internet siteleri var. Tabi bunların her biri için kullanabildiğimiz birer linux komutları da var, genel olarak onlardan bahsetmek istedim.

curl & wget

curl veya wget, internet üzerinden dosya indirmemize yarar. curl kullanıyorsanız -O parametresi ile, wget kullanıyorsanız parametresiz bir şekilde bulunduğunuz dizine dosyayı indirebilirsiniz.
  curl -O website.com/file  wget website.com/file  

ping

ping komutu ECHO_REQUEST paketleri göndererek, bilgisayarınızın yazdığınız ip adresi veya domain ile iletişime geçip geçemediğini size bildirir. Ancak bunu kullanırken bazı sistemlerin ping komutuna yanıt verebilecek şekilde yapılandırılmadığını da göz önünde bulundurmalısınız. Windowstaki ping komutu belirli sayıda paket göndererek size yanıtları gösterir, ancak Linux üzerinde siz sonlandırana kadar paket göndermeye ve size sonuç göstermeye devam eder. Bu yüzden Linuxta ping komutuna parametre olarak -c ve paket adedini yazarak kaç paket ile ping atılacağını yönetebilirsiniz.
  ping -c 5 dubluve.net  

tracepath & traceroute

tracepath komutu ile traceroute komutu birbirine benzer işlemler yapmaktadırlar. (tracepath Ubuntu'da kurulu olarak gelmektedir.) Eğer internet ağınızda bir yavaşlama veya bir problem varsa, bu komut size nerede hata olduğunu göstermektedir.
  tracepath dubluve.net  

mtr

Mtr komutu, gitmek istediğimiz ip adresine / domaine ulaşıncaya kadar geçtiğimiz ağları tanılamaya yarayan komuttur. Detayları için buradaki yazıyı inceleyebilirsiniz. Windowstaki kullanımı için de (tracert) buradaki yazıyı inceleyebilirsiniz.
  mtr dubluve.net  
(Çıkış yapmak için q veya ctrl-c kullanabilirsiniz.)

host

Domain kullanarak ip adresi öğrenebilen komuttur.
  host dubluve.net  

whois

whois komutunu kullanarak websitesinin kimin adına kayıtlı olduğunu, name serverlarını vs. birçok bilgiyi öğrenebiliriz.
  whois dubluve.net  
Ubuntu'da whois kurulu olarak gelmemektedir, sudo apt-get install whois diyerek install edebilirsiniz.

ifplugstatus

ifplugstatus Ubuntu'da kurulu olarak gelmemektedir, sudo apt-get install ifplugd komutu ile install ediniz. ifplugstatus komutu size network interface üzerindeki statusları gösterir.
  ifplugstatus  
Çıktısı şu şekilde olur;
  eth0: unplugged  lo: link beat detected  wlan0: link beat detected  
link beat detected demek, bağlı olduğunu gösterir, unplugged ise olmadığını gösterir.

ifconfig

ifconfig ağ üzerindeki bir çok bilginizi görmeye yarar. IP adresiniz, bağlantı türünüz, kullandığınız network arayüzü, aktif arayüzler vs.
  ifconfig  

dhclient

dhclient komutu bilgisayarınızın ip adresinden yeni bir DHCP server yaratır. DCHP serverın ne olduğu hakkında bilgi edinmek için buradaki yazıyı okuyunuz. dhclient Ubuntu'da root olmanızı istemektedir, eğer ip adersinizin aynı kalmasını istiyorsanız -r parametresi ile kullanınız.
  sudo dhclient -r  sudo dhclient  

netstat

netstat komutu network arayüzünüzle ilgili bir çok bilgiyi sunmaktadır.
  netstat  
-p parametresi ile programların ilişkili olduğu socketleri görüntülersiniz.
  netstat -p  
-s parametresi ile portların detaylı istatistiklerini görüntülersiniz.
  netstat -s  
Devamı için : Linux terminalde temel network komutları

16 Mart 2013 Cumartesi

ubuntu'da statik ip adresi ayarları

Ubuntu'da komut satırından statik ip ve dns adreslerini ayarlama işlemleri şu şekilde olmaktadır; İlk olarak network interface ayarlarımızı düzenliyoruz. Herhangi bir text editörü kullanarak bu işlemi yapabiliriz, örneğin nano ile yapmak için;
  sudo nano /etc/network/interfaces  
Açtığınız dosyanın içerisinde şunları göreceksiniz;
  auto lo eth0  iface lo inet loopback  iface eth0 inet dynamic  
Eğer birden fazla network kartınız varsa, hangi network interface üzerinde ayar yaptığınıza dikkat etmelisiniz. Dosyanın içerisini şu şekilde düzenliyoruz, ardından kaydediyoruz;
  auto lo eth0  iface lo inet loopback  iface eth0 inet static          address xxx.xxx.xxx.xxx(buraya ip adresini yazıyoruz)          netmask xxx.xxx.xxx.xxx          gateway xxx.xxx.xxx.xxx(buraya router ip adresini yazıyoruz)  
Ardından DNS ayarlarımızı değiştiriyoruz. Bunun için /etc/resolv.conf dosyasını düzenliyoruz.
  sudo nano /etc/resolv.conf  
Dosyayı açtıktan sonra içerisini şu şekilde düzenleyip kaydediyoruz;
  nameserver xxx.xxx.xxx.xxx(dns server ip'si)  nameserver xxx.xxx.xxx.xxx(alt dns server ip'si)  
Son olarak network interface için restart yapıyoruz;
  sudo /etc/init.d/networking restart  
Eğer isterseniz ifconfig yazarak yaptığınız ayarları kontrol edebilirsiniz. Kaynak : http://www.howtoforge.com/linux-basics-set-a-static-ip-on-ubuntu Devamı için : ubuntu'da statik ip adresi ayarları

15 Mart 2013 Cuma

TypeHinting nedir? Php Typehinting

Typehinting demek, bir class'a ait metodun aldığı parametrelerin türünün önceden belirlenmesi, force edilmesi demektir. Ancak bu işlemi sadece objelerde ve arraylerde yapabilmekteyiz. Örnek verecek olursak;
  class Dubluve{   public function deneme(array $a){    var_dump($a);   }  }  $obj = new Dubluve();  
deneme metodu için şunları söyleyebiliriz;
  // bu kodlar hata verecektir  $obj->deneme("php");  $obj->deneme(123);  $obj->deneme("1");    // bu kod çalışacaktır  $obj->deneme(array("a", "b", "c"));  
Type hinting işlemini düzgün olarak array ve objelerde kullanabiliyoruz onun da şöyle bir püf noktası var. Metoda gönderdiğimiz parametre için default değer olarak NULL atarsak, gönderdiğimiz parametre de NULL olabilir. Bunu da örnekle açıklamak gerekirse,
  class DubluveRSS{   public function deneme(Dubluve $dubluve) // $dubluve değişkeni sadece Dubluve'nin objesi olabilir   public function deneme(Dubluve $dubluve = NULL) // $dubluve değişkeni Dubluve'nin objesi olabilir veya NULL olabilir  }  
Öte yandan ;
  public function deneme(array $dubluve = array("a", "b", "c"))  
bu fonksiyonu deneme(null); şeklinde çalıştıramayız. Ancak diyorsak ki, null parametre gönderilebilsin ancak null geldiyse default olarak bir şeyler atayabileyim, o zaman da şöyle birşey yapabiliriz
  public function deneme(array $dubluve = null){   if($dubluve === null){     $dubluve = array("a", "b", "c");   }   .   .   .  }  
Typehinting fonksiyonlarda da çalışmaktadır. Yine class metodlarında olduğu gibi sadece obje ve arrayler ile işlem yapılabilmektedir. Devamı için : TypeHinting nedir? Php Typehinting

12 Mart 2013 Salı

php 5.4 array dereferencing

php 5.4 ile gelen yeni özelliklerden biri de, array döndüren metodları kullanırken kolaylık sağlıyor. Aşağıdaki örnekte getData metodu, array döndüren bir metod. Ve metodu çağırır çağırmaz ise, array keyini yazıp hemen dönen sonucu kullanabiliyoruz. Tabi burada tanımsız ise hata almanız kaçınılmaz, bu yüzden yanlış veya olmayan bir key'i çağırmamaya dikkat etmeniz şart. Çok da hata bakımından kontrol edilebilir bir şey değil çünkü bu.
  function getData() {      return ['firstname' => 'Emre', 'lastname' => 'Macit'];  }    echo getData()['firstname'];    
Devamı için : php 5.4 array dereferencing

php 5.4 callable typehint

Php 5.4 te gelen yeni bir özellik de "callable" typehinti. Callable ile , "çağrılabilir" bir parametre geleceğini ifade etmiş oluyorsunuz. ve istediğiniz zaman bunu çağırabiliyorsunuz.
  class Meyve  {      function __construct($name)      {          $this->name = $name;      }        public function selam()      {          return "Selam " . $this->name;      }  }  //fonksiyonumuzu tanımlarken $f yi callable olarak cast ediyoruz. (hint ediyoruz)  function selam(callable $f) {  //ve bu şekilde çağırabiliyoruz.      $f();  }    selam([new Meyve("Armut"), 'selam']);
Devamı için : php 5.4 callable typehint

11 Mart 2013 Pazartesi

Php 5.4 Sinif Metoduna Hizli Erisim

php 5.4 ile birlikte sınıf metodlarına hızlıca erişimin de önü açıldı. böylece 2 satırda yapacağımız işleri artık tek satırda yapabiliyoruz.
  class Araba  {      public $name;      function __construct($name)      {          $this->name = $name;      }        public function selam()      {          return "Selam " . $this->name;      }  }    // eski stil  $araba = new Araba("Mersedes");  echo $araba->selam();    // yeni harika stil  echo (new Araba("Ferrary"))->selam();  
Devamı için : Php 5.4 Sinif Metoduna Hizli Erisim

6 Mart 2013 Çarşamba

windows salt-okunur (read-only) isaretini kaldirmak

windowsta bir dosyaya veya klasöre sağ tıkladığımızda özellikler kısmından eriştiğimiz ve seçili olarak görüdğümüz salt-okunur (read-only) işaretini aşağıdaki kod ile komut satırından da kaldırabiliriz. Ancak bu klasör veya dosya herhangi bir program tarafından kullanılıyorsa, değiştirilemiyor. İlk önce kullanan programları kapatmanız gerekiyor. İşin ilginç yanı hata da vermiyor windows :)  
  attrib -R ornek.txt  
Bu komut ile ornek.txt nin salt okunur işaretini kaldırmış oluyorsunuz. Devamı için : windows salt-okunur (read-only) isaretini kaldirmak