Başlangıç > Nuh Gönültaş > websitemi hızlandıracak ve kod İyileştirecek 15 İpucu

websitemi hızlandıracak ve kod İyileştirecek 15 İpucu

 

 

\

bir süre kodlama yaptıktan sonra artık kendinizi tekrar etmeye başlar, aslında ne kadar zeki olduğunuzu unutursunuz. kaç yüz tane klavye kısayolunu hafızamızda tutuyoruz? kaç tane kodlama dili öğrendik? kaç tane çatı? kaç tane hile? web geliştirme/tasarım dünyasının zor bir endüstri olduğunu söylemek, işin kolayına kaçmak olur. ayrıca bugün bildiğimiz şeylerin pek çoğu, birkaç yıl sonra artık kullanılmayan teknolojiler listesindeki yerini alacaktır.

bugünkü yazımızda özellikle giriş seviyesindeki geliştiricilerin geliştirmek için harcadığı süreyi kısaltacak ve daha verimli şekilde kodlama yapabilmelerini sağlayacak bir dizi ipucunu bulacaksınız. i̇puçlarının arasında zaman kazandıran ipuçlarının yanısıra bazı özel programlama dillerine özgü ipuçları sayesinde web uygulamalarınızın verimliliğini de arttırabileceksiniz

görsellerinizi daha fazla sıkıştrın

\

photoshop üzerinde “save for web” (web i̇çin kaydet) aracını kulandığınız zaman, görsellerinizi sıkıştırarak dosya boyutunu indirgeyebilirsiniz. ancak ilgili dosyaların kalitesinden ödün vermeden daha da fazla sıkıştırabileceğinizi biliyor muydunuz?smush.it adındaki bu site sizler için bu işlemi hallediyor.

peki bu nasıl mümkün olabiliyor?

 

 

smush.it ekibi bunun için bir dizi araç kullanıyor:

  • görselin biçimini algılamak ve onu gif ya da png’ye dönüştürmek için imagemagick,
  • pnglerin gerekli olmayan bölümlerni kaldırmak için pngcrush. site ayrıca daha da iyi png optimizasyonu için pngout, optipng, pngrewrite gibi diğer araçları da inceliyor,
  • jpeglerdeki tüm meta verilerini kaldırmak ve progresif jpegler oluşturmak için jpegtran (şimdilik etkin değil),
  • gif animasyonlarını, farklı çerçevelerdeki tekrar eden pikselleri kaldırmak için gifsicle.

bu yüzden yeni bir sitenin duyurusunu yapmadan önce, sitenizin url’sini smush.it’e girerek tüm görsellerinizin otomatik olarak optimize edilmesini sağlayablirsiniz. eğer site, görsellerinizi optimize ederek kalitesinden ödün vermeden dosya boyutunu önemli ölçüde düşürebilirse (ki büyük ihtimalle sonuç bu olacaktır), o zaman sitenizde kullandığınız görselleri smush.it’in verdikleri ile değiştirebili ve gerekirse html ve css dosyalarınızı da güncelleyebilirsiniz. hazır görsel dosya biçimlerinden bahsediyorken, dosyalarınızı png biçiminde kaydetmek her zaman en doğrusu olacaktır. artık demode olan animasyonlu gif görselleri kullanmadığınız sürece png biçimini kullanmayı alışkanlık haline getirin.

akıllı olun. kod parçacıkları kullanın.

\

pek çok ide, “code snippet” (kod parçacığı) panelini destekler ve bu paneller aracılığı ile özellikle sık sık kullandığınız kod parçacıklarını kategoriler altında depolayabilirsiniz. sırf müşterinize tasarımın nasıl olacağını göstermek için her seferinde lipsum.com web sitesini ziyaret ederken mi buluyorsunuz? bunun yerine neden birkaç paragraflık lorem ipsum metnini kod parçacığı olarak kaydetmeyesiniz ki? örneğin dreamweaver uygulamasında “shift f9” klavye tuş kombinasyonunu kullanarak kod parçacığı sekmesini açabilirsiniz. ardından sizin için uygulan olan kod parçacığını yine sizin için uygun olan yere sürükleyip bırakabilirsiniz. bu özellik kod yazarken bana çok fazla zaman kazandırıyor.

