30 Kasım Cuma ´12
Microsoft son dönemde güzel şeyler yapıyor. Windows 8 OS olarak eskilere göre daha çok gözüme girdi, gerçi hala herşeyi Apple'dan araklıyorlar (bknz: yeni Microsoft magazaları). Tabi düzenli kullanmadan birşey dememek lazım ama en azından tepkiler de benim fikirlerimle aynı doğrultuda.

IE'e edilmiş küfürün haddi hesabı yok kuşkusuz, Microsoft bunu güzel bir şekilde fırsata çevirmeyi başarmış. Şu video herkesin diline düşmüş durumda.


Video ile yayına alınmış web sitesi de şurada:http://browseryoulovedtohate.com
mod_rewrite sayesinde sayfalarımızın adreslerini istediğimiz formda gösterebiliyoruz (İlgili makale için:http://mfyz.com/htaccess-yardimiyla-tum-trafigi-te......n-yonetmek). Kullanımı çok yaygınlaşsa da bu kullanımın bazı ufak problemleri beraberinde getirdiği göz önünde bulundurulmalı.

Bu yazıda iki çok açık problemden ve basit çözümlerinden bahsedeceğim.

İlk problemlerden birisi sayfanızda kullandığınız tüm medya veya eklentilerin yollarını domain seviyesinden belirtmek durumunda olmanızdır. Eğer htmlinizi yazarken sayfanızdaki görselleri, stilleri, scriptleri bu şekilde tanımlamadıysanız tüm sayfalarınızdaki yolları güncellemeniz gerekiyor.

Basit bir örnekle, ana dizinde duran bir index.php veya html dosyanızın olduğunuz varsayalım ve images, css ve js olarak 3 medya dizininiz olsun. html'inizi kodlarken yolları su şekilde belirtmeniz dogal:
<html>
	<head>
		<title>Blah blah</title>
		<link rel="stylesheet" href="css/style.css" />
		<script src="js/myscript.js"></script>
	</head>
	<body>
		<div>
			<h1>Test page</h1>
			
			<img src="images/cat.jpg" alt="Cat" />
		</div>
	</body>
</html>
Eğer bu uygulmanızda bu sayfayı sunan kodu domain.com/about/license gibi, birden fazla derinlikte bir url ile sunduğunuz zaman, tarayıcınız o sayfa kodunun /about/ dizininde çalıştığını varsayarak medya dosyalarınızı /about/js/, /about/images/ gibi dizinlerde arayacaktır.

Çözümü ise basit. İki seçeneğiniz var bu noktada. Her medya yolunu belirtirkenhttp://domain/images/cat.jpg şeklinde tam yolu belirtebilirsiniz veya dosya/dizin yollarını belirtirken "/" işareti ile başlayarak domain seviyesinden itibaren işaret edeceksiniz yollarınızı yani yukarıdaki html kodunda her yol tanımlamasını "/" işareti ile başlayarak (ekleyerek) düzeltebilirsiniz.

Başında bir protokol ile belirtilmemiş her url domain üstündeki bir yolu ifade eder. "/" işareti ile başlayan yollar ise domain seviyesini işaret eder. Yani sadece "/" şeklinde tanımlanmış bir link aslında domain ana dizinini işaret eder. Ama bizim amacımız domain seviyesinden itibaren bir dizini işaretlemek, dolayısıyla /images/icons/plus.png gibi bir yol sızı nerede olursanız olur her zamanhttp://domain.com/images/icons/plus.png'yi işaret ederek istediğiniz dosyaya ulaştıracaktır.

Cookie Problemi

Bir diğer problem ise çerez (cookie) problemidir. Çerezlerin tarayıcıda kaydedildiğini hatırlamakta fayda var. Sunucu tarafında dahi çerez kaydetmek isteseniz o çerez aslında o isteğin cevabında gelen headerlar'da olacak ve tarayıcı istek cevabındaki değerlere göre çerezleri kaydedecek, silecek veya güncelleyecektir. Yani tarayıcının çerezleri yönettiğini bilmeniz gerekiyor, ayrıca çerezlerin dizin bağımlı olduklarını da belirtmek gerek. Yani bir çerezi /A/B/C dizininde iken ayarlarsanız bu çerez sadece C dizini ve alt dizinlerinden erişilebilir olacaktır. C dizinindeyken aryıca ana dizin, A ve B dizininde kaydedilmiş çerezlere de erişebilirsiniz. Tarayıcı, alt dizinlerdeki bir çereze erişimi bir üst dizinden veya paraleldeki bir dizinden vermez.

Bu durumda url'lerinizi klasör şeklinde ayarladıktan sonra uygulamanızda nerelerde çerez kaydediyor, siliyor veya güncelliyor olduğunuzu hatırlamanız ve güncellemeniz gerekiyor. Bu güncellemeyi hem javascript'deki cookie kullanımınız için hem de sunucu tarafındaki çerez kullanımınız için güncellemeniz gerekiyor. Sunucu tarafında bütün dillerde çok bilinen bir problem olduğu için yazdığınız sunucu taraflı dile ilişkin çerez methodlarını inceleyin. Ben kısaca php'de nasıl yapacağınızı anlatacağım.

Önce javascript ile çerez işlemlerinizi güncellemek için, normalde kullandığınız:
document.cookie = "";
koduna ek olarak "path=/" eklemeniz gerekecektir (tabi ki ; ayracını kullanarak diğer çerez cümlenize ekleyebilirsiniz.

Bu size karışık gelmiş olabilir çünkü javascript ile çerez yönetimini herhangi bir kütüphane kullanmadan yapmanın yolu bu. Ancak muhtemelen jquery veya en azından çerezlerinizi okumak, silmek veya kaydetmek için bir kütüpahne kullanıyor iseniz kullandığınız kütüpahenin "path" yani çerez dizinini belirtebileceğiniz bir yöntemi vardır, bu yöntemi uygulayarak tüm çerezlerinizi ana dizininizde ayarlamalısınız, böylece çerezleriniz her yerden erişilebilir hale geleceklerdir.

PHP'de bu problemi çözmek için tüm "setcookie" fonksiyonunun (name, value, expire) standart kullanımına 4. parametre olarak "/" yani dizin parametresi eklemeniz yeterli olacaktır. Bu noktadan sonra kaydettiğiniz tüm çerezler ana dizine kaydedilecek, böylece her yerden erişilebilir hale geleceklerdir.


Bu konu, daha teknik noktalarda başka problemleri de beraberinde getiriyor fakat url'lerinizi klasör şeklinde ayarladıktan sonra ilk karşılaşacağınız iki büyük problemden ve çözümünden kısaca bahsetmiş oldum.


Hazırlayan: Mehmet Fatih YILDIZ
"Yil 20XX olmuş hala IE ile uğraşıyoruz" diyeceğiz herhalde yıllar sonra da. Bu süreçte ie'ye tekmeyle de olsa html5'i en azından etiketleri tanıması için en basit çözüm olarak iki şey yapmanız gerekiyor.

Birincisi IE'nin dom ağacında html5 etiketlerine ait hiçbir initialization yok. Bunu tetiklemek için kullandığınız her html5 etiketi için en az bir tane element üretmeniz yetiyor. Sonrasında IE dökümandaki tüm elementleri dom ağacınızda tanımaya başlıyor. Bunun için:
<script type="text/javascript">
	elements = "article footer header nav sidebar section".split(' ');
	for (i in elements) { document.createElement(elements[i]); }
</script>
Tamam etiketler tanınır hale geldi ama daha büyük problem ise IE görsel olarak bu etiketlerle ne yapacağını bilemediği için default stillerini uyguluyor. Anlam veremeyeceğiniz marginler, değişik element türleri olarak bütün etiketler birbirine girmiş oluyor arayüzde. CSS ile tüm html5 etiketlerini blok element ayarlayıp basitçe resetlemek için:
section, header, nav, footer, article {
    display: block;
    padding: 0;
    margin: 0;
}
yapabilirsiniz. Bu sayede IEnin eski sürümleri 6,7,8 (emin değilim belki 9 da) html5i bir parça olsun tanır ve insan gibi gösterir hale gelebiliyor. Ama unutmayın daha birçok sorunu düzeltmeye çalışmak uğraşmak zorunda kalabilirsiniz.
27 Temmuz Çarşamba ´11   —   6 Yorum
Bir ay oncesinde siteyi duzeltme calismalarina girmistim biliyorsunuz, su an yapilan sey varolan koddan PEAR'i cikarip basit bir MVC yapisina sokmak. Baslangic olarak yaptigim sey tum on yuzu viewlara donusturup bir yandan controllerlar icin altyapi hazirlamakti ve son deployment ile bitirdim bu kismi. Su an tum site PHPTAL template yapisiyla PHPTAL motoru ustunde render ediliyor. Tabi ki gorsel hicbir farklilik yok kullanici acisindan fakat cok daha kolay yonetilebilir hale gelmis durumda onyuz.

Sirada eski modulleri kontrollere cevirmek var. Tabi bunu yaparken muhtemelen modellerimi de olusturmaya baslayacagim yavastan. Cunku kontroller duzgun bir dizin yapisina kavustuktan sonra modelleri duzeltmem adma etmem gerekecek. Tabi son asamada da veritabani manipulasyonu var, ki modeller bittikten sonra bunu yapmak cok kolaylasacak.

Sonuc olarak phptal template motorunu incelemenizi tavsiye ederim. Kesinlikle valid xhtml sintaksi yazmaya zorluyor programciyi, aksi halde sadece hata ciktilari alirsiniz. Sonda ortaya cikan htmller ise php kodu bulunmayan, tertemiz xml dokumanlari oluyor.

http://phptal.org/

Popüler Etiketler

facebook connect api box opengraph graph share social htaccess apache route router mod_rewrite doritos kampanya tytz wanda twitter bootstrap html css3 jquery mfyz design örnek kod javascript textarea object while blog css cache dokuman portfolio js linux konsol rss pharma hack php wordpress cookie subdomain optimization chart google grafik istatistik insanlar iphone mail signature imza media sosyal medya meta widget ios mobile development spam calendar tool digital login mysql session ui ux webkit form compile nedir coding wireless url assets mootools ajax xmlhttprequest web app open source auth http workspace tebrik ubuntu ntfs fstab radio style kitap lifestream parse xml network apple ipad itunes www redirect crossdomain less startups kurulum icon ikon download firefox banner logo newsletter link db code table server sql optimizasyon analyse procedure statistics date diff zaman tarih framework plugin kontrol yapıları if switch windows internet mdb2 pear injection iOS database service free cms html5 input sitemap seo ide editor phpstorm jetbrains deployment version control svn git prepare execute mssql pgsql proje button regex gimp terminal lisans player license compiler macosx app on-the-fly screen ipucu xhtml search select query integration howto nasıl app store store in-app purchase purchase subscription verification storekit itunes connect notebook laptop support generator internet explorer ruffles oyun job developer subversion applications language osx ie browser fql browsers export music icons