08 Ekim 2007 Pazartesi
05 Ekim 2007 Cuma
AJAX'ın avantajları ve dezavantajları
İyi teknolojiler zaman içerisinde, öngörülenin ötesinde yenilik ve kolaylık getirir. AJAX böyle bir 'teknoloji'dir. Bu yazıda, AJAX'ın tecrübeyle sabit bazı avantajlarından ve dezavantajlarından bahsedilecektir.
Avantajları
Kullanıcıların kullandıkları sayfaların gereksiz yere yenilenmesi, hem teknik birçok kodlamayı gerektirir hem de kullanıcı bundan pek hoşlanmaz. Geliştiriciler olarak, AJAX kullanarak bir çok kolaylık sağlayabiliriz hem kendimize hem kullanıcıya. İşte bazıları...
- Sunucunuz boşuna yorulmaz: Ekranda açık bir sayfayı görüntülemek için sunucunuzda bir çok işlem gerçekleşti. Bunların hepsini tekrar yaptırmanıza gerek yok. Sunucunuzu boşuna yormayın. Sunucuyla bilgi alış verişi yapmak istiyorsanız AJAX ile yapabilirsiniz.
- Submit'leri karşılayan kodlarınız sade ve basit olur: Formu yenilemek için "submit" edildiğinde, sunucudaki kodlarınız, "Kaydet" düğmesine basılmadığını, sadece sayfanın yenilendiğini tespit etmek zorundadır. Bu kodu her sayfaya koymak zorunda kalırsınız. Sayfayı yenilemeyin. AJAX kullanabilirsiniz.
- Doldurulmuş bir formdaki değerleri hatırlama derdinden kurtulun: Sayfayı yenilerseniz, kullanıcının girdiği bilgileri muhazafa etmeli, sayfa yüklendiğformdaki kutuları dolu getirmelisiniz. Dolu getirme kodları can sıkıdır. Sayfayı yenilemeyin. AJAX kullanabilirsiniz.
- Kullanıcı bekletilmez: Sayfanın yenilenmesi bazen uzun sürer. Kullanıcı beklemekten hoşlanmaz. Vereceği optional bilgi varsa bile vermekten vazgeçer. Sayfayı gereksiz yere yenilemeyin. AJAX kullanabilirsiniz.
- Bandwidth: Sayfa yenilendiğinde, sunucunuzun bandwidth'ini harcar. Ne kadar az sayfa yenilemesi olursa, sunucunuzun hattı o kadar rahat olur. Sayfayı gereksiz yere yenilemeyin. AJAX kullanabilirsiniz.
- Entegrasyon kolaylığı: AJAX ile hazırlanmış objeleri/nesneleri, uygulamanızdaki sıradışı sayfalara bile entegre etmek çok kolaydır. Hazırladığınız bir Yorum Yazma Formu'nu ele alalım... Bu formu Kitap Detay sayfasına ekleyebileceğiniz gibi, Haber Detay sayfasına da ekleyebilirsiniz. Şöyleki; Yorumu Gönder düğmesine basıldığında, AJAX kullanarak, formdaki bilgileri merkezî ortak bir "/comment/save.cfm" dosyasına gönderebilirsiniz. Sayfa yenilenmeden. Kitap Detay ve Haber Detay sayfalarında yorum mekanizmasıyla ilgili olarak neredeyse hiç kod yazmazsınız.
- Kullanıcıların kafası karışmaz: Formu kaydetmek için sayfayı yenilemezsiniz. Kullanıcıyı "save.cfm" sayfasına yönlendirmezsiniz. Yönlendirdiğiniz sayfadan nasıl geri dönülür uğraşmak zorunda kalmaz. Kullanıcı aynı sayfada kalmaya devam eder. Kullanıcıdan alacağınızı alırsınız. O da vereceğini verir. Sayfayı boşuna yenilemeyin. AJAX kullanabilirsiniz. Bu konuyla ilgili bir başka yazı: Sayfadaki bilgiyi değiştirmede yeni yaklaşımlar
- Aşamalı formlar hazırlamak kolaylaşır: Her ne kadar AJAX ile doğrudan ilgisi olmasa da, Javascript kullanarak, aşamalı Sihirbaz formlar hazırlayabilirsiniz. "İleri" düğmesine basıldığında, birinci formu gizler ikinci formu gösterirsiniz. Form henüz submit edilmediğinden, kullanıcı formu kapattığında, veritabanına "temp" kayıtlar kaydedilmemiş durumdadır. Mecbur kalmadıkça veritabanına böyle "temp" şeyleri kaydetmeyin. AJAX kullanabilirsiniz.
Dezavantajları
Her ne kadar iyi bir teknoloji olsa da, getirdiği yeni yaklaşımlardan dolayı bazı dezavantajları da olabilmektedir. İşte bunlardan bazıları...
- Kullanıcı deneyimlerinin kayıt altına alınması: Kullanıcılarınızın yazılımınızdaki deneyimlerini izliyorsanız, yaptıkları her tıklamadan haberdar olmak isterseniz. AJAX kullanılmış sayfalarda bu noktada bazı sıkıntılar çıkabilir. AJAX ile hazırlanmış düğme ve linklerde sayfa çoğu zaman yenilenmez. Adres satırı genelde değişmez. Bu nedenle, klasik teknik yöntemleri kullanırsanız, ziyaretçilerin tıklamalarını ölçemezsiniz. Bu sıkıntıyı ortadan kaldırmak için, AJAX kodlarınızda, bu tıklamaları ölçen teknikler kullanmalısınız. Kullanıcı deneyimlerini ölçmek için hangi aracı kullandığınız bu noktada önem kazanmaktadır. Eğer Google Analytics kullanıyorsanız, AJAX kullandığınız sayfalarınızı ölçebilirsiniz. Sıkıntı yaşamazsınız. Google'ın şu yazısı size yardımcı olacaktır: AJAX uygulamalarını nasıl izlerim?
- Sunucudaki bilgi güncellendiğinde ziyaretçinizin ekranını güncellemek: Klasik AJAX tek yönlüdür; kullanıcının tarayıcısı sunucuyu kontrol etmediği sürece, ekrandaki bilgi güncellenmez. AJAX'ın bu 'eksikliğini' 'gideren' 'Reverse AJAX' yaklaşımı incelemek isteyebilirsiniz: Reverse AJAX
- Teknik kadronun bu yeni teknolojiye adapte olması: AJAX yeni bir teknolojidir. Yararlanılması gereken bir teknoloji olduğu kesindir. Teknik kadrolar bu kadar hevesli olmayabilirler. Uygulama Sunucu teknolojiniz üzerinden kodlama yapan kadrolarınızın bu yeni teknolojiyi öğrenmesi zaman ve maliyet anlamına gelebilir.
- Atılan taş, ürkütülen kurbağaya değmeli: AJAX bir Javascript yan teknolojisidir. Klasik Javascript tek başına bile, uygulama altyapınızı karmaşıklaştırmaya yetebilir. AJAX kodlarınızın Javascript kodlarınızı daha çetrefilli hale getirmesine izin vermemelisiniz. Sağlamlığı ve kalitesi dünyaca kabul edilmiş AJAX Frameworkleri kullanabilirsiniz. Mümkün olduğu kadar, kullandığınız Uygulama Sunucu teknolojisinin önerdiği ve built-in sunduğu AJAX yetenekleriyle işlerinizi halletmeye çalışın. AJAX Framework ve Design Patternleri için bazı kaynaklar:
http://en.wikipedia.org/wiki/Ajax_framework
http://ajaxpatterns.org/
http://developer.yahoo.com/yui/ - Tarayıcının İleri-Geri düğmeleri: Kullanıcılar, bir linki tıklattıklarında, önceki sayfaya geri dönebilmek isterler. Yaptığınız AJAX kodlamasına bağlı olmak üzere, bu düğmeler bazen çalışmayabilir. Uygulamanızı kodlarken, İleri-Geri düğmelerinin sorunsuz çalışmasını sağlayın. AJAX sizin seçiminizdir. Kullanıcılara hiçbir dezavantaj getirmemelidir!
AUTHOR:
Esref Atak
0
yorum
YAZININ ADRESI
BÖLÜM: Geliştirim
04 Ekim 2007 Perşembe
ColdFusion 8'in getirdiği yenilikiler
Sunucu tarafı yazdırma (Server Side Printing): Ürününüz bu özelliği kullanırsa şu olur; müşterileriniz, bir raporu yazırmak için, artık kendi bilgisayarlarında ayar yapmak zorunda kalmazlar. Formunuzdaki "Yazdır" düğmesi tıklatıldığında, ColdFusion raporu yazıcıya direkt olarak yazdırır. Rutin yazdırma işlemlerini gece yarısı otomatik yapılması için schedule edebilirler.
Kod yazımında değişiklikler: Değişkenler üzerinde işlem yapmak için artık Javascript tarzı operatörleri kullanabilirsiniz:
a++
If a == 0
If a > 0
a = ["eşref", "atak"] //dizi
a = {ad="eşref", soyad="atak"} //structure
...
Etiketlerle ilgili değişiklikler:
<cfmail attributecollection="#mailattrs#">
<cfloop file="c:\simplefile.txt" index="line">
<cfdump var="#aquery#" show="colA,colB"> // OUTPUT=browserconsolefilename
<CFPROCPARAM DBVARNAME=""> //attribute geri geldi.
CFQUERY.Results.IDENTITYCOL //DBMS'lerden dönen auto-generated keyi artık öğrenebilirsiniz.
<cfdbinfo type="columns" datasource="exampleapps"
table="employees" name="columns"> //bir veritabanındaki tablo vs yapısını öğrenebilirsiniz.
<CFTRANSACTION action=“savepoint”>
<CFZIP> //yeni bir etiket
<CFLOCK Scope="Request"> //Multi thread uygulamalarda sorun çıkmaması için yeni bir özellik
<CFTHREAD> //yeni bir etiket
<CFPRINT> //yeni bir etiket
<CFFEED> //yeni bir etiket
<CFPRESENTATION> //yeni bir etiket
...
Application: Her uygulamada (<cfapplication>) aşağıdaki ayarlar ayrı ayrı yapılabilir:
Missing template handler
Custom Tag directory
Mapping
...
Template Cache temizleme: Belirli template'leri temizleyebilirsiniz ve başka birkaç yenilik daha.
Locale: Gerekebilecek birçok fonksiyona Locale parametresi eklendi.
Web Service: Birkaç iyileştirme.
Veritabanı: Dahili PostgreSQL, MySQL, DataDirect, Apache Derby... desteği.
Dosya işlemleri: Tarayıcıyla dosya yükleme özelliğinde performans iyileştirmeleri. Dosya işlemleri için birço yeni fonksiyon.
CFC:
Ciddi performans iyileştirmeleri. Yenilikler:
<cfset meta = getComponentMetaData("CFIDE.adminapi.runtime")> //instantiation yapmadan!
<cffunction name="OnMissingMethod">
<CFINTERFACE> //nesne yönelimli programlama ile ilgili olarak
...
AJAX: AJAX özellikleri:
<CFGRID>
<CFAjaxProxy>
<CFWINDOW>
<CFDIV>
<CFLAYOUT>
<CFPOD>
<CFINPUT Type=“autosuggest”>
PDF: PDF üretme özellikleri ve iyileştirmeler. <CFPDF>
Resim: Resim oluşturma ve işleme için etiket ve fonksiyonlar.
LiveCycle: LiveCycle Data Services
Flash: Flex/SWF üretme özellikleri.
Performans: Ciddi performans iyileştirmeleri.
Debugging: ColdFusion için artık bir IDE çıkabilir!
Sunucu ve Admin özellikleri: Server Monitoring, Admin API değişiklikleri, 64bit desteği (yalnızca Solaris üzerinde), ColdFusion Administrator'da onlarca iyileştirme ve yenilik.
...ve daha birçok yenilik içeriyor.
Not: Yeni özellikleri kullanırken iki kere düşünmelisiniz. Eski sürüm bir ColdFusion kullan müşterilerinizde, sayfalarınız çalışmayacaktır.
AUTHOR:
Esref Atak
0
yorum
YAZININ ADRESI
BÖLÜM: Geliştirim
23 Eylül 2007 Pazar
Büyük LDF dosyaları ve SQL Server 2005'te shrink ile küçültme
LDF dosyaları zaman içerisinde çok büyür. Büyümüş LDF dosyalarını küçültmek için SQL Server 2005'te başarılı bir işlev var.
Not: 2005 istemcisi ile bu işlemleri 2000 veritabanında uyguladığınızda, umduğunuzu alamayabilirsiniz.
Kullanımı:
İşlem:
AUTHOR:
Esref Atak
0
yorum
YAZININ ADRESI
BÖLÜM: Veritabanı
TCP/IP katmanıyla sunucu kümeleme (cluster)
Sitenizin %99.9 ayakta (uptime) olmasını istiyorsanız, hesaba katmanız gereken birçok unsur vardır. İnternet'in işleyişini bilmelisiniz. Yayını engelleyebilecek tüm olasılıkları hesaba katmalısınız. Makalemiz, işte bu noktada ağ sorunlarının neden olduğu kesintiler önlemek için alternatif yapılar önerecektir.
Sitenizin adresine "ping atarsanız" sunucunuzun IP adresi döner. Bu bir IP adresinin anlamı şudur; o sunucu makine sizin için çok önemlidir hatta ona bağımlısınız. Müşterileriniz o sunucudan hizmet alamazsa, siteniz yayına ara vermiş olur. Bir makineye bağımlılığı önlemek amacıyla, web sitenize birden fazla IP ve makine tahsis edebilirsiniz. Böylece, makinelerinizden biri hizmet veremez hale gelse bile diğerleri sitenizi ayakta tutar. Bu yönteme, bilindik tabirle "kümeleme" (cluster) denir. Kümeleme, genellikle yük dengelemesi yapmak amacıyla tercih edilir. Aynı zaman, bir makineye bağımlılığı azaltması yönüyle de tercih edilmektedir. Aşağıda, WWW sunucularında kümelemenin kullanılmadığı klasik bir yapı görülmektedir:

