jQuery DataTables Eklentisi

Merhabalar,

Bu gün bahsetmek istediğim konu yapmış olduğum bir projede bana çok fazla kolaylık sağlayan jQuery DataTables eklentisi.

Bu eklentinin işlevi yapmış olduğunuz tablo’ya sort,search,paging gibi birçok özellik kazandırması. Bu eklenti sayesinde bu özellikleri sizin yazmanıza gerek kalmıyor. Cidden kullanışlı bir eklenti.

jQuery Datatables eklentisine ulaşmak için tıklayınız.

 

İyi çalışmalar.
Ahmet 🙂

Read More
jQuery Değişken Kontrol.

Merhabalar,

Bazı durumda yapmış olduğunuz projelerde jquery değişkenleri global olarak kullanmanız ve başka bir yerden bu değişkeni okumanız gerekir eğer bu değişken yaratılmamış ise o sayfada bu kontrol işleminde değişken olmadığı için hata alırsınız. Bu hatayı alamamak için aşağıdaki kontrolu yapıyoruz.

[PHP]if(typeof(variable) != “undefined” && variable !== null) {

}[/PHP]

Ufak bir bilgilendirme idi umarım yararlı olur. 🙂

Ahmet KAYAR.

Read More
jQuery Template yapısı ve kullanımı.

JQuery Template Nedir?

jQuery template temelde javascript kodu ile html kodunu ayırmak için tasarlanmış bir yapıdır. Asp.net’in repeater’ı benzeri bir modeli vardır. Farkı; databinding javascript tarafından yapılır. Özellikle yoğun ajax kullanımının olduğu uygulamalarda, gelen json formatındaki dizileri bind etmek suretiyle kullanılır.

Web uygulaması geliştirilen her dille uyumlu olarak çalışabilen bu yapı. Asp.net geliştiricileri için çok daha kolaylık sağlamaktadır. Proje sırasında düzenlenmesi gerektiği durumlarda projenin tekrar derlenmesini gerektirmeden template dosyasını düzenlemesi ile bu çalışma yapılmış olacaktır.

jQuery Template kullanımı ve kod yapısı.

Kullanımı

jQuery template kullanımı için jquery.tmpl.js kodyasını projemize entegre etmemiz gerekmektedir.

http://ajax.microsoft.com/ajax/jquery.templates/beta1/jquery.tmpl.js

http://ajax.microsoft.com/ajax/jquery.templates/beta1/jquery.tmpl.min.js

Kod Yapısı

[php]
<script id="ornek-tmpl" type="text/x-jquery-tmpl">// <![CDATA[
Kod Blogu Buraya gelecek.
// ]]></script>
[/php]

Ufak bir örnekle bu kod yapısını biraz daha açalım.

Örnek Kod

[php]

<script id="members-list-tmpl" type="text/x-jquery-tmpl">// <![CDATA[
{{if Json}}
{{each Json}}
{{if State=="0" }}
<li> Durum Aktif Değil. ${Name}-{{tmpl "#department-tmpl"}}</li>

{{else}}
<li>Aktif:${Name} – {{html Department}}</li>

{{/if}}
{{/each}}
{{else}}
<li>İçerik Bulunamadı.</li>

{{/if}}
// ]]></script><script id="department-tmpl" type="text/x-jquery-tmpl">// <![CDATA[
<strong>${id}</strong>
// ]]></script>
[/php]

