Generator PHP 5.5.0 ile gelmiş olan önemli bir yenilik olup, en basit ve net tanımı, memory'den(hafızadan) kazanım sağlayabileceğiniz iteratörler olduğudur. Açıkçası generator'ın önemini ben de başta pek idrak edememiştim, ancak daha sonradan çok büyük dosyalar üzerinde işlem yaparken, karşılaştığım memory problemleri, generator kullanmanın ne kadar önemli olduğunu bana acı bir şekilde öğretmişti.Burada da verilen en klişe, ama net olan örneği vereceğim. foreach (range(0, 1000000) as $number) {    echo $number;} Üstteki örnekte, 1'den 1000000'a kadar olan tüm numaraları yazdırıyorsunuz.

08 Ekim 2015

Trait, PHP 5.4.0 ile gelmiş, nesneye yönelik programlama konseptlerinden birisidir. Başka dillerde de trait kullanımı olmakla beraber, Perl(roles), Scala(trait), Ruby(modules), birçok kişi hala ne olduğunu tam olarak bilmemekte ve yeteri kadar kullanmamaktadır.Trait'in basit bir tanımını yapacak olursam, interface gibi, bir class'ın(sınıfın) neler yapabileceğini belirten, aynı zamanda da, class gibi, yöntemleri, implemented (uygulanmış) şekilde, direkt sağlayabilen kısmi sınıf uygulaması diyebilirim. Ne gibi durumlarda trait kullanmanız gerektiğini bir örnekle anlatayım.

07 Ekim 2015

Kendi sunucunuzda mail sunucusu kurmak çoğu zaman gereksiz olduğu için, kendi domaininizi kullanarak, örneğin [email protected] üzerinden, mail atabilmek için kullanabileceğiniz birkaç seçeneğiniz var. En çok bilinenlerden birisi Google'ın sunduğu ücretli olan Business Apps, diğeri ise Outlook. Ben ise bir başka alternatif olan Zoho Mail'i anlatacağım.Öncelikle Zoho'ya kayıt olmanız lazım.

05 Ekim 2015

Bu yazıda, yeni kurulmuş bir Ubuntu sunucu üzerinde, Laravel için Nginx'i nasıl yapılandırmanız gerektiğini, aynı zamanda ileride hiç başınızı ağrıtmayacak şekilde sunucunuzu git bazlı deployment'a nasıl hazır getirebileceğinizi anlatacağım. Örnek deployment aracı olarak Capistrano ile anlatacağım ama dilerseniz başka bir araç ile de aynı işlemleri yapabilirsiniz, aralarında çok ufak farklar oluyor.Not: Bu yazıda, deployer hesabınızın hazır ve SSH ile public key doğrulamasıyla sunucuya ile bağlanabildiğini varsayıyorum. Eğer nasıl yapılacağını bilmiyorsanız, Linux Sunucularda Temel Güvenlik Önlemleri yazımı okumanızı öneririm.Sunucunuza bağlandıktan sonra, sırayla $ su - # bunu kolaylık olsun diye yazıyorum, root şifrenizi yazmanız lazım, ya da alttaki komutların başına sudo ekleyin$ add-apt-repository ppa:ondrej/php$ apt-get update$ apt-get upgrade$ apt-get install acl nginx mcrypt keychain memcached anacron redis-server php7.1-fpm php7.1-cli php7.1-mcrypt php7.1-cgi php7.1-zip php7.1-mbstring php7.1-curl php7.1-gd php7.1-intl php7.1-mysql php7.1-bz2 php-memcached php-xml git mysql-server mysql-client # paketlerden nginx, php7.1-fpm, php7.1-mcrypt, git, keychain dışındakiler opsiyonel$ curl -sS https://getcomposer.org/installer | php$ mv composer.phar /usr/local/bin/composer Kurulumları tamamladıktan sonra, barındıracağınız sisteminiz için gerekli klasörleri oluşturmanız lazım.

05 Ekim 2015

Belki de yazacağım en kısa makale olacak ama belirtmeden geçemeyeceğim bir konu caching. Özellikle Laravel'e entegre etmeniz bu kadar kolayken, hala dosyalar ile caching yapmak elde edebileceğiniz maksimum performansı inanılmaz düşürüyor. Bu yüzden, mutlaka kendi sunucularınızda, Redis ve Memcached kullanın.Memcached ve Redis'i sunucunuza kurmak için sudo apt-get install -y memcached php5-memcached redis-server # -y etiketi karşınıza çıkabilecek tüm potansiyel sorulara evet cevabı vermeye yarar Redis için ekstra olarak composer dosyanızda alttaki paketi dahil etmeniz lazım.

04 Ekim 2015

Bu yazıda, yeni kurulmuş Ubuntu 14.04 sunucusu üzerinde, temel güvenlik ayarlarını nasıl yapabileceğinizi anlatacağım. Aslında yapacağım şey bir nevi Bryan Kennedy'nin makalesini Türkçe'ye biraz daha detaylı çevirerek anlatmak olacak, açıkçası ben de birçok temel şeyi bu makaleyle öğrenmiştim, dolayısıyla bu makaleyi Sunucu Güvenliğine Giriş - 101 dersi gibi görebilirsiniz. Sunucuya root olarak ilk seferinde bağlandığınızda, sizden yeni bir şifre isteyecektir.

03 Ekim 2015

Interface birçok şekilde tanımlanabilir, ama şu ana kadar gördüğüm en sade ve net tanımlamayı yapacak olursam, bir objenin(nesnenin) bir başka objenin ne olduğuna bağlı olmaması, ama o objenin yapabildiklerine bağlı olmasını düzenleyen, objelerin karşılıklı anlaşması olarak düşünebilirsiniz. Ancak tabii ki bu tanım da yeterli kalmayabilir, o yüzden biraz daha bu kavramı gerçek hayattan bir örnekle açıklayacağım.İşe geç kaldınız ve evden en kısa sürede çıkmanız lazım, ancak eşiniz, siz tam çıkarken, akşama ne yemek yapayım sorusunu soruyor, siz de herhangi bir şey yap, yeter ki yiyebilelim diye geçiştirip çıkıyorsunuz. Yani eşinize ne yapması gerektiğini belirtmeyip, özellik(interface) belirterek eşinizin üreteceği çıktının(objenin), yenilebilir özelliğe sahip herhangi bir şey olmasını bekliyorsunuz.

02 Ekim 2015