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

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