console.log() hata ayıklamasını kullanın

\

jquery kütüphanesini indirdiniz ve sözdizimini anlamak için çabalıyorsunuz. bu sırada bir yerde takıldığınız ve $bilmemne değişkenin neye eşit olduğunu bilmiyorsunuz. sorun değil, tek yapmanız gereken console.log($degiskenadi); kodunu eklemeniz.

ardından firefox’u çalıştırın (firebug eklentisinin kurulu olduğundan emin olun) ve f12’ye basın. doğru değişken değeri ile karşılaşacaksınız.

şimdi ise bunu sonsuzlukla çarpın ve zamanın derinliklerine götürün. bunun sonucunda bile firebug ve console.log()’un ne kadar kullanışlı olduğunu fark edemeyeceksiniz 🙂

web geliştirici araç çubuğunu i̇ndiri

\

chris pederick tarafından geliştirilen bu inanılmaz derecede yardımcı firefox eklentisi size sayısız seçenek kuluyor. bu eklenti sayesinde sitenizdeki css dosyalarını eşzamanlı olarak düzenleyebilmeniz mümkün. eklentinin desteklediği diğer özellikler ise:

  • javascript’i kolayca etkisizleştirmek,
  • css’yi kolayca etkisizleştirmek,
  • hızlı html / css doğrulama bağlantıları,
  • cetveller,
  • çerezleri etkisizleştirme,
  • ve daha sayısız kullanışlı özellik.

web developer toolbar eklentisi, her web geliştiricisinin firebug ile birlikte kullanması gereken bir eklenti.

betik etiketlerini alta yerleştirmeyi deneyin

\

günümüzde kullandığımız pek çok tarayıcı, aynı sunucu adı üzerinden eş zamanlı olarak en fazla iki adet dosyayı indirebilir. ancak bir betik indirirken diğer dosyaların indirilebilmesi için önce betiğin tamamen indirilmiş olması gerekir.

bu yüzden mümkün olduğu kadar betiklerinizi çağıran bu kodları belgenizin sonuna eklerseniz, görseller ve css gibi diğer bileşenlerin önce indirilip sitenizin görüntülenebilmesini, ardından da son olarak bu betiklerin indirilebilmesini sağlayabilirsiniz.

unutmayın, bu yöntem kullandığınız betiğin işlevine göre kullanılabilir ya da kullanılamayabilir. bu sebeple betik kodlarınızı belgenizin alt kısmına taşıdıktan sonra sitenizi test etmeyi unutmayın.

yayım yaparken, css ve javascript dosyalarınızı sıkıştırın

\

eğer performans, web siteniz için önemli ise, o zaman sitenizi yayımlamadan hemen önce css ve javascript kodlarınızı sıkıştırmanızı öneririm. bunu geliştirme işinizin en başından itibaren yapmaya kalkışmayın zira bunun size yarardan çok zararı dokunur. ancak kodlamayı bitirdikten sonra kodunuzu sıkıştırabilirsiniz.

javascript sıkıştırma servisleri

css sıkıştırma servisleri

javascript kodlarını paketlemek için kullanabileceğiniz diğer iki servis ise yui compressor ve jsmin.

bnun yanısıra html kodlarınızı da sıkıştırmayı deneyebilirsiniz, ancak bunu önermem. html dosyalarınızı sıkıştırarak kazanacağınız dosya boyutu gerçekten çok az.

jquery kolay ve hızlı i̇puçlar

\

kısa bir süre önce tvdesign.co.uk‘den jon hobbs-smith, 25 jquery ipucunu listelediği mükemmel bir makale yazmıştı. bu sayfayı yer imlerinize eklemeyi ihmal etmeyin. i̇şte bu yazıdan benim en beğendiğim birkaç ipucu

jquery’de bir elementin olup olmadığını kontrol etmek

