Linux sunucu ve sembolik link (symlinks – sanal dizin)

Standard

Öncelikli olarak symlinks için küçük bir örnek vereceğim aslında anlamanız için ışık olacağına inanıyorum;
Windows üzerindeki kısayollar gibi..
Hala kafanızda bişey canlanmamışsa birde örnek ile anlatalım; Bizim dosyamız bir klasörün içinde bulunuyor ve aynı zamanda farklı bir klasörde daha olmasını istiyorsak, ama bunu yaparken dosyanın kopyalarını oluşturmak istemiyorsak dosyayı diğer klasöre kopyalamak yerine sembolik bağ (symbolic link) oluşturabiliriz. Böylece tek dosya olmuş olacak (değişiklik yapıldığında her yere tek tek kopyalamak zorunda kalmayacaksınız) ve diğer link oluşturulan yerlerden de erişim verebilmiş olacaksınız.
En önemli işe yarayan kısmı ise disk kullanımı.. Çok daha düşük olacaktır.

Sembolik link ile klasörleri de linkleyebilirsiniz. Bu sayede tek tek bir sürü link oluşturmanız gerekmez.

Dikkat etmeniz gereken nokta parametrelerin sırası; Önce bulunan dosya sonra linki açmak istediğiniz dizin.. Bizzat ilk denemem de bunun tam tersini yapmıştım 🙂

Hızlıca örneklere geçelim..

Dosya Linklemek için;

ln -s /dosyanin/bulundugu/dizin/dosya.txt /linkin/olusturulacagi/dizin/dosya.txt

Devamını Oku..

Linux sunucular ve Find Komutu ile istenen boyuttan büyük dosyaları listelemek

Standard

Sunucularda bir zaman sonra alan dolar ve boyutu büyük dosyaları silmek isteyebilirsiniz.

İşte bu tarz durumlarda size yardımcı olacak bir yol, ssh ile bağlanıp büyük dosyaları bulabilir, temizlik yaparak kendinize yer açabilirsiniz..

Bulunulan klasörde 100 Megabayt tan büyük dosyaları listeler

find . -size +100M -ls

Devamını Oku..

PHP 5.5 ve Yield Komutu

Standard

PHP 5.5 i incelemeye ve detaylandırmaya devam ediyoruz.. PHP 5.5 ile hayatımıza Üreticiler (generators) ve eşyordamlar (coroutines) eklendi.
Şimdi size Generators kısmına değineceğim yani kısaca yield komutu..

Basitçe ve kabaca anlatmak gerekirse bir metodda array’e toplayıp array’i return ettiğiniz işi yapmaktadır. İteratorlar ile kullanımı mantıklı olan bu komut size bellekte büyük kolaylık sağlayacaktır.

Hemen bir örnek ile detaylandırmak isterim:

<?php $data = range(0, 1000000); echo sprintf('%02.2f', (memory_get_usage() / 1048576))." MB of memory used\n"; // output: 137.92 MB of memory used foreach ($data as $key => $val) { //echo "key: ".$key." value: ".$val."\n"; } ?>

Devamını Oku..

PHP5 ve Final Kavramı

Standard

PHP5 ile birlikte hayatımıza giren kavramlardan bir taneside sınıf ve metodlar için getirilen final kavramı…

işin özü final diyerek o metod veya sınıfın bir daha türetilememesini sağlamış bulunuyoruz.

O sınıf türetilmesin bozulmasın vs. diye böyle bir yol izlenebilir, karışık ve zor değil o yüzden direk örnek vereceğim ve taşlar oturacak kafanızda;

Sınıflarda Final Kullanımı

final class FinalSinif { public function abcMethod() { echo "FinalSinif method u çağrıldı"; } } //Compile error verecektir çünkü final sınıfı türetilemez class YeniSinif extends FinalSinif { public function abcMethod() { echo "YeniSinif method u çağrıldı"; } } $onur = new YeniSinif(); $onur->abcMethod();

Devamını Oku..

PHP interface – Arayüzler

Standard

Herkese merhaba,

Bugün size php interface den bahsetmek istiyorum. PHP5 ile birlikte hayatımıza giren bir yenilik olan interface i görsel olarak düşünmeyelim. Aslında Yapı yani modelleme arayüzü olarak düşünebiliriz.
Örnek vermek gerekirse; bir veritabanı altyapısı hazırlıyorsunuz ve mysql,pgsql, oracle gibi birden fazla adaptorünüz var. Bu adaptörlerdeki yapıların birbiri ile aynı olmasını istiyorsak burada interface devreye girecek. Veya Cache yapısı kuracaksınız; APC, memcache gibi cache yapıları kullanacaksınız ve yapılar aynı olacaksa interface kullanabilirsiniz. İnsan için interface tanımlayıp kadın erkek sınıflarını bu interfaceten türeterek cins ikisinde de cinsi iki sınıfada oldurmak istiyorsanı kullanabilirsiniz. Örnek çoğaltılabilir bankalar için sanal pos uygulamasında da kullanabilirsiniz vs.vs.

Özetle Bir projede birden fazla geliştiricinin olması gibi durumlarda standart yapının korunması amacı ile hazırlanır,bizim sınıfa bir standart getirmemizi sağlıyor. Yani o standartların dışına çıkamayacağımız bir sınıf yazmamızı sağlıyor. Ve  yapı dışında birşey yapılmak istenirse hata sistem hata verir.
Bu standartları koruma nasıl bir fayda sağlayacak derseniz, göz hatası olabilir, dalgınlık olabilir veya başkasının yazdığınız kodları değiştirmesini istemiyorsunuz, burada interface kullanmanız mantıklı olacaktır.
Büyük projelerde özellikle kullanılır.
Veya diyelim framework lerde DB sınıfı için hazırlanmış olan interface kullanılırki çekirdek kodlar bozulmadan kullanıcılar isterse kendi sınıflarını türetsinler, bu sayede sınıf sizi standartlarına uymaya zorlar.

Lafı daha fazla uzatmadan bir kaç örnek vermek istiyorum sizlere;

ilk örneğimde size mysql, mssql gibi farklı veritabanı yapıları ile bağlantı sağlayabileceğiniz bir örnek vereceğim..

interface DB { public function connect(); public function error(); public function errno(); public static function escape_string($string); public function query($query); public function fetch_array($result); public function fetch_row($result); public function fetch_assoc($result); public function fetch_object($result); public function num_rows($result); public function close(); }

Devamını Oku..

Kısaca SVN kullanımı ve Mac OS X 10.8 ile SVN Sorunu (Mountain Lion)

Standard

Mac osx 10.8 de SVN sorunu.. İlginç.. Snow Leopard bile değil, mountain lion ama yine de 10.8 versiyonunda svn bulunmamakta. İnsan başına gelince anlıyormuş 🙂 Bunun için size hızlı ve pratik şekilde kurulum işlemlerini anlatmak istiyorum. Tabi devamında svn ile repo çekmek, commit etmek vs. kısaca değineceğim..

Devamını Oku..