Ay Bazında İçerikler: October 2010

Oct 8 2010

Cftry ve Cfcatch KULLANIMI

Cftry tagı, cfcatch tagı ile birlikte kullanılır.  Kullanımında birden fazla cfcatch tagı içerebilir.  Cftry tagı, coldfusion sayfası içinde yazdığımız bir kodun, yanlış olabilmesi durumunda istisna fırlatır. Yani ;

<cfset a=#form.number1#>
<cfset b=#form.number2#>
<cfset c=a/b>


Kodları, formdaki textboxlara sıfırdan farklı bir sayı girilmesi ya da birinci sayının sıfır olması durumunda hata vermez, doğru çalışır. Ancak, ikinci sayı için sıfır girilirse, program bu noktada kırılır ve hata verir.
Biz, program bu noktada kırılıp, hata vermesin diye bu kod bloğunu cftry içine alabiliriz. Ama mutlaka ardından da cfcatch kullanmak zorundayız. Çünkü, cftry ile programın kırılması önlenirken, aynı zamanda bu kırılma yerine gerçekleşecek olayı da tanımlamalıyız. Yani cftry ile fırlattığımız istisnayı, cfcatch ile yakalayabiliriz.
Cftry ile istisna fırlatıldığı anda, Cfcatch içinde yazdığımız  devreye girer.
Bu kod dizilimi aşağıdaki gibi olabilir:
<cftry>
<cfset a=#form.number1#>
<cfset b=#form.number2#>
<cfset c=a/b>
<cfcatch>
<cfoutput>Sıfıra Bölme Hatası</cfoutput>
</cfcatch>
</cftry>

Yukarıdaki kodlar, cftry – cfcatch kullanımının en basit örneği.

Cfcatch  tagının  bir de type parametresi var. Kullanımı programcıya bağlı. Bu type değeri, fırlatılan istisnanın tipini belirtiyor.

Application : uygulamaya ilişkin  istisnaları  yakalar.
Database : veritabanı istisnalarını  yakalar.
Template : coldfusion sayfası ile ilgili istisnaları yakalar.
Security : güvenlik ile ilgili oluşan istisnaları yakalar.
Object : nesnelerle ilgili istisnaları  yakalar.
Missinginclude: sistemle bağlantılı olarak çalışan eksik dosyalara ilişkin istisnaları yakalar.
Expression : sayfadaki yanlış kullanmlarla ilgili istisnaları yakalar.
Lock : sistem kilitlenmeleriyle ilgili istisnaları yakalar.
Custom_type : Bir cfthrow  tagı  tanımlanarak, bu tag içinde belirtilen özel istisnaları yakalar.
Searchengine : arama motoru ile ilgili istisnaları yakalar, aramanın doğruluğunu kontrol eder.
Any : bütün tiplerdeki istisnaları yakalar.

Bu tip özelliği, fırlatılan istisnanın hangi tipte olduğu ile ilgili olarak belirtilen bir özellik. Yani eğer,  cftry içinde karşılaşılan hata, veritabanındaki herhangi bir durumla ilgili ise, cfcatch içinde  tip olarak database belirtmemiz gerekiyor. Ya da cftry içinde karşılaşılan hata, eksik dosya bulunup bulunmaması ile ilgili ise, cfcatch içinde  tip olarak  missingInclude  belirtmemiz gerekiyor.
Eğer type=”any” ise, herhangi bir  yerden istisna yakalayabilir. Bu istisna  nesne ile ilgili de olabilir, veritabanı ile ilgili de olabilir.

Örneğin;
<cfif ISDEFINED(FORM.btnSubmit)>
<cftry>
<cfquery name=”getUserName” datasource=”DSNdatasource”>
SELECT UserName
FROM tlbCustomer
WHERE UserID = 1;
</cfquery>
<cfset name=”myuser” value=”getUserName.UserName”>
<cfcatch type=”database”>
<!---  Eğer sorgu geçersiz ise, myuser değişkeninin değeri “GEÇERSİZ SORGULAMA” olsun. --->
<cfset name=”myuser” value=” GEÇERSİZ SORGULAMA”>
</cfcatch>
</cftry>
</cfif>
<cfoutput> #myuser# </cfoutput>


Eğer, yukarıdaki sql sorgusu geçerli ya da geçersiz, bir sonuç üretemezse, cftry ve cfcatch kodları kullanıldığı için program istisna fırlatır. İstisna fırlatıldığında, program akışı cfcatch kısmına geçer. Ve cfcatch kodları çalışmaya başlar.
Yukarıdaki kod dizilimi de  GEÇERSİZ SORGULAMA  yazısını ekranda görüntüler. Kullanıcı çözümleyemediği bir hata ile değil, anlayabileceği ve çözümleyebileceği bir hata ile karşılaşmış olur.