if ($('#mydiv).length) {
// bu kod sadece #mydiv id'sinin bulunduğu zaman çalışacaktır.
}

kontekst kullanın

pek çok insan, dom elementlerine erişirken, jquery’nin ikinci bir parametreyi kabul ettiğinin farkında değildir. aşağıdaki koda bir bakın.

var myelement = $('#someelement');

bu kod, jquery’nin tüm dom’u geçmesini gerektirir. bunun yerine ikinci bir parametre ekleyerek hızı oldukça arttırabiliriz.

var myelement = $('#someelement', $('.somecontainer'));

yukarıdaki kodda jquery’e, .somecontainer elementi içerisinde arama yapmasını ve onun dışındakileri dikkate almamasını söylüyoruz.

sınıflar yerine idler kullanın

jquery ile idlere erişirken, kütüphane bilinen getelementbyidyöntemini kullanır. ancak sınıflara erişirken jquery, dom’u geçebilmek için kendine özgü yöntemleri kullanmayı dener, zira getelementbyclass diye bir yöntem yoktur. sonuç olarak, id yerine sınıf kullanmanız durumunda işlem biraz daha uzayacaktır.

$_post yerine mümkünse $_get kullanın

\

eğer ajax istekleri yaparken $_get ve $_post arasında bir seçim yapma şansınız varsa, $_get kullanın.

yahoo! mail ekibi, xmlhttprequest kullanırken, post’un tarayıcılar üzerinde iki işleme neden olduğunu görmüştür. post, ilk olarak başlıkları, ardından da verinin kendisini göndermektedir. bunun yerine get kullanmanız durumunda, eğer çok fazla çereziniz yoksa, sadece bir tcp paketi gönderilmektedir.

unutmayın – $_get verisini her zaman kullanamazsınız. ilk olarak ne yaptığınızdan emin olun ve querystring ile veritabanı erişimini hiçbir zaman karıştırmamanız gerektiğini unutmayın. kısa bir süre önce twitter arkadaşlarımdan bir tanesi, bana url’sinde bir mysql sözdizimi olan bir web sitesi gönderdi. bunu asla yapmayın!

pratik olduğunda kütüphaneleri ve çatıları kullanın

\

i̇ster php kullanın ister asp.net, mootools ya da jquery, ya da tüm bunların bir birleşimi, uygun olduğu zamanlarda çatıları kullanmayı deneyin

örneğin:

  • eğer basit bir statik web sitesi kullanıyorsam sadece fare imlecini bir elementin üzerine getirdiğimde bir efektin belirmesini istiyorsam, bunun için jquery kütüphanesini kullanmam doğru olmaz.
  • eğer statik web sitemin en karmaşık özelliği bir xml dosyası üzerinden veri almak ise bunun için bir çatı kullanmama gerek yok. bu gibi durumlarda sitem hem daha yavaş çalışacak, hem de daha fazla bant genişliği kullanacağı için bana daha pahalıya malolacak.

ancak eğer tam bir içerik yönetim sistemi ve karmaşık veri erişim yöntemlerini gerektiren bir web sitesi geliştiriyorsam, o zaman beğendiğim çatılara bir göz atmayı ihmal etmem.

unutmayın – çatıların sizin için çalışmasını sağlayın, tam tersini değil. bu kararları verirken zeki olun.

yslow

\

yslow, web sitenizi inceleyip onun mümkün olan en verimli şekilde çalışıp çalışmadığını kontrol eden ve size öneriler sunabilen mükemmel bir servis. yahoo! geliştirme ekibi, kısa bir süre önce, web uygulamaları geliştirirken takip etmeniz gereken öğelerin yer aldığı bir kılavuz yayımlamıştı.

ayrıca dilerseniz yslow screencastı‘na bir göz atarak bu zaman kazandırıcı ipuçlarının neler olduğunu görebilirsiniz. vaktiniz olduğunda kesinlikle izlemenizi öneririm.

\

klavye kısayolları. öğrenin!

\

pek çok deneyimli tasarımcılar ve geliştiriciler burada bana katılacaktır, eğer sitemde ya da tasarımımda ne zaman bir değişiklik yapmak istesem elimi fareye uzatıp araç çubuğuna gitmiş olsaydım, çok zaman kaybetmiş olurdum. klavye kısayollarını o kadar uzun zamandan beri kullanıyorum ki artık bu kısayolların işlevlerin hangi araç çubuğu ya da hangi menü altında olduğunu unuttum diyebilirim. tek bildiğim, “shift x”in doğru paneli açtığıdır.

i̇şe yeni başladığınızda bu kısayolları öğrenmek size zaman kaybı gibi görünebilir. ancak sizi temin ederim ki yanılıyorsunuz. size google üzerinde “x keyboard shortcuts” (x klavye araması) (burada x kullandığınız yazılımın adını temsil ediyor, örneğin photoshop için “photoshop keyboard shortcuts”) araması yapmanız. ardınan bulduğuğnuz tablonun yazıcıdan çıktısını alın ve bilgisayarınızın yanına koyun. ondan sonraki birkaç haftalık süre içerisinde fareye mümkün olduğu kadar az dokunarak bu kısayollar üzerinde pratik yapmayı deneyin. klaye kısayollarını bilmek, uzman kullanıcılar ile giriş seviyesindeki kullanıcıları birbirinden ayıran belki de en önemli etkenlerden biridir

yeni web sitesi şablonu oluşturun

\

i̇tiraf edin, her web sitesi gelişmiş ve karmaşık uygulamalar gerektirmez. bazen, hatta belki de kimileri için çoğu zaman, sadece bugüne kadar yaptığımız işlerin yer aldığı bir web sitesini göstermek isteyebiliriz. o zaman bu gibi durumlarda kullanabilmek için her yeni bir web sitesi oluşturacağımızda kullanacağımız bir web sitesi “şablonu” oluşturmayalım

“template” klasörümün içerisine “js” ve “css” klasörlerini yerleştirdim.

  • “js” klasörüm, dd_belatedpng.js dosyasını içeriyor (bu dosya, ie6’de pnglere 24 bit saydamlık desteği getiriyor).
  • “css” klasörümde ise içi boş “default.css” dosyamın yanısıra benim hazırladığım sıfırlama dosyası yer alıyor.

bunun yanısıra index.html(php) dosyamın içerisinde de projelerimin pek çoğunda kullanacağım birkaç kod parçası yer alıyor. bu kod öyle aman aman özel bir kod değil ancak bunu önceden hazırlamak size zaman kazandıracaktır.

yukarıdaki kodda da göreceğinz üzere önce css ve javascript dosyalarıma bağlantı verdim ve ardından google jquery dosyasına da bağlantıyı ekledim. son olarak document.ready() jquery fonksiyonunu oluşturdum ve standart “container” divimi açtım.

bu kod her ne kadar basit görünse de inanın size zaman kazandıracaktır. bu sayede ne zaman yeni bir web sitesi oluşturmanız gerekirse, o zaman tek yapmanız gereken “template” klasörünün içerisindeki bu dosyaları kopyalamaktır.

satıriçi ve harici karşı karşıya

\

genelde tüm css ve javascript dosyalarınız sayfadan çıkarılmalı ve kendi harici dosyalarında korunmalıdırlar.

bunu neden yapmalıyız?

  • daha temiz kod,
  • sunumun ve içeriğin birbirinden ayrılması önemlidir,
  • harici dosyalar kullanarak onları istemcinin sisteminde depolamış oluyoruz. bu, html dosya boyutunu düşürmenin yanısıra harica http isteğine de yol açmıyor, zira ziyaretçi ya da istemci ilgili dosyayı ilk kez istediğinde depoluyor ve sonraki seferlerde aynı dosyayı indirmiyor.

eğer sadece birkaç satırlık stiliniz var ise o zaman onun için harici dosya oluşturmayabilirsiniz. bu gibi durumlarda, ama sadece bu gibi durumlarda, ilgili kodu html içerisine gömebilirsiniz.

php betiğinin javascript i̇le çağırılıp çağırılmadığını kontrol edi

\

ajax aldı başını gidiyor, özellikle en sonunda, javascript kütüphaneleri sağolsun, kullanıcı dostu hale geliyor. bazı durumlarda betiğin javascript ile mi çağırılıp çağırılmadığını belirlemeniz gerekebilir. bu görevi yerine getirmek için kullanabileceğiniz birkaç yöntem bulunmaktador.

bunlardan birisi post’u gönderirken javascript’iniz ile özgün bir anahtar değerini javascript’inize iliştirmektir. ardından php kullanarak bu anahtarın varolup olmadığını kontrol edebilirsiniz. eğer var ise, o zaman javascript etkin olduğunu anlarız.

daha iyi bir yöntem olarak php’nin http_x_requested_withözelliğini kullanmaktır. şöyle ki…

if isset($_server['http_x_requested_with']) {
// kodunuzu buraya yazın ve javascript'in etkin olduğundan emin olun
} else {
// javascript'in etkin olmadığı kullanıcılar için birleyler yapın. 
}

google cdn’ye bağlantı verin

\

kısa bir süre önce google jquery gibi popüler betikleri kendi sunucularında depolamaya başladı. eğer bu tip kütüphanelerden birisini kullanıyorsanız, o zaman ilgili betiği kendi sunucunuzda depolamaktansa bu betikleri google cdn üzerinden çağırmanız şiddetle önerilir.

peki ama neden?

  • caching (depolama): bu tip betikleri google cdn üzerinden çağıran web sitelerinin sayısı gün geçtikçe artmaktadır. bu sebeple eğer siz de ilgili dosyayı google sunucusu üzerinden çağırırsanız, ziyaretçiniz muhtemelen o dosyayı sizin siteniz üzerinden indirmeyecektir, zira bir başka site üzerinden aynı dosyayı daha önce indirmiş olabilir. i̇lgili dosyayı daha önce indirmiş bir ziyaretçi sizin sitenizi ziyaret ettiğinde istemci, google sunucularından 304 (değiştirilmemiş) mesajı alacak, bu sebeple de o dosyayı doğrudan istemcinin yerel bilgisayarı üzerinden kullanacaktır. bunun sonucunda da sizin web uygulamanız kullanıcıya daha çabuk açılacaktır
  • eş zamanlılığı arttırın: daha önceki bir ipucunda bundan bahsettim. bu fazladan dosya isteğini kaldırarak istemcinin daha fazla içeriği eş zamanlı olarak indirebilmesini sağlamış olursunuz.

firefox eklentilerini kullanın

\

ben google chrome’nin büyük bir fanatiğiyim. çok hızlı açılıyor ve javascript’i diğer tüm tarayıcılardan daha hızlı çalıştırıyor (firefox’un henüz yayımlanmamış 3.1/3.5 sürümü sanırım chrome’nin hızını yakalayacak).

buna rağmen bu, firefox’u kısa bir süre içerisinde bırakacağım anlamına gelmiyor. bu tarayıcın için sunulan bazı kullanışlı eklentiler gerçekten büyüleyici. i̇şte benim beğendiklerim

\

yardımcı olduğunda ide kullanın

\

tıpkı günümüzde microsoft’tan nefret etmek ne kadar moda ise, geliştirme yaparken ide kullananlara saldırmak ta o kadar moda. bu gerçekten çok saçma.

pek çok durumda, gelişmiş bir ide kullanımı çok önemlidir, özellikle nesne yönelimli programlama (oop) dilleri üzerinde çalışırken. şimdi, eğer sadece sade bir html şablonu oluşturuyorsanız, o zaman notepad++ ya da coda/ sizin için mükemmel bir araç olacaktır. aslında, bu araçların kullanımını bu gibi durumlarda öneririm. i̇htiyacınız olmadığında bu tip programları kullanarak işinizi daha da zorlaştırmayın. ancak, gelişmiş uygulamalar geliştirirken, ide’nin avantajlarından da faydalanın

hepsi bu kadar!

sanırım şimdilik bu kadar yeterli. umarım bunlardan bazıları (belki de hepsi) sizi daha iyi birer tasarımcı ya da geliştirici kılmaya yardımcı olacaktır. sizin beğendiğiniz kısayollar hangileri? yorumlarınızla paylaşın.

Reklamlar
Kategoriler:Nuh Gönültaş
  1. Henüz yorum yapılmamış.
  1. No trackbacks yet.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s

%d blogcu bunu beğendi: