jQuery (ve diğerlerini) Google üzerinde barındırmak için 3 neden

Genelde jQuery (ve diğerleri de) framework’ünü kullanmak için aşağıdakine benzer bir kod bulunur.

<script type="text/javascript" src="/js/jQuery.min.js"></script>

Eğer yerel bir sunucuda çalışıyorsanız her şey iyi ve güzel. Ama bunun yanında halka açık bir web sunucusunda Google’ın ajax api’sini kullanmanın bazı avantajları var.

Düşük Gecikme (Latency) Süresi
Javascript Framework’ünüzü Google üzerinden kullanmanın en büyük avantajlarından biri Google’ın yüksek hızlı CDN’i sayesinde scriptlere global ve hızlı ulaşım. Bu durumda kullanıcılar dosyaları Google üzerinden sizin sunucunuzdan indirebileceklerinden daha hızlı indirebilirler.

Paralellik
Bazı Internet tarayıcıları sunucuları gereksiz yere meşgul etmemek için bir sunucya yapılan paralel istekleri sınırlarlar. Dolayısı ile framework’ü başka bir yerde barındırmak sunucunuz açıından en azından bir eksik istek demektir.

Daha iyi önbellek
Herhalde Ajax dosyları için Google’ın içerik teslim servisini kullanmanın en büyük avantajından biri de belki kullanıcının dosyaları indirmesine gerek kalmaması.
Bir ziyaretçi sizin sitenize ait olan jQuery dosyasını en azından bir kere (sunucu caching ayarlarına göre belki de daha fazla) yüklemek zorunda. Kullanıcının diskinde birbirinin aynısı bir çok jQuery kaynak dosyası olabilir. Buna rağmen her yeni site için bunları tekrar indirmek zorunda.

Öte yandan Google üzerinde barındırılan dosyalar için kaç site olursa olsun bunu sadece bir kere indirmiş olacak.
Bunun iki yolu var. Birisi Google Api’si kullanarak…

<script src="http://www.google.com/jsapi" type="text/javascript"></script>
<script type="text/javascript">// <![CDATA[
// bu arada 1.3 yazarsanız, 1.3'ün en son sürümünü
// yüklemiş olursunuz
google.load("jquery", "1.3.2");
google.setOnLoadCallback(function() {
//kod...
});
// ]]--> </script>

Diğer yöntem ise doğrudan dosyanın URL sini girerek.

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
</script><!--[CDATA[
$(document).ready(function() {
// kod...
});
// ]]>

Bu yazı anında Google aşağıdaki Javascript kütüphanelerini destekliyor…

  • jQuery
  • jQuery UI
  • Prototype
  • script_aculo_us
  • MooTools
  • Dojo
  • SWFObject
  • Yahoo! User Interface Library (YUI)
  • Ext Core

Daha detaylı bilgiye http://code.google.com/apis/ajaxlibs adresinden ulaşabilirsiniz.

PHP kütüphaneleri (PHP Frameworks)

Uzun süre uygulamalarımı geliştirmek için gerekenleri kendim yazdıktan sonra bir framework kullanmaya karar verdim.

İlk iş olarak varolan PHP frameworkleri arasında uygun olanı seçmek için bir araştırma yaptım. Kullanmaya karar vermeden önce özellikle bir kaç framework arasında kararsız kaldım. En sonunda ise CodeIgniter’i kullanmaya karar verdim.

Ruby on Rails’in spektaküler denilebilecek başarısından sonra MVC tabanlı PHP frameworkleri de oldukça yaygınlaştı. Bir framework kullanmanın bir çok faydası var. Bunların başında hızlı uygulama geliştirme, tekrar kullanabilen kod gibi şeyler. Framework kullanmak veya kullanmamak konusuna daha başka bir ara değinebiliriz.

PHP için bir framework aramaya çıktığınız zaman karşınıza bir sürü seçenek çıkacaktır. Dolayısı ile seç,m yapmakta zorlanabilirsiniz. Benim başıma geldi. Bu yazıda da bu konuda ki deneyimleri anlatmaya çalışıyorum.

CodeIgniter

CodeIgniter Flame Logo

CodeIgniter, MVC yapısını kullanan bir framework. CodeIgniter’ın en büyük özelliği hafif bir framework olması. Burada hafif derken özelliklerinden bhsetmiyorum. CodeIgniter gereken kütüphaneleri sadece kullanacağı zaman yüklüyor. Bahsedilen hafiflik bu. Bunun haricinde diğer frameworkler arasında en iyi performansa sahip olanlardan biri.

CodeIgniter’i kurmak ve çalışmaya başlamak oldukça kolay. Beş dakika içinde çalışan bir CodeIgniter’a sahip olabilirsiniz. Aynı zamanda CodeIgniter incelediğim frameworkler arasında öğrenilmesi (en azından benim için) en kolayı idi. Codegniter ile çok kısa bir zamanda uygulama geliştirmeye başlayabilirsiniz.

Eğer hala PHP4 kullanmak gibi bir mecburiyetiniz varsa da CodeIgniter PHP 4 ile çalışıyor.

Bunun dışında her açık kaynaklı projede olduğu gibi en önemli etkenlerden biri de topluluk yani ‘community’. CodeIgniter’ın yardımsever bir topluluğu var. Dökümantasyonu yeterli ve kolay anlaşılır. Dökümantasyonda bulamadıklarınıza ise forumdan kolayca yanıt bulabilirsiniz.

Zend Framework

Zend Framework Logo

Zend Framework, adından da anlaşılacağı gibi PHP’nin ‘babası’ Zend tarafından destekleniyor. İlk çıktığı zaman fazla bir sükse yapmayan ama giderek daha da yaygınlaşan bir framework. Sadece PHP 5 ile çalışıyor. Tamamen OO programlama mantığı üzerine kurulu. Arkasında bulunan Zend desteği ile özellikle büyük projeler düşünülürek yaratılmış bir framework olduğunu düşünüyorum. Öğrenme eğrisi CodeIgniter ile karşılaştırılınca ilk zamanda biraz daha dik görünse de çok zor değil. İlk uygulamanızı yapmak CodeIgniter’dan biraz daha zaman alabilir, beş dakika yerine yirmi dakika…

Zend Framework’un son derece detaylı bir dökümantasyonu var. Aynı zamanda hem Zend’in desteğine hem de kalabalık bir topluluğa sahip.

CakePHP

CakePHP Logo

CakePHP diğerlerine göre kullanımı biraz daha farklı olan bir framework. Kendine özgü bir yapısı ve işleyişi var. Bu yüzden öğrenmesi biraz daha uzun sürüyor. Ama CakePHP’nin oldukça fazla taraftarı var. CakePHP’nin kendine özgü yollarını öğrendiğiniz zaman neredeyse çok az PHP bilgisi ile uygulamalar oluşturabilirsiniz.

Bu arada CakePHP de PHP 4 desteği veriyor. Bu arada Internet’te baktığım kadarı ile hız testlerinde CakePHP diğer frameworklere göre açık farkla geride.

Beni CakePHP’den soğutan şey, öğrenme eğrisindeki dikliği, kendine özgü tavizsiz yapısı ve yavaşlığı oldu.

Diğerleri

Yukarıda saydığım bu üç framework PHP frameworkleri arasında en yaygın olanları. Bu yaygınlık kullanıcı tabanı ve aktif gelişimine bağlı. Ama bunun yanında bakmanızda fayda olabilecek başka kaliteli ve kullanışlı PHP frameworkleri de var. Aşağıda listeleyeceklerimi kurup denemedim ama uzun süre araştırdım. Bu araştırmaya göre aşağıda adı geçenlerde ciddi alternatifler arasında. Daha çok bilgisi olanların, denemiş olanların yorumlarını bekliyorum.

  • Symfony (Diğerlerine en ciddi alternatiflerden biri. Denemedim. Oldukça kaliteli bir yapısı ve azımsanmayacak bir topluluğu var.)
  • Seagull PHP Framework
  • Akelos PHP Framework
  • Kohana (CodeIgniter’in üzerine kurulmuş ama sadece PHP 5′in OO özelliklerini kullanarak yazılmış. Henüz CodeIgniter kadar olgun değil. Topluluğu o kadar fazla değil.)
  • Ez Components
  • Prado

Sonuç

Bu bilgiler ışığında CodeIgniter’da karar kaldım. Geliştirdiğim bir proje’de (www.mataraga.com) kullandım ve memnun kaldığımı söylemeliyim. Tekerleiğ tekrar keşfetmeme konusunda büyük bir faydası var.

Bunun haricinde Zend Framework’e dalmış durumdayım. Diğer bir projeyi de Zend Framework kullanarak tamamlamayı düşünüyorum. Belki o zaman ikisi ile ilgili bir karşılaştırma yazabilirim.

Not: Karşılaştırma demişken, şu adreste bazı PHP frameworklerinin bir karşılaştırması var. İlgilenenler buraya da bakabilir.

Türkçe Şehir Listesi metin ve SQL dosyası

Geçenlerde bir proje için Türkçe şehirlerin listesine ihtiyacım oldu. Her ne kadar bir çok yerde benzer veriler bulunsa da hiç biri hemen alınıp kullanılarak bir betik tarafından kullanılacak şekilde değildi.

En sonunda iş başa düştü. Şehir listesini daya kullanılabilir bir hale soktum. Eğer bir gün bir şehir listesine ihtiyacınız olursa işinize yarayabilir.

Türkçe Şehir Kodları (metin dosyası utf-8)

Türkçe Şehir Kodları SQL (SQL – utf8)

Metin dosyasını için örnek PHP betiği:

Bu dosya basit bir şekilde metin dosyasını okuyarak bir “select box” oluşturuyor.


<?php
$dosya = file('sehir_kodlari.txt');
echo "<select name='sehir'>";
foreach($dosya as $satir){
 list($sehir, $plaka) = explode(' ', $satir);
 echo "<option value='$plaka'>$sehir</option>";
}
echo "</select>";
?>

Php header() fonksiyonu ve utf-8

Dün akşam PHP’de bir uygulama geliştirmeye çalışırken başıma bir şey geldi. Çözene kadar saatler geçti. Başkasının da başına gelebilir diye buraya yazıyorum.

Türkçe karakter içeren uygulamalar geliştirirken dosylarımı UTF-8 olarak kaydediyorum. Böylece bir sürü yerde Türkçe problemi ile karşılaşmıyorum. Fakat görünen o ki header() fonksiyonu UTF-8′den hiç hoşlanmıyor.

Devamı için tıklayın

Örümcekleri yakalamak

Internet ÖrümcekleriBir blogunuz varsa ve/veya içerik üreten herhangi bir siteye sahipseniz bu siteniz büyük ihtimalle örümcekler (bot) tarafından ziyaret ediliyordur. Özellikle arama motorları sayfalarınız indekslemek için bu yöntemi kullanıyorlar. Örnek olarak Google’ın örümceği Googlebot periyodik olarak sitenizi ziyaret ediyordur. Bu aslında iyi bir şey. Bu örümceklere yardımcı olmak amacı ile de robots.txt adlı bir dosya kullanılır. Bu dosya kısaca hangi örümceklerin sitede nerelere girmeye ve neleri okumaya veya indekslemeye izinleri olduğunu belirtir. Genelde örümcekler bu sınırlamalara saygı gösterirler. Bütün büyük arama motorlarının örümcekleride bunlara dahil. (Sonradan öğrendim ki MSN hariç. Büyük süpriz!)

Fakat bir örümcek yazmanın çok da zor olmadığı bu zamanlarda etrafta bir sürü kötü huylu örümcek de dolaşıyor. Sitenize gelen bu kötü huylu örümceklerin nedeni büyük ihtimalle ya spam yorumlar ya da içeriğinizi çalmaktır. Ve tahmin edersiniz ki bu kötü örümcekler robots.txt dosyanızı pek takmazlar. Bu benim de başıma geldi hem suaygiri.com’da hem de kişisel sitemde yayınladığım içerikler başka yerlerde ortaya çıkıyordu. İlk önce bunun bir kopyala yapıştır sorunu olduğunu düşündüm. Olabilir de. Ama bazı siteler o kadar fazla çalıntı içeriğe sahip ki bunun sadece kopyala – yapıştır ile olması çok zor gibi gözüküyor. Daha sonra Internet’te content scraping (içerik kazımak) ilgili bir yazı ile karşılaştım. O zaman dank etti. :)

Ufak bir betik ile bu örümcekleri yakalayıp IP veya “user-agent” sınırlaması ile uzak tutmak mümkün olabilir. Burada bir örneği mevcut.

Çözümün devamı için tıklayın.