Çözüm Yolları ve Bakış Açısı
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.

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…
- Ya da bu blogda yer alan bütün yazıları içindekiler sayfasında görüntüleyebilirsiniz. Tıklayın!
Arama
E-Posta Aboneliği
RSS Aboneliği
En Çok Yorumlanan Yazılar
- Ajax ile dinamik listeleme (23)
- PHP ile sınırsız alt kategori mantığı (23)
- Blogger’da “devamını oku” bağlantısı (21)
- MySQL’de “join” kullanımı (17)
- MySQL’de Transaction ve PHP ile kullanımı (16)
- Kullanıcı dostu url hazırlamak (14)
- PHP’nin (muhtemelen) az bilinen 10 özelliği (12)
- Kullandığınız programlama dili ne kadar popüler? (12)
- Kullanıcı dostu URL oluşturma (2. teknik) (11)
- .htaccess konuları [Giriş] (11)
Etiketler
Son Yorumlar
- Murat: Güzel bir teknik, şu ana kadar sınırsız alt kategori lazım olmadı ama olmayacağı anlamına gelmiyor
- iilyas: Bu kodlar çalışmıyor arkadaşım. Localde olduğu içinmi acaba ?
- iilyas: Arkadaşım çok teşekkür ediyorum. Harika anlatmışsın ajaxla çalışmalara başlamak lazım estetik açısından.....
- Nuri: bende bu şekilde bir çalışma yaptım ancak bir sorunum var ne yaptıysam url den index.php bölümünü kaldıramadım....
- Kemal: Makale için çok teşekkürler, resimleri div tagları ile yapabilirmiyiz. Bu arada imagelara link verirsek daha...
25 / Nisan / 2009