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

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