Yukarıda kod yapısını açıklayacak olursak.

  1. id=”members-list-tmpl” type=”text/x-jquery-tmpl” : jQuery Template yapımızı tanımlamak için kullandığımız tag yapısı. ID alanı jquery templatemizin ismi ve type alanı da içerisinde yer alan kodların jquery tmpl olduğunu belirtiyor.
  2. 2.       {{if Json}} : Gelen datamızın içeriğinin olup olmadığı  kontrol ediyoruz.Eğer gelen data  yok ise. {{else}} kodu ile ekrana vermek istediğimiz uyarı mesajını yazıyoruz.
  3. 3.       {{each Json}} : Gelen datamızı döngüye sokmamızı sağlar.
  4. 4.       ${Name} : Data içerisinde yer alan veriyi bu şekilde ekrana basıyoruz. “${degisken}”. Earch olarak kullanmadığımız yani sadece tek veri gelen kısımlarda ise “${dataAdi.degisken}”  olarak kullanıyoruz.
  5. 5.       {{tmpl “#department-tmpl”}} :  Gelen datamızı ortak olarak birkaç yer de kullandığımı template yolluyoruz bu sayede kod fazlalığından kurtulmuş oluyoruz.
  6. 6.       {{html Department}} : Gelen datamızın içeriğinde eğer html kod varsa bu şekilde kullanarak gelen içeriğin browser tarafından işlenmesini sağlaya biliyoruz bu kodu kullanmazsak gelen içeriğimizi düz metin olarak ekranda gösterecektir.
  7. 7.       {{wrap “#examplewrap-tmpl”}}: Şu anki örneğimizde bu konu hakkında bir örnek mevcut değil ancak kullanımı şu şekilde. Tmpl kullanımının amacı gibi kod fazlalığını önlemek açısında ortak olarak kullanılan bir wrap-tmpl tanımlanıp bu kod ile içeriğimizi sarmamızı sağlaya biliriz. Yani bu kod kullandığımızda gelen tmpl içeriğimiz saracaktır.

Script Taraflı kod Kullanımı

 

$(“#members-list-tmpl”).tmpl(jsonData).appendTo(“#members-list”);

Bu yazmış olduğumuz kodu şu şekilde açıklaya biliriz. Html içerisinde tanımlamış olduğumuz tmpl alanını jquery tmpl metodunu kullarak sistem tarafıdan oluşturduğumu jsonData nesnemizi gönderiyor ve hangi alan bu işlemini uygulanması gerektiğini belirtiyoruz.

Yani: #members-list-tmpl templat’i kullarak jsonData verilerini #members-list id’li alna uygula.

jQuery Template ile ilgili örnek projeye jqueryTemplate‘den ulaşabilirsiniz.

İyi Çalışmalar.
Ahmet KAYAR

Read More
Asp.net Fancybox Postback Problemi.

Merhabalar;

Bu günkü yaşamış olduğum bir problemi yazmak istedim. Geliştirmiş oluğumuz  proje üzerinde Fancybox kullanıyorduk ve proje gereği Fancybox içinde bir buton ile güncelme yapmamız gerekti ancak bu işlem standart Fancybox ayarları ile yapılamadı o yüzden Fancybox içinde aşağıdaki düzenlemeyi yapmamız gerekti.

Fancybox Js içindeki.

 $('body').append(
tmp         = $('
'), loading     = $('
'), overlay     = $('
'), wrap        = $('
') );

Bu kodu Aşağıdaki gibi düzenliyoruz.

$('form').append(
    tmp         = $('<div id="fancybox-tmp"></div>'),
    loading     = $('<div id="fancybox-loading"><div></div></div>'),
    overlay     = $('<div id="fancybox-overlay"></div>'),
    wrap        = $('<div id="fancybox-wrap"></div>')
        );

Artık Fancybox Postback işlemi tamamlanmış oldu.

Umarım yararlı olur.

İyi Çalışmalar.

Ahmet KAYAR.

Read More
Transaction ve İzolasyon Seviyeleri

Merhaba Arkadaşlar bu konumda sizlerle SQL Transaction ve Izolasyon seviyelerinden bahsetmek istiyorum. Öncelikli olarak Transaction nedir ? Transaction Niçin kullanılır ? bu soruları açıklayarak  Transactionlarda izolasyon seviyelerine geçeceğim.

Transaction NEDİR ? Niçin Kullanılır.

Transaction Ard ardına yapmamız gereken işlemler için. Kullanılır. Örneğin. Bankan sistemlerindeki banka havale işlemini düşünelim. Bir kullanıcının bakiye alanındaki paradan hava ücreti düşülüp diğer kullanıcıya aktarılması gerekiyor.

Sonuç olarak yazılan her uygulama bir insan işidir. Oyüzden sorunlar ve hatalarla karışlaşıla bilir. Kullancının hesabından parayı çektiğiniz an. Elektirikler Kesildi  ( Biz bahsız bedeviyizdir. Kesinlikle Olur böyle şeyler 🙂 ) ve çekilen para diğer kullanıcının hesabına aktarılamadı yani arada bir para kaybı meydana geldi. İşte bu tip bir sorunla karşılaşmamak için transaction kullanıyoruz.

Transaction ard ardına yapılan işlemlerin  hepsinin doğru bir şekilde tamamlandıktan sonra sisteme uygulanamasını sağlar. İşlemlerin birin dahi bir hata meydana gelse diğer işlemleri uygulamadan işlemi durdurur. Bu sayede veri güvenliği ve tutarlığı korunmuş olur.

Transaction = Ya hep, Ya hiç

Transaction Kullanımı

Bu işlemi test etmek için Batan bank isteminde bir veri tabanı oluşturuyoruz. Aşağıda görüldüğü gibi hesap isminde bir tablo ekleyip gerekli olan alanları oluşturuyoruz.

Oluşturmuş olduğumuz bu tabloya veri giriyoruz.

Verileri girdikten sonra hava işlemini yapmak için bir stor procedur yazalım. (Stor Procedur Kullanımı ile ilgili Ayrıntlı Bilgi için Tıklayınız.)

Yazmış olduğumuz bu proceduru uyguladıktan sonra çalıştırıyoruz. ( Uygulama işlemi için yazmış olduğumuz Stor Proceduru seçip F5 yapınız. )

İşlem Başarı ile gerçekleşti. 2 kayıt etkilendi.  Eğer İşlem Sırasında bir sorun meydana gelmiş olsa idi aşağıdaki gibi bir ekranla karşılaşılacaktı ve hiç işlem tamamlanmayacaktı.

Transaction ile ilgili Yazaklarım bu kadar arkadaşlar. Gelelim şimdi transactionlarda izolasyon seviyelerine.

Bir Sistemi Malumunuz olarak tek kişi kullanmaz bu birden fazla kişi kullanır. Bu kullanım sırasında aynı anda aynı tabloyu etkileyen işlemlerle karşılaşıla bilir. İşte bu tip durumlarda transactionların nasıl davranması gerektiği ile ilgili işlemlere transaction seviyeleri denir.

Eş Zamanlı Çalışan transactionlarda Oluşa bilecek durumlar 3 tanedir. Phantoms, Non-Repeatable Read, Dirty Read.

Phantoms

2 Tane Transactionumuzun olduğunu ve bunların eş zamanlı olarak çalıştığını düşünelim. Transaction1 veri tabanındanki bir veri kümesini çekiyor. Transaction2 ise veri eklemesi yapıyor ve uygulanıyor(Commit). Transaction1 tamamlanmadan veri eklemsi oluduğu için bu yeni eklenen satırlar transaction1 için hayalet satır olarak anlandırlır. Bu olaya Phantoms denir.

Non-Repeatable Reads

Yine eş zamanlı 2 tane Transactinumuz olsun. Transaction1 bu sefer sadece tek bir kayıt çekip onları görüntülesin. Transaction2 ise bu transaction1’in seçmiş oluduğu veriyi düzenlesin ve transaction uygulansın(commit). Transaction1 Seçmiş olduğu veriyi tekrar kontrol ettiğinde ortaya çıkan bilinmedik. Değişkliğie Non-Repeatable Reads denir.

Dirty Read

Bu durum Phantoms ve Non-Repeatable Read durumlarına göre biraz daha farklıdır. Eş zamanlı olarak çalışan Transaction’lardan birisi, diğerinin okuduğu aynı veriler üzerinde değişiklik yapar. Aynen Non-Repeatable Read e neden olan durumda olduğu gibi. Ancak önemli bir fark vardır. Değişiklik yapan Transaction Commit edilmeden, diğer Transaction aynı satırıları tekrar okur ve değişiklikleri görür. Bu andan sonra, değişiklikleri yapan Transaction yaptığı güncellemeleri RollBack ile geri alır. İşte bu noktada, verileri okuyan Transaction’ da geri alınmış (RollBack) yani veri tabanına yansıtılmamış değişiklikler halen daha var olacaktır ki aslında bu değişiklikler mevcut değildir. İşte bu durum Dirty-Reads olarak adlandırılır.

Read More