Cfcatch tagı  içinde, type  özelliğinde custom_tag  tipinin kullanılabilmesi için, bu tipin özel olarak tanımlanması gerekiyor.
Bu tanımlama  cfthrow içinde yapılıyor.

custom_type tanımlama :

<cfthrow type = "MyApp.FirstException.InvalidAccount">
Cfcatch içinde de cfthrow içinde belirtildiği gibi kullanılır.

<cfcatch type = "MyApp. FirstException.InvalidAccount">
Eğer, cfcatch içindeki istisnanın tipini  #cfcatch.type#  şeklinde öğrenebiliriz.
Fırlatılan istisnanın ilgili mesajını  #cfcatch.message#  şeklinde kullanabiliriz.
Cfcatch  ile kullanılan diğer yapılar aşağıda verilmiştir.

- cfcatch .detail                ->  istisna fırlatan tagı verir.
- cfcatch .tagContext            ->  istisna fırlatan tagı, etiketini, ismini, bu etiketlerin bulunduğu dosyanın  yolunu ve tam adresini verir.

#cfcatch.type#  ve  #cfcatch.message#    gibi, cfcatch e ait verileri elde etmek için kullandığımız  yapıları, cfoutput ile ekrana basabiliriz. Cfdump kullanırsak, bu verilerin değerleri görüntülenmeyecektir.

Cftry – cfcatch kod bloğu,
- Hataları kurtarır, uyarı mesajları olmadan işleme devam etmemizi sağlar.
- Ya da  kendi özelleştirdiğimiz uyarıları  kullanarak işleme devam etmemizi sağlar.

1 yorum - Gönderen : Ayşegül Sümeyra Karakoç (10:43 AM) - Kategori : Coldfusion

Oct 7 2010

Cfimage kullanımı

Coldfusion 8 le gelen yeniliklerden biri de cfimage. Coldfusion 8 50  tane yeni resim işlemeye yardımcı etiketi içeriyor. En basitinden önceleri resim boyutlandırma konusunda yaşadığımız tüm zorluklar CFIMAGE sayesinde oldukça kolay bir şekilde yapılabiliyor. Bunların yanı sıra resim okuma, ekleme, yazma, yeniden boyutlandırma, resmi döndürme, resimlerin diğer resim tiplerine çevrilmesi gibi oldukça hoş özellikleri içinde bulunduruyor. Bu yeni özelliklerden sanırım en güzel olanı CFIMAGE etiketinin resize özelliği. İşinize yarayacağını umduğum bir örneği de burada paylaşıyorum.

Resmi boyutlandırma

<cfimage

                    Source="C:/images/resim1.jpg"

                    action="resize"

                    width="100"

                    height="250”

                    destination="D:/image/yeniresim.jpg"

                    overwrite="yes">

Source: Kaynak dosyamız. Yeniden boyutlandırmak istediğimiz image dosyasının konumunu yazıyoruz.

Action: Cfimage’ın bahsettiğimiz bir çok özelliğinden hangisini kullanmak istiyorsak belirtiyoruz.

Width: Genişlik değerimiz.

Height: Yükseklik değerimiz.

Destination: Hedef klasör. Boyut verdiğimiz resmi hangi klasöre eklemek istiyorsak yolunu belirtiyoruz.

Owerwrite: Aynı isimde bir resim varsa yes diyerek üzerine yazmak istediğimizi belirtiyoruz.

0 yorum - Gönderen : Ayşegül Sümeyra Karakoç (10:26 AM) - Kategori : Coldfusion

Oct 2 2010

Resimlerin Binary Formatında ifade edilebilip db de saklanabilmesi ve sonrasında donüştürülerek yeniden display edilebilmesi.

 

      <cffile action="readBinary" file="adrees"  variable="binary_signature">
      <cfset binary_signature_db = binaryencode(binary_signature,'Base64')> <!---db ye kaydedeilecek hali --->

     <cfset binary_signature_dsply = binarydecode(binary_signature_db ,'Base64')><!--- db den çektikten sonra da böyle çekilir--->
     <cfimage action = "writeToBrowser" source = "#binary_signature_dsply#" isBase64= "yes"> <!---gibi display edilir. --->

0 yorum - Gönderen : Ayşegül Sümeyra Karakoç (8:42 AM) - Kategori : Coldfusion