Çözüm Yolları ve Bakış Açısı

Date25 / Nisan / 2009 Author İsa Engiz    Category Genel     Tags YorumlarHenuz Yorum Yapilmamis.

Bir sorunla karşılaştığımızda hedefimiz bellidir, bu sorunu en kısa yoldan çözmek. Veya bazen en “akılcı” yoldan çözmek de olabilir eğer en kısa yol makul olarak kabul ettiğimiz sınırlar içerisinde değilse.

bakis-acisi

Sorunumuzu tam olarak belirledikten sonra çözüm için çalışmaya başlarız, tasarladığımız cevapları soruna uygularız ve hedefimize ulaşıp ulaşmadığımızı değerlendiririz.

Ancak çözüm yolları arayışında probleme bakış açımız o kadar önemlidir ki, bazen bakış açımızı değiştirmediğimiz sürece en basit problemlerin bile altından kalkamayabiliriz. Benim yaşadığım ve bu yazıyı da yazmama vesile olan basit bir örnek ile bu duruma bir örnek vermek istiyorum.

Son günlerde üzerinde çalıştığım sunucuya dosya yükleme sınıfını geliştirirken bir problemle karşılaştım. Problem şöyle; kullanıcı, dosyayı yükleyeceği dizinin ismini belirtirken sonuna bir slash “/” işareti koymak zorunda. Koymazsa program çalışmıyor. Slash işaretini kullanmadığı durumda da programın çalışması için basit bir şey yapılabilir:

if(if($hedef[strlen($hedef) - 1] != '/')) {
    //degerin sonuna slash karakteri eklenecek.
} else {
    //program normal olarak çalışacak...
}

$hedef değişkeninin son karakterinin ‘/’ olup olmadığını kontrol edeceğiz, değilse sonuna bir ‘/’ karakteri ekleyeceğiz.

İşte bakış açısı burada devreye giriyor. Başlarken $hedef değişkenini array olarak ele alıp son karakterini kontrol ettim, dolayısıyla devamında $hedef değişkenini devamlı array olarak düşünüp ona göre işlem yapmaya çalıştım. Bir kaç denemeden sonra şöyle bir fonksiyon algoritması tasarladım:

  • fonksiyon, kendisine gelen stringi array yapsın.
  • Daha sonra bu değişkenin sonuna istediğimiz kadar karakteri for döngüsü ile yerleştirelim.
  • Sonunda oluşturduğumuz arrayi stringe dönüştürelim

Probleme bakış açım öylesine sabitti ki, aşağıdaki fonksiyonu yazarak problemi çözmem yaklaşık 1 saat sürdü. Lütfen fonksiyonu dikkatlice inceleyelim:

function _sonaKarakterEkle($yazi, $karakter)
{
	$yazi = str_split($yazi); //string -> array
	for($i == 0; $i<strlen($yazi); $i++) {
		array_push($yazi, $karakter[$i]); //son karakteri ekle
	}
	$yazi = implode('', $yazi); //array -> string
 
	return $yazi;
}

Problemi tekrar hatırlayalım, $hedef değişkeninin sonua bir / karakteri ekleyecektik. Probleme bakış açım beni bu fonksiyonu yazmaya sürükledi.

Ama bundan daha inanılmazı, fonksiyonu yazdıktan sonra daha “basit” bir çözümü hatırlamam ile ortaya çıktı. Problemi çözmek için gereken sadece şu satır idi:

$yazi . $karakter

Sadece ‘.’ (nokta) karakteri ile iki değişken değerini birleştirebilirsiniz, ya da daha açık olursak, iki string değerini sadece nokta ile birleştirebilirsiniz!

Probleme bakış açım öylesine sabitti ki, 1 saate yakın bir süre boyunca aklıma dahi gelmedi! Üstelik o kadar sık kullanmama rağmen…

Kıssadan hisse; bir problem çözümü ile uğraştığınızda (bu problem yazılımla da ilgili olabilir, başka bir konuda da) olabildiğince farklı bakış açılarına sahip olmaya çalışın. Farklı açılardan bakamıyorsanız, biraz ara verin, bir kahve için sonra kafanızı toplayıp tekrar bakın. Yüksek olasılıkla daha kolay bir yol vardır, sadece siz göremiyorsunuzdur…

- Bu blogda yer alan yazıları RSS ile takip edebilirsiniz. RSS aboneliği için tıklayın.

- Ya da bu blogda yer alan bütün yazıları içindekiler sayfasında görüntüleyebilirsiniz. Tıklayın!

görüşünü belirt

Spam Protection by WP-SpamFree

Arama


E-Posta Aboneliği


RSS Aboneliği

En Çok Yorumlanan Yazılar

Etiketler

404 ajax apache arama butonu as astrofizik açık kaynak banner blogger blogger/blogspot Blogger / Blogspot blogspot case chmod css date dosya yükleme editör etiket etkinlik favicon featured form ftp galeri Genel gimp hata sayfası header htaccess htpasswd ilişkisel veritabanı index innodb javascript join JQuery kategori koodla linux mysql opacity php resim url

Son Yorumlar

  • isa engiz: Yazı için teşekkürler. sabit ip 2.75 tl. bu ücreti verip kendi web sunucumuzu kurabiliriz… En yakın...
  • osman: Yazı için teşekkürler. Pardus projesinin Türkiye için çok önemli olduğunu düşünüyorum. Ancak yazıda da...
  • Mustinet: siblings kullanarak da yazılabilir. Teşekkürler
  • is: CSS kullanmadan sadece HTML kodlarıyla yanyana iki sütun (tablo kullanmadan) oluşturulabilir mi?
  • Doğan Yılmaz: verdiğiniz bilgiler için çok ama çok teşekkür ederim. artık sıkı bir takipçiniz olmaya karar verdim

Sayfalar


Faydalı Bağlantılar