Yukarıda görülen yapıda, HTTP sunucusu hizmet veremez durumda olduğunda, site yayına ara vermek zorunda kalır. Müşterileriniz sitenize ulaşamaz.
Aşağıdaki örnek yapıda, TCP katmanıyla kümeleme uygulanmıştır. Web sitesi için hizmet veren sunuculardan her birinin farklı bir IP adresi vardır. Bir sunucu hizmet veremezse, tüketiciler birkaç dakika içerisinde diğerine yönlenir.

Yukarıda görülen yapıda, web sitenizin 3 farklı IP adresi mevcut. Bu adresler, DNS sunucusunda ayarlanmış durumdadır. DNS sunucusunda "www" "A" kayıtları aşağıda örneklenmektedir:

Görüldüğü üzere, "www" kaydı için 3 farklı IP atanmış durumda. Müşterilerinizin bilgisayarları, bu IP'lerden herhangi birine başvuracaktır. Cookie'ler ve Session Sunucusu sayesinde, session'lar sorunsuz işleyecektir. WWW sunucularınız da artık kümelenmiş ve yük dengelemesi yapılmıştır.
TCP katmanıyla kümelemenin yapıldığı bu yeni yapı sayesinde, ayakta kalma oranı epey yükseldi. Ama hala bir risk var; sunucularınız fiziksel olarak aynı mevkide. Mevkiye bağımlı haldesiniz...
Sunucularınızın bulunduğu mevki, internete Telekom kabloları ile bağlı. Telekom'dan kaynaklanan bir nedenle sunucularınızın interneti kesilirse, web siteniz müşterilerinize hizmet ulaştıramaz. Bu olasılığı elemek için, sunucularınızı ülkenin dört bir yanına dağıtabilirsiniz (distributing). Mevkilerinizden birinin internet bağantısı kesildiğinde, diğer mevkileriniz hizmetinizi ayakta tutar:
AUTHOR:
Esref Atak
0
yorum
YAZININ ADRESI
BÖLÜM: Ağ ve Sistem
